diff options
| author | Paolo Abeni <pabeni@redhat.com> | 2019-03-20 11:02:06 +0100 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2019-03-20 11:18:55 -0700 | 
| commit | a350eccee5830d9a1f29e393a88dc05a15326d44 (patch) | |
| tree | 606fd11e76d457dbcfcb197f573808cb625bee3f /drivers/net/xen-netback/interface.c | |
| parent | b71b5837f8711dbc4bc0424cb5c75e5921be055c (diff) | |
| download | blackbird-op-linux-a350eccee5830d9a1f29e393a88dc05a15326d44.tar.gz blackbird-op-linux-a350eccee5830d9a1f29e393a88dc05a15326d44.zip | |
net: remove 'fallback' argument from dev->ndo_select_queue()
After the previous patch, all the callers of ndo_select_queue()
provide as a 'fallback' argument netdev_pick_tx.
The only exceptions are nested calls to ndo_select_queue(),
which pass down the 'fallback' available in the current scope
- still netdev_pick_tx.
We can drop such argument and replace fallback() invocation with
netdev_pick_tx(). This avoids an indirect call per xmit packet
in some scenarios (TCP syn, UDP unconnected, XDP generic, pktgen)
with device drivers implementing such ndo. It also clean the code
a bit.
Tested with ixgbe and CONFIG_FCOE=m
With pktgen using queue xmit:
threads		vanilla 	patched
		(kpps)		(kpps)
1		2334		2428
2		4166		4278
4		7895		8100
 v1 -> v2:
 - rebased after helper's name change
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/xen-netback/interface.c')
| -rw-r--r-- | drivers/net/xen-netback/interface.c | 6 | 
1 files changed, 3 insertions, 3 deletions
| diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c index 6da12518e693..783198844dd7 100644 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c @@ -148,8 +148,7 @@ void xenvif_wake_queue(struct xenvif_queue *queue)  }  static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb, -			       struct net_device *sb_dev, -			       select_queue_fallback_t fallback) +			       struct net_device *sb_dev)  {  	struct xenvif *vif = netdev_priv(dev);  	unsigned int size = vif->hash.size; @@ -162,7 +161,8 @@ static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb,  		return 0;  	if (vif->hash.alg == XEN_NETIF_CTRL_HASH_ALGORITHM_NONE) -		return fallback(dev, skb, NULL) % dev->real_num_tx_queues; +		return netdev_pick_tx(dev, skb, NULL) % +		       dev->real_num_tx_queues;  	xenvif_set_skb_hash(vif, skb); | 

