Skip to content

Commit 4f49dec

Browse files
Alexander DuyckJeff Kirsher
authored andcommitted
net: allow ndo_select_queue to pass netdev
This patch makes it so that instead of passing a void pointer as the accel_priv we instead pass a net_device pointer as sb_dev. Making this change allows us to pass the subordinate device through to the fallback function eventually so that we can keep the actual code in the ndo_select_queue call as focused on possible on the exception cases. 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 a4ea8a3 commit 4f49dec

File tree

29 files changed

+66
-42
lines changed

29 files changed

+66
-42
lines changed

drivers/infiniband/hw/hfi1/vnic_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ static netdev_tx_t hfi1_netdev_start_xmit(struct sk_buff *skb,
423423

424424
static u16 hfi1_vnic_select_queue(struct net_device *netdev,
425425
struct sk_buff *skb,
426-
void *accel_priv,
426+
struct net_device *sb_dev,
427427
select_queue_fallback_t fallback)
428428
{
429429
struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev);

drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ static netdev_tx_t opa_netdev_start_xmit(struct sk_buff *skb,
9595
}
9696

9797
static u16 opa_vnic_select_queue(struct net_device *netdev, struct sk_buff *skb,
98-
void *accel_priv,
98+
struct net_device *sb_dev,
9999
select_queue_fallback_t fallback)
100100
{
101101
struct opa_vnic_adapter *adapter = opa_vnic_priv(netdev);
@@ -107,7 +107,7 @@ static u16 opa_vnic_select_queue(struct net_device *netdev, struct sk_buff *skb,
107107
mdata->entropy = opa_vnic_calc_entropy(skb);
108108
mdata->vl = opa_vnic_get_vl(adapter, skb);
109109
rc = adapter->rn_ops->ndo_select_queue(netdev, skb,
110-
accel_priv, fallback);
110+
sb_dev, fallback);
111111
skb_pull(skb, sizeof(*mdata));
112112
return rc;
113113
}

drivers/net/bonding/bond_main.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4094,7 +4094,8 @@ static inline int bond_slave_override(struct bonding *bond,
40944094

40954095

40964096
static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb,
4097-
void *accel_priv, select_queue_fallback_t fallback)
4097+
struct net_device *sb_dev,
4098+
select_queue_fallback_t fallback)
40984099
{
40994100
/* This helper function exists to help dev_pick_tx get the correct
41004101
* destination queue. Using a helper function skips a call to

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2213,7 +2213,8 @@ static void ena_netpoll(struct net_device *netdev)
22132213
#endif /* CONFIG_NET_POLL_CONTROLLER */
22142214

22152215
static u16 ena_select_queue(struct net_device *dev, struct sk_buff *skb,
2216-
void *accel_priv, select_queue_fallback_t fallback)
2216+
struct net_device *sb_dev,
2217+
select_queue_fallback_t fallback)
22172218
{
22182219
u16 qid;
22192220
/* we suspect that this is good for in--kernel network services that

drivers/net/ethernet/broadcom/bcmsysport.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2107,7 +2107,7 @@ static const struct ethtool_ops bcm_sysport_ethtool_ops = {
21072107
};
21082108

21092109
static u16 bcm_sysport_select_queue(struct net_device *dev, struct sk_buff *skb,
2110-
void *accel_priv,
2110+
struct net_device *sb_dev,
21112111
select_queue_fallback_t fallback)
21122112
{
21132113
struct bcm_sysport_priv *priv = netdev_priv(dev);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1910,7 +1910,8 @@ void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw)
19101910
}
19111911

19121912
u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb,
1913-
void *accel_priv, select_queue_fallback_t fallback)
1913+
struct net_device *sb_dev,
1914+
select_queue_fallback_t fallback)
19141915
{
19151916
struct bnx2x *bp = netdev_priv(dev);
19161917

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,8 @@ int bnx2x_set_vf_vlan(struct net_device *netdev, int vf, u16 vlan, u8 qos,
497497

498498
/* select_queue callback */
499499
u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb,
500-
void *accel_priv, select_queue_fallback_t fallback);
500+
struct net_device *sb_dev,
501+
select_queue_fallback_t fallback);
501502

502503
static inline void bnx2x_update_rx_prod(struct bnx2x *bp,
503504
struct bnx2x_fastpath *fp,

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -930,7 +930,8 @@ static int setup_sge_queues(struct adapter *adap)
930930
}
931931

