[VLAN]: Make sure bonding packet drop checks get done in hwaccel RX path.
Since __vlan_hwaccel_rx() is essentially bypassing the netif_receive_skb() call that would have occurred if we did the VLAN decapsulation in software, we are missing the skb_bond() call and the assosciated checks it does. Export those checks via an inline function, skb_bond_should_drop(), and use this in __vlan_hwaccel_rx(). Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1619,26 +1619,10 @@ static inline struct net_device *skb_bond(struct sk_buff *skb)
|
||||
struct net_device *dev = skb->dev;
|
||||
|
||||
if (dev->master) {
|
||||
/*
|
||||
* On bonding slaves other than the currently active
|
||||
* slave, suppress duplicates except for 802.3ad
|
||||
* ETH_P_SLOW and alb non-mcast/bcast.
|
||||
*/
|
||||
if (dev->priv_flags & IFF_SLAVE_INACTIVE) {
|
||||
if (dev->master->priv_flags & IFF_MASTER_ALB) {
|
||||
if (skb->pkt_type != PACKET_BROADCAST &&
|
||||
skb->pkt_type != PACKET_MULTICAST)
|
||||
goto keep;
|
||||
}
|
||||
|
||||
if (dev->master->priv_flags & IFF_MASTER_8023AD &&
|
||||
skb->protocol == __constant_htons(ETH_P_SLOW))
|
||||
goto keep;
|
||||
|
||||
if (skb_bond_should_drop(skb)) {
|
||||
kfree_skb(skb);
|
||||
return NULL;
|
||||
}
|
||||
keep:
|
||||
skb->dev = dev->master;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user