netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next v2 0/7] drivers: Fix drivers doing TX csum offload with EH
@ 2024-07-01 19:55 Tom Herbert
  2024-07-01 19:55 ` [PATCH net-next v2 1/7] ipv6: Add ipv6_skip_exthdr_no_rthdr Tom Herbert
                   ` (8 more replies)
  0 siblings, 9 replies; 14+ messages in thread
From: Tom Herbert @ 2024-07-01 19:55 UTC (permalink / raw)
  To: davem, kuba, jesse.brandeburg, anthony.l.nguyen, cai.huoqing,
	netdev, felipe, justin.iurman
  Cc: Tom Herbert

Several NICs would seem to support protocol specific TX checksum offload
and allow for cases where an IPv6 packet contains extension headers.
When deciding whether to offload a packet, ipv6_skip_exthdr is called
to skip extension headers. The problem is that if a packet contains an
IPv6 Routing Header then protocol specific checksum offload can't work,
the destination IP address in the IPv6 header is not the same one that
is used in the pseudo header for TCP or UDP. The correct address is
derived from the last segment in the routing list (which itself might
be obfuscated so that a device could even read it).

This patch set adds a new function ipv6_skip_exthdr_no_rthdr to be
called in lieu of ipv6_skip_exthdr. If a routing header is present in
a packet then ipv6_skip_exthdr_no_rthdr returns a value less than
zero, this is an indication to the driver that TX checksum offload
is not viable and it should call skb_checksum_help instead of
offloading the checksum.

The i40e, iavf, ice, idpf, hinic, and fm10k are updated accordingly
to call ipv6_skip_exthdr_no_rthdr.

Testing: The code compiles, but is otherwise untested due to lack of
NIC hardware. It would be appreciated if someone with access to the
hardware could test.

v2: Fixed uninitialized variable in exthdrs_core.c

Tom Herbert (7):
  ipv6: Add ipv6_skip_exthdr_no_rthdr
  i40e: Don't do TX csum offload with routing header present
  iavf: Don't do TX csum offload with routing header present
  ice: Don't do TX csum offload with routing header present
  idpf: Don't do TX csum offload with routing header present
  hinic: Don't do TX csum offload with routing header present
  fm10k: Don't do TX csum offload with routing header present

 drivers/net/ethernet/huawei/hinic/hinic_tx.c  | 23 +++++++++++----
 drivers/net/ethernet/intel/fm10k/fm10k_main.c |  9 ++++--
 drivers/net/ethernet/intel/i40e/i40e_txrx.c   | 22 ++++++---------
 drivers/net/ethernet/intel/iavf/iavf_txrx.c   | 20 ++++++-------
 drivers/net/ethernet/intel/ice/ice_txrx.c     | 22 ++++++---------
 .../ethernet/intel/idpf/idpf_singleq_txrx.c   | 28 +++++++++----------
 include/net/ipv6.h                            | 17 +++++++++--
 net/ipv6/exthdrs_core.c                       | 25 ++++++++++++-----
 8 files changed, 98 insertions(+), 68 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2024-07-03 15:56 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-01 19:55 [PATCH net-next v2 0/7] drivers: Fix drivers doing TX csum offload with EH Tom Herbert
2024-07-01 19:55 ` [PATCH net-next v2 1/7] ipv6: Add ipv6_skip_exthdr_no_rthdr Tom Herbert
2024-07-01 19:55 ` [PATCH net-next v2 2/7] i40e: Don't do TX csum offload with routing header present Tom Herbert
2024-07-01 19:55 ` [PATCH net-next v2 3/7] iavf: " Tom Herbert
2024-07-01 19:55 ` [PATCH net-next v2 4/7] ice: " Tom Herbert
2024-07-01 19:55 ` [PATCH net-next v2 5/7] idpf: " Tom Herbert
2024-07-01 19:55 ` [PATCH net-next v2 6/7] hinic: " Tom Herbert
2024-07-01 19:55 ` [PATCH net-next v2 7/7] fm10k: " Tom Herbert
2024-07-02 10:31 ` [PATCH net-next v2 0/7] drivers: Fix drivers doing TX csum offload with EH Przemek Kitszel
2024-07-03 14:20   ` Greenwalt, Paul
     [not found]     ` <CALx6S35zhg8HAUj9_1=Zm=nV0mzSe-Batdo5qpjz6Zd4G8T17g@mail.gmail.com>
2024-07-03 15:02       ` Przemek Kitszel
2024-07-03 15:56         ` Tom Herbert
2024-07-03  1:46 ` Jakub Kicinski
2024-07-03 14:39   ` Tom Herbert

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).