Skip to content

Commit

Permalink
macvlan: Fix rx counters update in macvlan_handle_frame()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Sridhar Samudrala authored and David S. Miller committed Jul 28, 2010
1 parent bb7e95c commit ba01877
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions drivers/net/macvlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down Expand Up @@ -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;
}

Expand Down

0 comments on commit ba01877

Please sign in to comment.