]> git.openfabrics.org - ~emulex/compat-rdma.git/commitdiff
cxgb4: GRO busted in sles/rhel backports.
authorSteve Wise <swise@opengridcomputing.com>
Tue, 2 Sep 2014 16:11:05 +0000 (11:11 -0500)
committerSteve Wise <swise@opengridcomputing.com>
Tue, 2 Sep 2014 16:11:05 +0000 (11:11 -0500)
Here is another VLAN backport bug, but with the GRO path.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
patches/0035-cxgb4-grofix.patch [new file with mode: 0644]

diff --git a/patches/0035-cxgb4-grofix.patch b/patches/0035-cxgb4-grofix.patch
new file mode 100644 (file)
index 0000000..576b437
--- /dev/null
@@ -0,0 +1,32 @@
+--- compat-rdma/drivers/net/ethernet/chelsio/cxgb4/sge.c       2014-09-02 11:34:02.000000000 -0500
++++ compat-rdma.new/drivers/net/ethernet/chelsio/cxgb4/sge.c   2014-09-02 11:33:13.000000000 -0500
+@@ -1718,19 +1718,26 @@ static void do_gro(struct sge_eth_rxq *r
+       if (unlikely(pkt->vlan_ex)) {
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
+               __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), ntohs(pkt->vlan));
+ #else
++              __vlan_hwaccel_put_tag(skb, ntohs(pkt->vlan));
++#endif
++              rxq->stats.vlan_ex++;
++#else
+               struct port_info *pi = netdev_priv(rxq->rspq.netdev);
+               struct vlan_group *grp = pi->vlan_grp;
+-              if (likely(grp))
++              rxq->stats.vlan_ex++;
++              if (likely(grp)) {
+                       ret = vlan_gro_frags(&rxq->rspq.napi, grp,
+                                            be16_to_cpu(pkt->vlan));
++                      goto stats;
++              }
+ #endif
+-              rxq->stats.vlan_ex++;
+       }
+       ret = napi_gro_frags(&rxq->rspq.napi);
+-      if (ret == GRO_HELD)
++stats:        if (ret == GRO_HELD)
+               rxq->stats.lro_pkts++;
+       else if (ret == GRO_MERGED || ret == GRO_MERGED_FREE)
+               rxq->stats.lro_merged++;