Skip to content

Commit

Permalink
bonding: drop_monitor aware
Browse files Browse the repository at this point in the history
When packets are dropped in TX path, its better to use kfree_skb()
instead of dev_kfree_skb() to give proper drop_monitor events.

Also move the kfree_skb() call after read_unlock() in bond_alb_xmit()
and bond_xmit_activebackup()

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Eric Dumazet authored and David S. Miller committed Jun 13, 2012
1 parent 7a282bc commit 0450243
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 13 deletions.
2 changes: 1 addition & 1 deletion drivers/net/bonding/bond_3ad.c
Original file line number Diff line number Diff line change
Expand Up @@ -2454,7 +2454,7 @@ int bond_3ad_xmit_xor(struct sk_buff *skb, struct net_device *dev)
out:
if (res) {
/* no suitable interface, frame not sent */
dev_kfree_skb(skb);
kfree_skb(skb);
}

return NETDEV_TX_OK;
Expand Down
6 changes: 3 additions & 3 deletions drivers/net/bonding/bond_alb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1346,12 +1346,12 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
}
}

read_unlock(&bond->curr_slave_lock);

if (res) {
/* no suitable interface, frame not sent */
dev_kfree_skb(skb);
kfree_skb(skb);
}
read_unlock(&bond->curr_slave_lock);

return NETDEV_TX_OK;
}

Expand Down
18 changes: 9 additions & 9 deletions drivers/net/bonding/bond_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3990,7 +3990,7 @@ static int bond_xmit_roundrobin(struct sk_buff *skb, struct net_device *bond_dev
out:
if (res) {
/* no suitable interface, frame not sent */
dev_kfree_skb(skb);
kfree_skb(skb);
}

return NETDEV_TX_OK;
Expand All @@ -4012,11 +4012,11 @@ static int bond_xmit_activebackup(struct sk_buff *skb, struct net_device *bond_d
res = bond_dev_queue_xmit(bond, skb,
bond->curr_active_slave->dev);

read_unlock(&bond->curr_slave_lock);

if (res)
/* no suitable interface, frame not sent */
dev_kfree_skb(skb);

read_unlock(&bond->curr_slave_lock);
kfree_skb(skb);

return NETDEV_TX_OK;
}
Expand Down Expand Up @@ -4055,7 +4055,7 @@ static int bond_xmit_xor(struct sk_buff *skb, struct net_device *bond_dev)

if (res) {
/* no suitable interface, frame not sent */
dev_kfree_skb(skb);
kfree_skb(skb);
}

return NETDEV_TX_OK;
Expand Down Expand Up @@ -4093,7 +4093,7 @@ static int bond_xmit_broadcast(struct sk_buff *skb, struct net_device *bond_dev)

res = bond_dev_queue_xmit(bond, skb2, tx_dev);
if (res) {
dev_kfree_skb(skb2);
kfree_skb(skb2);
continue;
}
}
Expand All @@ -4107,7 +4107,7 @@ static int bond_xmit_broadcast(struct sk_buff *skb, struct net_device *bond_dev)
out:
if (res)
/* no suitable interface, frame not sent */
dev_kfree_skb(skb);
kfree_skb(skb);

/* frame sent to all suitable interfaces */
return NETDEV_TX_OK;
Expand Down Expand Up @@ -4213,7 +4213,7 @@ static netdev_tx_t __bond_start_xmit(struct sk_buff *skb, struct net_device *dev
pr_err("%s: Error: Unknown bonding mode %d\n",
dev->name, bond->params.mode);
WARN_ON_ONCE(1);
dev_kfree_skb(skb);
kfree_skb(skb);
return NETDEV_TX_OK;
}
}
Expand All @@ -4235,7 +4235,7 @@ static netdev_tx_t bond_start_xmit(struct sk_buff *skb, struct net_device *dev)
if (bond->slave_cnt)
ret = __bond_start_xmit(skb, dev);
else
dev_kfree_skb(skb);
kfree_skb(skb);

read_unlock(&bond->lock);

Expand Down

0 comments on commit 0450243

Please sign in to comment.