summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Duyck <alexander.h.duyck@intel.com>2018-07-09 12:19:59 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2018-07-09 16:41:34 -0400
commit4f49dec9075aa0277b8c9c657ec31e6361f88724 (patch)
tree939ce61bc940ed3fbc7abaf0d9b6d3c3ce81da0f
parenta4ea8a3dacc312c3402c78f6e4843afdda9b43a0 (diff)
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>
-rw-r--r--drivers/infiniband/hw/hfi1/vnic_main.c2
-rw-r--r--drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c4
-rw-r--r--drivers/net/bonding/bond_main.c3
-rw-r--r--drivers/net/ethernet/amazon/ena/ena_netdev.c3
-rw-r--r--drivers/net/ethernet/broadcom/bcmsysport.c2
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c3
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h3
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c3
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_enet.c3
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c7
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_tx.c3
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/mlx4_en.h3
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en.h3
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_tx.c3
-rw-r--r--drivers/net/ethernet/renesas/ravb_main.c3
-rw-r--r--drivers/net/ethernet/sun/ldmvsw.c3
-rw-r--r--drivers/net/ethernet/sun/sunvnet.c3
-rw-r--r--drivers/net/hyperv/netvsc_drv.c4
-rw-r--r--drivers/net/net_failover.c5
-rw-r--r--drivers/net/team/team.c3
-rw-r--r--drivers/net/tun.c3
-rw-r--r--drivers/net/wireless/marvell/mwifiex/main.c3
-rw-r--r--drivers/net/xen-netback/interface.c2
-rw-r--r--drivers/net/xen-netfront.c3
-rw-r--r--drivers/staging/rtl8188eu/os_dep/os_intfs.c3
-rw-r--r--drivers/staging/rtl8723bs/os_dep/os_intfs.c7
-rw-r--r--include/linux/netdevice.h11
-rw-r--r--net/core/dev.c6
-rw-r--r--net/mac80211/iface.c4
29 files changed, 66 insertions, 42 deletions
diff --git a/drivers/infiniband/hw/hfi1/vnic_main.c b/drivers/infiniband/hw/hfi1/vnic_main.c
index 5d65582fe4d9..616fc9b6fad8 100644
--- a/drivers/infiniband/hw/hfi1/vnic_main.c
+++ b/drivers/infiniband/hw/hfi1/vnic_main.c
@@ -423,7 +423,7 @@ tx_finish:
423 423
424static u16 hfi1_vnic_select_queue(struct net_device *netdev, 424static u16 hfi1_vnic_select_queue(struct net_device *netdev,
425 struct sk_buff *skb, 425 struct sk_buff *skb,
426 void *accel_priv, 426 struct net_device *sb_dev,
427 select_queue_fallback_t fallback) 427 select_queue_fallback_t fallback)
428{ 428{
429 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev); 429 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev);
diff --git a/drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c b/drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c
index 0c8aec62a425..61558788b3fa 100644
--- a/drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c
+++ b/drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c
@@ -95,7 +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 void *accel_priv, 98 struct net_device *sb_dev,
99 select_queue_fallback_t fallback) 99 select_queue_fallback_t fallback)
100{ 100{
101 struct opa_vnic_adapter *adapter = opa_vnic_priv(netdev); 101 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,
107 mdata->entropy = opa_vnic_calc_entropy(skb); 107 mdata->entropy = opa_vnic_calc_entropy(skb);
108 mdata->vl = opa_vnic_get_vl(adapter, skb); 108 mdata->vl = opa_vnic_get_vl(adapter, skb);
109 rc = adapter->rn_ops->ndo_select_queue(netdev, skb, 109 rc = adapter->rn_ops->ndo_select_queue(netdev, skb,
110 accel_priv, fallback); 110 sb_dev, fallback);
111 skb_pull(skb, sizeof(*mdata)); 111 skb_pull(skb, sizeof(*mdata));
112 return rc; 112 return rc;
113} 113}
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 63e3844c5bec..9a2ea3c1f949 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -4094,7 +4094,8 @@ static inline int bond_slave_override(struct bonding *bond,
4094 4094
4095 4095
4096static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb, 4096static 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)
4098{ 4099{
4099 /* This helper function exists to help dev_pick_tx get the correct 4100 /* This helper function exists to help dev_pick_tx get the correct
4100 * destination queue. Using a helper function skips a call to 4101 * destination queue. Using a helper function skips a call to
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index f2af87d70594..e3befb1f9204 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -2213,7 +2213,8 @@ static void ena_netpoll(struct net_device *netdev)
2213#endif /* CONFIG_NET_POLL_CONTROLLER */ 2213#endif /* CONFIG_NET_POLL_CONTROLLER */
2214 2214
2215static u16 ena_select_queue(struct net_device *dev, struct sk_buff *skb, 2215static 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)
2217{ 2218{
2218 u16 qid; 2219 u16 qid;
2219 /* we suspect that this is good for in--kernel network services that 2220 /* we suspect that this is good for in--kernel network services that
diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c
index d5fca2e5a9bc..32f548e6431d 100644
--- a/drivers/net/ethernet/broadcom/bcmsysport.c
+++ b/drivers/net/ethernet/broadcom/bcmsysport.c
@@ -2107,7 +2107,7 @@ static const struct ethtool_ops bcm_sysport_ethtool_ops = {
2107}; 2107};
2108 2108
2109static u16 bcm_sysport_select_queue(struct net_device *dev, struct sk_buff *skb, 2109static u16 bcm_sysport_select_queue(struct net_device *dev, struct sk_buff *skb,
2110 void *accel_priv, 2110 struct net_device *sb_dev,
2111 select_queue_fallback_t fallback) 2111 select_queue_fallback_t fallback)
2112{ 2112{
2113 struct bcm_sysport_priv *priv = netdev_priv(dev); 2113 struct bcm_sysport_priv *priv = netdev_priv(dev);
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index af7b5a4d8ba0..e4e1cf907ac6 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -1910,7 +1910,8 @@ void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw)
1910} 1910}
1911 1911
1912u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb, 1912u16 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)
1914{ 1915{
1915 struct bnx2x *bp = netdev_priv(dev); 1916 struct bnx2x *bp = netdev_priv(dev);
1916 1917
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
index a8ce5c55bbb0..0e508e5defce 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
@@ -497,7 +497,8 @@ int bnx2x_set_vf_vlan(struct net_device *netdev, int vf, u16 vlan, u8 qos,
497 497
498/* select_queue callback */ 498/* select_queue callback */
499u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb, 499u16 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);
501 502
502static inline void bnx2x_update_rx_prod(struct bnx2x *bp, 503static inline void bnx2x_update_rx_prod(struct bnx2x *bp,
503 struct bnx2x_fastpath *fp, 504 struct bnx2x_fastpath *fp,
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
index 0d91716a2566..5dc5e5604f05 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
@@ -930,7 +930,8 @@ freeout:
930} 930}
931 931
932static u16 cxgb_select_queue(struct net_device *dev, struct sk_buff *skb, 932static 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)
934{ 935{
935 int txq; 936 int txq;
936 937
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
index ef9ef703d13a..ff7a74ec8f11 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
@@ -2022,7 +2022,8 @@ static void hns_nic_get_stats64(struct net_device *ndev,
2022 2022
2023static u16 2023static u16
2024hns_nic_select_queue(struct net_device *ndev, struct sk_buff *skb, 2024hns_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)
2026{ 2027{
2027 struct ethhdr *eth_hdr = (struct ethhdr *)skb->data; 2028 struct ethhdr *eth_hdr = (struct ethhdr *)skb->data;
2028 struct hns_nic_priv *priv = netdev_priv(ndev); 2029 struct hns_nic_priv *priv = netdev_priv(ndev);
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index abb176df2e7f..8c7a68c57afa 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -8210,15 +8210,16 @@ static void ixgbe_atr(struct ixgbe_ring *ring,
8210 8210
8211#ifdef IXGBE_FCOE 8211#ifdef IXGBE_FCOE
8212static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb, 8212static 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)
8214{ 8215{
8215 struct ixgbe_adapter *adapter; 8216 struct ixgbe_adapter *adapter;
8216 struct ixgbe_ring_feature *f; 8217 struct ixgbe_ring_feature *f;
8217 int txq; 8218 int txq;
8218 8219
8219 if (accel_priv) { 8220 if (sb_dev) {
8220 u8 tc = netdev_get_prio_tc_map(dev, skb->priority); 8221 u8 tc = netdev_get_prio_tc_map(dev, skb->priority);
8221 struct net_device *vdev = accel_priv; 8222 struct net_device *vdev = sb_dev;
8222 8223
8223 txq = vdev->tc_to_txq[tc].offset; 8224 txq = vdev->tc_to_txq[tc].offset;
8224 txq += reciprocal_scale(skb_get_hash(skb), 8225 txq += reciprocal_scale(skb_get_hash(skb),
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
index 0227786308af..df2996618cd1 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
@@ -688,7 +688,8 @@ static void build_inline_wqe(struct mlx4_en_tx_desc *tx_desc,
688} 688}
689 689
690u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb, 690u16 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)
692{ 693{
693 struct mlx4_en_priv *priv = netdev_priv(dev); 694 struct mlx4_en_priv *priv = netdev_priv(dev);
694 u16 rings_p_up = priv->num_tx_rings_p_up; 695 u16 rings_p_up = priv->num_tx_rings_p_up;
diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
index ace6545f82e6..c3228b89df46 100644
--- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
@@ -699,7 +699,8 @@ void mlx4_en_arm_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq);
699 699
700void mlx4_en_tx_irq(struct mlx4_cq *mcq); 700void mlx4_en_tx_irq(struct mlx4_cq *mcq);
701u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb, 701u16 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);
703netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev); 704netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev);
704netdev_tx_t mlx4_en_xmit_frame(struct mlx4_en_rx_ring *rx_ring, 705netdev_tx_t mlx4_en_xmit_frame(struct mlx4_en_rx_ring *rx_ring,
705 struct mlx4_en_rx_alloc *frame, 706 struct mlx4_en_rx_alloc *frame,
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
index e2b7586ed7a0..e1b237ccdf56 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
@@ -865,7 +865,8 @@ struct mlx5e_profile {
865void mlx5e_build_ptys2ethtool_map(void); 865void mlx5e_build_ptys2ethtool_map(void);
866 866
867u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb, 867u16 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);
869netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev); 870netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev);
870netdev_tx_t mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb, 871netdev_tx_t mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
871 struct mlx5e_tx_wqe *wqe, u16 pi); 872 struct mlx5e_tx_wqe *wqe, u16 pi);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
index f0739dae7b56..dfcc3710b65f 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
@@ -111,7 +111,8 @@ static inline int mlx5e_get_dscp_up(struct mlx5e_priv *priv, struct sk_buff *skb
111#endif 111#endif
112 112
113u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb, 113u16 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)
115{ 116{
116 struct mlx5e_priv *priv = netdev_priv(dev); 117 struct mlx5e_priv *priv = netdev_priv(dev);
117 int channel_ix = fallback(dev, skb); 118 int channel_ix = fallback(dev, skb);
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 68f122140966..4a7f54c8e7aa 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -1656,7 +1656,8 @@ drop:
1656} 1656}
1657 1657
1658static u16 ravb_select_queue(struct net_device *ndev, struct sk_buff *skb, 1658static 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)
1660{ 1661{
1661 /* If skb needs TX timestamp, it is handled in network control queue */ 1662 /* If skb needs TX timestamp, it is handled in network control queue */
1662 return (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) ? RAVB_NC : 1663 return (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) ? RAVB_NC :
diff --git a/drivers/net/ethernet/sun/ldmvsw.c b/drivers/net/ethernet/sun/ldmvsw.c
index a5dd627fe2f9..d42f47f6c632 100644
--- a/drivers/net/ethernet/sun/ldmvsw.c
+++ b/drivers/net/ethernet/sun/ldmvsw.c
@@ -101,7 +101,8 @@ static struct vnet_port *vsw_tx_port_find(struct sk_buff *skb,
101} 101}
102 102
103static u16 vsw_select_queue(struct net_device *dev, struct sk_buff *skb, 103static 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)
105{ 106{
106 struct vnet_port *port = netdev_priv(dev); 107 struct vnet_port *port = netdev_priv(dev);
107 108
diff --git a/drivers/net/ethernet/sun/sunvnet.c b/drivers/net/ethernet/sun/sunvnet.c
index a94f50442613..12539b357a78 100644
--- a/drivers/net/ethernet/sun/sunvnet.c
+++ b/drivers/net/ethernet/sun/sunvnet.c
@@ -234,7 +234,8 @@ static struct vnet_port *vnet_tx_port_find(struct sk_buff *skb,
234} 234}
235 235
236static u16 vnet_select_queue(struct net_device *dev, struct sk_buff *skb, 236static 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)
238{ 239{
239 struct vnet *vp = netdev_priv(dev); 240 struct vnet *vp = netdev_priv(dev);
240 struct vnet_port *port = __tx_port_find(vp, skb); 241 struct vnet_port *port = __tx_port_find(vp, skb);
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index dd1d6e115145..98c0107d6ca1 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -329,7 +329,7 @@ static u16 netvsc_pick_tx(struct net_device *ndev, struct sk_buff *skb)
329} 329}
330 330
331static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb, 331static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
332 void *accel_priv, 332 struct net_device *sb_dev,
333 select_queue_fallback_t fallback) 333 select_queue_fallback_t fallback)
334{ 334{
335 struct net_device_context *ndc = netdev_priv(ndev); 335 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,
343 343
344 if (vf_ops->ndo_select_queue) 344 if (vf_ops->ndo_select_queue)
345 txq = vf_ops->ndo_select_queue(vf_netdev, skb, 345 txq = vf_ops->ndo_select_queue(vf_netdev, skb,
346 accel_priv, fallback); 346 sb_dev, fallback);
347 else 347 else
348 txq = fallback(vf_netdev, skb); 348 txq = fallback(vf_netdev, skb);
349 349
diff --git a/drivers/net/net_failover.c b/drivers/net/net_failover.c
index 4f390fa557e4..78b549698b7b 100644
--- a/drivers/net/net_failover.c
+++ b/drivers/net/net_failover.c
@@ -115,7 +115,8 @@ static netdev_tx_t net_failover_start_xmit(struct sk_buff *skb,
115} 115}
116 116
117static u16 net_failover_select_queue(struct net_device *dev, 117static 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,
119 select_queue_fallback_t fallback) 120 select_queue_fallback_t fallback)
120{ 121{
121 struct net_failover_info *nfo_info = netdev_priv(dev); 122 struct net_failover_info *nfo_info = netdev_priv(dev);
@@ -128,7 +129,7 @@ static u16 net_failover_select_queue(struct net_device *dev,
128 129
129 if (ops->ndo_select_queue) 130 if (ops->ndo_select_queue)
130 txq = ops->ndo_select_queue(primary_dev, skb, 131 txq = ops->ndo_select_queue(primary_dev, skb,
131 accel_priv, fallback); 132 sb_dev, fallback);
132 else 133 else
133 txq = fallback(primary_dev, skb); 134 txq = fallback(primary_dev, skb);
134 135
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index b070959737ff..3a95eaae0c98 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -1707,7 +1707,8 @@ static netdev_tx_t team_xmit(struct sk_buff *skb, struct net_device *dev)
1707} 1707}
1708 1708
1709static u16 team_select_queue(struct net_device *dev, struct sk_buff *skb, 1709static 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)
1711{ 1712{
1712 /* 1713 /*
1713 * This helper function exists to help dev_pick_tx get the correct 1714 * This helper function exists to help dev_pick_tx get the correct
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index a192a017cc68..76f0f4131197 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -607,7 +607,8 @@ static u16 tun_ebpf_select_queue(struct tun_struct *tun, struct sk_buff *skb)
607} 607}
608 608
609static u16 tun_select_queue(struct net_device *dev, struct sk_buff *skb, 609static 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)
611{ 612{
612 struct tun_struct *tun = netdev_priv(dev); 613 struct tun_struct *tun = netdev_priv(dev);
613 u16 ret; 614 u16 ret;
diff --git a/drivers/net/wireless/marvell/mwifiex/main.c b/drivers/net/wireless/marvell/mwifiex/main.c
index 510f6b8e717d..fa3e8ddfe9a9 100644
--- a/drivers/net/wireless/marvell/mwifiex/main.c
+++ b/drivers/net/wireless/marvell/mwifiex/main.c
@@ -1279,7 +1279,8 @@ static struct net_device_stats *mwifiex_get_stats(struct net_device *dev)
1279 1279
1280static u16 1280static u16
1281mwifiex_netdev_select_wmm_queue(struct net_device *dev, struct sk_buff *skb, 1281mwifiex_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)
1283{ 1284{
1284 skb->priority = cfg80211_classify8021d(skb, NULL); 1285 skb->priority = cfg80211_classify8021d(skb, NULL);
1285 return mwifiex_1d_to_wmm_queue[skb->priority]; 1286 return mwifiex_1d_to_wmm_queue[skb->priority];
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c
index 78ebe494fef0..19c4c585f472 100644
--- a/drivers/net/xen-netback/interface.c
+++ b/drivers/net/xen-netback/interface.c
@@ -148,7 +148,7 @@ void xenvif_wake_queue(struct xenvif_queue *queue)
148} 148}
149 149
150static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb, 150static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb,
151 void *accel_priv, 151 struct net_device *sb_dev,
152 select_queue_fallback_t fallback) 152 select_queue_fallback_t fallback)
153{ 153{
154 struct xenvif *vif = netdev_priv(dev); 154 struct xenvif *vif = netdev_priv(dev);
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index a57daecf1d57..d67cd379d156 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -545,7 +545,8 @@ static int xennet_count_skb_slots(struct sk_buff *skb)
545} 545}
546 546
547static u16 xennet_select_queue(struct net_device *dev, struct sk_buff *skb, 547static 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)
549{ 550{
550 unsigned int num_queues = dev->real_num_tx_queues; 551 unsigned int num_queues = dev->real_num_tx_queues;
551 u32 hash; 552 u32 hash;
diff --git a/drivers/staging/rtl8188eu/os_dep/os_intfs.c b/drivers/staging/rtl8188eu/os_dep/os_intfs.c
index add1ba00f3e9..38e85c8a85c8 100644
--- a/drivers/staging/rtl8188eu/os_dep/os_intfs.c
+++ b/drivers/staging/rtl8188eu/os_dep/os_intfs.c
@@ -253,7 +253,8 @@ static unsigned int rtw_classify8021d(struct sk_buff *skb)
253} 253}
254 254
255static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb, 255static 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)
257{ 258{
258 struct adapter *padapter = rtw_netdev_priv(dev); 259 struct adapter *padapter = rtw_netdev_priv(dev);
259 struct mlme_priv *pmlmepriv = &padapter->mlmepriv; 260 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
diff --git a/drivers/staging/rtl8723bs/os_dep/os_intfs.c b/drivers/staging/rtl8723bs/os_dep/os_intfs.c
index ace68f023b49..181642358e3f 100644
--- a/drivers/staging/rtl8723bs/os_dep/os_intfs.c
+++ b/drivers/staging/rtl8723bs/os_dep/os_intfs.c
@@ -403,10 +403,9 @@ static unsigned int rtw_classify8021d(struct sk_buff *skb)
403} 403}
404 404
405 405
406static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb 406static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb,
407 , void *accel_priv 407 struct net_device *sb_dev,
408 , select_queue_fallback_t fallback 408 select_queue_fallback_t fallback)
409)
410{ 409{
411 struct adapter *padapter = rtw_netdev_priv(dev); 410 struct adapter *padapter = rtw_netdev_priv(dev);
412 struct mlme_priv *pmlmepriv = &padapter->mlmepriv; 411 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 46f4c44ce3e4..bbf062c1ca8a 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -957,7 +957,8 @@ struct dev_ifalias {
957 * those the driver believes to be appropriate. 957 * those the driver believes to be appropriate.
958 * 958 *
959 * u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb, 959 * 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);
961 * Called to decide which queue to use when device supports multiple 962 * Called to decide which queue to use when device supports multiple
962 * transmit queues. 963 * transmit queues.
963 * 964 *
@@ -1229,7 +1230,7 @@ struct net_device_ops {
1229 netdev_features_t features); 1230 netdev_features_t features);
1230 u16 (*ndo_select_queue)(struct net_device *dev, 1231 u16 (*ndo_select_queue)(struct net_device *dev,
1231 struct sk_buff *skb, 1232 struct sk_buff *skb,
1232 void *accel_priv, 1233 struct net_device *sb_dev,
1233 select_queue_fallback_t fallback); 1234 select_queue_fallback_t fallback);
1234 void (*ndo_change_rx_flags)(struct net_device *dev, 1235 void (*ndo_change_rx_flags)(struct net_device *dev,
1235 int flags); 1236 int flags);
@@ -2568,9 +2569,11 @@ void dev_close_many(struct list_head *head, bool unlink);
2568void dev_disable_lro(struct net_device *dev); 2569void dev_disable_lro(struct net_device *dev);
2569int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *newskb); 2570int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *newskb);
2570u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb, 2571u16 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);
2572u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb, 2574u16 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);
2574int dev_queue_xmit(struct sk_buff *skb); 2577int dev_queue_xmit(struct sk_buff *skb);
2575int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev); 2578int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev);
2576int dev_direct_xmit(struct sk_buff *skb, u16 queue_id); 2579int dev_direct_xmit(struct sk_buff *skb, u16 queue_id);
diff --git a/net/core/dev.c b/net/core/dev.c
index b5e538032d5e..a051ce27198b 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3618,14 +3618,16 @@ get_cpus_map:
3618} 3618}
3619 3619
3620u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb, 3620u16 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)
3622{ 3623{
3623 return 0; 3624 return 0;
3624} 3625}
3625EXPORT_SYMBOL(dev_pick_tx_zero); 3626EXPORT_SYMBOL(dev_pick_tx_zero);
3626 3627
3627u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb, 3628u16 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)
3629{ 3631{
3630 return (u16)raw_smp_processor_id() % dev->real_num_tx_queues; 3632 return (u16)raw_smp_processor_id() % dev->real_num_tx_queues;
3631} 3633}
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 555e389b7dfa..5e6cf2cee965 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -1130,7 +1130,7 @@ static void ieee80211_uninit(struct net_device *dev)
1130 1130
1131static u16 ieee80211_netdev_select_queue(struct net_device *dev, 1131static u16 ieee80211_netdev_select_queue(struct net_device *dev,
1132 struct sk_buff *skb, 1132 struct sk_buff *skb,
1133 void *accel_priv, 1133 struct net_device *sb_dev,
1134 select_queue_fallback_t fallback) 1134 select_queue_fallback_t fallback)
1135{ 1135{
1136 return ieee80211_select_queue(IEEE80211_DEV_TO_SUB_IF(dev), skb); 1136 return ieee80211_select_queue(IEEE80211_DEV_TO_SUB_IF(dev), skb);
@@ -1176,7 +1176,7 @@ static const struct net_device_ops ieee80211_dataif_ops = {
1176 1176
1177static u16 ieee80211_monitor_select_queue(struct net_device *dev, 1177static u16 ieee80211_monitor_select_queue(struct net_device *dev,
1178 struct sk_buff *skb, 1178 struct sk_buff *skb,
1179 void *accel_priv, 1179 struct net_device *sb_dev,
1180 select_queue_fallback_t fallback) 1180 select_queue_fallback_t fallback)
1181{ 1181{
1182 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); 1182 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);