Commit 49e47a5b authored by Jakub Kicinski's avatar Jakub Kicinski Committed by Martin KaFai Lau

net: move struct netdev_rx_queue out of netdevice.h

struct netdev_rx_queue is touched in only a few places
and having it defined in netdevice.h brings in the dependency
on xdp.h, because struct xdp_rxq_info gets embedded in
struct netdev_rx_queue.

In prep for removal of xdp.h from netdevice.h move all
the netdev_rx_queue stuff to a new header.

We could technically break the new header up to avoid
the sysfs.h include but it's so rarely included it
doesn't seem to be worth it at this point.
Reviewed-by: default avatarAmritha Nambiar <amritha.nambiar@intel.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Acked-by: default avatarJesper Dangaard Brouer <hawk@kernel.org>
Link: https://lore.kernel.org/r/20230803010230.1755386-3-kuba@kernel.orgSigned-off-by: default avatarMartin KaFai Lau <martin.lau@kernel.org>
parent 92272ec4
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include <net/route.h> #include <net/route.h>
#include <net/xdp.h> #include <net/xdp.h>
#include <net/net_failover.h> #include <net/net_failover.h>
#include <net/netdev_rx_queue.h>
static int napi_weight = NAPI_POLL_WEIGHT; static int napi_weight = NAPI_POLL_WEIGHT;
module_param(napi_weight, int, 0444); module_param(napi_weight, int, 0444);
......
...@@ -782,32 +782,6 @@ bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index, u32 flow_id, ...@@ -782,32 +782,6 @@ bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index, u32 flow_id,
#endif #endif
#endif /* CONFIG_RPS */ #endif /* CONFIG_RPS */
/* This structure contains an instance of an RX queue. */
struct netdev_rx_queue {
struct xdp_rxq_info xdp_rxq;
#ifdef CONFIG_RPS
struct rps_map __rcu *rps_map;
struct rps_dev_flow_table __rcu *rps_flow_table;
#endif
struct kobject kobj;
struct net_device *dev;
netdevice_tracker dev_tracker;
#ifdef CONFIG_XDP_SOCKETS
struct xsk_buff_pool *pool;
#endif
} ____cacheline_aligned_in_smp;
/*
* RX queue sysfs structures and functions.
*/
struct rx_queue_attribute {
struct attribute attr;
ssize_t (*show)(struct netdev_rx_queue *queue, char *buf);
ssize_t (*store)(struct netdev_rx_queue *queue,
const char *buf, size_t len);
};
/* XPS map type and offset of the xps map within net_device->xps_maps[]. */ /* XPS map type and offset of the xps map within net_device->xps_maps[]. */
enum xps_map_type { enum xps_map_type {
XPS_CPUS = 0, XPS_CPUS = 0,
...@@ -3828,24 +3802,6 @@ static inline int netif_set_real_num_rx_queues(struct net_device *dev, ...@@ -3828,24 +3802,6 @@ static inline int netif_set_real_num_rx_queues(struct net_device *dev,
int netif_set_real_num_queues(struct net_device *dev, int netif_set_real_num_queues(struct net_device *dev,
unsigned int txq, unsigned int rxq); unsigned int txq, unsigned int rxq);
static inline struct netdev_rx_queue *
__netif_get_rx_queue(struct net_device *dev, unsigned int rxq)
{
return dev->_rx + rxq;
}
#ifdef CONFIG_SYSFS
static inline unsigned int get_netdev_rx_queue_index(
struct netdev_rx_queue *queue)
{
struct net_device *dev = queue->dev;
int index = queue - dev->_rx;
BUG_ON(index >= dev->num_rx_queues);
return index;
}
#endif
int netif_get_num_default_rss_queues(void); int netif_get_num_default_rss_queues(void);
void dev_kfree_skb_irq_reason(struct sk_buff *skb, enum skb_drop_reason reason); void dev_kfree_skb_irq_reason(struct sk_buff *skb, enum skb_drop_reason reason);
......
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_NETDEV_RX_QUEUE_H
#define _LINUX_NETDEV_RX_QUEUE_H
#include <linux/kobject.h>
#include <linux/netdevice.h>
#include <linux/sysfs.h>
#include <net/xdp.h>
/* This structure contains an instance of an RX queue. */
struct netdev_rx_queue {
struct xdp_rxq_info xdp_rxq;
#ifdef CONFIG_RPS
struct rps_map __rcu *rps_map;
struct rps_dev_flow_table __rcu *rps_flow_table;
#endif
struct kobject kobj;
struct net_device *dev;
netdevice_tracker dev_tracker;
#ifdef CONFIG_XDP_SOCKETS
struct xsk_buff_pool *pool;
#endif
} ____cacheline_aligned_in_smp;
/*
* RX queue sysfs structures and functions.
*/
struct rx_queue_attribute {
struct attribute attr;
ssize_t (*show)(struct netdev_rx_queue *queue, char *buf);
ssize_t (*store)(struct netdev_rx_queue *queue,
const char *buf, size_t len);
};
static inline struct netdev_rx_queue *
__netif_get_rx_queue(struct net_device *dev, unsigned int rxq)
{
return dev->_rx + rxq;
}
#ifdef CONFIG_SYSFS
static inline unsigned int
get_netdev_rx_queue_index(struct netdev_rx_queue *queue)
{
struct net_device *dev = queue->dev;
int index = queue - dev->_rx;
BUG_ON(index >= dev->num_rx_queues);
return index;
}
#endif
#endif
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <linux/smp.h> #include <linux/smp.h>
#include <linux/sock_diag.h> #include <linux/sock_diag.h>
#include <linux/netfilter.h> #include <linux/netfilter.h>
#include <net/netdev_rx_queue.h>
#include <net/xdp.h> #include <net/xdp.h>
#include <net/netfilter/nf_bpf_link.h> #include <net/netfilter/nf_bpf_link.h>
......
...@@ -152,6 +152,7 @@ ...@@ -152,6 +152,7 @@
#include <linux/pm_runtime.h> #include <linux/pm_runtime.h>
#include <linux/prandom.h> #include <linux/prandom.h>
#include <linux/once_lite.h> #include <linux/once_lite.h>
#include <net/netdev_rx_queue.h>
#include "dev.h" #include "dev.h"
#include "net-sysfs.h" #include "net-sysfs.h"
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_net.h> #include <linux/of_net.h>
#include <linux/cpu.h> #include <linux/cpu.h>
#include <net/netdev_rx_queue.h>
#include "dev.h" #include "dev.h"
#include "net-sysfs.h" #include "net-sysfs.h"
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include <linux/vmalloc.h> #include <linux/vmalloc.h>
#include <net/xdp_sock_drv.h> #include <net/xdp_sock_drv.h>
#include <net/busy_poll.h> #include <net/busy_poll.h>
#include <net/netdev_rx_queue.h>
#include <net/xdp.h> #include <net/xdp.h>
#include "xsk_queue.h" #include "xsk_queue.h"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment