From: Yongseok Koh <yskoh@mellanox.com>
To: Haiyue Wang <haiyue.wang@intel.com>
Cc: Qi Zhang <qi.z.zhang@intel.com>, dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/i40e: workaround performance degradation' has been queued to LTS release 17.11.4
Date: Thu, 26 Jul 2018 19:09:19 -0700 [thread overview]
Message-ID: <20180727021019.37388-23-yskoh@mellanox.com> (raw)
In-Reply-To: <20180727021019.37388-1-yskoh@mellanox.com>
Hi,
FYI, your patch has been queued to LTS release 17.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/28/18. So please
shout if anyone has objections.
Thanks.
Yongseok
---
>From f3d7c22b8be200277f09a457d8b0c5611a909298 Mon Sep 17 00:00:00 2001
From: Haiyue Wang <haiyue.wang@intel.com>
Date: Wed, 13 Jun 2018 13:52:41 +0800
Subject: [PATCH] net/i40e: workaround performance degradation
[ upstream commit 3320d4a240daab15559d3e671bd44573a89cf017 ]
The GL_SWR_PM_UP_THR value is not impacted from the link speed, its
value is set according to the total number of ports for a better
pipe-monitor configuration.
All bellowing relevant device IDs are considered (NICs, LOMs, Mezz
and Backplane):
Device-ID Value Comments
0x1572 0x03030303 10G SFI
0x1581 0x03030303 10G Backplane
0x1586 0x03030303 10G BaseT
0x1589 0x03030303 10G BaseT (FortPond)
0x1580 0x06060606 40G Backplane
0x1583 0x06060606 2x40G QSFP
0x1584 0x06060606 1x40G QSFP
0x1587 0x06060606 20G Backplane (HP)
0x1588 0x06060606 20G KR2 (HP)
0x158A 0x06060606 25G Backplane
0x158B 0x06060606 25G SFP28
Fixes: c9223a2bf53c ("i40e: workaround for XL710 performance")
Fixes: 75d133dd3296 ("net/i40e: enable 25G device")
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
drivers/net/i40e/i40e_ethdev.c | 71 +++++++++++++++++++++++++++++++++++++-----
1 file changed, 64 insertions(+), 7 deletions(-)
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 660175b31..afdeeab5a 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -9768,6 +9768,60 @@ i40e_pctype_to_flowtype(const struct i40e_adapter *adapter,
#define I40E_GL_SWR_PM_UP_THR_SF_VALUE 0x06060606
#define I40E_GL_SWR_PM_UP_THR 0x269FBC
+/*
+ * GL_SWR_PM_UP_THR:
+ * The value is not impacted from the link speed, its value is set according
+ * to the total number of ports for a better pipe-monitor configuration.
+ */
+static bool
+i40e_get_swr_pm_cfg(struct i40e_hw *hw, uint32_t *value)
+{
+#define I40E_GL_SWR_PM_EF_DEVICE(dev) \
+ .device_id = (dev), \
+ .val = I40E_GL_SWR_PM_UP_THR_EF_VALUE
+
+#define I40E_GL_SWR_PM_SF_DEVICE(dev) \
+ .device_id = (dev), \
+ .val = I40E_GL_SWR_PM_UP_THR_SF_VALUE
+
+ static const struct {
+ uint16_t device_id;
+ uint32_t val;
+ } swr_pm_table[] = {
+ { I40E_GL_SWR_PM_EF_DEVICE(I40E_DEV_ID_SFP_XL710) },
+ { I40E_GL_SWR_PM_EF_DEVICE(I40E_DEV_ID_KX_C) },
+ { I40E_GL_SWR_PM_EF_DEVICE(I40E_DEV_ID_10G_BASE_T) },
+ { I40E_GL_SWR_PM_EF_DEVICE(I40E_DEV_ID_10G_BASE_T4) },
+
+ { I40E_GL_SWR_PM_SF_DEVICE(I40E_DEV_ID_KX_B) },
+ { I40E_GL_SWR_PM_SF_DEVICE(I40E_DEV_ID_QSFP_A) },
+ { I40E_GL_SWR_PM_SF_DEVICE(I40E_DEV_ID_QSFP_B) },
+ { I40E_GL_SWR_PM_SF_DEVICE(I40E_DEV_ID_20G_KR2) },
+ { I40E_GL_SWR_PM_SF_DEVICE(I40E_DEV_ID_20G_KR2_A) },
+ { I40E_GL_SWR_PM_SF_DEVICE(I40E_DEV_ID_25G_B) },
+ { I40E_GL_SWR_PM_SF_DEVICE(I40E_DEV_ID_25G_SFP28) },
+ };
+ uint32_t i;
+
+ if (value == NULL) {
+ PMD_DRV_LOG(ERR, "value is NULL");
+ return false;
+ }
+
+ for (i = 0; i < RTE_DIM(swr_pm_table); i++) {
+ if (hw->device_id == swr_pm_table[i].device_id) {
+ *value = swr_pm_table[i].val;
+
+ PMD_DRV_LOG(DEBUG, "Device 0x%x with GL_SWR_PM_UP_THR "
+ "value - 0x%08x",
+ hw->device_id, *value);
+ return true;
+ }
+ }
+
+ return false;
+}
+
static int
i40e_dev_sync_phy_type(struct i40e_hw *hw)
{
@@ -9832,13 +9886,16 @@ i40e_configure_registers(struct i40e_hw *hw)
}
if (reg_table[i].addr == I40E_GL_SWR_PM_UP_THR) {
- if (I40E_PHY_TYPE_SUPPORT_40G(hw->phy.phy_types) || /* For XL710 */
- I40E_PHY_TYPE_SUPPORT_25G(hw->phy.phy_types)) /* For XXV710 */
- reg_table[i].val =
- I40E_GL_SWR_PM_UP_THR_SF_VALUE;
- else /* For X710 */
- reg_table[i].val =
- I40E_GL_SWR_PM_UP_THR_EF_VALUE;
+ uint32_t cfg_val;
+
+ if (!i40e_get_swr_pm_cfg(hw, &cfg_val)) {
+ PMD_DRV_LOG(DEBUG, "Device 0x%x skips "
+ "GL_SWR_PM_UP_THR value fixup",
+ hw->device_id);
+ continue;
+ }
+
+ reg_table[i].val = cfg_val;
}
ret = i40e_aq_debug_read_register(hw, reg_table[i].addr,
--
2.11.0
next prev parent reply other threads:[~2018-07-27 2:11 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-27 2:08 [dpdk-stable] patch 'net/qede: fix VF MTU update' " Yongseok Koh
2018-07-27 2:08 ` [dpdk-stable] patch 'net/mvpp2: check pointer before using it' " Yongseok Koh
2018-07-27 2:08 ` [dpdk-stable] patch 'net/qede: fix link change event notification' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/bnxt: add missing ids in xstats' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/ena: fix GENMASK_ULL macro' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/nfp: fix field initialization in Tx descriptor' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/bonding: always update bonding link status' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/bonding: fix MAC address reset' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/mlx5: fix crash in device probe' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'eventdev: fix port in Rx adapter internal function' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'eventdev: fix missing update to Rx adaper WRR position' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'eventdev: add event buffer flush in Rx adapter' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'eventdev: fix internal port logic " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'eventdev: fix Rx SW adapter stop' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'bus/dpaa: fix build' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'kni: fix build with gcc 8.1' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/ixgbe: add support for VLAN in IP mode FDIR' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/ixgbe: fix tunnel id format error for " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/ixgbe: fix tunnel type set " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/ixgbe: fix mask bits register " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/i40e: fix shifts of 32-bit value' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'app/testpmd: fix VLAN TCI mask set error for FDIR' " Yongseok Koh
2018-07-27 2:09 ` Yongseok Koh [this message]
2018-07-27 2:09 ` [dpdk-stable] patch 'net/pcap: fix multiple queues' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/thunderx: fix build with gcc optimization on' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/qede: fix legacy interrupt mode' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/qede: remove primary MAC removal' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/ena: fix SIGFPE with 0 Rx queue' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/mlx5: fix Rx buffer replenishment threshold' " Yongseok Koh
2018-07-27 2:09 ` [dpdk-stable] patch 'net/bnxt: fix HW Tx checksum offload check' " Yongseok Koh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180727021019.37388-23-yskoh@mellanox.com \
--to=yskoh@mellanox.com \
--cc=haiyue.wang@intel.com \
--cc=qi.z.zhang@intel.com \
--cc=stable@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).