From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruce Richardson Subject: [PATCH v3] ixgbe: fix ixgbevf RX/TX function assignment Date: Thu, 10 Mar 2016 15:26:22 +0000 Message-ID: <1457623582-12068-1-git-send-email-bruce.richardson@intel.com> References: <1457426981-22571-1-git-send-email-zhe.tao@intel.com> To: dev@dpdk.org, zhe.tao@intel.com Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 925B32C66 for ; Thu, 10 Mar 2016 16:26:33 +0100 (CET) In-Reply-To: <1457426981-22571-1-git-send-email-zhe.tao@intel.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Zhe Tao For the secondary process of DPDK to initialize ixgbevf, it will always use the simple RX function or LRO RX function, and this behavior is not the same RX/TX function selection logic as it is for the primary process. Use the ixgbe_set_tx_function and ixgbe_set_rx_function to select the RX/TX function when secondary process calls the init function for eth dev. Fixes: 9d8a92628f21 ("ixgbe: remove simple scalar scattered Rx method") Signed-off-by: Zhe Tao Signed-off-by: Bruce Richardson --- V3: fixed spacing and string splitting issues flagged by checkpatch.pl adjusted the fixes line to show original commit to introduce the bug V2: add fixes line --- drivers/net/ixgbe/ixgbe_ethdev.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 891be50..a9a1583 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -1291,8 +1291,21 @@ eth_ixgbevf_dev_init(struct rte_eth_dev *eth_dev) * has already done this work. Only check we don't need a different * RX function */ if (rte_eal_process_type() != RTE_PROC_PRIMARY){ - if (eth_dev->data->scattered_rx) - eth_dev->rx_pkt_burst = ixgbe_recv_pkts_lro_single_alloc; + struct ixgbe_tx_queue *txq; + /* TX queue function in primary, set by last queue initialized + * Tx queue may not initialized by primary process + */ + if (eth_dev->data->tx_queues) { + txq = eth_dev->data->tx_queues[eth_dev->data->nb_tx_queues - 1]; + ixgbe_set_tx_function(eth_dev, txq); + } else { + /* Use default TX function if we get here */ + PMD_INIT_LOG(NOTICE, + "No TX queues configured yet. Using default TX function."); + } + + ixgbe_set_rx_function(eth_dev); + return 0; } -- 2.5.0