Commit | Line | Data |
---|---|---|
49e47a5b JK |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _LINUX_NETDEV_RX_QUEUE_H | |
3 | #define _LINUX_NETDEV_RX_QUEUE_H | |
4 | ||
5 | #include <linux/kobject.h> | |
6 | #include <linux/netdevice.h> | |
7 | #include <linux/sysfs.h> | |
8 | #include <net/xdp.h> | |
9 | ||
10 | /* This structure contains an instance of an RX queue. */ | |
11 | struct netdev_rx_queue { | |
12 | struct xdp_rxq_info xdp_rxq; | |
13 | #ifdef CONFIG_RPS | |
14 | struct rps_map __rcu *rps_map; | |
15 | struct rps_dev_flow_table __rcu *rps_flow_table; | |
16 | #endif | |
17 | struct kobject kobj; | |
18 | struct net_device *dev; | |
19 | netdevice_tracker dev_tracker; | |
20 | ||
21 | #ifdef CONFIG_XDP_SOCKETS | |
22 | struct xsk_buff_pool *pool; | |
23 | #endif | |
2a502ff0 AN |
24 | /* NAPI instance for the queue |
25 | * Readers and writers must hold RTNL | |
26 | */ | |
27 | struct napi_struct *napi; | |
49e47a5b JK |
28 | } ____cacheline_aligned_in_smp; |
29 | ||
30 | /* | |
31 | * RX queue sysfs structures and functions. | |
32 | */ | |
33 | struct rx_queue_attribute { | |
34 | struct attribute attr; | |
35 | ssize_t (*show)(struct netdev_rx_queue *queue, char *buf); | |
36 | ssize_t (*store)(struct netdev_rx_queue *queue, | |
37 | const char *buf, size_t len); | |
38 | }; | |
39 | ||
40 | static inline struct netdev_rx_queue * | |
41 | __netif_get_rx_queue(struct net_device *dev, unsigned int rxq) | |
42 | { | |
43 | return dev->_rx + rxq; | |
44 | } | |
45 | ||
46 | #ifdef CONFIG_SYSFS | |
47 | static inline unsigned int | |
48 | get_netdev_rx_queue_index(struct netdev_rx_queue *queue) | |
49 | { | |
50 | struct net_device *dev = queue->dev; | |
51 | int index = queue - dev->_rx; | |
52 | ||
53 | BUG_ON(index >= dev->num_rx_queues); | |
54 | return index; | |
55 | } | |
56 | #endif | |
57 | #endif |