Hi! Unless I'm horribly mistaken, generic HW checksumming works as follows: - driver sets netdev->features & NETIF_F_HW_CSUM to indicate support for generic checksumming; if the flag is not set, networking core will checksum skb before calling ndo_start_xmit (let's ignore other checksumming options for now) and not pass skb with skb->ip_summed == CHECKSUM_PARTIAL - ndo_start_xmit() should use skb->csum_start and skb->csum_offset (or skb->csum) to update checksum in software or instruct HW to do so
Looking at pch_gbe_xmit_frame() and its callee - pch_gbe_tx_queue() it looks like the driver should set NETIF_F_IP_CSUM instead of NETIF_F_HW_CSUM feature. Similar thing happens in ixgbe driver: it sets NETIF_F_HW_CSUM and checks for skb->ip_summed == CHECKSUM_PARTIAL, but then just warns on protocols other that TCP and SCTP (see: ixgbe_psum()). This means that these drivers might send packets with broken checksums when TX checksumming offload is enabled. I haven't checked other drivers, yet. Best Regards, Michał Mirosław ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
