Commit 087b24de authored by Mina Almasry's avatar Mina Almasry Committed by David S. Miller
Browse files

queue_api: define queue api



This API enables the net stack to reset the queues used for devmem TCP.

Signed-off-by: default avatarMina Almasry <almasrymina@google.com>
Signed-off-by: default avatarShailend Chand <shailend@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 173e7622
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1957,6 +1957,7 @@ enum netdev_reg_state {
 *	@sysfs_rx_queue_group:	Space for optional per-rx queue attributes
 *	@rtnl_link_ops:	Rtnl_link_ops
 *	@stat_ops:	Optional ops for queue-aware statistics
 *	@queue_mgmt_ops:	Optional ops for queue management
 *
 *	@gso_max_size:	Maximum size of generic segmentation offload
 *	@tso_max_size:	Device (as in HW) limit on the max TSO request size
@@ -2340,6 +2341,8 @@ struct net_device {

	const struct netdev_stat_ops *stat_ops;

	const struct netdev_queue_mgmt_ops *queue_mgmt_ops;

	/* for setting kernel sock attribute on TCP connection setup */
#define GSO_MAX_SEGS		65535u
#define GSO_LEGACY_MAX_SIZE	65536u
+31 −0
Original line number Diff line number Diff line
@@ -87,6 +87,37 @@ struct netdev_stat_ops {
			       struct netdev_queue_stats_tx *tx);
};

/**
 * struct netdev_queue_mgmt_ops - netdev ops for queue management
 *
 * @ndo_queue_mem_size: Size of the struct that describes a queue's memory.
 *
 * @ndo_queue_mem_alloc: Allocate memory for an RX queue at the specified index.
 *			 The new memory is written at the specified address.
 *
 * @ndo_queue_mem_free:	Free memory from an RX queue.
 *
 * @ndo_queue_start:	Start an RX queue with the specified memory and at the
 *			specified index.
 *
 * @ndo_queue_stop:	Stop the RX queue at the specified index. The stopped
 *			queue's memory is written at the specified address.
 */
struct netdev_queue_mgmt_ops {
	size_t			ndo_queue_mem_size;
	int			(*ndo_queue_mem_alloc)(struct net_device *dev,
						       void *per_queue_mem,
						       int idx);
	void			(*ndo_queue_mem_free)(struct net_device *dev,
						      void *per_queue_mem);
	int			(*ndo_queue_start)(struct net_device *dev,
						   void *per_queue_mem,
						   int idx);
	int			(*ndo_queue_stop)(struct net_device *dev,
						  void *per_queue_mem,
						  int idx);
};

/**
 * DOC: Lockless queue stopping / waking helpers.
 *