net/cnxk: fix Rx/Tx function update

When Rx/Tx functions are updated such as in a rte flow
rule creation with VLAN stripping or marking action,
update the fastpath ops table as well.

Fixes: b951c2efcb ("net/cnxk: add Rx burst for CN9K")
Fixes: f742a9a668 ("net/cnxk: add Rx burst for CN10K")
Cc: stable@dpdk.org

Signed-off-by: Satheesh Paul <psatheesh@marvell.com>
Reviewed-by: Jerin Jacob <jerinj@marvell.com>
This commit is contained in:
Satheesh Paul 2022-01-25 15:09:40 +05:30 committed by Jerin Jacob
parent 0fb2b46be7
commit 3cebc8f35f
7 changed files with 28 additions and 0 deletions

View File

@ -31,6 +31,10 @@ pick_rx_func(struct rte_eth_dev *eth_dev,
[!!(dev->rx_offload_flags & NIX_RX_OFFLOAD_PTYPE_F)]
[!!(dev->rx_offload_flags & NIX_RX_OFFLOAD_RSS_F)];
if (eth_dev->data->dev_started)
rte_eth_fp_ops[eth_dev->data->port_id].rx_pkt_burst =
eth_dev->rx_pkt_burst;
rte_atomic_thread_fence(__ATOMIC_RELEASE);
}

View File

@ -15,6 +15,10 @@ pick_rx_func(struct rte_eth_dev *eth_dev,
eth_dev->rx_pkt_burst =
rx_burst[dev->rx_offload_flags & (NIX_RX_OFFLOAD_MAX - 1)];
if (eth_dev->data->dev_started)
rte_eth_fp_ops[eth_dev->data->port_id].rx_pkt_burst =
eth_dev->rx_pkt_burst;
rte_atomic_thread_fence(__ATOMIC_RELEASE);
}

View File

@ -14,6 +14,10 @@ pick_tx_func(struct rte_eth_dev *eth_dev,
/* [SEC] [TSP] [TSO] [NOFF] [VLAN] [OL3_OL4_CSUM] [IL3_IL4_CSUM] */
eth_dev->tx_pkt_burst =
tx_burst[dev->tx_offload_flags & (NIX_TX_OFFLOAD_MAX - 1)];
if (eth_dev->data->dev_started)
rte_eth_fp_ops[eth_dev->data->port_id].tx_pkt_burst =
eth_dev->tx_pkt_burst;
}
void

View File

@ -31,6 +31,10 @@ pick_rx_func(struct rte_eth_dev *eth_dev,
[!!(dev->rx_offload_flags & NIX_RX_OFFLOAD_PTYPE_F)]
[!!(dev->rx_offload_flags & NIX_RX_OFFLOAD_RSS_F)];
if (eth_dev->data->dev_started)
rte_eth_fp_ops[eth_dev->data->port_id].rx_pkt_burst =
eth_dev->rx_pkt_burst;
rte_atomic_thread_fence(__ATOMIC_RELEASE);
}

View File

@ -15,6 +15,10 @@ pick_rx_func(struct rte_eth_dev *eth_dev,
eth_dev->rx_pkt_burst =
rx_burst[dev->rx_offload_flags & (NIX_RX_OFFLOAD_MAX - 1)];
if (eth_dev->data->dev_started)
rte_eth_fp_ops[eth_dev->data->port_id].rx_pkt_burst =
eth_dev->rx_pkt_burst;
rte_atomic_thread_fence(__ATOMIC_RELEASE);
}

View File

@ -36,6 +36,10 @@ pick_tx_func(struct rte_eth_dev *eth_dev,
[!!(dev->tx_offload_flags & NIX_TX_OFFLOAD_VLAN_QINQ_F)]
[!!(dev->tx_offload_flags & NIX_TX_OFFLOAD_OL3_OL4_CSUM_F)]
[!!(dev->tx_offload_flags & NIX_TX_OFFLOAD_L3_L4_CSUM_F)];
if (eth_dev->data->dev_started)
rte_eth_fp_ops[eth_dev->data->port_id].tx_pkt_burst =
eth_dev->tx_pkt_burst;
}
void

View File

@ -14,6 +14,10 @@ pick_tx_func(struct rte_eth_dev *eth_dev,
/* [TS] [TSO] [NOFF] [VLAN] [OL3_OL4_CSUM] [IL3_IL4_CSUM] */
eth_dev->tx_pkt_burst =
tx_burst[dev->tx_offload_flags & (NIX_TX_OFFLOAD_MAX - 1)];
if (eth_dev->data->dev_started)
rte_eth_fp_ops[eth_dev->data->port_id].tx_pkt_burst =
eth_dev->tx_pkt_burst;
}
void