[NET]: IPV6 checksum offloading in network devices
The existing model for checksum offload does not correctly handle devices that can offload IPV4 and IPV6 only. The NETIF_F_HW_CSUM flag implies device can do any arbitrary protocol. This patch: * adds NETIF_F_IPV6_CSUM for those devices * fixes bnx2 and tg3 devices that need it * add NETIF_F_IPV6_CSUM to ipv6 output (incl GSO) * fixes assumptions about NETIF_F_ALL_CSUM in nat * adjusts bridge union of checksumming computation Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
d3d6dd3ada
commit
d212f87b06
@@ -11944,12 +11944,11 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
|
||||
* checksumming.
|
||||
*/
|
||||
if ((tp->tg3_flags & TG3_FLAG_BROKEN_CHECKSUMS) == 0) {
|
||||
dev->features |= NETIF_F_IP_CSUM | NETIF_F_SG;
|
||||
if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5755 ||
|
||||
GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5787)
|
||||
dev->features |= NETIF_F_HW_CSUM;
|
||||
else
|
||||
dev->features |= NETIF_F_IP_CSUM;
|
||||
dev->features |= NETIF_F_SG;
|
||||
dev->features |= NETIF_F_IPV6_CSUM;
|
||||
|
||||
tp->tg3_flags |= TG3_FLAG_RX_CHECKSUMS;
|
||||
} else
|
||||
tp->tg3_flags &= ~TG3_FLAG_RX_CHECKSUMS;
|
||||
|
Reference in New Issue
Block a user