932932
static u16 cxgb_select_queue(struct net_device *dev, struct sk_buff *skb,
933-
void *accel_priv, select_queue_fallback_t fallback)
933+
struct net_device *sb_dev,
934+
select_queue_fallback_t fallback)
934935
{
935936
int txq;
936937

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2022,7 +2022,8 @@ static void hns_nic_get_stats64(struct net_device *ndev,
20222022

20232023
static u16
20242024
hns_nic_select_queue(struct net_device *ndev, struct sk_buff *skb,
2025-
void *accel_priv, select_queue_fallback_t fallback)
2025+
struct net_device *sb_dev,
2026+
select_queue_fallback_t fallback)
20262027
{
20272028
struct ethhdr *eth_hdr = (struct ethhdr *)skb->data;
20282029
struct hns_nic_priv *priv = netdev_priv(ndev);

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8210,15 +8210,16 @@ static void ixgbe_atr(struct ixgbe_ring *ring,
82108210

82118211
#ifdef IXGBE_FCOE
82128212
static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb,
8213-
void *accel_priv, select_queue_fallback_t fallback)
8213+
struct net_device *sb_dev,
8214+
select_queue_fallback_t fallback)
82148215
{
82158216
struct ixgbe_adapter *adapter;
82168217
struct ixgbe_ring_feature *f;
82178218
int txq;
82188219

8219-
if (accel_priv) {
8220+
if (sb_dev) {
82208221
u8 tc = netdev_get_prio_tc_map(dev, skb->priority);
8221-
struct net_device *vdev = accel_priv;
8222+
struct net_device *vdev = sb_dev;
82228223

82238224
txq = vdev->tc_to_txq[tc].offset;
82248225
txq += reciprocal_scale(skb_get_hash(skb),

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,8 @@ static void build_inline_wqe(struct mlx4_en_tx_desc *tx_desc,
688688
}
689689

690690
u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb,
691-
void *accel_priv, select_queue_fallback_t fallback)
691+
struct net_device *sb_dev,
692+
select_queue_fallback_t fallback)
692693
{
693694
struct mlx4_en_priv *priv = netdev_priv(dev);
694695
u16 rings_p_up = priv->num_tx_rings_p_up;

drivers/net/ethernet/mellanox/mlx4/mlx4_en.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -699,7 +699,8 @@ void mlx4_en_arm_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq);
699699

700700
void mlx4_en_tx_irq(struct mlx4_cq *mcq);
701701
u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb,
702-
void *accel_priv, select_queue_fallback_t fallback);
702+
struct net_device *sb_dev,
703+
select_queue_fallback_t fallback);
703704
netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev);
704705
netdev_tx_t mlx4_en_xmit_frame(struct mlx4_en_rx_ring *rx_ring,
705706
struct mlx4_en_rx_alloc *frame,

drivers/net/ethernet/mellanox/mlx5/core/en.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -865,7 +865,8 @@ struct mlx5e_profile {
865865
void mlx5e_build_ptys2ethtool_map(void);
866866

867867
u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb,
868-
void *accel_priv, select_queue_fallback_t fallback);
868+
struct net_device *sb_dev,
869+
select_queue_fallback_t fallback);
869870
netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev);
870871
netdev_tx_t mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
871872
struct mlx5e_tx_wqe *wqe, u16 pi);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ static inline int mlx5e_get_dscp_up(struct mlx5e_priv *priv, struct sk_buff *skb
111111
#endif
112112

113113
u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb,
114-
void *accel_priv, select_queue_fallback_t fallback)
114+
struct net_device *sb_dev,
115+
select_queue_fallback_t fallback)
115116
{
116117
struct mlx5e_priv *priv = netdev_priv(dev);
117118
int channel_ix = fallback(dev, skb);

drivers/net/ethernet/renesas/ravb_main.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1656,7 +1656,8 @@ static netdev_tx_t ravb_start_xmit(struct sk_buff *skb, struct net_device *ndev)
16561656
}
16571657

