提交 4f49dec9 编写于 作者: A Alexander Duyck 提交者: Jeff Kirsher

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: NAlexander Duyck <alexander.h.duyck@intel.com>
Tested-by: NAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
上级 a4ea8a3d
...@@ -423,7 +423,7 @@ static netdev_tx_t hfi1_netdev_start_xmit(struct sk_buff *skb, ...@@ -423,7 +423,7 @@ static netdev_tx_t hfi1_netdev_start_xmit(struct sk_buff *skb,
static u16 hfi1_vnic_select_queue(struct net_device *netdev, static u16 hfi1_vnic_select_queue(struct net_device *netdev,
struct sk_buff *skb, struct sk_buff *skb,
void *accel_priv, struct net_device *sb_dev,
select_queue_fallback_t fallback) select_queue_fallback_t fallback)
{ {
struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev); struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev);
......
...@@ -95,7 +95,7 @@ static netdev_tx_t opa_netdev_start_xmit(struct sk_buff *skb, ...@@ -95,7 +95,7 @@ static netdev_tx_t opa_netdev_start_xmit(struct sk_buff *skb,
} }
static u16 opa_vnic_select_queue(struct net_device *netdev, struct sk_buff *skb, static u16 opa_vnic_select_queue(struct net_device *netdev, struct sk_buff *skb,
void *accel_priv, struct net_device *sb_dev,
select_queue_fallback_t fallback) select_queue_fallback_t fallback)
{ {
struct opa_vnic_adapter *adapter = opa_vnic_priv(netdev); 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,7 +107,7 @@ static u16 opa_vnic_select_queue(struct net_device *netdev, struct sk_buff *skb,
mdata->entropy = opa_vnic_calc_entropy(skb); mdata->entropy = opa_vnic_calc_entropy(skb);
mdata->vl = opa_vnic_get_vl(adapter, skb); mdata->vl = opa_vnic_get_vl(adapter, skb);
rc = adapter->rn_ops->ndo_select_queue(netdev, skb, rc = adapter->rn_ops->ndo_select_queue(netdev, skb,
accel_priv, fallback); sb_dev, fallback);
skb_pull(skb, sizeof(*mdata)); skb_pull(skb, sizeof(*mdata));
return rc; return rc;
} }
......
...@@ -4094,7 +4094,8 @@ static inline int bond_slave_override(struct bonding *bond, ...@@ -4094,7 +4094,8 @@ static inline int bond_slave_override(struct bonding *bond,
static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb, static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
/* This helper function exists to help dev_pick_tx get the correct /* This helper function exists to help dev_pick_tx get the correct
* destination queue. Using a helper function skips a call to * destination queue. Using a helper function skips a call to
......
...@@ -2213,7 +2213,8 @@ static void ena_netpoll(struct net_device *netdev) ...@@ -2213,7 +2213,8 @@ static void ena_netpoll(struct net_device *netdev)
#endif /* CONFIG_NET_POLL_CONTROLLER */ #endif /* CONFIG_NET_POLL_CONTROLLER */
static u16 ena_select_queue(struct net_device *dev, struct sk_buff *skb, static u16 ena_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
u16 qid; u16 qid;
/* we suspect that this is good for in--kernel network services that /* we suspect that this is good for in--kernel network services that
......
...@@ -2107,7 +2107,7 @@ static const struct ethtool_ops bcm_sysport_ethtool_ops = { ...@@ -2107,7 +2107,7 @@ static const struct ethtool_ops bcm_sysport_ethtool_ops = {
}; };
static u16 bcm_sysport_select_queue(struct net_device *dev, struct sk_buff *skb, static u16 bcm_sysport_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, struct net_device *sb_dev,
select_queue_fallback_t fallback) select_queue_fallback_t fallback)
{ {
struct bcm_sysport_priv *priv = netdev_priv(dev); struct bcm_sysport_priv *priv = netdev_priv(dev);
......
...@@ -1910,7 +1910,8 @@ void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw) ...@@ -1910,7 +1910,8 @@ void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw)
} }
u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb, u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
struct bnx2x *bp = netdev_priv(dev); struct bnx2x *bp = netdev_priv(dev);
......
...@@ -497,7 +497,8 @@ int bnx2x_set_vf_vlan(struct net_device *netdev, int vf, u16 vlan, u8 qos, ...@@ -497,7 +497,8 @@ int bnx2x_set_vf_vlan(struct net_device *netdev, int vf, u16 vlan, u8 qos,
/* select_queue callback */ /* select_queue callback */
u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb, u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback); struct net_device *sb_dev,
select_queue_fallback_t fallback);
static inline void bnx2x_update_rx_prod(struct bnx2x *bp, static inline void bnx2x_update_rx_prod(struct bnx2x *bp,
struct bnx2x_fastpath *fp, struct bnx2x_fastpath *fp,
......
...@@ -930,7 +930,8 @@ static int setup_sge_queues(struct adapter *adap) ...@@ -930,7 +930,8 @@ static int setup_sge_queues(struct adapter *adap)
} }
static u16 cxgb_select_queue(struct net_device *dev, struct sk_buff *skb, static u16 cxgb_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
int txq; int txq;
......
...@@ -2022,7 +2022,8 @@ static void hns_nic_get_stats64(struct net_device *ndev, ...@@ -2022,7 +2022,8 @@ static void hns_nic_get_stats64(struct net_device *ndev,
static u16 static u16
hns_nic_select_queue(struct net_device *ndev, struct sk_buff *skb, hns_nic_select_queue(struct net_device *ndev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
struct ethhdr *eth_hdr = (struct ethhdr *)skb->data; struct ethhdr *eth_hdr = (struct ethhdr *)skb->data;
struct hns_nic_priv *priv = netdev_priv(ndev); struct hns_nic_priv *priv = netdev_priv(ndev);
......
...@@ -8210,15 +8210,16 @@ static void ixgbe_atr(struct ixgbe_ring *ring, ...@@ -8210,15 +8210,16 @@ static void ixgbe_atr(struct ixgbe_ring *ring,
#ifdef IXGBE_FCOE #ifdef IXGBE_FCOE
static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb, static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
struct ixgbe_adapter *adapter; struct ixgbe_adapter *adapter;
struct ixgbe_ring_feature *f; struct ixgbe_ring_feature *f;
int txq; int txq;
if (accel_priv) { if (sb_dev) {
u8 tc = netdev_get_prio_tc_map(dev, skb->priority); u8 tc = netdev_get_prio_tc_map(dev, skb->priority);
struct net_device *vdev = accel_priv; struct net_device *vdev = sb_dev;
txq = vdev->tc_to_txq[tc].offset; txq = vdev->tc_to_txq[tc].offset;
txq += reciprocal_scale(skb_get_hash(skb), txq += reciprocal_scale(skb_get_hash(skb),
......
...@@ -688,7 +688,8 @@ static void build_inline_wqe(struct mlx4_en_tx_desc *tx_desc, ...@@ -688,7 +688,8 @@ static void build_inline_wqe(struct mlx4_en_tx_desc *tx_desc,
} }
u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb, u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_priv *priv = netdev_priv(dev);
u16 rings_p_up = priv->num_tx_rings_p_up; u16 rings_p_up = priv->num_tx_rings_p_up;
......
...@@ -699,7 +699,8 @@ void mlx4_en_arm_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq); ...@@ -699,7 +699,8 @@ void mlx4_en_arm_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq);
void mlx4_en_tx_irq(struct mlx4_cq *mcq); void mlx4_en_tx_irq(struct mlx4_cq *mcq);
u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb, u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback); struct net_device *sb_dev,
select_queue_fallback_t fallback);
netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev); netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev);
netdev_tx_t mlx4_en_xmit_frame(struct mlx4_en_rx_ring *rx_ring, netdev_tx_t mlx4_en_xmit_frame(struct mlx4_en_rx_ring *rx_ring,
struct mlx4_en_rx_alloc *frame, struct mlx4_en_rx_alloc *frame,
......
...@@ -865,7 +865,8 @@ struct mlx5e_profile { ...@@ -865,7 +865,8 @@ struct mlx5e_profile {
void mlx5e_build_ptys2ethtool_map(void); void mlx5e_build_ptys2ethtool_map(void);
u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb, u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback); struct net_device *sb_dev,
select_queue_fallback_t fallback);
netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev); netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev);
netdev_tx_t mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb, netdev_tx_t mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
struct mlx5e_tx_wqe *wqe, u16 pi); struct mlx5e_tx_wqe *wqe, u16 pi);
......
...@@ -111,7 +111,8 @@ static inline int mlx5e_get_dscp_up(struct mlx5e_priv *priv, struct sk_buff *skb ...@@ -111,7 +111,8 @@ static inline int mlx5e_get_dscp_up(struct mlx5e_priv *priv, struct sk_buff *skb
#endif #endif
u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb, u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
struct mlx5e_priv *priv = netdev_priv(dev); struct mlx5e_priv *priv = netdev_priv(dev);
int channel_ix = fallback(dev, skb); int channel_ix = fallback(dev, skb);
......
...@@ -1656,7 +1656,8 @@ static netdev_tx_t ravb_start_xmit(struct sk_buff *skb, struct net_device *ndev) ...@@ -1656,7 +1656,8 @@ static netdev_tx_t ravb_start_xmit(struct sk_buff *skb, struct net_device *ndev)
} }
static u16 ravb_select_queue(struct net_device *ndev, struct sk_buff *skb, static u16 ravb_select_queue(struct net_device *ndev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
/* If skb needs TX timestamp, it is handled in network control queue */ /* If skb needs TX timestamp, it is handled in network control queue */
return (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) ? RAVB_NC : return (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) ? RAVB_NC :
......
...@@ -101,7 +101,8 @@ static struct vnet_port *vsw_tx_port_find(struct sk_buff *skb, ...@@ -101,7 +101,8 @@ static struct vnet_port *vsw_tx_port_find(struct sk_buff *skb,
} }
static u16 vsw_select_queue(struct net_device *dev, struct sk_buff *skb, static u16 vsw_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
struct vnet_port *port = netdev_priv(dev); struct vnet_port *port = netdev_priv(dev);
......
...@@ -234,7 +234,8 @@ static struct vnet_port *vnet_tx_port_find(struct sk_buff *skb, ...@@ -234,7 +234,8 @@ static struct vnet_port *vnet_tx_port_find(struct sk_buff *skb,
} }
static u16 vnet_select_queue(struct net_device *dev, struct sk_buff *skb, static u16 vnet_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
struct vnet *vp = netdev_priv(dev); struct vnet *vp = netdev_priv(dev);
struct vnet_port *port = __tx_port_find(vp, skb); struct vnet_port *port = __tx_port_find(vp, skb);
......
...@@ -329,7 +329,7 @@ static u16 netvsc_pick_tx(struct net_device *ndev, struct sk_buff *skb) ...@@ -329,7 +329,7 @@ static u16 netvsc_pick_tx(struct net_device *ndev, struct sk_buff *skb)
} }
static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb, static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
void *accel_priv, struct net_device *sb_dev,
select_queue_fallback_t fallback) select_queue_fallback_t fallback)
{ {
struct net_device_context *ndc = netdev_priv(ndev); 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,7 +343,7 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
if (vf_ops->ndo_select_queue) if (vf_ops->ndo_select_queue)
txq = vf_ops->ndo_select_queue(vf_netdev, skb, txq = vf_ops->ndo_select_queue(vf_netdev, skb,
accel_priv, fallback); sb_dev, fallback);
else else
txq = fallback(vf_netdev, skb); txq = fallback(vf_netdev, skb);
......
...@@ -115,7 +115,8 @@ static netdev_tx_t net_failover_start_xmit(struct sk_buff *skb, ...@@ -115,7 +115,8 @@ static netdev_tx_t net_failover_start_xmit(struct sk_buff *skb,
} }
static u16 net_failover_select_queue(struct net_device *dev, static u16 net_failover_select_queue(struct net_device *dev,
struct sk_buff *skb, void *accel_priv, struct sk_buff *skb,
struct net_device *sb_dev,
select_queue_fallback_t fallback) select_queue_fallback_t fallback)
{ {
struct net_failover_info *nfo_info = netdev_priv(dev); struct net_failover_info *nfo_info = netdev_priv(dev);
...@@ -128,7 +129,7 @@ static u16 net_failover_select_queue(struct net_device *dev, ...@@ -128,7 +129,7 @@ static u16 net_failover_select_queue(struct net_device *dev,
if (ops->ndo_select_queue) if (ops->ndo_select_queue)
txq = ops->ndo_select_queue(primary_dev, skb, txq = ops->ndo_select_queue(primary_dev, skb,
accel_priv, fallback); sb_dev, fallback);
else else
txq = fallback(primary_dev, skb); txq = fallback(primary_dev, skb);
......
...@@ -1707,7 +1707,8 @@ static netdev_tx_t team_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1707,7 +1707,8 @@ static netdev_tx_t team_xmit(struct sk_buff *skb, struct net_device *dev)
} }
static u16 team_select_queue(struct net_device *dev, struct sk_buff *skb, static u16 team_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
/* /*
* This helper function exists to help dev_pick_tx get the correct * This helper function exists to help dev_pick_tx get the correct
......
...@@ -607,7 +607,8 @@ static u16 tun_ebpf_select_queue(struct tun_struct *tun, struct sk_buff *skb) ...@@ -607,7 +607,8 @@ static u16 tun_ebpf_select_queue(struct tun_struct *tun, struct sk_buff *skb)
} }
static u16 tun_select_queue(struct net_device *dev, struct sk_buff *skb, static u16 tun_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
struct tun_struct *tun = netdev_priv(dev); struct tun_struct *tun = netdev_priv(dev);
u16 ret; u16 ret;
......
...@@ -1279,7 +1279,8 @@ static struct net_device_stats *mwifiex_get_stats(struct net_device *dev) ...@@ -1279,7 +1279,8 @@ static struct net_device_stats *mwifiex_get_stats(struct net_device *dev)
static u16 static u16
mwifiex_netdev_select_wmm_queue(struct net_device *dev, struct sk_buff *skb, mwifiex_netdev_select_wmm_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
skb->priority = cfg80211_classify8021d(skb, NULL); skb->priority = cfg80211_classify8021d(skb, NULL);
return mwifiex_1d_to_wmm_queue[skb->priority]; return mwifiex_1d_to_wmm_queue[skb->priority];
......
...@@ -148,7 +148,7 @@ void xenvif_wake_queue(struct xenvif_queue *queue) ...@@ -148,7 +148,7 @@ void xenvif_wake_queue(struct xenvif_queue *queue)
} }
static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb, static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, struct net_device *sb_dev,
select_queue_fallback_t fallback) select_queue_fallback_t fallback)
{ {
struct xenvif *vif = netdev_priv(dev); struct xenvif *vif = netdev_priv(dev);
......
...@@ -545,7 +545,8 @@ static int xennet_count_skb_slots(struct sk_buff *skb) ...@@ -545,7 +545,8 @@ static int xennet_count_skb_slots(struct sk_buff *skb)
} }
static u16 xennet_select_queue(struct net_device *dev, struct sk_buff *skb, static u16 xennet_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
unsigned int num_queues = dev->real_num_tx_queues; unsigned int num_queues = dev->real_num_tx_queues;
u32 hash; u32 hash;
......
...@@ -253,7 +253,8 @@ static unsigned int rtw_classify8021d(struct sk_buff *skb) ...@@ -253,7 +253,8 @@ static unsigned int rtw_classify8021d(struct sk_buff *skb)
} }
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb, static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
struct adapter *padapter = rtw_netdev_priv(dev); struct adapter *padapter = rtw_netdev_priv(dev);
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
......
...@@ -403,10 +403,9 @@ static unsigned int rtw_classify8021d(struct sk_buff *skb) ...@@ -403,10 +403,9 @@ static unsigned int rtw_classify8021d(struct sk_buff *skb)
} }
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb,
, void *accel_priv struct net_device *sb_dev,
, select_queue_fallback_t fallback select_queue_fallback_t fallback)
)
{ {
struct adapter *padapter = rtw_netdev_priv(dev); struct adapter *padapter = rtw_netdev_priv(dev);
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
......
...@@ -957,7 +957,8 @@ struct dev_ifalias { ...@@ -957,7 +957,8 @@ struct dev_ifalias {
* those the driver believes to be appropriate. * those the driver believes to be appropriate.
* *
* u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb, * u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb,
* void *accel_priv, select_queue_fallback_t fallback); * struct net_device *sb_dev,
* select_queue_fallback_t fallback);
* Called to decide which queue to use when device supports multiple * Called to decide which queue to use when device supports multiple
* transmit queues. * transmit queues.
* *
...@@ -1229,7 +1230,7 @@ struct net_device_ops { ...@@ -1229,7 +1230,7 @@ struct net_device_ops {
netdev_features_t features); netdev_features_t features);
u16 (*ndo_select_queue)(struct net_device *dev, u16 (*ndo_select_queue)(struct net_device *dev,
struct sk_buff *skb, struct sk_buff *skb,
void *accel_priv, struct net_device *sb_dev,
select_queue_fallback_t fallback); select_queue_fallback_t fallback);
void (*ndo_change_rx_flags)(struct net_device *dev, void (*ndo_change_rx_flags)(struct net_device *dev,
int flags); int flags);
...@@ -2568,9 +2569,11 @@ void dev_close_many(struct list_head *head, bool unlink); ...@@ -2568,9 +2569,11 @@ void dev_close_many(struct list_head *head, bool unlink);
void dev_disable_lro(struct net_device *dev); void dev_disable_lro(struct net_device *dev);
int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *newskb); int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *newskb);
u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb, u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback); struct net_device *sb_dev,
select_queue_fallback_t fallback);
u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb, u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback); struct net_device *sb_dev,
select_queue_fallback_t fallback);
int dev_queue_xmit(struct sk_buff *skb); int dev_queue_xmit(struct sk_buff *skb);
int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev); int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev);
int dev_direct_xmit(struct sk_buff *skb, u16 queue_id); int dev_direct_xmit(struct sk_buff *skb, u16 queue_id);
......
...@@ -3618,14 +3618,16 @@ static int get_xps_queue(struct net_device *dev, struct net_device *sb_dev, ...@@ -3618,14 +3618,16 @@ static int get_xps_queue(struct net_device *dev, struct net_device *sb_dev,
} }
u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb, u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
return 0; return 0;
} }
EXPORT_SYMBOL(dev_pick_tx_zero); EXPORT_SYMBOL(dev_pick_tx_zero);
u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb, u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb,
void *accel_priv, select_queue_fallback_t fallback) struct net_device *sb_dev,
select_queue_fallback_t fallback)
{ {
return (u16)raw_smp_processor_id() % dev->real_num_tx_queues; return (u16)raw_smp_processor_id() % dev->real_num_tx_queues;
} }
......
...@@ -1130,7 +1130,7 @@ static void ieee80211_uninit(struct net_device *dev) ...@@ -1130,7 +1130,7 @@ static void ieee80211_uninit(struct net_device *dev)
static u16 ieee80211_netdev_select_queue(struct net_device *dev, static u16 ieee80211_netdev_select_queue(struct net_device *dev,
struct sk_buff *skb, struct sk_buff *skb,
void *accel_priv, struct net_device *sb_dev,
select_queue_fallback_t fallback) select_queue_fallback_t fallback)
{ {
return ieee80211_select_queue(IEEE80211_DEV_TO_SUB_IF(dev), skb); 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,7 +1176,7 @@ static const struct net_device_ops ieee80211_dataif_ops = {
static u16 ieee80211_monitor_select_queue(struct net_device *dev, static u16 ieee80211_monitor_select_queue(struct net_device *dev,
struct sk_buff *skb, struct sk_buff *skb,
void *accel_priv, struct net_device *sb_dev,
select_queue_fallback_t fallback) select_queue_fallback_t fallback)
{ {
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册