diff options
author | Alexander Duyck <alexander.h.duyck@intel.com> | 2018-07-09 12:19:59 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2018-07-09 16:41:34 -0400 |
commit | 4f49dec9075aa0277b8c9c657ec31e6361f88724 (patch) | |
tree | 939ce61bc940ed3fbc7abaf0d9b6d3c3ce81da0f | |
parent | a4ea8a3dacc312c3402c78f6e4843afdda9b43a0 (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>
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 | ||
424 | static u16 hfi1_vnic_select_queue(struct net_device *netdev, | 424 | static 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 | ||
97 | static u16 opa_vnic_select_queue(struct net_device *netdev, struct sk_buff *skb, | 97 | static 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 | ||
4096 | static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb, | 4096 | 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) | ||
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 | ||
2215 | static u16 ena_select_queue(struct net_device *dev, struct sk_buff *skb, | 2215 | 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) | ||
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 | ||
2109 | static u16 bcm_sysport_select_queue(struct net_device *dev, struct sk_buff *skb, | 2109 | static 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 | ||
1912 | u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb, | 1912 | 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) | ||
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 */ |
499 | u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb, | 499 | 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); | ||
501 | 502 | ||
502 | static inline void bnx2x_update_rx_prod(struct bnx2x *bp, | 503 | static 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 | ||
932 | static u16 cxgb_select_queue(struct net_device *dev, struct sk_buff *skb, | 932 | 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) | ||
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 | ||
2023 | static u16 | 2023 | static u16 |
2024 | hns_nic_select_queue(struct net_device *ndev, struct sk_buff *skb, | 2024 | 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) | ||
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 |
8212 | static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb, | 8212 | 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) | ||
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 | ||
690 | u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb, | 690 | 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) | ||
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 | ||
700 | void mlx4_en_tx_irq(struct mlx4_cq *mcq); | 700 | void mlx4_en_tx_irq(struct mlx4_cq *mcq); |
701 | u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb, | 701 | 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); | ||
703 | netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev); | 704 | netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev); |
704 | netdev_tx_t mlx4_en_xmit_frame(struct mlx4_en_rx_ring *rx_ring, | 705 | netdev_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 { | |||
865 | void mlx5e_build_ptys2ethtool_map(void); | 865 | void mlx5e_build_ptys2ethtool_map(void); |
866 | 866 | ||
867 | u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb, | 867 | 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); | ||
869 | netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev); | 870 | netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev); |
870 | netdev_tx_t mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb, | 871 | netdev_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 | ||
113 | u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb, | 113 | 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) | ||
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 | ||
1658 | static u16 ravb_select_queue(struct net_device *ndev, struct sk_buff *skb, | 1658 | 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) | ||
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 | ||
103 | static u16 vsw_select_queue(struct net_device *dev, struct sk_buff *skb, | 103 | 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) | ||
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 | ||
236 | static u16 vnet_select_queue(struct net_device *dev, struct sk_buff *skb, | 236 | 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) | ||
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 | ||
331 | static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb, | 331 | static 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 | ||
117 | static u16 net_failover_select_queue(struct net_device *dev, | 117 | 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, | ||
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 | ||
1709 | static u16 team_select_queue(struct net_device *dev, struct sk_buff *skb, | 1709 | 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) | ||
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 | ||
609 | static u16 tun_select_queue(struct net_device *dev, struct sk_buff *skb, | 609 | 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) | ||
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 | ||
1280 | static u16 | 1280 | static u16 |
1281 | mwifiex_netdev_select_wmm_queue(struct net_device *dev, struct sk_buff *skb, | 1281 | 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) | ||
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 | ||
150 | static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb, | 150 | static 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 | ||
547 | static u16 xennet_select_queue(struct net_device *dev, struct sk_buff *skb, | 547 | 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) | ||
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 | ||
255 | static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb, | 255 | 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) | ||
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 | ||
406 | static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb | 406 | static 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); | |||
2568 | void dev_disable_lro(struct net_device *dev); | 2569 | void dev_disable_lro(struct net_device *dev); |
2569 | int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *newskb); | 2570 | int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *newskb); |
2570 | u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb, | 2571 | 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); | ||
2572 | u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb, | 2574 | 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); | ||
2574 | int dev_queue_xmit(struct sk_buff *skb); | 2577 | int dev_queue_xmit(struct sk_buff *skb); |
2575 | int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev); | 2578 | int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev); |
2576 | int dev_direct_xmit(struct sk_buff *skb, u16 queue_id); | 2579 | int 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 | ||
3620 | u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb, | 3620 | 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) | ||
3622 | { | 3623 | { |
3623 | return 0; | 3624 | return 0; |
3624 | } | 3625 | } |
3625 | EXPORT_SYMBOL(dev_pick_tx_zero); | 3626 | EXPORT_SYMBOL(dev_pick_tx_zero); |
3626 | 3627 | ||
3627 | u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb, | 3628 | 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) | ||
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 | ||
1131 | static u16 ieee80211_netdev_select_queue(struct net_device *dev, | 1131 | static 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 | ||
1177 | static u16 ieee80211_monitor_select_queue(struct net_device *dev, | 1177 | static 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); |