16581658
static u16 ravb_select_queue(struct net_device *ndev, struct sk_buff *skb,
1659-
void *accel_priv, select_queue_fallback_t fallback)
1659+
struct net_device *sb_dev,
1660+
select_queue_fallback_t fallback)
16601661
{
16611662
/* If skb needs TX timestamp, it is handled in network control queue */
16621663
return (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) ? RAVB_NC :

drivers/net/ethernet/sun/ldmvsw.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,8 @@ static struct vnet_port *vsw_tx_port_find(struct sk_buff *skb,
101101
}
102102

103103
static u16 vsw_select_queue(struct net_device *dev, struct sk_buff *skb,
104-
void *accel_priv, select_queue_fallback_t fallback)
104+
struct net_device *sb_dev,
105+
select_queue_fallback_t fallback)
105106
{
106107
struct vnet_port *port = netdev_priv(dev);
107108

drivers/net/ethernet/sun/sunvnet.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,8 @@ static struct vnet_port *vnet_tx_port_find(struct sk_buff *skb,
234234
}
235235

236236
static u16 vnet_select_queue(struct net_device *dev, struct sk_buff *skb,
237-
void *accel_priv, select_queue_fallback_t fallback)
237+
struct net_device *sb_dev,
238+
select_queue_fallback_t fallback)
238239
{
239240
struct vnet *vp = netdev_priv(dev);
240241
struct vnet_port *port = __tx_port_find(vp, skb);

drivers/net/hyperv/netvsc_drv.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ static u16 netvsc_pick_tx(struct net_device *ndev, struct sk_buff *skb)
329329
}
330330

331331
static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
332-
void *accel_priv,
332+
struct net_device *sb_dev,
333333
select_queue_fallback_t fallback)
334334
{
335335
struct net_device_context *ndc = netdev_priv(ndev);
@@ -343,7 +343,7 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
343343

344344
if (vf_ops->ndo_select_queue)
345345
txq = vf_ops->ndo_select_queue(vf_netdev, skb,
346-
accel_priv, fallback);
346+
sb_dev, fallback);
347347
else
348348
txq = fallback(vf_netdev, skb);
349349

drivers/net/net_failover.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,8 @@ static netdev_tx_t net_failover_start_xmit(struct sk_buff *skb,
115115
}
116116

117117
static u16 net_failover_select_queue(struct net_device *dev,
118-
struct sk_buff *skb, void *accel_priv,
118+
struct sk_buff *skb,
119+
struct net_device *sb_dev,
119120
select_queue_fallback_t fallback)
120121
{
121122
struct net_failover_info *nfo_info = netdev_priv(dev);
@@ -128,7 +129,7 @@ static u16 net_failover_select_queue(struct net_device *dev,
128129

129130
if (ops->ndo_select_queue)
130131
txq = ops->ndo_select_queue(primary_dev, skb,
131-
accel_priv, fallback);
132+
sb_dev, fallback);
132133
else
133134
txq = fallback(primary_dev, skb);
134135

drivers/net/team/team.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1707,7 +1707,8 @@ static netdev_tx_t team_xmit(struct sk_buff *skb, struct net_device *dev)
17071707
}
17081708

