| 1306 | } |
| 1307 | |
| 1308 | void |
| 1309 | sfc_rx_qfini(struct sfc_adapter *sa, sfc_sw_index_t sw_index) |
| 1310 | { |
| 1311 | struct sfc_adapter_shared *sas = sfc_sa2shared(sa); |
| 1312 | sfc_ethdev_qid_t ethdev_qid; |
| 1313 | struct sfc_rxq_info *rxq_info; |
| 1314 | struct sfc_rxq *rxq; |
| 1315 | |
| 1316 | SFC_ASSERT(sw_index < sfc_sa2shared(sa)->rxq_count); |
| 1317 | ethdev_qid = sfc_ethdev_rx_qid_by_rxq_sw_index(sas, sw_index); |
| 1318 | |
| 1319 | if (ethdev_qid != SFC_ETHDEV_QID_INVALID) |
| 1320 | sa->eth_dev->data->rx_queues[ethdev_qid] = NULL; |
| 1321 | |
| 1322 | rxq_info = &sfc_sa2shared(sa)->rxq_info[sw_index]; |
| 1323 | |
| 1324 | SFC_ASSERT(rxq_info->state == SFC_RXQ_INITIALIZED); |
| 1325 | |
| 1326 | sa->priv.dp_rx->qdestroy(rxq_info->dp); |
| 1327 | rxq_info->dp = NULL; |
| 1328 | |
| 1329 | rxq_info->state &= ~SFC_RXQ_INITIALIZED; |
| 1330 | rxq_info->entries = 0; |
| 1331 | |
| 1332 | rxq = &sa->rxq_ctrl[sw_index]; |
| 1333 | |
| 1334 | sfc_dma_free(sa, &rxq->mem); |
| 1335 | |
| 1336 | sfc_ev_qfini(rxq->evq); |
| 1337 | rxq->evq = NULL; |
| 1338 | } |
| 1339 | |
| 1340 | /* |
| 1341 | * Mapping between RTE RSS hash functions and their EFX counterparts. |
no test coverage detected