The "vsi" may be null, so it needs to be used after checking. Fixes: ab28aad9c24f ("net/iavf: fix Rx Tx burst in multi-process") Cc: sta...@dpdk.org
Signed-off-by: Mingjin Ye <mingjinx...@intel.com> --- drivers/net/iavf/iavf_rxtx.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c index 5ba4527ae3..8992e728cd 100644 --- a/drivers/net/iavf/iavf_rxtx.c +++ b/drivers/net/iavf/iavf_rxtx.c @@ -3781,12 +3781,13 @@ iavf_recv_pkts_no_poll(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) { struct iavf_rx_queue *rxq = rx_queue; - enum iavf_rx_burst_type rx_burst_type = - rxq->vsi->adapter->rx_burst_type; + enum iavf_rx_burst_type rx_burst_type; if (!rxq->vsi || rxq->vsi->adapter->no_poll) return 0; + rx_burst_type = rxq->vsi->adapter->rx_burst_type; + return iavf_rx_pkt_burst_ops[rx_burst_type](rx_queue, rx_pkts, nb_pkts); } @@ -3796,12 +3797,13 @@ iavf_xmit_pkts_no_poll(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) { struct iavf_tx_queue *txq = tx_queue; - enum iavf_tx_burst_type tx_burst_type = - txq->vsi->adapter->tx_burst_type; + enum iavf_tx_burst_type tx_burst_type; if (!txq->vsi || txq->vsi->adapter->no_poll) return 0; + tx_burst_type = txq->vsi->adapter->tx_burst_type; + return iavf_tx_pkt_burst_ops[tx_burst_type](tx_queue, tx_pkts, nb_pkts); } -- 2.25.1