17091709
static u16 team_select_queue(struct net_device *dev, struct sk_buff *skb,
1710-
void *accel_priv, select_queue_fallback_t fallback)
1710+
struct net_device *sb_dev,
1711+
select_queue_fallback_t fallback)
17111712
{
17121713
/*
17131714
* This helper function exists to help dev_pick_tx get the correct

drivers/net/tun.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,8 @@ static u16 tun_ebpf_select_queue(struct tun_struct *tun, struct sk_buff *skb)
607607
}
608608

609609
static u16 tun_select_queue(struct net_device *dev, struct sk_buff *skb,
610-
void *accel_priv, select_queue_fallback_t fallback)
610+
struct net_device *sb_dev,
611+
select_queue_fallback_t fallback)
611612
{
612613
struct tun_struct *tun = netdev_priv(dev);
613614
u16 ret;

drivers/net/wireless/marvell/mwifiex/main.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1279,7 +1279,8 @@ static struct net_device_stats *mwifiex_get_stats(struct net_device *dev)
12791279

12801280
static u16
12811281
mwifiex_netdev_select_wmm_queue(struct net_device *dev, struct sk_buff *skb,
1282-
void *accel_priv, select_queue_fallback_t fallback)
1282+
struct net_device *sb_dev,
1283+
select_queue_fallback_t fallback)
12831284
{
12841285
skb->priority = cfg80211_classify8021d(skb, NULL);
12851286
return mwifiex_1d_to_wmm_queue[skb->priority];

drivers/net/xen-netback/interface.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ void xenvif_wake_queue(struct xenvif_queue *queue)
148148
}
149149

150150
static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb,
151-
void *accel_priv,
151+
struct net_device *sb_dev,
152152
select_queue_fallback_t fallback)
153153
{
154154
struct xenvif *vif = netdev_priv(dev);

drivers/net/xen-netfront.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,8 @@ static int xennet_count_skb_slots(struct sk_buff *skb)
545545
}
546546

547547
static u16 xennet_select_queue(struct net_device *dev, struct sk_buff *skb,
548-
void *accel_priv, select_queue_fallback_t fallback)
548+
struct net_device *sb_dev,
549+
select_queue_fallback_t fallback)
549550
{
550551
unsigned int num_queues = dev->real_num_tx_queues;
551552
u32 hash;

drivers/staging/rtl8188eu/os_dep/os_intfs.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,8 @@ static unsigned int rtw_classify8021d(struct sk_buff *skb)
253253
}
254254

255255
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb,
256-
void *accel_priv, select_queue_fallback_t fallback)
256+
struct net_device *sb_dev,
257+
select_queue_fallback_t fallback)
257258
{
258259
struct adapter *padapter = rtw_netdev_priv(dev);
259260
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;

drivers/staging/rtl8723bs/os_dep/os_intfs.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -403,10 +403,9 @@ static unsigned int rtw_classify8021d(struct sk_buff *skb)
403403
}
404404

405405

406-
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb
407-
, void *accel_priv
408-
, select_queue_fallback_t fallback
409-
)
406+
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb,
407+
struct net_device *sb_dev,
408+
select_queue_fallback_t fallback)
410409
{
411410
struct adapter *padapter = rtw_netdev_priv(dev);
412411
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;

include/linux/netdevice.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -957,7 +957,8 @@ struct dev_ifalias {
957957
* those the driver believes to be appropriate.
958958
*
959959
* u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb,
960-
* void *accel_priv, select_queue_fallback_t fallback);
960+
* struct net_device *sb_dev,
961+
* select_queue_fallback_t fallback);
961962
* Called to decide which queue to use when device supports multiple
962963
* transmit queues.
963964
*
@@ -1229,7 +1230,7 @@ struct net_device_ops {
12291230
netdev_features_t features);
12301231
u16 (*ndo_select_queue)(struct net_device *dev,
12311232
struct sk_buff *skb,
1232-
void *accel_priv,
1233+
struct net_device *sb_dev,
12331234
select_queue_fallback_t fallback);
12341235
void (*ndo_change_rx_flags)(struct net_device *dev,
12351236
int flags);
@@ -2568,9 +2569,11 @@ void dev_close_many(struct list_head *head, bool unlink);
25682569
void dev_disable_lro(struct net_device *dev);
25692570
int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *newskb);
25702571
u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb,
2571-
void *accel_priv, select_queue_fallback_t fallback);
2572+
struct net_device *sb_dev,
2573+
select_queue_fallback_t fallback);
25722574
u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb,
2573-
void *accel_priv, select_queue_fallback_t fallback);
2575+
struct net_device *sb_dev,
2576+
select_queue_fallback_t fallback);
25742577
int dev_queue_xmit(struct sk_buff *skb);
25752578
int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev);
25762579
int dev_direct_xmit(struct sk_buff *skb, u16 queue_id);

net/core/dev.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3618,14 +3618,16 @@ static int get_xps_queue(struct net_device *dev, struct net_device *sb_dev,
36183618
}
36193619

36203620
u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb,
3621-
void *accel_priv, select_queue_fallback_t fallback)
3621+
struct net_device *sb_dev,
3622+
select_queue_fallback_t fallback)
36223623
{
36233624
return 0;
36243625
}
36253626
EXPORT_SYMBOL(dev_pick_tx_zero);
36263627

36273628
u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb,
3628-
void *accel_priv, select_queue_fallback_t fallback)
3629+
struct net_device *sb_dev,
3630+
select_queue_fallback_t fallback)
36293631
{
36303632
return (u16)raw_smp_processor_id() % dev->real_num_tx_queues;
36313633
}

net/mac80211/iface.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,7 +1130,7 @@ static void ieee80211_uninit(struct net_device *dev)
11301130

11311131
static u16 ieee80211_netdev_select_queue(struct net_device *dev,
11321132
struct sk_buff *skb,
1133-
void *accel_priv,
1133+
struct net_device *sb_dev,
11341134
select_queue_fallback_t fallback)
11351135
{
11361136
return ieee80211_select_queue(IEEE80211_DEV_TO_SUB_IF(dev), skb);
@@ -1176,7 +1176,7 @@ static const struct net_device_ops ieee80211_dataif_ops = {
11761176

11771177
static u16 ieee80211_monitor_select_queue(struct net_device *dev,
11781178
struct sk_buff *skb,
1179-
void *accel_priv,
1179+
struct net_device *sb_dev,
11801180
select_queue_fallback_t fallback)
11811181
{
11821182
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);

0 commit comments

Comments
 (0)