summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/ulp
diff options
context:
space:
mode:
authorPaolo Abeni <pabeni@redhat.com>2019-03-20 06:02:06 -0400
committerDavid S. Miller <davem@davemloft.net>2019-03-20 14:18:55 -0400
commita350eccee5830d9a1f29e393a88dc05a15326d44 (patch)
tree606fd11e76d457dbcfcb197f573808cb625bee3f /drivers/infiniband/ulp
parentb71b5837f8711dbc4bc0424cb5c75e5921be055c (diff)
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/infiniband/ulp')
-rw-r--r--drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c b/drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c
index ae70cd18903e..aeff68f582d3 100644
--- a/drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c
+++ b/drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c
@@ -95,8 +95,7 @@ static netdev_tx_t opa_netdev_start_xmit(struct sk_buff *skb,
95} 95}
96 96
97static u16 opa_vnic_select_queue(struct net_device *netdev, struct sk_buff *skb, 97static u16 opa_vnic_select_queue(struct net_device *netdev, struct sk_buff *skb,
98 struct net_device *sb_dev, 98 struct net_device *sb_dev)
99 select_queue_fallback_t fallback)
100{ 99{
101 struct opa_vnic_adapter *adapter = opa_vnic_priv(netdev); 100 struct opa_vnic_adapter *adapter = opa_vnic_priv(netdev);
102 struct opa_vnic_skb_mdata *mdata; 101 struct opa_vnic_skb_mdata *mdata;
@@ -106,8 +105,7 @@ static u16 opa_vnic_select_queue(struct net_device *netdev, struct sk_buff *skb,
106 mdata = skb_push(skb, sizeof(*mdata)); 105 mdata = skb_push(skb, sizeof(*mdata));
107 mdata->entropy = opa_vnic_calc_entropy(skb); 106 mdata->entropy = opa_vnic_calc_entropy(skb);
108 mdata->vl = opa_vnic_get_vl(adapter, skb); 107 mdata->vl = opa_vnic_get_vl(adapter, skb);
109 rc = adapter->rn_ops->ndo_select_queue(netdev, skb, 108 rc = adapter->rn_ops->ndo_select_queue(netdev, skb, sb_dev);
110 sb_dev, fallback);
111 skb_pull(skb, sizeof(*mdata)); 109 skb_pull(skb, sizeof(*mdata));
112 return rc; 110 return rc;
113} 111}