Skip to content

Commit 8ec56fc

Browse files
Alexander DuyckJeff Kirsher
authored andcommitted
net: allow fallback function to pass netdev
For most of these calls we can just pass NULL through to the fallback function as the sb_dev. The only cases where we cannot are the cases where we might be dealing with either an upper device or a driver that would have configured things to support an sb_dev itself. The only driver that has any significant change in this patch set should be ixgbe as we can drop the redundant functionality that existed in both the ndo_select_queue function and the fallback function that was passed through to us. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
1 parent 4f49dec commit 8ec56fc

File tree

14 files changed

+24
-27
lines changed

14 files changed

+24
-27
lines changed

drivers/net/ethernet/amazon/ena/ena_netdev.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2224,7 +2224,7 @@ static u16 ena_select_queue(struct net_device *dev, struct sk_buff *skb,
22242224
if (skb_rx_queue_recorded(skb))
22252225
qid = skb_get_rx_queue(skb);
22262226
else
2227-
qid = fallback(dev, skb);
2227+
qid = fallback(dev, skb, NULL);
22282228

22292229
return qid;
22302230
}

drivers/net/ethernet/broadcom/bcmsysport.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2116,15 +2116,15 @@ static u16 bcm_sysport_select_queue(struct net_device *dev, struct sk_buff *skb,
21162116
unsigned int q, port;
21172117

21182118
if (!netdev_uses_dsa(dev))
2119-
return fallback(dev, skb);
2119+
return fallback(dev, skb, NULL);
21202120

21212121
/* DSA tagging layer will have configured the correct queue */
21222122
q = BRCM_TAG_GET_QUEUE(queue);
21232123
port = BRCM_TAG_GET_PORT(queue);
21242124
tx_ring = priv->ring_map[q + port * priv->per_port_num_tx_queues];
21252125

21262126
if (unlikely(!tx_ring))
2127-
return fallback(dev, skb);
2127+
return fallback(dev, skb, NULL);
21282128

21292129
return tx_ring->index;
21302130
}

drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1933,7 +1933,8 @@ u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb,
19331933
}
19341934

19351935
/* select a non-FCoE queue */
1936-
return fallback(dev, skb) % (BNX2X_NUM_ETH_QUEUES(bp) * bp->max_cos);
1936+
return fallback(dev, skb, NULL) %
1937+
(BNX2X_NUM_ETH_QUEUES(bp) * bp->max_cos);
19371938
}
19381939

19391940
void bnx2x_set_num_queues(struct bnx2x *bp)

drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -973,7 +973,7 @@ static u16 cxgb_select_queue(struct net_device *dev, struct sk_buff *skb,
973973
return txq;
974974
}
975975

976-
return fallback(dev, skb) % dev->real_num_tx_queues;
976+
return fallback(dev, skb, NULL) % dev->real_num_tx_queues;
977977
}
978978

979979
static int closest_timer(const struct sge *s, int time)

drivers/net/ethernet/hisilicon/hns/hns_enet.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2033,7 +2033,7 @@ hns_nic_select_queue(struct net_device *ndev, struct sk_buff *skb,
20332033
is_multicast_ether_addr(eth_hdr->h_dest))
20342034
return 0;
20352035
else
2036-
return fallback(ndev, skb);
2036+
return fallback(ndev, skb, NULL);
20372037
}
20382038

20392039
static const struct net_device_ops hns_nic_netdev_ops = {

drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8237,11 +8237,11 @@ static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb,
82378237
case htons(ETH_P_FIP):
82388238
adapter = netdev_priv(dev);
82398239

8240-
if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED)
8240+
if (!sb_dev && (adapter->flags & IXGBE_FLAG_FCOE_ENABLED))
82418241
break;
82428242
/* fall through */
82438243
default:
8244-
return fallback(dev, skb);
8244+
return fallback(dev, skb, sb_dev);
82458245
}
82468246

82478247
f = &adapter->ring_feature[RING_F_FCOE];

drivers/net/ethernet/mellanox/mlx4/en_tx.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -695,9 +695,9 @@ u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb,
695695
u16 rings_p_up = priv->num_tx_rings_p_up;
696696

697697
if (netdev_get_num_tc(dev))
698-
return fallback(dev, skb);
698+
return fallback(dev, skb, NULL);
699699

700-
return fallback(dev, skb) % rings_p_up;
700+
return fallback(dev, skb, NULL) % rings_p_up;
701701
}
702702

