| 1415 | } |
| 1416 | |
| 1417 | static int |
| 1418 | sfc_flow_parse_queue(struct sfc_adapter *sa, |
| 1419 | const struct rte_flow_action_queue *queue, |
| 1420 | struct rte_flow *flow) |
| 1421 | { |
| 1422 | struct sfc_flow_spec *spec = &flow->spec; |
| 1423 | struct sfc_flow_spec_filter *spec_filter = &spec->filter; |
| 1424 | struct sfc_rxq *rxq; |
| 1425 | struct sfc_rxq_info *rxq_info; |
| 1426 | |
| 1427 | if (queue->index >= sfc_sa2shared(sa)->ethdev_rxq_count) |
| 1428 | return -EINVAL; |
| 1429 | |
| 1430 | rxq = sfc_rxq_ctrl_by_ethdev_qid(sa, queue->index); |
| 1431 | spec_filter->template.efs_dmaq_id = (uint16_t)rxq->hw_index; |
| 1432 | |
| 1433 | rxq_info = &sfc_sa2shared(sa)->rxq_info[queue->index]; |
| 1434 | |
| 1435 | if ((rxq_info->rxq_flags & SFC_RXQ_FLAG_RSS_HASH) != 0) { |
| 1436 | struct sfc_adapter_shared * const sas = sfc_sa2shared(sa); |
| 1437 | struct sfc_rss *ethdev_rss = &sas->rss; |
| 1438 | |
| 1439 | spec_filter->template.efs_flags |= EFX_FILTER_FLAG_RX_RSS; |
| 1440 | spec_filter->rss_ctx = ðdev_rss->dummy_ctx; |
| 1441 | } |
| 1442 | |
| 1443 | return 0; |
| 1444 | } |
| 1445 | |
| 1446 | static int |
| 1447 | sfc_flow_parse_rss(struct sfc_adapter *sa, |
no test coverage detected