summaryrefslogtreecommitdiff
path: root/include/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2020-05-07 18:11:07 -0700
committerDavid S. Miller <davem@davemloft.net>2020-05-07 18:11:07 -0700
commit738fea32af86f5d58f30dfca6645494070c976ef (patch)
tree5d1540325ac32853f85625cdb0262934f8244dbc /include/net
parent3a13f98b4c16fb3489bdfd7550fcaa333ee69850 (diff)
parentae46f184bc1fb15bf2de47114c29236e61ca4bbc (diff)
Merge branch 'bonding-report-transmit-status-to-callers'
Eric Dumazet says: ==================== bonding: report transmit status to callers First patches cleanup netpoll, and make sure it provides tx status to its users. Last patch changes bonding to not pretend packets were sent without error. By providing more accurate status, TCP stack can avoid adding more packets if the slave qdisc is already full. This came while testing latest horizon feature in sch_fq, with very low pacing rate flows, but should benefit hosts under stress. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/bonding.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/include/net/bonding.h b/include/net/bonding.h
index 0b696da5c115..9b1e76515a9c 100644
--- a/include/net/bonding.h
+++ b/include/net/bonding.h
@@ -504,18 +504,17 @@ static inline unsigned long slave_last_rx(struct bonding *bond,
}
#ifdef CONFIG_NET_POLL_CONTROLLER
-static inline void bond_netpoll_send_skb(const struct slave *slave,
+static inline netdev_tx_t bond_netpoll_send_skb(const struct slave *slave,
struct sk_buff *skb)
{
- struct netpoll *np = slave->np;
-
- if (np)
- netpoll_send_skb(np, skb);
+ return netpoll_send_skb(slave->np, skb);
}
#else
-static inline void bond_netpoll_send_skb(const struct slave *slave,
+static inline netdev_tx_t bond_netpoll_send_skb(const struct slave *slave,
struct sk_buff *skb)
{
+ BUG();
+ return NETDEV_TX_OK;
}
#endif
@@ -609,7 +608,7 @@ struct bond_net {
};
int bond_arp_rcv(const struct sk_buff *skb, struct bonding *bond, struct slave *slave);
-void bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, struct net_device *slave_dev);
+netdev_tx_t bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, struct net_device *slave_dev);
int bond_create(struct net *net, const char *name);
int bond_create_sysfs(struct bond_net *net);
void bond_destroy_sysfs(struct bond_net *net);
@@ -742,10 +741,11 @@ extern struct bond_parm_tbl ad_select_tbl[];
/* exported from bond_netlink.c */
extern struct rtnl_link_ops bond_link_ops;
-static inline void bond_tx_drop(struct net_device *dev, struct sk_buff *skb)
+static inline netdev_tx_t bond_tx_drop(struct net_device *dev, struct sk_buff *skb)
{
atomic_long_inc(&dev->tx_dropped);
dev_kfree_skb_any(skb);
+ return NET_XMIT_DROP;
}
#endif /* _NET_BONDING_H */