Message ID | 20171206035613.GA23282@xps13.dannf |
---|---|
State | New |
Headers | show |
Series | [SRU,Artful] net: thunderx: Fix TCP/UDP checksum offload for IPv6 pkts | expand |
Probably obvious, but now that bionic has diverged from artful, please apply to the bionic tree as well. On Tue, Dec 5, 2017 at 8:56 PM, dann frazier <dann.frazier@canonical.com> wrote: > BugLink: https://bugs.launchpad.net/bugs/1736593 > > Don't offload IP header checksum to NIC. > > This fixes a previous patch which enabled checksum offloading > for both IPv4 and IPv6 packets. So L3 checksum offload was > getting enabled for IPv6 pkts. And HW is dropping these pkts > as it assumes the pkt is IPv4 when IP csum offload is set > in the SQ descriptor. > > Fixes: 3a9024f52c2e ("net: thunderx: Enable TSO and checksum offloads for ipv6") > Signed-off-by: Sunil Goutham <sgoutham@cavium.com> > Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com> > Reviewed-by: Eric Dumazet <edumazet@google.com> > Signed-off-by: David S. Miller <davem@davemloft.net> > (cherry picked from commit fa6d7cb5d76cf0467c61420fc9238045aedfd379) > Signed-off-by: dann frazier <dann.frazier@canonical.com> > --- > drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c > index d4496e9afcdf..8b2c31e2a2b0 100644 > --- a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c > +++ b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c > @@ -1355,7 +1355,6 @@ nicvf_sq_add_hdr_subdesc(struct nicvf *nic, struct snd_queue *sq, int qentry, > > /* Offload checksum calculation to HW */ > if (skb->ip_summed == CHECKSUM_PARTIAL) { > - hdr->csum_l3 = 1; /* Enable IP csum calculation */ > hdr->l3_offset = skb_network_offset(skb); > hdr->l4_offset = skb_transport_offset(skb); > > -- > 2.15.1 > > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team
Please NAK - I've sent a new version w/ an additional fix. On Tue, Dec 5, 2017 at 8:56 PM, dann frazier <dann.frazier@canonical.com> wrote: > BugLink: https://bugs.launchpad.net/bugs/1736593 > > Don't offload IP header checksum to NIC. > > This fixes a previous patch which enabled checksum offloading > for both IPv4 and IPv6 packets. So L3 checksum offload was > getting enabled for IPv6 pkts. And HW is dropping these pkts > as it assumes the pkt is IPv4 when IP csum offload is set > in the SQ descriptor. > > Fixes: 3a9024f52c2e ("net: thunderx: Enable TSO and checksum offloads for ipv6") > Signed-off-by: Sunil Goutham <sgoutham@cavium.com> > Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com> > Reviewed-by: Eric Dumazet <edumazet@google.com> > Signed-off-by: David S. Miller <davem@davemloft.net> > (cherry picked from commit fa6d7cb5d76cf0467c61420fc9238045aedfd379) > Signed-off-by: dann frazier <dann.frazier@canonical.com> > --- > drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c > index d4496e9afcdf..8b2c31e2a2b0 100644 > --- a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c > +++ b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c > @@ -1355,7 +1355,6 @@ nicvf_sq_add_hdr_subdesc(struct nicvf *nic, struct snd_queue *sq, int qentry, > > /* Offload checksum calculation to HW */ > if (skb->ip_summed == CHECKSUM_PARTIAL) { > - hdr->csum_l3 = 1; /* Enable IP csum calculation */ > hdr->l3_offset = skb_network_offset(skb); > hdr->l4_offset = skb_transport_offset(skb); > > -- > 2.15.1 > > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team
diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c index d4496e9afcdf..8b2c31e2a2b0 100644 --- a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c +++ b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c @@ -1355,7 +1355,6 @@ nicvf_sq_add_hdr_subdesc(struct nicvf *nic, struct snd_queue *sq, int qentry, /* Offload checksum calculation to HW */ if (skb->ip_summed == CHECKSUM_PARTIAL) { - hdr->csum_l3 = 1; /* Enable IP csum calculation */ hdr->l3_offset = skb_network_offset(skb); hdr->l4_offset = skb_transport_offset(skb);