net/sfc: get RxQ pending descriptors count
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com> Reviewed-by: Robert Stonehouse <rstonehouse@solarflare.com>
This commit is contained in:
parent
9e6122231a
commit
04aa6b9c5f
@ -844,6 +844,16 @@ sfc_rx_queue_info_get(struct rte_eth_dev *dev, uint16_t rx_queue_id,
|
||||
sfc_adapter_unlock(sa);
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
sfc_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)
|
||||
{
|
||||
struct sfc_adapter *sa = dev->data->dev_private;
|
||||
|
||||
sfc_log_init(sa, "RxQ=%u", rx_queue_id);
|
||||
|
||||
return sfc_rx_qdesc_npending(sa, rx_queue_id);
|
||||
}
|
||||
|
||||
static const struct eth_dev_ops sfc_eth_dev_ops = {
|
||||
.dev_configure = sfc_dev_configure,
|
||||
.dev_start = sfc_dev_start,
|
||||
@ -864,6 +874,7 @@ static const struct eth_dev_ops sfc_eth_dev_ops = {
|
||||
.mtu_set = sfc_dev_set_mtu,
|
||||
.rx_queue_setup = sfc_rx_queue_setup,
|
||||
.rx_queue_release = sfc_rx_queue_release,
|
||||
.rx_queue_count = sfc_rx_queue_count,
|
||||
.tx_queue_setup = sfc_tx_queue_setup,
|
||||
.tx_queue_release = sfc_tx_queue_release,
|
||||
.flow_ctrl_get = sfc_flow_ctrl_get,
|
||||
|
@ -257,6 +257,22 @@ sfc_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
|
||||
return done_pkts;
|
||||
}
|
||||
|
||||
unsigned int
|
||||
sfc_rx_qdesc_npending(struct sfc_adapter *sa, unsigned int sw_index)
|
||||
{
|
||||
struct sfc_rxq *rxq;
|
||||
|
||||
SFC_ASSERT(sw_index < sa->rxq_count);
|
||||
rxq = sa->rxq_info[sw_index].rxq;
|
||||
|
||||
if (rxq == NULL || (rxq->state & SFC_RXQ_RUNNING) == 0)
|
||||
return 0;
|
||||
|
||||
sfc_ev_qpoll(rxq->evq);
|
||||
|
||||
return rxq->pending - rxq->completed;
|
||||
}
|
||||
|
||||
static void
|
||||
sfc_rx_qpurge(struct sfc_rxq *rxq)
|
||||
{
|
||||
|
@ -140,6 +140,9 @@ void sfc_rx_qflush_failed(struct sfc_rxq *rxq);
|
||||
uint16_t sfc_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
|
||||
uint16_t nb_pkts);
|
||||
|
||||
unsigned int sfc_rx_qdesc_npending(struct sfc_adapter *sa,
|
||||
unsigned int sw_index);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user