703703
static void mlx4_bf_copy(void __iomem *dst, const void *src,

drivers/net/ethernet/mellanox/mlx5/core/en_tx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb,
115115
select_queue_fallback_t fallback)
116116
{
117117
struct mlx5e_priv *priv = netdev_priv(dev);
118-
int channel_ix = fallback(dev, skb);
118+
int channel_ix = fallback(dev, skb, NULL);
119119
u16 num_channels;
120120
int up = 0;
121121

drivers/net/hyperv/netvsc_drv.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
345345
txq = vf_ops->ndo_select_queue(vf_netdev, skb,
346346
sb_dev, fallback);
347347
else
348-
txq = fallback(vf_netdev, skb);
348+
txq = fallback(vf_netdev, skb, NULL);
349349

350350
/* Record the queue selected by VF so that it can be
351351
* used for common case where VF has more queues than

drivers/net/net_failover.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ static u16 net_failover_select_queue(struct net_device *dev,
131131
txq = ops->ndo_select_queue(primary_dev, skb,
132132
sb_dev, fallback);
133133
else
134-
txq = fallback(primary_dev, skb);
134+
txq = fallback(primary_dev, skb, NULL);
135135

136136
qdisc_skb_cb(skb)->slave_dev_queue_mapping = skb->queue_mapping;
137137

drivers/net/xen-netback/interface.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb,
155155
unsigned int size = vif->hash.size;
156156

157157
if (vif->hash.alg == XEN_NETIF_CTRL_HASH_ALGORITHM_NONE)
158-
return fallback(dev, skb) % dev->real_num_tx_queues;
158+
return fallback(dev, skb, NULL) % dev->real_num_tx_queues;
159159

160160
xenvif_set_skb_hash(vif, skb);
161161

include/linux/netdevice.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -793,7 +793,8 @@ static inline bool netdev_phys_item_id_same(struct netdev_phys_item_id *a,
793793
}
794794

795795
typedef u16 (*select_queue_fallback_t)(struct net_device *dev,
796-
struct sk_buff *skb);
796+
struct sk_buff *skb,
797+
struct net_device *sb_dev);
797798

798799
enum tc_setup_type {
799800
TC_SETUP_QDISC_MQPRIO,

net/core/dev.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3633,8 +3633,8 @@ u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb,
36333633
}
36343634
EXPORT_SYMBOL(dev_pick_tx_cpu_id);
36353635

3636-
static u16 ___netdev_pick_tx(struct net_device *dev, struct sk_buff *skb,
3637-
struct net_device *sb_dev)
3636+
static u16 __netdev_pick_tx(struct net_device *dev, struct sk_buff *skb,
3637+
struct net_device *sb_dev)
36383638
{
36393639
struct sock *sk = skb->sk;
36403640
int queue_index = sk_tx_queue_get(sk);
@@ -3659,12 +3659,6 @@ static u16 ___netdev_pick_tx(struct net_device *dev, struct sk_buff *skb,
36593659
return queue_index;
36603660
}
36613661

3662-
static u16 __netdev_pick_tx(struct net_device *dev,
3663-
struct sk_buff *skb)
3664-
{
3665-
return ___netdev_pick_tx(dev, skb, NULL);
3666-
}
3667-
36683662
struct netdev_queue *netdev_pick_tx(struct net_device *dev,
36693663
struct sk_buff *skb,
36703664
struct net_device *sb_dev)
@@ -3685,7 +3679,7 @@ struct netdev_queue *netdev_pick_tx(struct net_device *dev,
36853679
queue_index = ops->ndo_select_queue(dev, skb, sb_dev,
36863680
__netdev_pick_tx);
36873681
else
3688-
queue_index = ___netdev_pick_tx(dev, skb, sb_dev);
3682+
queue_index = __netdev_pick_tx(dev, skb, sb_dev);
36893683

36903684
queue_index = netdev_cap_txqueue(dev, queue_index);
36913685
}

net/packet/af_packet.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -275,9 +275,10 @@ static bool packet_use_direct_xmit(const struct packet_sock *po)
275275
return po->xmit == packet_direct_xmit;
276276
}
277277

278-
static u16 __packet_pick_tx_queue(struct net_device *dev, struct sk_buff *skb)
278+
static u16 __packet_pick_tx_queue(struct net_device *dev, struct sk_buff *skb,
279+
struct net_device *sb_dev)
279280
{
280-
return dev_pick_tx_cpu_id(dev, skb, NULL, NULL);
281+
return dev_pick_tx_cpu_id(dev, skb, sb_dev, NULL);
281282
}
282283

283284
static u16 packet_pick_tx_queue(struct sk_buff *skb)
@@ -291,7 +292,7 @@ static u16 packet_pick_tx_queue(struct sk_buff *skb)
291292
__packet_pick_tx_queue);
292293
queue_index = netdev_cap_txqueue(dev, queue_index);
293294
} else {
294-
queue_index = __packet_pick_tx_queue(dev, skb);
295+
queue_index = __packet_pick_tx_queue(dev, skb, NULL);
295296
}
296297

297298
return queue_index;

0 commit comments

Comments
 (0)