macvlan: Fix rx counters update in macvlan_handle_frame()
Fix macvlan_handle_frame() to update the rx counters based on the return value of the vlan->receive call. Updated the patch to not do any packet count drops when the interface is down based on Herber'ts comments. Signed-off-by: Sridhar Samudrala <sri@us.ibm.com> Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bb7e95c8fd
commit
ba01877f56
|
@ -158,7 +158,8 @@ static struct sk_buff *macvlan_handle_frame(struct sk_buff *skb)
|
|||
const struct macvlan_dev *vlan;
|
||||
const struct macvlan_dev *src;
|
||||
struct net_device *dev;
|
||||
unsigned int len;
|
||||
unsigned int len = 0;
|
||||
int ret = NET_RX_DROP;
|
||||
|
||||
port = macvlan_port_get_rcu(skb->dev);
|
||||
if (is_multicast_ether_addr(eth->h_dest)) {
|
||||
|
@ -195,14 +196,16 @@ static struct sk_buff *macvlan_handle_frame(struct sk_buff *skb)
|
|||
}
|
||||
len = skb->len + ETH_HLEN;
|
||||
skb = skb_share_check(skb, GFP_ATOMIC);
|
||||
macvlan_count_rx(vlan, len, skb != NULL, 0);
|
||||
if (!skb)
|
||||
return NULL;
|
||||
goto out;
|
||||
|
||||
skb->dev = dev;
|
||||
skb->pkt_type = PACKET_HOST;
|
||||
|
||||
vlan->receive(skb);
|
||||
ret = vlan->receive(skb);
|
||||
|
||||
out:
|
||||
macvlan_count_rx(vlan, len, ret == NET_RX_SUCCESS, 0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue