net/sfc: implement libefx Tx descs complete event callbacks
These callbacks are used when event queue is polled via libefx. The libefx polling is used for management event queue, but we do not expect any Tx complete events on it, and for datapath event queue at flushing. Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
This commit is contained in:
parent
3379085a64
commit
83c31c9945
@ -269,6 +269,30 @@ sfc_ev_dp_tx(void *arg, __rte_unused uint32_t label, uint32_t id)
|
||||
return evq->sa->priv.dp_tx->qtx_ev(dp_txq, id);
|
||||
}
|
||||
|
||||
static boolean_t
|
||||
sfc_ev_nop_tx_ndescs(void *arg, uint32_t label, unsigned int ndescs)
|
||||
{
|
||||
struct sfc_evq *evq = arg;
|
||||
|
||||
sfc_err(evq->sa, "EVQ %u unexpected Tx event label=%u ndescs=%#x",
|
||||
evq->evq_index, label, ndescs);
|
||||
return B_TRUE;
|
||||
}
|
||||
|
||||
static boolean_t
|
||||
sfc_ev_dp_tx_ndescs(void *arg, __rte_unused uint32_t label,
|
||||
unsigned int ndescs)
|
||||
{
|
||||
struct sfc_evq *evq = arg;
|
||||
struct sfc_dp_txq *dp_txq;
|
||||
|
||||
dp_txq = evq->dp_txq;
|
||||
SFC_ASSERT(dp_txq != NULL);
|
||||
|
||||
SFC_ASSERT(evq->sa->priv.dp_tx->qtx_ev != NULL);
|
||||
return evq->sa->priv.dp_tx->qtx_ev(dp_txq, ndescs);
|
||||
}
|
||||
|
||||
static boolean_t
|
||||
sfc_ev_exception(void *arg, uint32_t code, __rte_unused uint32_t data)
|
||||
{
|
||||
@ -458,6 +482,7 @@ static const efx_ev_callbacks_t sfc_ev_callbacks = {
|
||||
.eec_rx_packets = sfc_ev_nop_rx_packets,
|
||||
.eec_rx_ps = sfc_ev_nop_rx_ps,
|
||||
.eec_tx = sfc_ev_nop_tx,
|
||||
.eec_tx_ndescs = sfc_ev_nop_tx_ndescs,
|
||||
.eec_exception = sfc_ev_exception,
|
||||
.eec_rxq_flush_done = sfc_ev_nop_rxq_flush_done,
|
||||
.eec_rxq_flush_failed = sfc_ev_nop_rxq_flush_failed,
|
||||
@ -475,6 +500,7 @@ static const efx_ev_callbacks_t sfc_ev_callbacks_efx_rx = {
|
||||
.eec_rx_packets = sfc_ev_nop_rx_packets,
|
||||
.eec_rx_ps = sfc_ev_nop_rx_ps,
|
||||
.eec_tx = sfc_ev_nop_tx,
|
||||
.eec_tx_ndescs = sfc_ev_nop_tx_ndescs,
|
||||
.eec_exception = sfc_ev_exception,
|
||||
.eec_rxq_flush_done = sfc_ev_rxq_flush_done,
|
||||
.eec_rxq_flush_failed = sfc_ev_rxq_flush_failed,
|
||||
@ -492,6 +518,7 @@ static const efx_ev_callbacks_t sfc_ev_callbacks_dp_rx = {
|
||||
.eec_rx_packets = sfc_ev_dp_rx_packets,
|
||||
.eec_rx_ps = sfc_ev_dp_rx_ps,
|
||||
.eec_tx = sfc_ev_nop_tx,
|
||||
.eec_tx_ndescs = sfc_ev_nop_tx_ndescs,
|
||||
.eec_exception = sfc_ev_exception,
|
||||
.eec_rxq_flush_done = sfc_ev_rxq_flush_done,
|
||||
.eec_rxq_flush_failed = sfc_ev_rxq_flush_failed,
|
||||
@ -509,6 +536,7 @@ static const efx_ev_callbacks_t sfc_ev_callbacks_efx_tx = {
|
||||
.eec_rx_packets = sfc_ev_nop_rx_packets,
|
||||
.eec_rx_ps = sfc_ev_nop_rx_ps,
|
||||
.eec_tx = sfc_ev_tx,
|
||||
.eec_tx_ndescs = sfc_ev_nop_tx_ndescs,
|
||||
.eec_exception = sfc_ev_exception,
|
||||
.eec_rxq_flush_done = sfc_ev_nop_rxq_flush_done,
|
||||
.eec_rxq_flush_failed = sfc_ev_nop_rxq_flush_failed,
|
||||
@ -526,6 +554,7 @@ static const efx_ev_callbacks_t sfc_ev_callbacks_dp_tx = {
|
||||
.eec_rx_packets = sfc_ev_nop_rx_packets,
|
||||
.eec_rx_ps = sfc_ev_nop_rx_ps,
|
||||
.eec_tx = sfc_ev_dp_tx,
|
||||
.eec_tx_ndescs = sfc_ev_dp_tx_ndescs,
|
||||
.eec_exception = sfc_ev_exception,
|
||||
.eec_rxq_flush_done = sfc_ev_nop_rxq_flush_done,
|
||||
.eec_rxq_flush_failed = sfc_ev_nop_rxq_flush_failed,
|
||||
|
Loading…
x
Reference in New Issue
Block a user