bnx2: Correctly receive full sized 802.1ad fragmes
authorVlad Yasevich <vyasevich@gmail.com>
Tue, 30 Sep 2014 23:39:37 +0000 (19:39 -0400)
committerDavid S. Miller <davem@davemloft.net>
Wed, 1 Oct 2014 20:43:45 +0000 (16:43 -0400)
This driver, similar to tg3, has a check that will
cause full sized 802.1ad frames to be dropped.  The
frame will be larger then the standard mtu due to the
presense of vlan header that has not been stripped.
The driver should not drop this frame and should process
it just like it does for 802.1q.

CC: Sony Chacko <sony.chacko@qlogic.com>
CC: Dept-HSGLinuxNICDev@qlogic.com
Signed-off-by: Vladislav Yasevich <vyasevic@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnx2.c

index 2fee73b878c2e90542a58b86c0375f886f3017d6..823d01c5684caf3373d51ee09fe615a0e8e7a07b 100644 (file)
@@ -3236,8 +3236,9 @@ bnx2_rx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget)
 
                skb->protocol = eth_type_trans(skb, bp->dev);
 
-               if ((len > (bp->dev->mtu + ETH_HLEN)) &&
-                       (ntohs(skb->protocol) != 0x8100)) {
+               if (len > (bp->dev->mtu + ETH_HLEN) &&
+                   skb->protocol != htons(0x8100) &&
+                   skb->protocol != htons(ETH_P_8021AD)) {
 
                        dev_kfree_skb(skb);
                        goto next_rx;