Secondary process needs to know packet classes supported
by the NIC on Rx.
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
doc/guides/rel_notes/release_19_05.rst | 1 +
drivers/net/sfc/sfc.c | 16 ++++++++++++++++
drivers/net/sfc/sfc.h | 1 +
drivers/net/sfc/sfc_ethdev.c | 6 ++----
4 files changed, 20 insertions(+), 4 deletions(-)
@@ -63,6 +63,7 @@ New Features
* Added support for Tx descriptor status API in a secondary process.
* Added support for RSS RETA and hash configuration get API in a secondary
process.
+ * Added support for Rx packet types list in a secondary process.
Removed Items
@@ -342,6 +342,15 @@ sfc_try_start(struct sfc_adapter *sa)
goto fail_nic_init;
encp = efx_nic_cfg_get(sa->nic);
+
+ /*
+ * Refresh (since it may change on NIC reset/restart) a copy of
+ * supported tunnel encapsulations in shared memory to be used
+ * on supported Rx packet type classes get.
+ */
+ sa->priv.shared->tunnel_encaps =
+ encp->enc_tunnel_encapsulations_supported;
+
if (encp->enc_tunnel_encapsulations_supported != 0) {
sfc_log_init(sa, "apply tunnel config");
rc = efx_tunnel_reconfigure(sa->nic);
@@ -728,6 +737,13 @@ sfc_attach(struct sfc_adapter *sa)
encp = efx_nic_cfg_get(sa->nic);
+ /*
+ * Make a copy of supported tunnel encapsulations in shared
+ * memory to be used on supported Rx packet type classes get.
+ */
+ sa->priv.shared->tunnel_encaps =
+ encp->enc_tunnel_encapsulations_supported;
+
if (sa->priv.dp_tx->features & SFC_DP_TX_FEAT_TSO) {
sa->tso = encp->enc_fw_assisted_tso_v2_enabled;
if (!sa->tso)
@@ -184,6 +184,7 @@ struct sfc_adapter_shared {
struct sfc_rss rss;
boolean_t isolated;
+ uint32_t tunnel_encaps;
struct rte_pci_addr pci_addr;
uint16_t port_id;
@@ -182,11 +182,8 @@ static const uint32_t *
sfc_dev_supported_ptypes_get(struct rte_eth_dev *dev)
{
const struct sfc_adapter_priv *sap = sfc_adapter_priv_by_eth_dev(dev);
- struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev);
- const efx_nic_cfg_t *encp = efx_nic_cfg_get(sa->nic);
- uint32_t tunnel_encaps = encp->enc_tunnel_encapsulations_supported;
- return sap->dp_rx->supported_ptypes_get(tunnel_encaps);
+ return sap->dp_rx->supported_ptypes_get(sap->shared->tunnel_encaps);
}
static int
@@ -1897,6 +1894,7 @@ sfc_eth_dev_clear_ops(struct rte_eth_dev *dev)
}
static const struct eth_dev_ops sfc_eth_dev_secondary_ops = {
+ .dev_supported_ptypes_get = sfc_dev_supported_ptypes_get,
.rx_queue_count = sfc_rx_queue_count,
.rx_descriptor_done = sfc_rx_descriptor_done,
.rx_descriptor_status = sfc_rx_descriptor_status,