]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bnx2x: properly update skb when mtu > 1500
authorDmitry Kravkov <dmitry@broadcom.com>
Mon, 12 Dec 2011 23:40:53 +0000 (23:40 +0000)
committerJoe Jin <joe.jin@oracle.com>
Wed, 16 May 2012 14:41:13 +0000 (22:41 +0800)
Since commit e52fcb2462ac484e6dd6e68869536609f0216938 newly allocated
skb for small packets are not updated properly and dropped by stack.

(cherry picked from commit 036d2df9b3167598a9c9f1c13d9039f7e6cb0083)
Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/net/bnx2x/bnx2x_cmn.c

index 0180e6f9c21bad9e6f5ef80994a6780b85fc6939..f4a95a89ddc60456f8fa924995a78a69bdb705c4 100644 (file)
@@ -719,22 +719,22 @@ reuse_rx:
                                bnx2x_reuse_rx_data(fp, bd_cons, bd_prod);
                                goto next_rx;
                        }
+               }
 
-                       skb_put(skb, len);
-                       skb->protocol = eth_type_trans(skb, bp->dev);
+               skb_put(skb, len);
+               skb->protocol = eth_type_trans(skb, bp->dev);
 
-                       /* Set Toeplitz hash for a none-LRO skb */
-                       skb->rxhash = bnx2x_get_rxhash(bp, cqe_fp);
+               /* Set Toeplitz hash for a none-LRO skb */
+               skb->rxhash = bnx2x_get_rxhash(bp, cqe_fp);
 
-                       skb_checksum_none_assert(skb);
+               skb_checksum_none_assert(skb);
 
-                       if (bp->dev->features & NETIF_F_RXCSUM) {
+               if (bp->dev->features & NETIF_F_RXCSUM) {
 
-                               if (likely(BNX2X_RX_CSUM_OK(cqe)))
-                                       skb->ip_summed = CHECKSUM_UNNECESSARY;
-                               else
-                                       fp->eth_q_stats.hw_csum_err++;
-                       }
+                       if (likely(BNX2X_RX_CSUM_OK(cqe)))
+                               skb->ip_summed = CHECKSUM_UNNECESSARY;
+                       else
+                               fp->eth_q_stats.hw_csum_err++;
                }
 
                skb_record_rx_queue(skb, fp->rx_queue);