RE: [net 2/2] net: fix a bug of dropping FCoE frames when disabling tx ip checksum
From: Zou, Yi <hidden>
Date: 2012-03-14 20:48:04
On Wed, 2012-03-14 at 00:01 -0700, Jeff Kirsher wrote:quoted
From: Yi Zou <redacted> Fix a bug when using 'ethtool -K ethx tx off' to turn off tx ipchecksum,quoted
FCoE CRC offload should not be impacte. The skb_checksum_help() isneededquoted
only if it's not FCoE traffic for ip checksum, regardless of ethtooltogglingquoted
the tx ip checksum on or off.[...] I think the bug is more fundamental, and it's not just a problem for FCoE. For the transmit path, the ip_summed values are specified as: [forwarding] * COMPLETE: the most generic way. Device supplied checksum of _all_ * the packet as seen by netif_rx in skb->csum. * NOTE: Even if device supports only some protocols, but * is able to produce some skb->csum, it MUST use COMPLETE, * not UNNECESSARY. [locally-generated] * NONE: skb is checksummed by protocol or csum is not required. * * PARTIAL: device is required to csum packet as seen by hard_start_xmit * from skb->csum_start to the end and to record the checksum * at skb->csum_start + skb->csum_offset. It's implicit that the checksum algorithm for CHECKSUM_PARTIAL is as specified for TCP/IP. So none of those is correct when a different algorithm is to be used. It seems like we may need another ip_summed value for FCoE, SCTP or any other protocol with a different checksum algorithm that will be offloaded. Maybe allow CHECKSUM_UNNECESSARY to be used on output in that case? Ben.
CHECKSUM_UNNECESSARY sounds good to me, if it's ok to be used on the tx path as well, I think so but I am not 100% sure, it'd resolve this for fcoe and sctp like, downside is it's a bigger change that requires corresponding changes in these protocol driver stacks as well. yi
-- Ben Hutchings, Staff Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.