From patchwork Thu Dec 28 03:22:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhichao Zeng X-Patchwork-Id: 135620 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 41CC3437AC; Thu, 28 Dec 2023 04:13:09 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 457A3402EC; Thu, 28 Dec 2023 04:13:06 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id 561F3402E7 for ; Thu, 28 Dec 2023 04:13:04 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1703733184; x=1735269184; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tUiICVWYZ7DlyidLjzpJGhtFwItMdL6RYD7xsuwCCto=; b=KJGw66GyFanDDWTcSajcV1HJ/4Ggq6GXPKqpn+/aTm2eqC8JL9glJFvP gCbkrhFs9CyRLdWsBAkfe//5f2usxqekv1Y92QPg+nu/bafU9QjYZ0SOu IvDj9KgPu23de0t0CzAzAfKsLlN7HRDpCr8g2ehLh5pZrSXV2nb8b0PQU gOvzWaW7Jm6+ZOrXwmfm/gE6B9a0SLAbpvTNPyfRIiwSmPTiwG24VEDIP KeunOSIpgpqC3CgAGf9oVYmu2Sod7MPyP7Q7J5XxmNX/VuDR/Jl+Do4cX InnSfV0vqO7g7iATTgeG/3Qxh+mW5EKBgK5bZZwEJyzs72gzBumkRoQb4 w==; X-IronPort-AV: E=McAfee;i="6600,9927,10936"; a="482686649" X-IronPort-AV: E=Sophos;i="6.04,310,1695711600"; d="scan'208";a="482686649" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Dec 2023 19:13:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10936"; a="807313260" X-IronPort-AV: E=Sophos;i="6.04,310,1695711600"; d="scan'208";a="807313260" Received: from unknown (HELO zhichao-dpdk..) ([10.239.252.103]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Dec 2023 19:12:57 -0800 From: Zhichao Zeng To: dev@dpdk.org Cc: qi.z.zhang@intel.com, Zhichao Zeng , Jingjing Wu , Beilei Xing Subject: [PATCH v5 1/3] net/iavf: support Tx LLDP on scalar Date: Thu, 28 Dec 2023 11:22:08 +0800 Message-Id: <20231228032211.1127554-2-zhichaox.zeng@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231228032211.1127554-1-zhichaox.zeng@intel.com> References: <20231225031451.4002181-1-zhichaox.zeng@intel.com> <20231228032211.1127554-1-zhichaox.zeng@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This patch adds an mbuf dynfield IAVF_TX_LLDP_DYNFIELD to determine whether or not to fill the SWTCH_UPLINK bit in the Tx context descriptor to send LLDP packet. Signed-off-by: Zhichao Zeng --- drivers/net/iavf/iavf_ethdev.c | 5 +++++ drivers/net/iavf/iavf_rxtx.c | 16 ++++++++++++++-- drivers/net/iavf/iavf_rxtx.h | 3 +++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index d1edb0dd5c..ef34246d36 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -41,6 +41,7 @@ #define IAVF_NO_POLL_ON_LINK_DOWN_ARG "no-poll-on-link-down" uint64_t iavf_timestamp_dynflag; int iavf_timestamp_dynfield_offset = -1; +int rte_pmd_iavf_tx_lldp_dynfield_offset = -1; static const char * const iavf_valid_args[] = { IAVF_PROTO_XTR_ARG, @@ -1017,6 +1018,10 @@ iavf_dev_start(struct rte_eth_dev *dev) } } + /* Check Tx LLDP dynfield */ + rte_pmd_iavf_tx_lldp_dynfield_offset = + rte_mbuf_dynfield_lookup(IAVF_TX_LLDP_DYNFIELD, NULL); + if (iavf_init_queues(dev) != 0) { PMD_DRV_LOG(ERR, "failed to do Queue init"); return -1; diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c index f19aa14646..53b8990b12 100644 --- a/drivers/net/iavf/iavf_rxtx.c +++ b/drivers/net/iavf/iavf_rxtx.c @@ -2418,8 +2418,9 @@ iavf_xmit_cleanup(struct iavf_tx_queue *txq) /* Check if the context descriptor is needed for TX offloading */ static inline uint16_t -iavf_calc_context_desc(uint64_t flags, uint8_t vlan_flag) +iavf_calc_context_desc(struct rte_mbuf *mb, uint8_t vlan_flag) { + uint64_t flags = mb->ol_flags; if (flags & (RTE_MBUF_F_TX_TCP_SEG | RTE_MBUF_F_TX_UDP_SEG | RTE_MBUF_F_TX_TUNNEL_MASK | RTE_MBUF_F_TX_OUTER_IP_CKSUM | RTE_MBUF_F_TX_OUTER_UDP_CKSUM)) @@ -2427,6 +2428,12 @@ iavf_calc_context_desc(uint64_t flags, uint8_t vlan_flag) if (flags & RTE_MBUF_F_TX_VLAN && vlan_flag & IAVF_TX_FLAGS_VLAN_TAG_LOC_L2TAG2) return 1; + + if (rte_pmd_iavf_tx_lldp_dynfield_offset > 0) + if (*RTE_MBUF_DYNFIELD(mb, + rte_pmd_iavf_tx_lldp_dynfield_offset, uint8_t *) > 0) + return 1; + return 0; } @@ -2446,6 +2453,11 @@ iavf_fill_ctx_desc_cmd_field(volatile uint64_t *field, struct rte_mbuf *m, << IAVF_TXD_CTX_QW1_CMD_SHIFT; } + if (*RTE_MBUF_DYNFIELD(m, + rte_pmd_iavf_tx_lldp_dynfield_offset, uint8_t *) > 0) + cmd |= IAVF_TX_CTX_DESC_SWTCH_UPLINK + << IAVF_TXD_CTX_QW1_CMD_SHIFT; + *field |= cmd; } @@ -2826,7 +2838,7 @@ iavf_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) nb_desc_data = mb->nb_segs; nb_desc_ctx = - iavf_calc_context_desc(mb->ol_flags, txq->vlan_flag); + iavf_calc_context_desc(mb, txq->vlan_flag); nb_desc_ipsec = !!(mb->ol_flags & RTE_MBUF_F_TX_SEC_OFFLOAD); /** diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h index f432f9d956..960618205c 100644 --- a/drivers/net/iavf/iavf_rxtx.h +++ b/drivers/net/iavf/iavf_rxtx.h @@ -107,8 +107,11 @@ #define IAVF_MAX_DATA_PER_TXD \ (IAVF_TXD_QW1_TX_BUF_SZ_MASK >> IAVF_TXD_QW1_TX_BUF_SZ_SHIFT) +#define IAVF_TX_LLDP_DYNFIELD "intel_pmd_dynfield_tx_lldp" + extern uint64_t iavf_timestamp_dynflag; extern int iavf_timestamp_dynfield_offset; +extern int rte_pmd_iavf_tx_lldp_dynfield_offset; /** * Rx Flex Descriptors From patchwork Thu Dec 28 03:22:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhichao Zeng X-Patchwork-Id: 135621 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D6A85437AC; Thu, 28 Dec 2023 04:13:14 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7E546402F2; Thu, 28 Dec 2023 04:13:08 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id 4BA63402EE for ; Thu, 28 Dec 2023 04:13:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1703733186; x=1735269186; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mLdqhlg+r2nZT6zZfdRmon3xrc9kuXCoMa+D5qL5DR8=; b=BUKRIJEFZFevzcJ/SPZwPjsVG0y3MdxFYAAn91nz9oDRzyJ8mjxA8PO/ Fu0AkTh0U7NIPMI54YNkcG83feDiov9nO0xNpDGO5B4Rb8WLihNHp8LUJ wPzPCUi5jtuI1geQd2vMsV80MoRmQbFmygUrPLYdBDqkF/tHqYRFp21Eg Iq+SA9A0Dmd78TplmWfiV6Ys8tq1LktArwNUdtr+cuJPjX2KZ4kTKw7C9 Od8uvPMLq3cRrL3mnYh3cSBBTD2Pr6imi5XjtBW9Fx9IERdNTSJAKbfAB N2IEYrsHU5zFryCI39O85cIzKfsICyAgQf3YMUs2J4YFJbWlvJErrqJO2 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10936"; a="482686652" X-IronPort-AV: E=Sophos;i="6.04,310,1695711600"; d="scan'208";a="482686652" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Dec 2023 19:13:05 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10936"; a="807313273" X-IronPort-AV: E=Sophos;i="6.04,310,1695711600"; d="scan'208";a="807313273" Received: from unknown (HELO zhichao-dpdk..) ([10.239.252.103]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Dec 2023 19:13:02 -0800 From: Zhichao Zeng To: dev@dpdk.org Cc: qi.z.zhang@intel.com, Zhichao Zeng , Jingjing Wu , Beilei Xing , Bruce Richardson , Konstantin Ananyev Subject: [PATCH v5 2/3] net/iavf: support Tx LLDP on AVX512 Date: Thu, 28 Dec 2023 11:22:09 +0800 Message-Id: <20231228032211.1127554-3-zhichaox.zeng@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231228032211.1127554-1-zhichaox.zeng@intel.com> References: <20231225031451.4002181-1-zhichaox.zeng@intel.com> <20231228032211.1127554-1-zhichaox.zeng@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This patch adds an avx512 ctx Tx path that supports context descriptor, filling in the SWTCH_UPLINK bit based on mbuf dynfield IAVF_TX_LLDP_DYNFIELD to support sending LLDP packet. Signed-off-by: Zhichao Zeng --- drivers/net/iavf/iavf_rxtx.c | 5 +++++ drivers/net/iavf/iavf_rxtx.h | 3 +++ drivers/net/iavf/iavf_rxtx_vec_avx512.c | 19 +++++++++++++++++++ drivers/net/iavf/iavf_rxtx_vec_common.h | 5 +++++ 4 files changed, 32 insertions(+) diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c index 53b8990b12..33c2513b5d 100644 --- a/drivers/net/iavf/iavf_rxtx.c +++ b/drivers/net/iavf/iavf_rxtx.c @@ -4051,6 +4051,11 @@ iavf_set_tx_function(struct rte_eth_dev *dev) dev->tx_pkt_prepare = iavf_prep_pkts; PMD_DRV_LOG(DEBUG, "Using AVX512 OFFLOAD Vector Tx (port %d).", dev->data->port_id); + } else if (check_ret == IAVF_VECTOR_CTX_PATH) { + dev->tx_pkt_burst = iavf_xmit_pkts_vec_avx512_ctx; + dev->tx_pkt_prepare = iavf_prep_pkts; + PMD_DRV_LOG(DEBUG, "Using AVX512 CONTEXT Vector Tx (port %d).", + dev->data->port_id); } else { dev->tx_pkt_burst = iavf_xmit_pkts_vec_avx512_ctx_offload; dev->tx_pkt_prepare = iavf_prep_pkts; diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h index 960618205c..4e25aa9000 100644 --- a/drivers/net/iavf/iavf_rxtx.h +++ b/drivers/net/iavf/iavf_rxtx.h @@ -66,6 +66,7 @@ #define IAVF_VECTOR_PATH 0 #define IAVF_VECTOR_OFFLOAD_PATH 1 #define IAVF_VECTOR_CTX_OFFLOAD_PATH 2 +#define IAVF_VECTOR_CTX_PATH 3 #define DEFAULT_TX_RS_THRESH 32 #define DEFAULT_TX_FREE_THRESH 32 @@ -755,6 +756,8 @@ uint16_t iavf_xmit_pkts_vec_avx512_offload(void *tx_queue, uint16_t nb_pkts); uint16_t iavf_xmit_pkts_vec_avx512_ctx_offload(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts); +uint16_t iavf_xmit_pkts_vec_avx512_ctx(void *tx_queue, struct rte_mbuf **tx_pkts, + uint16_t nb_pkts); int iavf_txq_vec_setup_avx512(struct iavf_tx_queue *txq); uint8_t iavf_proto_xtr_type_to_rxdid(uint8_t xtr_type); diff --git a/drivers/net/iavf/iavf_rxtx_vec_avx512.c b/drivers/net/iavf/iavf_rxtx_vec_avx512.c index 7a7df6d258..045cb7fd11 100644 --- a/drivers/net/iavf/iavf_rxtx_vec_avx512.c +++ b/drivers/net/iavf/iavf_rxtx_vec_avx512.c @@ -2206,6 +2206,10 @@ ctx_vtx1(volatile struct iavf_tx_desc *txdp, struct rte_mbuf *pkt, low_ctx_qw |= (uint64_t)pkt->vlan_tci << IAVF_TXD_CTX_QW0_L2TAG2_PARAM; } } + if (*RTE_MBUF_DYNFIELD(pkt, + rte_pmd_iavf_tx_lldp_dynfield_offset, uint8_t *) > 0) + high_ctx_qw |= IAVF_TX_CTX_DESC_SWTCH_UPLINK + << IAVF_TXD_CTX_QW1_CMD_SHIFT; uint64_t high_data_qw = (IAVF_TX_DESC_DTYPE_DATA | ((uint64_t)flags << IAVF_TXD_QW1_CMD_SHIFT) | ((uint64_t)pkt->data_len << IAVF_TXD_QW1_TX_BUF_SZ_SHIFT)); @@ -2258,6 +2262,10 @@ ctx_vtx(volatile struct iavf_tx_desc *txdp, (uint64_t)pkt[1]->vlan_tci << IAVF_TXD_QW1_L2TAG1_SHIFT; } } + if (*RTE_MBUF_DYNFIELD(pkt[1], + rte_pmd_iavf_tx_lldp_dynfield_offset, uint8_t *) > 0) + hi_ctx_qw1 |= IAVF_TX_CTX_DESC_SWTCH_UPLINK + << IAVF_TXD_CTX_QW1_CMD_SHIFT; if (pkt[0]->ol_flags & RTE_MBUF_F_TX_VLAN) { if (vlan_flag & IAVF_TX_FLAGS_VLAN_TAG_LOC_L2TAG2) { @@ -2270,6 +2278,10 @@ ctx_vtx(volatile struct iavf_tx_desc *txdp, (uint64_t)pkt[0]->vlan_tci << IAVF_TXD_QW1_L2TAG1_SHIFT; } } + if (*RTE_MBUF_DYNFIELD(pkt[0], + rte_pmd_iavf_tx_lldp_dynfield_offset, uint8_t *) > 0) + hi_ctx_qw0 |= IAVF_TX_CTX_DESC_SWTCH_UPLINK + << IAVF_TXD_CTX_QW1_CMD_SHIFT; if (offload) { iavf_txd_enable_offload(pkt[1], &hi_data_qw1); @@ -2520,3 +2532,10 @@ iavf_xmit_pkts_vec_avx512_ctx_offload(void *tx_queue, struct rte_mbuf **tx_pkts, { return iavf_xmit_pkts_vec_avx512_ctx_cmn(tx_queue, tx_pkts, nb_pkts, true); } + +uint16_t +iavf_xmit_pkts_vec_avx512_ctx(void *tx_queue, struct rte_mbuf **tx_pkts, + uint16_t nb_pkts) +{ + return iavf_xmit_pkts_vec_avx512_ctx_cmn(tx_queue, tx_pkts, nb_pkts, false); +} diff --git a/drivers/net/iavf/iavf_rxtx_vec_common.h b/drivers/net/iavf/iavf_rxtx_vec_common.h index e18cdc3f11..5c5220048d 100644 --- a/drivers/net/iavf/iavf_rxtx_vec_common.h +++ b/drivers/net/iavf/iavf_rxtx_vec_common.h @@ -249,6 +249,11 @@ iavf_tx_vec_queue_default(struct iavf_tx_queue *txq) if (txq->offloads & IAVF_TX_NO_VECTOR_FLAGS) return -1; + if (rte_pmd_iavf_tx_lldp_dynfield_offset > 0) { + txq->use_ctx = 1; + return IAVF_VECTOR_CTX_PATH; + } + /** * Vlan tci needs to be inserted via ctx desc, if the vlan_flag is L2TAG2. * Tunneling parameters and other fields need be configured in ctx desc From patchwork Thu Dec 28 03:22:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhichao Zeng X-Patchwork-Id: 135622 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C1F5B437AC; Thu, 28 Dec 2023 04:13:20 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D771C402F1; Thu, 28 Dec 2023 04:13:16 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id A510E40633 for ; Thu, 28 Dec 2023 04:13:09 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1703733189; x=1735269189; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=V4GHR2FSUT9NAGi40u0EgTKllkJ7zqNLSsx9GArEXyY=; b=LzCxeD7utdo6wh/8Cc2uOTh+7s0RZHqivtRZ4b8lP8onywcLlclf0csQ cA6+HRju/V2sWjnDIN7hgHwogDFv9KhISZ8TXZGz+kTh+TgKzJL6VdARs ZPVan1M890mmF1YplVAOpFJhE4EnR3RMn2jrFhbPYfZmArdNFzPPlk6Yf yHFeWoptpp1kF8ofJfwcA0CLmC8y1QaCCWnalqRanu5rLO30w2E5yRCpE HiBGx3+LrLQvqnc9G13Zvj07/E4tLbDVQSRTvpVowFb+sP+ov6hLbXbWA 9myPa3bHKUV9z5/ui4Flm7WdD59w5WhOZOKOc5ATktGdfwSe3+wRc0tE1 w==; X-IronPort-AV: E=McAfee;i="6600,9927,10936"; a="482686654" X-IronPort-AV: E=Sophos;i="6.04,310,1695711600"; d="scan'208";a="482686654" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Dec 2023 19:13:09 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10936"; a="807313278" X-IronPort-AV: E=Sophos;i="6.04,310,1695711600"; d="scan'208";a="807313278" Received: from unknown (HELO zhichao-dpdk..) ([10.239.252.103]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Dec 2023 19:13:05 -0800 From: Zhichao Zeng To: dev@dpdk.org Cc: qi.z.zhang@intel.com, Zhichao Zeng , Jingjing Wu , Beilei Xing Subject: [PATCH v5 3/3] net/iavf: add Tx LLDP command Date: Thu, 28 Dec 2023 11:22:10 +0800 Message-Id: <20231228032211.1127554-4-zhichaox.zeng@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231228032211.1127554-1-zhichaox.zeng@intel.com> References: <20231225031451.4002181-1-zhichaox.zeng@intel.com> <20231228032211.1127554-1-zhichaox.zeng@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This patch adds an IAVF testpmd command "set tx lldp on|off" which will register an mbuf dynfield IAVF_TX_LLDP_DYNFIELD to indicate the need to send LLDP packet. It needs to close the Tx port first, then "set tx lldp on", and reopen the port to select correct Tx path, only supports turning on for now. Signed-off-by: Zhichao Zeng --- doc/guides/rel_notes/release_24_03.rst | 3 + drivers/net/iavf/iavf_testpmd.c | 81 ++++++++++++++++++++++++++ drivers/net/iavf/meson.build | 3 + 3 files changed, 87 insertions(+) create mode 100644 drivers/net/iavf/iavf_testpmd.c diff --git a/doc/guides/rel_notes/release_24_03.rst b/doc/guides/rel_notes/release_24_03.rst index 6f8ad27808..f94e18c33a 100644 --- a/doc/guides/rel_notes/release_24_03.rst +++ b/doc/guides/rel_notes/release_24_03.rst @@ -55,6 +55,9 @@ New Features Also, make sure to start the actual text at the margin. ======================================================= +* **Updated Intel iavf driver.** + + * Added support for Tx LLDP packet on scalar and avx512. Removed Items ------------- diff --git a/drivers/net/iavf/iavf_testpmd.c b/drivers/net/iavf/iavf_testpmd.c new file mode 100644 index 0000000000..07aac07fc3 --- /dev/null +++ b/drivers/net/iavf/iavf_testpmd.c @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2010-2016 Intel Corporation. + */ + +#include + +#include + +#include +#include + +#include "iavf.h" +#include "testpmd.h" +#include "iavf_rxtx.h" + +struct cmd_enable_tx_lldp_result { + cmdline_fixed_string_t set; + cmdline_fixed_string_t tx; + cmdline_fixed_string_t lldp; + cmdline_fixed_string_t what; +}; + +static cmdline_parse_token_string_t cmd_enable_tx_lldp_set = + TOKEN_STRING_INITIALIZER(struct cmd_enable_tx_lldp_result, + set, "set"); +static cmdline_parse_token_string_t cmd_enable_tx_lldp_tx = + TOKEN_STRING_INITIALIZER(struct cmd_enable_tx_lldp_result, + tx, "tx"); +static cmdline_parse_token_string_t cmd_enable_tx_lldp_lldp = + TOKEN_STRING_INITIALIZER(struct cmd_enable_tx_lldp_result, + lldp, "lldp"); +static cmdline_parse_token_string_t cmd_enable_tx_lldp_what = + TOKEN_STRING_INITIALIZER(struct cmd_enable_tx_lldp_result, + what, "on#off"); + +static void +cmd_enable_tx_lldp_parsed(void *parsed_result, + __rte_unused struct cmdline *cl, __rte_unused void *data) +{ + struct cmd_enable_tx_lldp_result *res = parsed_result; + const struct rte_mbuf_dynfield iavf_tx_lldp_dynfield = { + .name = IAVF_TX_LLDP_DYNFIELD, + .size = sizeof(uint8_t), + .align = __alignof__(uint8_t), + .flags = 0 + }; + int offset; + + if (strncmp(res->what, "on", 2) == 0) { + offset = rte_mbuf_dynfield_register(&iavf_tx_lldp_dynfield); + printf("rte_pmd_iavf_tx_lldp_dynfield_offset: %d", offset); + if (offset < 0) + fprintf(stderr, + "rte mbuf dynfield register failed, offset: %d", offset); + } +} + +static cmdline_parse_inst_t cmd_enable_tx_lldp = { + .f = cmd_enable_tx_lldp_parsed, + .data = NULL, + .help_str = "set iavf tx lldp on|off", + .tokens = { + (void *)&cmd_enable_tx_lldp_set, + (void *)&cmd_enable_tx_lldp_tx, + (void *)&cmd_enable_tx_lldp_lldp, + (void *)&cmd_enable_tx_lldp_what, + NULL, + }, +}; + +static struct testpmd_driver_commands iavf_cmds = { + .commands = { + { + &cmd_enable_tx_lldp, + "set tx lldp (on|off)\n" + " Set iavf Tx lldp packet(currently only supported on)\n\n", + }, + { NULL, NULL }, + }, +}; +TESTPMD_ADD_DRIVER_COMMANDS(iavf_cmds) diff --git a/drivers/net/iavf/meson.build b/drivers/net/iavf/meson.build index a6ce2725c3..83aebd5596 100644 --- a/drivers/net/iavf/meson.build +++ b/drivers/net/iavf/meson.build @@ -8,6 +8,9 @@ endif cflags += ['-Wno-strict-aliasing'] includes += include_directories('../../common/iavf') + +testpmd_sources = files('iavf_testpmd.c') + deps += ['common_iavf', 'security', 'cryptodev'] sources = files(