gve: add gve_features_check()
authorEric Dumazet <edumazet@google.com>
Thu, 16 Nov 2023 08:57:07 +0000 (08:57 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 17 Nov 2023 03:29:16 +0000 (03:29 +0000)
commit18de1e517ed37ebaf33e771e46faf052e966e163
treea369a4d820795051f4ed9a694a726157c50d2916
parent380b50ae3a04222334a3779b3787eba844b1177f
gve: add gve_features_check()

It is suboptimal to attempt skb linearization from ndo_start_xmit()
if a gso skb has pathological layout, or if host stack does not have
access to the payload (TCP direct). Linearization of large skbs
can also fail under memory pressure.

We should instead have an ndo_features_check() so that we can
fallback to GSO, which is supported even for TCP direct,
and generally much more efficient (no payload copy).

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Bailey Forrest <bcf@google.com>
Cc: Willem de Bruijn <willemb@google.com>
Cc: Jeroen de Borst <jeroendb@google.com>
Cc: Praveen Kaligineedi <pkaligineedi@google.com>
Cc: Shailend Chand <shailend@google.com>
Cc: Ziwei Xiao <ziweixiao@google.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/google/gve/gve_dqo.h
drivers/net/ethernet/google/gve/gve_main.c
drivers/net/ethernet/google/gve/gve_tx_dqo.c