[dpdk-dev] [PATCH v2 07/15] net/avp: driver registration

Stephen Hemminger stephen at networkplumber.org
Mon Feb 27 17:53:39 CET 2017


On Sun, 26 Feb 2017 14:08:55 -0500
Allain Legacy <allain.legacy at windriver.com> wrote:

> +struct avp_dev {
> +	uint32_t magic; /**< Memory validation marker */
> +	uint64_t device_id; /**< Unique system identifier */
> +	struct ether_addr ethaddr; /**< Host specified MAC address */
> +	struct rte_eth_dev_data *dev_data;
> +	/**< Back pointer to ethernet device data */
> +	volatile uint32_t flags; /**< Device operational flags */
> +	uint8_t port_id; /**< Ethernet port identifier */
> +	struct rte_mempool *pool; /**< pkt mbuf mempool */
> +	unsigned int guest_mbuf_size; /**< local pool mbuf size */
> +	unsigned int host_mbuf_size; /**< host mbuf size */
> +	unsigned int max_rx_pkt_len; /**< maximum receive unit */
> +	uint32_t host_features; /**< Supported feature bitmap */
> +	uint32_t features; /**< Enabled feature bitmap */
> +	unsigned int num_tx_queues; /**< Negotiated number of transmit queues */
> +	unsigned int max_tx_queues; /**< Maximum number of transmit queues */
> +	unsigned int num_rx_queues; /**< Negotiated number of receive queues */
> +	unsigned int max_rx_queues; /**< Maximum number of receive queues */
> +
> +	struct rte_avp_fifo *tx_q[RTE_AVP_MAX_QUEUES]; /**< TX queue */
> +	struct rte_avp_fifo *rx_q[RTE_AVP_MAX_QUEUES]; /**< RX queue */
> +	struct rte_avp_fifo *alloc_q[RTE_AVP_MAX_QUEUES];
> +	/**< Allocated mbufs queue */
> +	struct rte_avp_fifo *free_q[RTE_AVP_MAX_QUEUES];
> +	/**< To be freed mbufs queue */
> +
> +	/* mutual exclusion over the 'flag' and 'resp_q/req_q' fields */
> +	rte_spinlock_t lock;

What exactly is the spinlock protecting?  The control operations in DPDK
are defined to be not thread safe. I.e it is responsibility of caller to synchronize.
Therefore is lock really needed?


More information about the dev mailing list