Skip to content

Commit a4ea8a3

Browse files
Alexander DuyckJeff Kirsher
authored andcommitted
net: Add generic ndo_select_queue functions
This patch adds a generic version of the ndo_select_queue functions for either returning 0 or selecting a queue based on the processor ID. This is generally meant to just reduce the number of functions we have to change in the future when we have to deal with ndo_select_queue changes. 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 eadec87 commit a4ea8a3

File tree

6 files changed

+22
-26
lines changed

6 files changed

+22
-26
lines changed

drivers/net/ethernet/lantiq_etop.c

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -563,14 +563,6 @@ ltq_etop_set_multicast_list(struct net_device *dev)
563563
spin_unlock_irqrestore(&priv->lock, flags);
564564
}
565565

566-
static u16
567-
ltq_etop_select_queue(struct net_device *dev, struct sk_buff *skb,
568-
void *accel_priv, select_queue_fallback_t fallback)
569-
{
570-
/* we are currently only using the first queue */
571-
return 0;
572-
}
573-
574566
static int
575567
ltq_etop_init(struct net_device *dev)
576568
{
@@ -641,7 +633,7 @@ static const struct net_device_ops ltq_eth_netdev_ops = {
641633
.ndo_set_mac_address = ltq_etop_set_mac_address,
642634
.ndo_validate_addr = eth_validate_addr,
643635
.ndo_set_rx_mode = ltq_etop_set_multicast_list,
644-
.ndo_select_queue = ltq_etop_select_queue,
636+
.ndo_select_queue = dev_pick_tx_zero,
645637
.ndo_init = ltq_etop_init,
646638
.ndo_tx_timeout = ltq_etop_tx_timeout,
647639
};

drivers/net/ethernet/ti/netcp_core.c

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1889,13 +1889,6 @@ static int netcp_rx_kill_vid(struct net_device *ndev, __be16 proto, u16 vid)
18891889
return err;
18901890
}
18911891

1892-
static u16 netcp_select_queue(struct net_device *dev, struct sk_buff *skb,
1893-
void *accel_priv,
1894-
select_queue_fallback_t fallback)
1895-
{
1896-
return 0;
1897-
}
1898-
18991892
static int netcp_setup_tc(struct net_device *dev, enum tc_setup_type type,
19001893
void *type_data)
19011894
{
@@ -1972,7 +1965,7 @@ static const struct net_device_ops netcp_netdev_ops = {
19721965
.ndo_vlan_rx_add_vid = netcp_rx_add_vid,
19731966
.ndo_vlan_rx_kill_vid = netcp_rx_kill_vid,
19741967
.ndo_tx_timeout = netcp_ndo_tx_timeout,
1975-
.ndo_select_queue = netcp_select_queue,
1968+
.ndo_select_queue = dev_pick_tx_zero,
19761969
.ndo_setup_tc = netcp_setup_tc,
19771970
};
19781971

drivers/staging/netlogic/xlr_net.c

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -290,13 +290,6 @@ static netdev_tx_t xlr_net_start_xmit(struct sk_buff *skb,
290290
return NETDEV_TX_OK;
291291
}
292292

293-
static u16 xlr_net_select_queue(struct net_device *ndev, struct sk_buff *skb,
294-
void *accel_priv,
295-
select_queue_fallback_t fallback)
296-
{
297-
return (u16)smp_processor_id();
298-
}
299-
300293
static void xlr_hw_set_mac_addr(struct net_device *ndev)
301294
{
302295
struct xlr_net_priv *priv = netdev_priv(ndev);
@@ -403,7 +396,7 @@ static const struct net_device_ops xlr_netdev_ops = {
403396
.ndo_open = xlr_net_open,
404397
.ndo_stop = xlr_net_stop,
405398
.ndo_start_xmit = xlr_net_start_xmit,
406-
.ndo_select_queue = xlr_net_select_queue,
399+
.ndo_select_queue = dev_pick_tx_cpu_id,
407400
.ndo_set_mac_address = xlr_net_set_mac_addr,
408401
.ndo_set_rx_mode = xlr_set_rx_mode,
409402
.ndo_get_stats64 = xlr_stats,

include/linux/netdevice.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2567,6 +2567,10 @@ void dev_close(struct net_device *dev);
25672567
void dev_close_many(struct list_head *head, bool unlink);
25682568
void dev_disable_lro(struct net_device *dev);
25692569
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+
void *accel_priv, select_queue_fallback_t fallback);
2572+
u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb,
2573+
void *accel_priv, select_queue_fallback_t fallback);
25702574
int dev_queue_xmit(struct sk_buff *skb);
25712575
int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev);
25722576
int dev_direct_xmit(struct sk_buff *skb, u16 queue_id);

net/core/dev.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3617,6 +3617,20 @@ static int get_xps_queue(struct net_device *dev, struct net_device *sb_dev,
36173617
#endif
36183618
}
36193619

3620+
u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb,
3621+
void *accel_priv, select_queue_fallback_t fallback)
3622+
{
3623+
return 0;
3624+
}
3625+
EXPORT_SYMBOL(dev_pick_tx_zero);
3626+
3627+
u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb,
3628+
void *accel_priv, select_queue_fallback_t fallback)
3629+
{
3630+
return (u16)raw_smp_processor_id() % dev->real_num_tx_queues;
3631+
}
3632+
EXPORT_SYMBOL(dev_pick_tx_cpu_id);
3633+
36203634
static u16 ___netdev_pick_tx(struct net_device *dev, struct sk_buff *skb,
36213635
struct net_device *sb_dev)
36223636
{

net/packet/af_packet.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ static bool packet_use_direct_xmit(const struct packet_sock *po)
277277

278278
static u16 __packet_pick_tx_queue(struct net_device *dev, struct sk_buff *skb)
279279
{
280-
return (u16) raw_smp_processor_id() % dev->real_num_tx_queues;
280+
return dev_pick_tx_cpu_id(dev, skb, NULL, NULL);
281281
}
282282

283283
static u16 packet_pick_tx_queue(struct sk_buff *skb)

0 commit comments

Comments
 (0)