From patchwork Thu Sep 28 09:47:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132099 X-Patchwork-Delegate: ferruh.yigit@amd.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 7F03D4265E; Thu, 28 Sep 2023 11:37:17 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6EDBF40DDA; Thu, 28 Sep 2023 11:37:17 +0200 (CEST) Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by mails.dpdk.org (Postfix) with ESMTP id 0544A40A84; Thu, 28 Sep 2023 11:37:13 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893822txnhfp6q Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:02 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: 5q30pvLz2ie9MkCTgu7/OETrKqpin5cGuyjRdC4QTBFcUaMHXmN0+81+Bma3i TbjIlqvi/KTHajtj62cNSWdyh17XkMPb+N8FrtohF1OMJamglyg+H1QTsR9cFkkbMByUkSx mQh+mnmJlEwkuEBNcd4GkUyCKKdEc5TgsRvrI6Jnz1f3dRtR5iJXqP957NW/DcqNLFlX2g9 8Gzp7jpEzYNCi/tz+Eq/MYLzkjrZeLoRUwMl52Eu6hmDSDgm3l9w/K+35O5Wi/k+rwn/zvz j0ds0iYHMPy7hDwlxK3TRslaiUMo45Hk5TgKH1cpPNe1zUs21xtWHEWeIdxbd+Nvjy2jGOS Q7TkjOZez+NUAgTRA3o4CqgfX9iCzeFB1J96WYMYFWmxA39MeDqPBwdRKHysiJnooQYBqIO zVr1oRO9vXE= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 4015351842153690812 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 01/11] net/txgbe: add Tx queue maximum limit Date: Thu, 28 Sep 2023 17:47:48 +0800 Message-Id: <20230928094758.1076236-2-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 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 Limit TX queue maximum to 64 when neither VT nor DCB are enabled, since hardware doesn't support it. Fixes: 75cbb1f0e8a6 ("net/txgbe: add device configuration") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ethdev.c | 13 +++++++++++++ drivers/net/txgbe/txgbe_ethdev.h | 1 + 2 files changed, 14 insertions(+) diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index 15911a3621..479cd810f8 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -1499,6 +1499,19 @@ txgbe_check_mq_mode(struct rte_eth_dev *dev) return -EINVAL; } } + + /* + * When DCB/VT is off, maximum number of queues changes + */ + if (dev_conf->txmode.mq_mode == RTE_ETH_MQ_TX_NONE) { + if (nb_tx_q > TXGBE_NONE_MODE_TX_NB_QUEUES) { + PMD_INIT_LOG(ERR, + "Neither VT nor DCB are enabled, " + "nb_tx_q > %d.", + TXGBE_NONE_MODE_TX_NB_QUEUES); + return -EINVAL; + } + } } return 0; } diff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h index 6b296d6fd1..7feb45d0cf 100644 --- a/drivers/net/txgbe/txgbe_ethdev.h +++ b/drivers/net/txgbe/txgbe_ethdev.h @@ -41,6 +41,7 @@ /*Default value of Max Rx Queue*/ #define TXGBE_MAX_RX_QUEUE_NUM 128 #define TXGBE_VMDQ_DCB_NB_QUEUES TXGBE_MAX_RX_QUEUE_NUM +#define TXGBE_NONE_MODE_TX_NB_QUEUES 64 #ifndef NBBY #define NBBY 8 /* number of bits in a byte */ From patchwork Thu Sep 28 09:47:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132100 X-Patchwork-Delegate: ferruh.yigit@amd.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 C296F4265E; Thu, 28 Sep 2023 11:37:23 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F348140E03; Thu, 28 Sep 2023 11:37:21 +0200 (CEST) Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) by mails.dpdk.org (Postfix) with ESMTP id A863840A80; Thu, 28 Sep 2023 11:37:17 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893825tqricwgy Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:05 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: jlZuxrJ108Ao/J0wkhuL8UvlKG3saqwM6uBAiwvGnIgOZlIG7ANYS9Zg38qhy fccAnTa7t9KnvStwHhWLVO14wtKjauDCoINusEY8NQca5ATDNr8TSoQTfIogpCed+AVB54c iRS7YRO9ogu20JauXjyLFVw/LmBzqg7PIkke9r1bUIUQ1frfgVaDUJ6AjMjU7h9GSJJix/a hb1i2ENNtJzbHuEX0oKExFl/c/uHA9bl4psOJjqX6Y0Fz1kTn0Sgzh/rC+8aUGySTLYzpsa CJ1pQoQZHjSjuzgIDU9CJ1Vkng27fGOSuZz2bhqCCm4A1xepMkf5eu902e7EIs1l5KaMPbC iGRJOBmseLXVVIbKCabM8ieGvlAuyXVYKw5/cXxdGXWyqLlmEI6qOPKVpPnOHTGGb76q8/G LVzzdOJi8Xk= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 14137782599609079605 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 02/11] net/txgbe: fix GRE tunnel packet checksum Date: Thu, 28 Sep 2023 17:47:49 +0800 Message-Id: <20230928094758.1076236-3-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 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 Fix transmit context descriptor for GRE tunnel packet to make the hardware compute the checksum successfully. Fixes: e5ece1f467aa ("net/txgbe: fix VXLAN-GPE packet checksum") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ptypes.c | 16 ---------------- drivers/net/txgbe/txgbe_ptypes.h | 5 +++++ drivers/net/txgbe/txgbe_rxtx.c | 23 ++++++++++++----------- 3 files changed, 17 insertions(+), 27 deletions(-) diff --git a/drivers/net/txgbe/txgbe_ptypes.c b/drivers/net/txgbe/txgbe_ptypes.c index e1299d7363..c444d5d3f1 100644 --- a/drivers/net/txgbe/txgbe_ptypes.c +++ b/drivers/net/txgbe/txgbe_ptypes.c @@ -320,8 +320,6 @@ txgbe_encode_ptype_tunnel(u32 ptype) ptid |= TXGBE_PTID_TUN_EI; break; case RTE_PTYPE_TUNNEL_GRE: - ptid |= TXGBE_PTID_TUN_EIG; - break; case RTE_PTYPE_TUNNEL_VXLAN: case RTE_PTYPE_TUNNEL_VXLAN_GPE: case RTE_PTYPE_TUNNEL_NVGRE: @@ -332,20 +330,6 @@ txgbe_encode_ptype_tunnel(u32 ptype) return ptid; } - switch (ptype & RTE_PTYPE_INNER_L2_MASK) { - case RTE_PTYPE_INNER_L2_ETHER: - ptid |= TXGBE_PTID_TUN_EIGM; - break; - case RTE_PTYPE_INNER_L2_ETHER_VLAN: - ptid |= TXGBE_PTID_TUN_EIGMV; - break; - case RTE_PTYPE_INNER_L2_ETHER_QINQ: - ptid |= TXGBE_PTID_TUN_EIGMV; - break; - default: - break; - } - switch (ptype & RTE_PTYPE_INNER_L3_MASK) { case RTE_PTYPE_INNER_L3_IPV4: case RTE_PTYPE_INNER_L3_IPV4_EXT: diff --git a/drivers/net/txgbe/txgbe_ptypes.h b/drivers/net/txgbe/txgbe_ptypes.h index fa6c347d53..6fa8147f05 100644 --- a/drivers/net/txgbe/txgbe_ptypes.h +++ b/drivers/net/txgbe/txgbe_ptypes.h @@ -348,4 +348,9 @@ struct txgbe_nvgrehdr { __be32 tni; }; +struct txgbe_grehdr { + __be16 flags; + __be16 proto; +}; + #endif /* _TXGBE_PTYPE_H_ */ diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c index 427f8b82ac..f7cd2333ab 100644 --- a/drivers/net/txgbe/txgbe_rxtx.c +++ b/drivers/net/txgbe/txgbe_rxtx.c @@ -572,7 +572,6 @@ tx_desc_ol_flags_to_ptype(uint64_t oflags) ptype |= RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_GRE; - ptype |= RTE_PTYPE_INNER_L2_ETHER; break; case RTE_MBUF_F_TX_TUNNEL_GENEVE: ptype |= RTE_PTYPE_L2_ETHER | @@ -705,22 +704,24 @@ txgbe_get_tun_len(struct rte_mbuf *mbuf) static inline uint8_t txgbe_parse_tun_ptid(struct rte_mbuf *tx_pkt) { - uint64_t l2_none, l2_mac, l2_mac_vlan; + uint64_t l2_vxlan, l2_vxlan_mac, l2_vxlan_mac_vlan; + uint64_t l2_gre, l2_gre_mac, l2_gre_mac_vlan; uint8_t ptid = 0; - if ((tx_pkt->ol_flags & (RTE_MBUF_F_TX_TUNNEL_VXLAN | - RTE_MBUF_F_TX_TUNNEL_VXLAN_GPE)) == 0) - return ptid; + l2_vxlan = sizeof(struct txgbe_udphdr) + sizeof(struct txgbe_vxlanhdr); + l2_vxlan_mac = l2_vxlan + sizeof(struct rte_ether_hdr); + l2_vxlan_mac_vlan = l2_vxlan_mac + sizeof(struct rte_vlan_hdr); - l2_none = sizeof(struct txgbe_udphdr) + sizeof(struct txgbe_vxlanhdr); - l2_mac = l2_none + sizeof(struct rte_ether_hdr); - l2_mac_vlan = l2_mac + sizeof(struct rte_vlan_hdr); + l2_gre = sizeof(struct txgbe_grehdr); + l2_gre_mac = l2_gre + sizeof(struct rte_ether_hdr); + l2_gre_mac_vlan = l2_gre_mac + sizeof(struct rte_vlan_hdr); - if (tx_pkt->l2_len == l2_none) + if (tx_pkt->l2_len == l2_vxlan || tx_pkt->l2_len == l2_gre) ptid = TXGBE_PTID_TUN_EIG; - else if (tx_pkt->l2_len == l2_mac) + else if (tx_pkt->l2_len == l2_vxlan_mac || tx_pkt->l2_len == l2_gre_mac) ptid = TXGBE_PTID_TUN_EIGM; - else if (tx_pkt->l2_len == l2_mac_vlan) + else if (tx_pkt->l2_len == l2_vxlan_mac_vlan || + tx_pkt->l2_len == l2_gre_mac_vlan) ptid = TXGBE_PTID_TUN_EIGMV; return ptid; From patchwork Thu Sep 28 09:47:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132101 X-Patchwork-Delegate: ferruh.yigit@amd.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 7EDAB4265E; Thu, 28 Sep 2023 11:37:30 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5122A40E5E; Thu, 28 Sep 2023 11:37:23 +0200 (CEST) Received: from smtpbguseast3.qq.com (smtpbguseast3.qq.com [54.243.244.52]) by mails.dpdk.org (Postfix) with ESMTP id EF82640DDC; Thu, 28 Sep 2023 11:37:17 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893828ti0imlrj Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:08 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: 83ShfzFP0oDfoMv8XYBuUgxrOQub0a/aGXDYZd+79xzsMgAxTZHaNHwl6CN0W iCJoUR70CUVOBYuliihuorZ8oAx4o9XoF5a+l7d0zC8dB1O28JFUgISFOI0i/urpz0vEYr/ K003pbIZhGByqD9R1KmqmoQgtW/jSlup3scV0CjDZd1KBsRUT2a38DcOtcU81+GXzbv+3s6 tYC4AOBn7oqO6hxXlMEY6KhpWF/cElAhfxLFGvh0lOknKr+88FeLQw2Toc1qeQN3mxYQrXZ 3oCIIDUo5v11wCku80epqoz46chnjHI3C9n4lC2ER7EsqjxKlZ0QhDeHEH5fjzR3y5+ZFo6 TO8O5tr5GVQriGPeonOe9Vq8ywIxH622OnSp55AZAJJXk0ziCA8a6edz+3t54LEP7D0TJT+ P0WPa8feZ+g= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 14509841638707047749 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 03/11] net/ngbe: fix to set flow control Date: Thu, 28 Sep 2023 17:47:50 +0800 Message-Id: <20230928094758.1076236-4-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 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 Fix flow control high/low water limit. Fixes: f40e9f0e2278 ("net/ngbe: support flow control") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/base/ngbe_type.h | 40 ++++++++++++++ drivers/net/ngbe/ngbe_ethdev.c | 89 +++++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+) diff --git a/drivers/net/ngbe/base/ngbe_type.h b/drivers/net/ngbe/base/ngbe_type.h index 37be288a74..8a7d2cd331 100644 --- a/drivers/net/ngbe/base/ngbe_type.h +++ b/drivers/net/ngbe/base/ngbe_type.h @@ -116,6 +116,46 @@ struct ngbe_fc_info { enum ngbe_fc_mode requested_mode; /* FC mode requested by caller */ }; +/* Flow Control Data Sheet defined values + * Calculation and defines taken from 802.1bb Annex O + */ +/* BitTimes (BT) conversion */ +#define NGBE_BT2KB(BT) (((BT) + (8 * 1024 - 1)) / (8 * 1024)) +#define NGBE_B2BT(BT) ((BT) * 8) + +/* Calculate Delay to respond to PFC */ +#define NGBE_PFC_D 672 + +/* Calculate Cable Delay */ +#define NGBE_CABLE_DC 5556 /* Delay Copper */ + +/* Calculate Interface Delay */ +#define NGBE_PHY_D 12800 +#define NGBE_MAC_D 4096 +#define NGBE_XAUI_D (2 * 1024) + +#define NGBE_ID (NGBE_MAC_D + NGBE_XAUI_D + NGBE_PHY_D) + +/* Calculate Delay incurred from higher layer */ +#define NGBE_HD 6144 + +/* Calculate PCI Bus delay for low thresholds */ +#define NGBE_PCI_DELAY 10000 + +/* Calculate delay value in bit times */ +#define NGBE_DV(_max_frame_link, _max_frame_tc) \ + ((36 * \ + (NGBE_B2BT(_max_frame_link) + \ + NGBE_PFC_D + \ + (2 * NGBE_CABLE_DC) + \ + (2 * NGBE_ID) + \ + NGBE_HD) / 25 + 1) + \ + 2 * NGBE_B2BT(_max_frame_tc)) + +#define NGBE_LOW_DV(_max_frame_tc) \ + (2 * ((2 * NGBE_B2BT(_max_frame_tc) + \ + (36 * NGBE_PCI_DELAY / 25) + 1))) + /* Statistics counters collected by the MAC */ /* PB[] RxTx */ struct ngbe_pb_stats { diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index af77081d9a..039c3c35a8 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -90,6 +90,7 @@ static int ngbe_dev_misc_interrupt_setup(struct rte_eth_dev *dev); static int ngbe_dev_rxq_interrupt_setup(struct rte_eth_dev *dev); static void ngbe_dev_interrupt_handler(void *param); static void ngbe_configure_msix(struct rte_eth_dev *dev); +static void ngbe_pbthresh_set(struct rte_eth_dev *dev); #define NGBE_SET_HWSTRIP(h, q) do {\ uint32_t idx = (q) / (sizeof((h)->bitmap[0]) * NBBY); \ @@ -1037,6 +1038,7 @@ ngbe_dev_start(struct rte_eth_dev *dev) } hw->mac.setup_pba(hw); + ngbe_pbthresh_set(dev); ngbe_configure_port(dev); err = ngbe_dev_rxtx_start(dev); @@ -2386,6 +2388,93 @@ ngbe_flow_ctrl_set(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf) return -EIO; } +/* Additional bittime to account for NGBE framing */ +#define NGBE_ETH_FRAMING 20 + +/* + * ngbe_fc_hpbthresh_set - calculate high water mark for flow control + * + * @dv_id: device interface delay + * @pb: packet buffer to calculate + */ +static s32 +ngbe_fc_hpbthresh_set(struct rte_eth_dev *dev) +{ + struct ngbe_hw *hw = ngbe_dev_hw(dev); + struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); + u32 max_frame_size, tc, dv_id, rx_pb; + s32 kb, marker; + + /* Calculate max LAN frame size */ + max_frame_size = rd32m(hw, NGBE_FRMSZ, NGBE_FRMSZ_MAX_MASK); + tc = max_frame_size + NGBE_ETH_FRAMING; + + /* Calculate delay value for device */ + dv_id = NGBE_DV(tc, tc); + + /* Loopback switch introduces additional latency */ + if (pci_dev->max_vfs) + dv_id += NGBE_B2BT(tc); + + /* Delay value is calculated in bit times convert to KB */ + kb = NGBE_BT2KB(dv_id); + rx_pb = rd32(hw, NGBE_PBRXSIZE) >> 10; + + marker = rx_pb - kb; + + /* It is possible that the packet buffer is not large enough + * to provide required headroom. In this case throw an error + * to user and do the best we can. + */ + if (marker < 0) { + PMD_DRV_LOG(WARNING, "Packet Buffer can not provide enough headroom to support flow control."); + marker = tc + 1; + } + + return marker; +} + +/* + * ngbe_fc_lpbthresh_set - calculate low water mark for for flow control + * + * @dv_id: device interface delay + */ +static s32 +ngbe_fc_lpbthresh_set(struct rte_eth_dev *dev) +{ + struct ngbe_hw *hw = ngbe_dev_hw(dev); + u32 max_frame_size, tc, dv_id; + s32 kb; + + /* Calculate max LAN frame size */ + max_frame_size = rd32m(hw, NGBE_FRMSZ, NGBE_FRMSZ_MAX_MASK); + tc = max_frame_size + NGBE_ETH_FRAMING; + + /* Calculate delay value for device */ + dv_id = NGBE_LOW_DV(tc); + + /* Delay value is calculated in bit times convert to KB */ + kb = NGBE_BT2KB(dv_id); + + return kb; +} + +/* + * ngbe_pbthresh_setup - calculate and setup high low water marks + */ +static void +ngbe_pbthresh_set(struct rte_eth_dev *dev) +{ + struct ngbe_hw *hw = ngbe_dev_hw(dev); + + hw->fc.high_water = ngbe_fc_hpbthresh_set(dev); + hw->fc.low_water = ngbe_fc_lpbthresh_set(dev); + + /* Low water marks must not be larger than high water marks */ + if (hw->fc.low_water > hw->fc.high_water) + hw->fc.low_water = 0; +} + int ngbe_dev_rss_reta_update(struct rte_eth_dev *dev, struct rte_eth_rss_reta_entry64 *reta_conf, From patchwork Thu Sep 28 09:47:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132102 X-Patchwork-Delegate: ferruh.yigit@amd.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 2F4AC4265E; Thu, 28 Sep 2023 11:37:38 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CF24E40ED0; Thu, 28 Sep 2023 11:37:24 +0200 (CEST) Received: from smtpbguseast1.qq.com (smtpbguseast1.qq.com [54.204.34.129]) by mails.dpdk.org (Postfix) with ESMTP id 8C9C940E01; Thu, 28 Sep 2023 11:37:22 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893831tpulabz1 Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:11 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: vXwDnSb1WraqoNa9RSxQQZzIyiTgxMqcHSPYVensIyK1/iBfRouGrIQpduG2T gRCnrFXU3RUETc/tDaJ0JUL5GkJm/3eiBcQ7CsDd3vMHDUaCSzTmSIZHcDr+oW9vU+SQlqw gfdptpuuM/YCgYwVVH6W2xp5LIIaDXLqTrQRb4Qo915qxZSzhzNOm3c9XJaoHp5mFz9QQhu YVMwo3znYVr31YmSL4EY2NlyGw9FwX3pSr7o8Me3dws3pyarrVW8aS1e4erT9Px2HDsfgNJ ANK23NR1FLQQxFHyBLEVLYrJNAt5ZCrIAOo27Ne0p7N0d7AAywlTGRx9tCLmDW/SWfsKvAi kbmk56/4Vt7QwCiM7exAlZ78FKcyk1v33j1NZnM1B4Agffpl/xliycE2CPM/9rHgUXb2cII 6FFVoPbxolY= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 18328242564598368118 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 04/11] net/ngbe: prevent the NIC from slowing down link speed Date: Thu, 28 Sep 2023 17:47:51 +0800 Message-Id: <20230928094758.1076236-5-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 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 When the signal quality is bad, the internal PHY may slow down to 100M. Fix this weird behavior by setting dis fall 100M bit. Fixes: 696a82117875 ("net/ngbe: redesign internal PHY init flow") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/base/ngbe_phy_rtl.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/ngbe/base/ngbe_phy_rtl.c b/drivers/net/ngbe/base/ngbe_phy_rtl.c index b0eb6c97c0..ba63a8058a 100644 --- a/drivers/net/ngbe/base/ngbe_phy_rtl.c +++ b/drivers/net/ngbe/base/ngbe_phy_rtl.c @@ -148,6 +148,11 @@ s32 ngbe_init_phy_rtl(struct ngbe_hw *hw) hw->phy.write_reg(hw, 27, 0xa42, 0x8011); hw->phy.write_reg(hw, 28, 0xa42, 0x5737); + /* Disable fall to 100m if signal is not good */ + hw->phy.read_reg(hw, 17, 0xa44, &value); + value &= ~0x8; + hw->phy.write_reg(hw, 17, 0xa44, value); + hw->phy.write_reg(hw, RTL_SCR, 0xa46, RTL_SCR_EXTINI); hw->phy.read_reg(hw, RTL_SCR, 0xa46, &value); if (!(value & RTL_SCR_EXTINI)) { From patchwork Thu Sep 28 09:47:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132104 X-Patchwork-Delegate: ferruh.yigit@amd.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 3E6644265E; Thu, 28 Sep 2023 11:37:53 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9692940EE1; Thu, 28 Sep 2023 11:37:28 +0200 (CEST) Received: from smtpbgau1.qq.com (smtpbgau1.qq.com [54.206.16.166]) by mails.dpdk.org (Postfix) with ESMTP id 5C2EE40E6E; Thu, 28 Sep 2023 11:37:22 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893834t1ehu7bq Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:14 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: tvtHwrVUWtktCYj1EjDobyJgCCxeygLCb4it01BEhZaLwmo1S9vNU9Zg+siZZ UM8b3Mt6imKKOI+/BY604dJT41CW+e6MsceecT+PM7KVK0xWSAj78vTI+B82YkGgEdqehQj qyEnlfkbVYE6S5enBGfAF6ORc2Xkreje5cOb50muztvKPhahJKQlq9jb7oITpWVVkTXDmpi gwvoDvawFC431/8D3RYNQ738+NFmX6qCJFIjlYu+KM7yVCGAtVHgUJmbM4OkSDeGj9HN1sO ePrxWUERfLwE4Fj8Bk2OjSrP1ccNZVeXR0ooJMLI9S9AQEfi3CT+/JmcaCTtdDklIjzCrg2 W4R0ah6yut4bWcVeVjKJDW7WgIvJwANcOr56lT6WoHaykKazQhHnq8qOdEVOPeodHXp1c4P dkN1L2NFuqo= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 15994139580163676250 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 05/11] net/txgbe: reconfigure MAC Rx when link update Date: Thu, 28 Sep 2023 17:47:52 +0800 Message-Id: <20230928094758.1076236-6-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 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 Fix the bug that after setting flow control parameters, link status change (for example, hot-plug SFP module) causes the port to no longer receive packets. Fixes: 0c061eadec59 ("net/txgbe: add link status change") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ethdev.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index 479cd810f8..e789e34c01 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -2957,6 +2957,11 @@ txgbe_dev_link_update_share(struct rte_eth_dev *dev, break; } + /* Re configure MAC RX */ + if (hw->mac.type == txgbe_mac_raptor) + wr32m(hw, TXGBE_MACRXFLT, TXGBE_MACRXFLT_PROMISC, + TXGBE_MACRXFLT_PROMISC); + return rte_eth_linkstatus_set(dev, &link); } From patchwork Thu Sep 28 09:47:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132103 X-Patchwork-Delegate: ferruh.yigit@amd.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 7C1354265E; Thu, 28 Sep 2023 11:37:46 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5946240ED8; Thu, 28 Sep 2023 11:37:27 +0200 (CEST) Received: from smtpbgeu2.qq.com (smtpbgeu2.qq.com [18.194.254.142]) by mails.dpdk.org (Postfix) with ESMTP id 1BFC540E25; Thu, 28 Sep 2023 11:37:22 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893837ty2hhpxq Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:17 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: NzZVSmv0f+mHhEjqbHwff+ucYZIwmt5IuLDVv5fFUTGMiRojQNSpNVksZW70O ZfRP9LqaHaHzbMAjJzutRBN9cnp9qDmMhc47bmxfUY9shY8ThfErh4zuzdE+E37ZvOOe60g W5NtdJfIIkj3zF5H6ekWGCpNkdVv3rbQYHlgJ1Qryg/gC1rsR7PRlz1xKL+Qz02/Kl+xfS/ rUL/Z29J3bTP2IzkPtI0M9Cn9vFrZq9t1uGwhOC3j0r0w9uxRJ1gj90ipsLwFHjTmBq9RL/ n3TOJxIZH4JfxA+X53s1+5dpU2Z5rW3vorS0Nb4fKR1XwAw7YLAMizhvbFQB/C0XQPpHkgt 4HcuecbRWOesca0OdebgXXsyElrgUQK+GslkmmyMKf+/Qug/yUFbP/s9syp45PtYXyIF3Ze 9poDHAEcRbfiN3HnX1mZqg== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 11635693398428896968 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 06/11] net/ngbe: reconfigure MAC Rx when link update Date: Thu, 28 Sep 2023 17:47:53 +0800 Message-Id: <20230928094758.1076236-7-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 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 Fix the bug that after setting flow control parameters, link status change (for example, set PHY power on/off) causes the port to no longer receive packets. Fixes: b9246b8fa280 ("net/ngbe: support link update") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/ngbe_ethdev.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index 039c3c35a8..e027e71b24 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -1961,6 +1961,8 @@ ngbe_dev_link_update_share(struct rte_eth_dev *dev, wr32m(hw, NGBE_MACTXCFG, NGBE_MACTXCFG_SPEED_MASK, NGBE_MACTXCFG_SPEED_1G | NGBE_MACTXCFG_TE); } + wr32m(hw, NGBE_MACRXFLT, NGBE_MACRXFLT_PROMISC, + NGBE_MACRXFLT_PROMISC); } return rte_eth_linkstatus_set(dev, &link); From patchwork Thu Sep 28 09:47:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132105 X-Patchwork-Delegate: ferruh.yigit@amd.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 546C14265E; Thu, 28 Sep 2023 11:38:00 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EEBE440FDE; Thu, 28 Sep 2023 11:37:33 +0200 (CEST) Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by mails.dpdk.org (Postfix) with ESMTP id CD06440EE7; Thu, 28 Sep 2023 11:37:30 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893840tlyggm46 Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:19 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: WjKIxUDuZHQgDWXvg/HlMl6rpfpL0S1TQy7i01jaQHbDtgONa0SKdrkzpaTD9 IVjX1YhxRD+Q1fE2AgHd6miNN66IV46Zduuu8zS++F6xi1sa4KM/csrCH3eMRb6ZVpTO9Q6 RN8JPZOyStdo3wO/Allbn3XkNZXrLJc3Q5kRC8vfyZYFZdYRgOKaaHD+3tRgXzi6sg9qI7W ERq0luO46HsOIJ9Lheh1Cp8xjPBGT9sELx8Ou0772uTqkJzQu8eKDjybXJmK76jRClI0vrG cgSVlUTbFoxgKrVBuU2ojyhODd/5wgNPAQhT2LjgnSOyK4W5bPsHxdB01doR6JHCSxKU1Ok 4eO5Zamb8LmGia5p2zrTSvcmBLA8JSNJaYXdRmZVjKbb52HvpvPzfv9Eny9nNSu983UC1w0 1bGCM02zF+I= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 12081001662970362395 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 07/11] net/txgbe: fix to keep link down after device close Date: Thu, 28 Sep 2023 17:47:54 +0800 Message-Id: <20230928094758.1076236-8-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 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 When the port is closed, hardware is reset to power on. And txgbe_dev_stop() is just returned 0 to avoid secondary calls, so that the link led remains on. Fix this bug by adding to turn off the copper/laser. Fixes: e0d876ef6bbc ("net/txgbe: support device stop and close") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ethdev.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index e789e34c01..2dad820cb5 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -1929,7 +1929,7 @@ txgbe_dev_stop(struct rte_eth_dev *dev) struct txgbe_tm_conf *tm_conf = TXGBE_DEV_TM_CONF(dev); if (hw->adapter_stopped) - return 0; + goto out; PMD_INIT_FUNC_TRACE(); @@ -1953,14 +1953,6 @@ txgbe_dev_stop(struct rte_eth_dev *dev) for (vf = 0; vfinfo != NULL && vf < pci_dev->max_vfs; vf++) vfinfo[vf].clear_to_send = false; - if (hw->phy.media_type == txgbe_media_type_copper) { - /* Turn off the copper */ - hw->phy.set_phy_power(hw, false); - } else { - /* Turn off the laser */ - hw->mac.disable_tx_laser(hw); - } - txgbe_dev_clear_queues(dev); /* Clear stored conf */ @@ -1991,6 +1983,16 @@ txgbe_dev_stop(struct rte_eth_dev *dev) dev->data->dev_started = 0; hw->dev_start = false; +out: + /* close phy to prevent reset in dev_close from restarting physical link */ + if (hw->phy.media_type == txgbe_media_type_copper) { + /* Turn off the copper */ + hw->phy.set_phy_power(hw, false); + } else { + /* Turn off the laser */ + hw->mac.disable_tx_laser(hw); + } + return 0; } From patchwork Thu Sep 28 09:47:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132106 X-Patchwork-Delegate: ferruh.yigit@amd.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 28B124265E; Thu, 28 Sep 2023 11:38:09 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C454D410F9; Thu, 28 Sep 2023 11:37:36 +0200 (CEST) Received: from smtpbguseast2.qq.com (smtpbguseast2.qq.com [54.204.34.130]) by mails.dpdk.org (Postfix) with ESMTP id AA0B640EE7; Thu, 28 Sep 2023 11:37:33 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893843tf8icsvg Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:23 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: TTeDAmFkMY9EY2tqOzyail3AChBogxiajzcPUNX+CiBra8OuV18SZrnHKjctZ qoZeChKJ8Ix+wbb6X4xwPeyeeOiI94Sw8P7MYT4ng0e+4vByg+cnVVENhpVVjbl6FgjoGmL MAhp8CuoGSX3aBQy9RLn8biXJvXjn99fV0ucM9gX/G3VOVDeQkZDi1MT0Vpt0vxBJyKAsg1 17miPYoQ6Q2hZsYT+xtOI4f/QadaPCQv1u9+Ns4jUt0Mz/BNMX5uvPpXHZjMnWieJbDEY1V 2U41WQgafDJmOjYy3r0KsjMlZAx1hWedXuDHNzVzSpEhcVI7GqE6YasgCYCHoT7pGPyznS+ 8sBUCeiLOPLUJWxIaggbU/1YW/EohKlxqNFSZ82X9yJvrdh76c9meID8Sx8i9gHKy8h28GA zggAi34Dy8Y= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 11600720360700553855 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 08/11] net/ngbe: fix to keep link down after device close Date: Thu, 28 Sep 2023 17:47:55 +0800 Message-Id: <20230928094758.1076236-9-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 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 When the port is closed, hardware is reset to power on. And ngbe_dev_stop() is just returned 0 to avoid secondary calls, so that the link led remains on. Fix this bug by adding to turn off the PHY power. Fixes: 3518df5774c7 ("net/ngbe: support device start/stop") Fixes: 708ebe7d0399 ("net/ngbe: fix external PHY power down") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/ngbe_ethdev.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index e027e71b24..9a594a1db7 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -1167,7 +1167,7 @@ ngbe_dev_stop(struct rte_eth_dev *dev) int vf; if (hw->adapter_stopped) - return 0; + goto out; PMD_INIT_FUNC_TRACE(); @@ -1189,8 +1189,6 @@ ngbe_dev_stop(struct rte_eth_dev *dev) for (vf = 0; vfinfo != NULL && vf < pci_dev->max_vfs; vf++) vfinfo[vf].clear_to_send = false; - hw->phy.set_phy_power(hw, false); - ngbe_dev_clear_queues(dev); /* Clear stored conf */ @@ -1217,6 +1215,10 @@ ngbe_dev_stop(struct rte_eth_dev *dev) hw->adapter_stopped = true; dev->data->dev_started = 0; +out: + /* close phy to prevent reset in dev_close from restarting physical link */ + hw->phy.set_phy_power(hw, false); + return 0; } From patchwork Thu Sep 28 09:47:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132108 X-Patchwork-Delegate: ferruh.yigit@amd.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 5DB5A4265E; Thu, 28 Sep 2023 11:38:22 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 68F1A40EE7; Thu, 28 Sep 2023 11:37:40 +0200 (CEST) Received: from smtpbg153.qq.com (smtpbg153.qq.com [13.245.218.24]) by mails.dpdk.org (Postfix) with ESMTP id 89C0040F35; Thu, 28 Sep 2023 11:37:35 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893846t80g2j6d Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:25 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: WjKIxUDuZHQRVPH9LD+q/NCEC113hkYDBHHoG3YTycrUpG1UU6xy0gsnfqNK1 Zs/2W+1caXFojNIvDr/i8PosNfPbNQ2E6sah7NVdd9m2I0ZGoe5n9nN0pw1vnkmDO42aw7J MIRziEvGhBNqM7KF8lchiMtGuAa3Dkv4YKhXxR9wcOMvVae3uqAvXUDPr70T2u+ePOKdx1v IOuV9SEIz4uIz+Hb/v4AgCTEzsbbfhg12oBBhDKWdQ7COXMw7gnsLlTOnGYrhaw7DQYUZLu UwzvWv4Ru5oftFyDLobny9I+aqiP+14g8PlJHrjMyYXEPCgY/0m7/4TaoBCO0h8HPJmZwmf aErgy8s5mhB29iGbRTZVJr0g6j+9PgKvTqZZk6D9lJ8+inem0ZhkZYltgsq4kpdWOsDqJRu ryOJoc5m0Ds= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 5825822319979746048 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 09/11] net/txgbe: check process type in close operation Date: Thu, 28 Sep 2023 17:47:56 +0800 Message-Id: <20230928094758.1076236-10-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 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 The secondary processes are not allowed to release shared resources. Only process-private resources should be freed in a secondary process. Most of the time, there is no process-private resource, so the close operation is just forbidden in a secondary process. Fixes: e1698e383c2a ("net/txgbe: add device init and uninit") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ethdev.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index 2dad820cb5..6bc231a130 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -2052,6 +2052,9 @@ txgbe_dev_close(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + txgbe_pf_reset_hw(hw); ret = txgbe_dev_stop(dev); From patchwork Thu Sep 28 09:47:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132109 X-Patchwork-Delegate: ferruh.yigit@amd.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 12DFF4265E; Thu, 28 Sep 2023 11:38:30 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E990F41141; Thu, 28 Sep 2023 11:37:41 +0200 (CEST) Received: from smtpbg151.qq.com (smtpbg151.qq.com [18.169.211.239]) by mails.dpdk.org (Postfix) with ESMTP id 98AFA40C35; Thu, 28 Sep 2023 11:37:37 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893849tljcwbc4 Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:28 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: SRelCwPFry0Q+rreRU8yyJ+25C7ZRiODhcqHTwB/QYbjTeDpPP5M4wZdaJ8pQ bLzo/rdXl7Iy3SXznDE37n3SsK39fFigEY7mdfKSQGK/SGGkWj37KEnZsVLFIxEOu5ziz9d T9J90H3guDAb8SixCL9chhOi6Wy7XCMEdjb6bCVP45Wx8R24VJbuaO8K9U8Cua3mi1FUIIi UD4xl28h7IHImI9iIyW8cDvYDY6Hh9TEfV2SHEYiOVbDfShx6PEilxl07Zq2jSeskw3h7Zp 4Z4rL5jv9m+WKCPlswy/yTuMUdaIEw/cTgyAFrZaia2ZCxRB0yAgUyAqpBV6wipdG148SKu 5WzCzJJIlxeQRLS5y6hOAmTgwcEbNHuCXwBZ07RQ+0JxMeXaE1cuFkSVAs4Gbim5PaUVwUi dQyHk/WG/oU= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 3053443312212759993 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 10/11] net/ngbe: check process type in close operation Date: Thu, 28 Sep 2023 17:47:57 +0800 Message-Id: <20230928094758.1076236-11-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 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 The secondary processes are not allowed to release shared resources. Only process-private resources should be freed in a secondary process. Most of the time, there is no process-private resource, so the close operation is just forbidden in a secondary process. Fixes: cc63194e89cb ("net/ngbe: support close and reset device") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/ngbe_ethdev.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index 9a594a1db7..23daf306de 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -1262,6 +1262,9 @@ ngbe_dev_close(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + ngbe_pf_reset_hw(hw); ngbe_dev_stop(dev); From patchwork Thu Sep 28 09:47:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132107 X-Patchwork-Delegate: ferruh.yigit@amd.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 DE7884265E; Thu, 28 Sep 2023 11:38:15 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 273FE40A80; Thu, 28 Sep 2023 11:37:39 +0200 (CEST) Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) by mails.dpdk.org (Postfix) with ESMTP id 7391240EE7 for ; Thu, 28 Sep 2023 11:37:35 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893852tn58oqvk Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:31 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: mA5V8Pu2WCFWg9Ofo6iamXHMdjg//pk4QxE+SyKC4eLWaiIDh0F7ONdQZmBGb NYCj5N5KxmlGgh6uemVudBWD21mWzXkNPN3hlAP0G+vZ0IGGdTFhpmEHGKrIO1JxjiLecRw +Ok6bQBs1OhNYSukuIJ4U7OrGCdiu0bzdfmSAhCz6/3uBkMgZyIRgd7U45nSPCswcKRmpnb drVtm4xN3RSBGzcRBHQrjNq0RhlXIjzLouvh47l/ltOLSDKTMzXyehB4PI42eQIM98pf+39 Ezi6EcMuKqRqN+2UYzFTMKyTjKrbZB0UrF/II3e9BrnevK/PTiFeSKvXpLsNLtENsJiWhmZ UPMAJqBPjIB8cm1819WCqYe/H2jYuu9UxTpyG/RVulqS1tsBKK41dUp1jdySfu6vNdbUw+I 5Acq8eI8b4E= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 17392643781201496720 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu Subject: [PATCH 11/11] net/ngbe: add YT PHY fiber mode autoneg 100M support Date: Thu, 28 Sep 2023 17:47:58 +0800 Message-Id: <20230928094758.1076236-12-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 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 Support auto-neg 100M for YT PHY fiber mode. Signed-off-by: Jiawen Wu --- doc/guides/rel_notes/release_23_11.rst | 4 ++ drivers/net/ngbe/base/ngbe_phy_yt.c | 66 +++++++++++++++++++------- 2 files changed, 52 insertions(+), 18 deletions(-) diff --git a/doc/guides/rel_notes/release_23_11.rst b/doc/guides/rel_notes/release_23_11.rst index 9746809a66..578900f504 100644 --- a/doc/guides/rel_notes/release_23_11.rst +++ b/doc/guides/rel_notes/release_23_11.rst @@ -41,6 +41,10 @@ DPDK Release 23.11 New Features ------------ +* **Updated Wangxun ngbe driver.** + + * Added 100M and auto-neg support in YT PHY fiber mode. + .. This section should contain new features added in this release. Sample format: diff --git a/drivers/net/ngbe/base/ngbe_phy_yt.c b/drivers/net/ngbe/base/ngbe_phy_yt.c index 754faadd6a..ea313cd9a5 100644 --- a/drivers/net/ngbe/base/ngbe_phy_yt.c +++ b/drivers/net/ngbe/base/ngbe_phy_yt.c @@ -205,38 +205,68 @@ s32 ngbe_setup_phy_link_yt(struct ngbe_hw *hw, u32 speed, hw->phy.set_phy_power(hw, true); } else if ((value & YT_CHIP_MODE_MASK) == YT_CHIP_MODE_SEL(1)) { /* fiber to rgmii */ - hw->phy.autoneg_advertised |= NGBE_LINK_SPEED_1GB_FULL; + if (!hw->mac.autoneg) { + switch (speed) { + case NGBE_LINK_SPEED_1GB_FULL: + value = NGBE_LINK_SPEED_1GB_FULL; + break; + case NGBE_LINK_SPEED_100M_FULL: + value = NGBE_LINK_SPEED_100M_FULL; + break; + default: + value = NGBE_LINK_SPEED_1GB_FULL; + break; + } + hw->phy.autoneg_advertised |= value; + goto skip_an_fiber; + } - /* RGMII_Config1 : Config rx and tx training delay */ - value = YT_RGMII_CONF1_RXDELAY | - YT_RGMII_CONF1_TXDELAY_FE | - YT_RGMII_CONF1_TXDELAY; + value = 0; + if (speed & NGBE_LINK_SPEED_1GB_FULL) + hw->phy.autoneg_advertised |= NGBE_LINK_SPEED_1GB_FULL; + if (speed & NGBE_LINK_SPEED_100M_FULL) + hw->phy.autoneg_advertised |= NGBE_LINK_SPEED_100M_FULL; + +skip_an_fiber: rte_spinlock_lock(&hw->phy_lock); - ngbe_write_phy_reg_ext_yt(hw, YT_RGMII_CONF1, 0, value); - value = YT_CHIP_MODE_SEL(1) | - YT_CHIP_SW_LDO_EN | - YT_CHIP_SW_RST; - ngbe_write_phy_reg_ext_yt(hw, YT_CHIP, 0, value); + ngbe_read_phy_reg_ext_yt(hw, YT_MISC, 0, &value); + if (hw->phy.autoneg_advertised & NGBE_LINK_SPEED_1GB_FULL) + value |= YT_MISC_RESV; + else if (hw->phy.autoneg_advertised & NGBE_LINK_SPEED_100M_FULL) + value &= ~YT_MISC_RESV; + ngbe_write_phy_reg_ext_yt(hw, YT_MISC, 0, value); + /* close auto sensing */ ngbe_read_phy_reg_sds_ext_yt(hw, YT_AUTO, 0, &value); value &= ~YT_AUTO_SENSING; ngbe_write_phy_reg_sds_ext_yt(hw, YT_AUTO, 0, value); - ngbe_read_phy_reg_ext_yt(hw, YT_MISC, 0, &value); - value |= YT_MISC_RESV; - ngbe_write_phy_reg_ext_yt(hw, YT_MISC, 0, value); - ngbe_read_phy_reg_ext_yt(hw, YT_CHIP, 0, &value); value &= ~YT_CHIP_SW_RST; ngbe_write_phy_reg_ext_yt(hw, YT_CHIP, 0, value); + /* RGMII_Config1 : Config rx and tx training delay */ + value = YT_RGMII_CONF1_RXDELAY | + YT_RGMII_CONF1_TXDELAY_FE | + YT_RGMII_CONF1_TXDELAY; + + ngbe_write_phy_reg_ext_yt(hw, YT_RGMII_CONF1, 0, value); + value = YT_CHIP_MODE_SEL(1) | + YT_CHIP_SW_LDO_EN | + YT_CHIP_SW_RST; + ngbe_write_phy_reg_ext_yt(hw, YT_CHIP, 0, value); + /* software reset */ - if (hw->mac.autoneg) + if (hw->mac.autoneg) { value = YT_BCR_RESET | YT_BCR_ANE | YT_BCR_RESTART_AN | YT_BCR_DUPLEX | YT_BCR_SPEED_SELECT1; - else - value = YT_BCR_RESET | YT_BCR_DUPLEX | - YT_BCR_SPEED_SELECT1; + } else { + value = YT_BCR_RESET | YT_BCR_DUPLEX; + if (speed & NGBE_LINK_SPEED_1GB_FULL) + value |= YT_BCR_SPEED_SELECT1; + if (speed & NGBE_LINK_SPEED_100M_FULL) + value |= YT_BCR_SPEED_SELECT0; + } hw->phy.write_reg(hw, YT_BCR, 0, value); rte_spinlock_unlock(&hw->phy_lock);