Netdev Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G
@ 2020-08-19 20:29 Dmitry Bogdanov
2020-08-19 20:29 ` [PATCH net 1/3] net: qed: Disable aRFS for " Dmitry Bogdanov
` (6 more replies)
0 siblings, 7 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-19 20:29 UTC (permalink / raw)
To: netdev, David S . Miller; +Cc: Dmitry Bogdanov
This patchset fixes some recent issues found by customers.
Dmitry Bogdanov (3):
net: qed: Disable aRFS for NPAR and 100G
net: qede: Disable aRFS for NPAR and 100G
qed: RDMA personality shouldn't fail VF load
drivers/net/ethernet/qlogic/qed/qed_dev.c | 11 ++++++++++-
drivers/net/ethernet/qlogic/qed/qed_l2.c | 3 +++
drivers/net/ethernet/qlogic/qed/qed_main.c | 2 ++
drivers/net/ethernet/qlogic/qed/qed_sriov.c | 1 +
drivers/net/ethernet/qlogic/qede/qede_filter.c | 3 +++
drivers/net/ethernet/qlogic/qede/qede_main.c | 11 +++++------
include/linux/qed/qed_if.h | 1 +
7 files changed, 25 insertions(+), 7 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH net 1/3] net: qed: Disable aRFS for NPAR and 100G
2020-08-19 20:29 [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G Dmitry Bogdanov
@ 2020-08-19 20:29 ` Dmitry Bogdanov
2020-08-20 11:08 ` Dmitry Bogdanov
` (3 more replies)
2020-08-19 20:29 ` [PATCH net 2/3] net: qede: " Dmitry Bogdanov
` (5 subsequent siblings)
6 siblings, 4 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-19 20:29 UTC (permalink / raw)
To: netdev, David S . Miller
Cc: Dmitry Bogdanov, Manish Chopra, Igor Russkikh, Michal Kalderon
In CMT and NPAR the PF is unknown when the GFS block processes the
packet. Therefore cannot use searcher as it has a per PF database,
and thus ARFS must be disabled.
Fixes: d51e4af5c209 ("qed: aRFS infrastructure support")
Signed-off-by: Manish Chopra <mchopra@marvell.com>
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
---
drivers/net/ethernet/qlogic/qed/qed_dev.c | 11 ++++++++++-
drivers/net/ethernet/qlogic/qed/qed_l2.c | 3 +++
drivers/net/ethernet/qlogic/qed/qed_main.c | 2 ++
include/linux/qed/qed_if.h | 1 +
4 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev.c b/drivers/net/ethernet/qlogic/qed/qed_dev.c
index b3c9ebaf2280..c78a48ae9ea6 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_dev.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_dev.c
@@ -4253,7 +4253,8 @@ static int qed_hw_get_nvm_info(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
cdev->mf_bits = BIT(QED_MF_LLH_MAC_CLSS) |
BIT(QED_MF_LLH_PROTO_CLSS) |
BIT(QED_MF_LL2_NON_UNICAST) |
- BIT(QED_MF_INTER_PF_SWITCH);
+ BIT(QED_MF_INTER_PF_SWITCH) |
+ BIT(QED_MF_DISABLE_ARFS);
break;
case NVM_CFG1_GLOB_MF_MODE_DEFAULT:
cdev->mf_bits = BIT(QED_MF_LLH_MAC_CLSS) |
@@ -4266,6 +4267,14 @@ static int qed_hw_get_nvm_info(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
DP_INFO(p_hwfn, "Multi function mode is 0x%lx\n",
cdev->mf_bits);
+
+ /* In CMT the PF is unknown when the GFS block processes the
+ * packet. Therefore cannot use searcher as it has a per PF
+ * database, and thus ARFS must be disabled.
+ *
+ */
+ if (QED_IS_CMT(cdev))
+ cdev->mf_bits |= BIT(QED_MF_DISABLE_ARFS);
}
DP_INFO(p_hwfn, "Multi function mode is 0x%lx\n",
diff --git a/drivers/net/ethernet/qlogic/qed/qed_l2.c b/drivers/net/ethernet/qlogic/qed/qed_l2.c
index 4c6ac8862744..07824bf9d68d 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_l2.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_l2.c
@@ -1980,6 +1980,9 @@ void qed_arfs_mode_configure(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
struct qed_arfs_config_params *p_cfg_params)
{
+ if (test_bit(QED_MF_DISABLE_ARFS, &p_hwfn->cdev->mf_bits))
+ return;
+
if (p_cfg_params->mode != QED_FILTER_CONFIG_MODE_DISABLE) {
qed_gft_config(p_hwfn, p_ptt, p_hwfn->rel_pf_id,
p_cfg_params->tcp,
diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c b/drivers/net/ethernet/qlogic/qed/qed_main.c
index 2558cb680db3..309216ff7a84 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_main.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_main.c
@@ -444,6 +444,8 @@ int qed_fill_dev_info(struct qed_dev *cdev,
dev_info->fw_eng = FW_ENGINEERING_VERSION;
dev_info->b_inter_pf_switch = test_bit(QED_MF_INTER_PF_SWITCH,
&cdev->mf_bits);
+ if (!test_bit(QED_MF_DISABLE_ARFS, &cdev->mf_bits))
+ dev_info->b_arfs_capable = true;
dev_info->tx_switching = true;
if (hw_info->b_wol_support == QED_WOL_SUPPORT_PME)
diff --git a/include/linux/qed/qed_if.h b/include/linux/qed/qed_if.h
index cd6a5c7e56eb..cdd73afc4c46 100644
--- a/include/linux/qed/qed_if.h
+++ b/include/linux/qed/qed_if.h
@@ -623,6 +623,7 @@ struct qed_dev_info {
#define QED_MFW_VERSION_3_OFFSET 24
u32 flash_size;
+ bool b_arfs_capable;
bool b_inter_pf_switch;
bool tx_switching;
bool rdma_supported;
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH net 2/3] net: qede: Disable aRFS for NPAR and 100G
2020-08-19 20:29 [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G Dmitry Bogdanov
2020-08-19 20:29 ` [PATCH net 1/3] net: qed: Disable aRFS for " Dmitry Bogdanov
@ 2020-08-19 20:29 ` Dmitry Bogdanov
2020-08-19 22:49 ` David Miller
` (3 more replies)
2020-08-19 20:29 ` [PATCH net 3/3] net: qed: RDMA personality shouldn't fail VF load Dmitry Bogdanov
` (4 subsequent siblings)
6 siblings, 4 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-19 20:29 UTC (permalink / raw)
To: netdev, David S . Miller
Cc: Dmitry Bogdanov, Manish Chopra, Igor Russkikh, Michal Kalderon
In some configurations ARFS cannot be used, so disable it if device
is not capable.
Fixes: e4917d46a65 ("qede: Add aRFS support")
Signed-off-by: Manish Chopra <mchopra@marvell.com>
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
---
drivers/net/ethernet/qlogic/qede/qede_filter.c | 3 +++
drivers/net/ethernet/qlogic/qede/qede_main.c | 11 +++++------
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/qlogic/qede/qede_filter.c b/drivers/net/ethernet/qlogic/qede/qede_filter.c
index f961f65d9372..c59b72c90293 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_filter.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_filter.c
@@ -311,6 +311,9 @@ int qede_alloc_arfs(struct qede_dev *edev)
{
int i;
+ if (!edev->dev_info.common.b_arfs_capable)
+ return -EINVAL;
+
edev->arfs = vzalloc(sizeof(*edev->arfs));
if (!edev->arfs)
return -ENOMEM;
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
index 140a392a81bb..9e1f41ba766c 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -804,7 +804,7 @@ static void qede_init_ndev(struct qede_dev *edev)
NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_HW_TC;
- if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1)
+ if (edev->dev_info.common.b_arfs_capable)
hw_features |= NETIF_F_NTUPLE;
if (edev->dev_info.common.vxlan_enable ||
@@ -2274,7 +2274,7 @@ static void qede_unload(struct qede_dev *edev, enum qede_unload_mode mode,
qede_vlan_mark_nonconfigured(edev);
edev->ops->fastpath_stop(edev->cdev);
- if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1) {
+ if (edev->dev_info.common.b_arfs_capable) {
qede_poll_for_freeing_arfs_filters(edev);
qede_free_arfs(edev);
}
@@ -2341,10 +2341,9 @@ static int qede_load(struct qede_dev *edev, enum qede_load_mode mode,
if (rc)
goto err2;
- if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1) {
- rc = qede_alloc_arfs(edev);
- if (rc)
- DP_NOTICE(edev, "aRFS memory allocation failed\n");
+ if (qede_alloc_arfs(edev)) {
+ edev->ndev->features &= ~NETIF_F_NTUPLE;
+ edev->dev_info.common.b_arfs_capable = false;
}
qede_napi_add_enable(edev);
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH net 3/3] net: qed: RDMA personality shouldn't fail VF load
2020-08-19 20:29 [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G Dmitry Bogdanov
2020-08-19 20:29 ` [PATCH net 1/3] net: qed: Disable aRFS for " Dmitry Bogdanov
2020-08-19 20:29 ` [PATCH net 2/3] net: qede: " Dmitry Bogdanov
@ 2020-08-19 20:29 ` Dmitry Bogdanov
2020-08-20 11:08 ` Dmitry Bogdanov
` (2 more replies)
2020-08-20 11:08 ` [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G Dmitry Bogdanov
` (3 subsequent siblings)
6 siblings, 3 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-19 20:29 UTC (permalink / raw)
To: netdev, David S . Miller; +Cc: Dmitry Bogdanov, Igor Russkikh, Michal Kalderon
Fix the assert during VF driver installation when the personality is iWARP
Fixes: 1fe614d10f45 ("qed: Relax VF firmware requirements")
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
---
drivers/net/ethernet/qlogic/qed/qed_sriov.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_sriov.c b/drivers/net/ethernet/qlogic/qed/qed_sriov.c
index f1f75b6d0421..b8dc5c4591ef 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_sriov.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_sriov.c
@@ -71,6 +71,7 @@ static int qed_sp_vf_start(struct qed_hwfn *p_hwfn, struct qed_vf_info *p_vf)
p_ramrod->personality = PERSONALITY_ETH;
break;
case QED_PCI_ETH_ROCE:
+ case QED_PCI_ETH_IWARP:
p_ramrod->personality = PERSONALITY_RDMA_AND_ETH;
break;
default:
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH net 2/3] net: qede: Disable aRFS for NPAR and 100G
2020-08-19 20:29 ` [PATCH net 2/3] net: qede: " Dmitry Bogdanov
@ 2020-08-19 22:49 ` David Miller
2020-08-20 11:08 ` Dmitry Bogdanov
` (2 subsequent siblings)
3 siblings, 0 replies; 19+ messages in thread
From: David Miller @ 2020-08-19 22:49 UTC (permalink / raw)
To: dbogdanov; +Cc: netdev, mchopra, irusskikh, michal.kalderon
From: Dmitry Bogdanov <dbogdanov@marvell.com>
Date: Wed, 19 Aug 2020 23:29:28 +0300
> Fixes: e4917d46a65 ("qede: Add aRFS support")
This Fixes tag only has 11 digits of SHA1, when you should
provide 12 like the other two patches in this series do.
Thank you.
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G
2020-08-19 20:29 [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G Dmitry Bogdanov
` (2 preceding siblings ...)
2020-08-19 20:29 ` [PATCH net 3/3] net: qed: RDMA personality shouldn't fail VF load Dmitry Bogdanov
@ 2020-08-20 11:08 ` Dmitry Bogdanov
2020-08-21 11:45 ` Dmitry Bogdanov
` (2 subsequent siblings)
6 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-20 11:08 UTC (permalink / raw)
To: netdev, David S . Miller; +Cc: Dmitry Bogdanov
This patchset fixes some recent issues found by customers.
v2:
correct hash in Fixes tag
Dmitry Bogdanov (3):
net: qed: Disable aRFS for NPAR and 100G
net: qede: Disable aRFS for NPAR and 100G
qed: RDMA personality shouldn't fail VF load
drivers/net/ethernet/qlogic/qed/qed_dev.c | 11 ++++++++++-
drivers/net/ethernet/qlogic/qed/qed_l2.c | 3 +++
drivers/net/ethernet/qlogic/qed/qed_main.c | 2 ++
drivers/net/ethernet/qlogic/qed/qed_sriov.c | 1 +
drivers/net/ethernet/qlogic/qede/qede_filter.c | 3 +++
drivers/net/ethernet/qlogic/qede/qede_main.c | 11 +++++------
include/linux/qed/qed_if.h | 1 +
7 files changed, 25 insertions(+), 7 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH net 1/3] net: qed: Disable aRFS for NPAR and 100G
2020-08-19 20:29 ` [PATCH net 1/3] net: qed: Disable aRFS for " Dmitry Bogdanov
@ 2020-08-20 11:08 ` Dmitry Bogdanov
2020-08-21 11:51 ` [PATCH v2, " Dmitry Bogdanov
` (2 subsequent siblings)
3 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-20 11:08 UTC (permalink / raw)
To: netdev, David S . Miller
Cc: Dmitry Bogdanov, Manish Chopra, Igor Russkikh, Michal Kalderon
In CMT and NPAR the PF is unknown when the GFS block processes the
packet. Therefore cannot use searcher as it has a per PF database,
and thus ARFS must be disabled.
Fixes: d51e4af5c209 ("qed: aRFS infrastructure support")
Signed-off-by: Manish Chopra <manishc@marvell.com>
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
---
drivers/net/ethernet/qlogic/qed/qed_dev.c | 11 ++++++++++-
drivers/net/ethernet/qlogic/qed/qed_l2.c | 3 +++
drivers/net/ethernet/qlogic/qed/qed_main.c | 2 ++
include/linux/qed/qed_if.h | 1 +
4 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev.c b/drivers/net/ethernet/qlogic/qed/qed_dev.c
index b3c9ebaf2280..c78a48ae9ea6 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_dev.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_dev.c
@@ -4253,7 +4253,8 @@ static int qed_hw_get_nvm_info(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
cdev->mf_bits = BIT(QED_MF_LLH_MAC_CLSS) |
BIT(QED_MF_LLH_PROTO_CLSS) |
BIT(QED_MF_LL2_NON_UNICAST) |
- BIT(QED_MF_INTER_PF_SWITCH);
+ BIT(QED_MF_INTER_PF_SWITCH) |
+ BIT(QED_MF_DISABLE_ARFS);
break;
case NVM_CFG1_GLOB_MF_MODE_DEFAULT:
cdev->mf_bits = BIT(QED_MF_LLH_MAC_CLSS) |
@@ -4266,6 +4267,14 @@ static int qed_hw_get_nvm_info(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
DP_INFO(p_hwfn, "Multi function mode is 0x%lx\n",
cdev->mf_bits);
+
+ /* In CMT the PF is unknown when the GFS block processes the
+ * packet. Therefore cannot use searcher as it has a per PF
+ * database, and thus ARFS must be disabled.
+ *
+ */
+ if (QED_IS_CMT(cdev))
+ cdev->mf_bits |= BIT(QED_MF_DISABLE_ARFS);
}
DP_INFO(p_hwfn, "Multi function mode is 0x%lx\n",
diff --git a/drivers/net/ethernet/qlogic/qed/qed_l2.c b/drivers/net/ethernet/qlogic/qed/qed_l2.c
index 4c6ac8862744..07824bf9d68d 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_l2.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_l2.c
@@ -1980,6 +1980,9 @@ void qed_arfs_mode_configure(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
struct qed_arfs_config_params *p_cfg_params)
{
+ if (test_bit(QED_MF_DISABLE_ARFS, &p_hwfn->cdev->mf_bits))
+ return;
+
if (p_cfg_params->mode != QED_FILTER_CONFIG_MODE_DISABLE) {
qed_gft_config(p_hwfn, p_ptt, p_hwfn->rel_pf_id,
p_cfg_params->tcp,
diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c b/drivers/net/ethernet/qlogic/qed/qed_main.c
index 2558cb680db3..309216ff7a84 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_main.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_main.c
@@ -444,6 +444,8 @@ int qed_fill_dev_info(struct qed_dev *cdev,
dev_info->fw_eng = FW_ENGINEERING_VERSION;
dev_info->b_inter_pf_switch = test_bit(QED_MF_INTER_PF_SWITCH,
&cdev->mf_bits);
+ if (!test_bit(QED_MF_DISABLE_ARFS, &cdev->mf_bits))
+ dev_info->b_arfs_capable = true;
dev_info->tx_switching = true;
if (hw_info->b_wol_support == QED_WOL_SUPPORT_PME)
diff --git a/include/linux/qed/qed_if.h b/include/linux/qed/qed_if.h
index cd6a5c7e56eb..cdd73afc4c46 100644
--- a/include/linux/qed/qed_if.h
+++ b/include/linux/qed/qed_if.h
@@ -623,6 +623,7 @@ struct qed_dev_info {
#define QED_MFW_VERSION_3_OFFSET 24
u32 flash_size;
+ bool b_arfs_capable;
bool b_inter_pf_switch;
bool tx_switching;
bool rdma_supported;
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH net 2/3] net: qede: Disable aRFS for NPAR and 100G
2020-08-19 20:29 ` [PATCH net 2/3] net: qede: " Dmitry Bogdanov
2020-08-19 22:49 ` David Miller
@ 2020-08-20 11:08 ` Dmitry Bogdanov
2020-08-21 11:51 ` [PATCH v2, " Dmitry Bogdanov
2020-08-31 9:43 ` [PATCH v2 " Dmitry Bogdanov
3 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-20 11:08 UTC (permalink / raw)
To: netdev, David S . Miller
Cc: Dmitry Bogdanov, Manish Chopra, Igor Russkikh, Michal Kalderon
In some configurations ARFS cannot be used, so disable it if device
is not capable.
Fixes: e4917d46a653 ("qede: Add aRFS support")
Signed-off-by: Manish Chopra <manishc@marvell.com>
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
---
drivers/net/ethernet/qlogic/qede/qede_filter.c | 3 +++
drivers/net/ethernet/qlogic/qede/qede_main.c | 11 +++++------
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/qlogic/qede/qede_filter.c b/drivers/net/ethernet/qlogic/qede/qede_filter.c
index f961f65d9372..c59b72c90293 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_filter.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_filter.c
@@ -311,6 +311,9 @@ int qede_alloc_arfs(struct qede_dev *edev)
{
int i;
+ if (!edev->dev_info.common.b_arfs_capable)
+ return -EINVAL;
+
edev->arfs = vzalloc(sizeof(*edev->arfs));
if (!edev->arfs)
return -ENOMEM;
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
index 140a392a81bb..9e1f41ba766c 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -804,7 +804,7 @@ static void qede_init_ndev(struct qede_dev *edev)
NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_HW_TC;
- if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1)
+ if (edev->dev_info.common.b_arfs_capable)
hw_features |= NETIF_F_NTUPLE;
if (edev->dev_info.common.vxlan_enable ||
@@ -2274,7 +2274,7 @@ static void qede_unload(struct qede_dev *edev, enum qede_unload_mode mode,
qede_vlan_mark_nonconfigured(edev);
edev->ops->fastpath_stop(edev->cdev);
- if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1) {
+ if (edev->dev_info.common.b_arfs_capable) {
qede_poll_for_freeing_arfs_filters(edev);
qede_free_arfs(edev);
}
@@ -2341,10 +2341,9 @@ static int qede_load(struct qede_dev *edev, enum qede_load_mode mode,
if (rc)
goto err2;
- if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1) {
- rc = qede_alloc_arfs(edev);
- if (rc)
- DP_NOTICE(edev, "aRFS memory allocation failed\n");
+ if (qede_alloc_arfs(edev)) {
+ edev->ndev->features &= ~NETIF_F_NTUPLE;
+ edev->dev_info.common.b_arfs_capable = false;
}
qede_napi_add_enable(edev);
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH net 3/3] net: qed: RDMA personality shouldn't fail VF load
2020-08-19 20:29 ` [PATCH net 3/3] net: qed: RDMA personality shouldn't fail VF load Dmitry Bogdanov
@ 2020-08-20 11:08 ` Dmitry Bogdanov
2020-08-21 11:51 ` [PATCH v2, " Dmitry Bogdanov
2020-08-31 9:43 ` [PATCH v2 " Dmitry Bogdanov
2 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-20 11:08 UTC (permalink / raw)
To: netdev, David S . Miller; +Cc: Dmitry Bogdanov, Igor Russkikh, Michal Kalderon
Fix the assert during VF driver installation when the personality is iWARP
Fixes: 1fe614d10f45 ("qed: Relax VF firmware requirements")
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
---
drivers/net/ethernet/qlogic/qed/qed_sriov.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_sriov.c b/drivers/net/ethernet/qlogic/qed/qed_sriov.c
index f1f75b6d0421..b8dc5c4591ef 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_sriov.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_sriov.c
@@ -71,6 +71,7 @@ static int qed_sp_vf_start(struct qed_hwfn *p_hwfn, struct qed_vf_info *p_vf)
p_ramrod->personality = PERSONALITY_ETH;
break;
case QED_PCI_ETH_ROCE:
+ case QED_PCI_ETH_IWARP:
p_ramrod->personality = PERSONALITY_RDMA_AND_ETH;
break;
default:
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* RE: [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G
2020-08-19 20:29 [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G Dmitry Bogdanov
` (3 preceding siblings ...)
2020-08-20 11:08 ` [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G Dmitry Bogdanov
@ 2020-08-21 11:45 ` Dmitry Bogdanov
2020-08-21 11:51 ` [PATCH v2, " Dmitry Bogdanov
2020-08-31 9:43 ` [PATCH v2 " Dmitry Bogdanov
6 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-21 11:45 UTC (permalink / raw)
To: netdev, David S . Miller
Forgot to indicate "v2" in the subject, please ignore it then.
Will resend with v2 in the subject.
-----Original Message-----
From: Dmitry Bogdanov <dbogdanov@marvell.com>
Sent: Thursday, August 20, 2020 2:08 PM
To: netdev@vger.kernel.org; David S . Miller <davem@davemloft.net>
Cc: Dmitry Bogdanov <dbogdanov@marvell.com>
Subject: [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G
This patchset fixes some recent issues found by customers.
v2:
correct hash in Fixes tag
Dmitry Bogdanov (3):
net: qed: Disable aRFS for NPAR and 100G
net: qede: Disable aRFS for NPAR and 100G
qed: RDMA personality shouldn't fail VF load
drivers/net/ethernet/qlogic/qed/qed_dev.c | 11 ++++++++++-
drivers/net/ethernet/qlogic/qed/qed_l2.c | 3 +++
drivers/net/ethernet/qlogic/qed/qed_main.c | 2 ++
drivers/net/ethernet/qlogic/qed/qed_sriov.c | 1 +
drivers/net/ethernet/qlogic/qede/qede_filter.c | 3 +++
drivers/net/ethernet/qlogic/qede/qede_main.c | 11 +++++------
include/linux/qed/qed_if.h | 1 +
7 files changed, 25 insertions(+), 7 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2, net 0/3] net: qed disable aRFS in NPAR and 100G
2020-08-19 20:29 [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G Dmitry Bogdanov
` (4 preceding siblings ...)
2020-08-21 11:45 ` Dmitry Bogdanov
@ 2020-08-21 11:51 ` Dmitry Bogdanov
2020-08-31 9:43 ` [PATCH v2 " Dmitry Bogdanov
6 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-21 11:51 UTC (permalink / raw)
To: netdev, David S . Miller; +Cc: Dmitry Bogdanov
This patchset fixes some recent issues found by customers.
v2:
correct hash in Fixes tag
Dmitry Bogdanov (3):
net: qed: Disable aRFS for NPAR and 100G
net: qede: Disable aRFS for NPAR and 100G
qed: RDMA personality shouldn't fail VF load
drivers/net/ethernet/qlogic/qed/qed_dev.c | 11 ++++++++++-
drivers/net/ethernet/qlogic/qed/qed_l2.c | 3 +++
drivers/net/ethernet/qlogic/qed/qed_main.c | 2 ++
drivers/net/ethernet/qlogic/qed/qed_sriov.c | 1 +
drivers/net/ethernet/qlogic/qede/qede_filter.c | 3 +++
drivers/net/ethernet/qlogic/qede/qede_main.c | 11 +++++------
include/linux/qed/qed_if.h | 1 +
7 files changed, 25 insertions(+), 7 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2, net 1/3] net: qed: Disable aRFS for NPAR and 100G
2020-08-19 20:29 ` [PATCH net 1/3] net: qed: Disable aRFS for " Dmitry Bogdanov
2020-08-20 11:08 ` Dmitry Bogdanov
@ 2020-08-21 11:51 ` Dmitry Bogdanov
2020-08-31 9:43 ` [PATCH v2 " Dmitry Bogdanov
2020-09-01 15:29 ` Igor Russkikh
3 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-21 11:51 UTC (permalink / raw)
To: netdev, David S . Miller
Cc: Dmitry Bogdanov, Manish Chopra, Igor Russkikh, Michal Kalderon
In CMT and NPAR the PF is unknown when the GFS block processes the
packet. Therefore cannot use searcher as it has a per PF database,
and thus ARFS must be disabled.
Fixes: d51e4af5c209 ("qed: aRFS infrastructure support")
Signed-off-by: Manish Chopra <manishc@marvell.com>
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
---
drivers/net/ethernet/qlogic/qed/qed_dev.c | 11 ++++++++++-
drivers/net/ethernet/qlogic/qed/qed_l2.c | 3 +++
drivers/net/ethernet/qlogic/qed/qed_main.c | 2 ++
include/linux/qed/qed_if.h | 1 +
4 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev.c b/drivers/net/ethernet/qlogic/qed/qed_dev.c
index b3c9ebaf2280..c78a48ae9ea6 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_dev.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_dev.c
@@ -4253,7 +4253,8 @@ static int qed_hw_get_nvm_info(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
cdev->mf_bits = BIT(QED_MF_LLH_MAC_CLSS) |
BIT(QED_MF_LLH_PROTO_CLSS) |
BIT(QED_MF_LL2_NON_UNICAST) |
- BIT(QED_MF_INTER_PF_SWITCH);
+ BIT(QED_MF_INTER_PF_SWITCH) |
+ BIT(QED_MF_DISABLE_ARFS);
break;
case NVM_CFG1_GLOB_MF_MODE_DEFAULT:
cdev->mf_bits = BIT(QED_MF_LLH_MAC_CLSS) |
@@ -4266,6 +4267,14 @@ static int qed_hw_get_nvm_info(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
DP_INFO(p_hwfn, "Multi function mode is 0x%lx\n",
cdev->mf_bits);
+
+ /* In CMT the PF is unknown when the GFS block processes the
+ * packet. Therefore cannot use searcher as it has a per PF
+ * database, and thus ARFS must be disabled.
+ *
+ */
+ if (QED_IS_CMT(cdev))
+ cdev->mf_bits |= BIT(QED_MF_DISABLE_ARFS);
}
DP_INFO(p_hwfn, "Multi function mode is 0x%lx\n",
diff --git a/drivers/net/ethernet/qlogic/qed/qed_l2.c b/drivers/net/ethernet/qlogic/qed/qed_l2.c
index 4c6ac8862744..07824bf9d68d 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_l2.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_l2.c
@@ -1980,6 +1980,9 @@ void qed_arfs_mode_configure(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
struct qed_arfs_config_params *p_cfg_params)
{
+ if (test_bit(QED_MF_DISABLE_ARFS, &p_hwfn->cdev->mf_bits))
+ return;
+
if (p_cfg_params->mode != QED_FILTER_CONFIG_MODE_DISABLE) {
qed_gft_config(p_hwfn, p_ptt, p_hwfn->rel_pf_id,
p_cfg_params->tcp,
diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c b/drivers/net/ethernet/qlogic/qed/qed_main.c
index 2558cb680db3..309216ff7a84 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_main.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_main.c
@@ -444,6 +444,8 @@ int qed_fill_dev_info(struct qed_dev *cdev,
dev_info->fw_eng = FW_ENGINEERING_VERSION;
dev_info->b_inter_pf_switch = test_bit(QED_MF_INTER_PF_SWITCH,
&cdev->mf_bits);
+ if (!test_bit(QED_MF_DISABLE_ARFS, &cdev->mf_bits))
+ dev_info->b_arfs_capable = true;
dev_info->tx_switching = true;
if (hw_info->b_wol_support == QED_WOL_SUPPORT_PME)
diff --git a/include/linux/qed/qed_if.h b/include/linux/qed/qed_if.h
index cd6a5c7e56eb..cdd73afc4c46 100644
--- a/include/linux/qed/qed_if.h
+++ b/include/linux/qed/qed_if.h
@@ -623,6 +623,7 @@ struct qed_dev_info {
#define QED_MFW_VERSION_3_OFFSET 24
u32 flash_size;
+ bool b_arfs_capable;
bool b_inter_pf_switch;
bool tx_switching;
bool rdma_supported;
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2, net 2/3] net: qede: Disable aRFS for NPAR and 100G
2020-08-19 20:29 ` [PATCH net 2/3] net: qede: " Dmitry Bogdanov
2020-08-19 22:49 ` David Miller
2020-08-20 11:08 ` Dmitry Bogdanov
@ 2020-08-21 11:51 ` Dmitry Bogdanov
2020-08-31 9:43 ` [PATCH v2 " Dmitry Bogdanov
3 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-21 11:51 UTC (permalink / raw)
To: netdev, David S . Miller
Cc: Dmitry Bogdanov, Manish Chopra, Igor Russkikh, Michal Kalderon
In some configurations ARFS cannot be used, so disable it if device
is not capable.
Fixes: e4917d46a653 ("qede: Add aRFS support")
Signed-off-by: Manish Chopra <manishc@marvell.com>
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
---
drivers/net/ethernet/qlogic/qede/qede_filter.c | 3 +++
drivers/net/ethernet/qlogic/qede/qede_main.c | 11 +++++------
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/qlogic/qede/qede_filter.c b/drivers/net/ethernet/qlogic/qede/qede_filter.c
index f961f65d9372..c59b72c90293 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_filter.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_filter.c
@@ -311,6 +311,9 @@ int qede_alloc_arfs(struct qede_dev *edev)
{
int i;
+ if (!edev->dev_info.common.b_arfs_capable)
+ return -EINVAL;
+
edev->arfs = vzalloc(sizeof(*edev->arfs));
if (!edev->arfs)
return -ENOMEM;
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
index 140a392a81bb..9e1f41ba766c 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -804,7 +804,7 @@ static void qede_init_ndev(struct qede_dev *edev)
NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_HW_TC;
- if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1)
+ if (edev->dev_info.common.b_arfs_capable)
hw_features |= NETIF_F_NTUPLE;
if (edev->dev_info.common.vxlan_enable ||
@@ -2274,7 +2274,7 @@ static void qede_unload(struct qede_dev *edev, enum qede_unload_mode mode,
qede_vlan_mark_nonconfigured(edev);
edev->ops->fastpath_stop(edev->cdev);
- if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1) {
+ if (edev->dev_info.common.b_arfs_capable) {
qede_poll_for_freeing_arfs_filters(edev);
qede_free_arfs(edev);
}
@@ -2341,10 +2341,9 @@ static int qede_load(struct qede_dev *edev, enum qede_load_mode mode,
if (rc)
goto err2;
- if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1) {
- rc = qede_alloc_arfs(edev);
- if (rc)
- DP_NOTICE(edev, "aRFS memory allocation failed\n");
+ if (qede_alloc_arfs(edev)) {
+ edev->ndev->features &= ~NETIF_F_NTUPLE;
+ edev->dev_info.common.b_arfs_capable = false;
}
qede_napi_add_enable(edev);
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2, net 3/3] net: qed: RDMA personality shouldn't fail VF load
2020-08-19 20:29 ` [PATCH net 3/3] net: qed: RDMA personality shouldn't fail VF load Dmitry Bogdanov
2020-08-20 11:08 ` Dmitry Bogdanov
@ 2020-08-21 11:51 ` Dmitry Bogdanov
2020-08-31 9:43 ` [PATCH v2 " Dmitry Bogdanov
2 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-21 11:51 UTC (permalink / raw)
To: netdev, David S . Miller; +Cc: Dmitry Bogdanov, Igor Russkikh, Michal Kalderon
Fix the assert during VF driver installation when the personality is iWARP
Fixes: 1fe614d10f45 ("qed: Relax VF firmware requirements")
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
---
drivers/net/ethernet/qlogic/qed/qed_sriov.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_sriov.c b/drivers/net/ethernet/qlogic/qed/qed_sriov.c
index f1f75b6d0421..b8dc5c4591ef 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_sriov.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_sriov.c
@@ -71,6 +71,7 @@ static int qed_sp_vf_start(struct qed_hwfn *p_hwfn, struct qed_vf_info *p_vf)
p_ramrod->personality = PERSONALITY_ETH;
break;
case QED_PCI_ETH_ROCE:
+ case QED_PCI_ETH_IWARP:
p_ramrod->personality = PERSONALITY_RDMA_AND_ETH;
break;
default:
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 net 0/3] net: qed disable aRFS in NPAR and 100G
2020-08-19 20:29 [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G Dmitry Bogdanov
` (5 preceding siblings ...)
2020-08-21 11:51 ` [PATCH v2, " Dmitry Bogdanov
@ 2020-08-31 9:43 ` Dmitry Bogdanov
6 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-31 9:43 UTC (permalink / raw)
To: netdev, David S . Miller; +Cc: Dmitry Bogdanov
This patchset fixes some recent issues found by customers.
v2:
correct hash in Fixes tag
Dmitry Bogdanov (3):
net: qed: Disable aRFS for NPAR and 100G
net: qede: Disable aRFS for NPAR and 100G
qed: RDMA personality shouldn't fail VF load
drivers/net/ethernet/qlogic/qed/qed_dev.c | 11 ++++++++++-
drivers/net/ethernet/qlogic/qed/qed_l2.c | 3 +++
drivers/net/ethernet/qlogic/qed/qed_main.c | 2 ++
drivers/net/ethernet/qlogic/qed/qed_sriov.c | 1 +
drivers/net/ethernet/qlogic/qede/qede_filter.c | 3 +++
drivers/net/ethernet/qlogic/qede/qede_main.c | 11 +++++------
include/linux/qed/qed_if.h | 1 +
7 files changed, 25 insertions(+), 7 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 net 1/3] net: qed: Disable aRFS for NPAR and 100G
2020-08-19 20:29 ` [PATCH net 1/3] net: qed: Disable aRFS for " Dmitry Bogdanov
2020-08-20 11:08 ` Dmitry Bogdanov
2020-08-21 11:51 ` [PATCH v2, " Dmitry Bogdanov
@ 2020-08-31 9:43 ` Dmitry Bogdanov
2020-09-01 15:29 ` Igor Russkikh
3 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-31 9:43 UTC (permalink / raw)
To: netdev, David S . Miller
Cc: Dmitry Bogdanov, Manish Chopra, Igor Russkikh, Michal Kalderon
In CMT and NPAR the PF is unknown when the GFS block processes the
packet. Therefore cannot use searcher as it has a per PF database,
and thus ARFS must be disabled.
Fixes: d51e4af5c209 ("qed: aRFS infrastructure support")
Signed-off-by: Manish Chopra <manishc@marvell.com>
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
---
drivers/net/ethernet/qlogic/qed/qed_dev.c | 11 ++++++++++-
drivers/net/ethernet/qlogic/qed/qed_l2.c | 3 +++
drivers/net/ethernet/qlogic/qed/qed_main.c | 2 ++
include/linux/qed/qed_if.h | 1 +
4 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev.c b/drivers/net/ethernet/qlogic/qed/qed_dev.c
index b3c9ebaf2280..c78a48ae9ea6 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_dev.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_dev.c
@@ -4253,7 +4253,8 @@ static int qed_hw_get_nvm_info(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
cdev->mf_bits = BIT(QED_MF_LLH_MAC_CLSS) |
BIT(QED_MF_LLH_PROTO_CLSS) |
BIT(QED_MF_LL2_NON_UNICAST) |
- BIT(QED_MF_INTER_PF_SWITCH);
+ BIT(QED_MF_INTER_PF_SWITCH) |
+ BIT(QED_MF_DISABLE_ARFS);
break;
case NVM_CFG1_GLOB_MF_MODE_DEFAULT:
cdev->mf_bits = BIT(QED_MF_LLH_MAC_CLSS) |
@@ -4266,6 +4267,14 @@ static int qed_hw_get_nvm_info(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
DP_INFO(p_hwfn, "Multi function mode is 0x%lx\n",
cdev->mf_bits);
+
+ /* In CMT the PF is unknown when the GFS block processes the
+ * packet. Therefore cannot use searcher as it has a per PF
+ * database, and thus ARFS must be disabled.
+ *
+ */
+ if (QED_IS_CMT(cdev))
+ cdev->mf_bits |= BIT(QED_MF_DISABLE_ARFS);
}
DP_INFO(p_hwfn, "Multi function mode is 0x%lx\n",
diff --git a/drivers/net/ethernet/qlogic/qed/qed_l2.c b/drivers/net/ethernet/qlogic/qed/qed_l2.c
index 4c6ac8862744..07824bf9d68d 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_l2.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_l2.c
@@ -1980,6 +1980,9 @@ void qed_arfs_mode_configure(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
struct qed_arfs_config_params *p_cfg_params)
{
+ if (test_bit(QED_MF_DISABLE_ARFS, &p_hwfn->cdev->mf_bits))
+ return;
+
if (p_cfg_params->mode != QED_FILTER_CONFIG_MODE_DISABLE) {
qed_gft_config(p_hwfn, p_ptt, p_hwfn->rel_pf_id,
p_cfg_params->tcp,
diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c b/drivers/net/ethernet/qlogic/qed/qed_main.c
index 2558cb680db3..309216ff7a84 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_main.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_main.c
@@ -444,6 +444,8 @@ int qed_fill_dev_info(struct qed_dev *cdev,
dev_info->fw_eng = FW_ENGINEERING_VERSION;
dev_info->b_inter_pf_switch = test_bit(QED_MF_INTER_PF_SWITCH,
&cdev->mf_bits);
+ if (!test_bit(QED_MF_DISABLE_ARFS, &cdev->mf_bits))
+ dev_info->b_arfs_capable = true;
dev_info->tx_switching = true;
if (hw_info->b_wol_support == QED_WOL_SUPPORT_PME)
diff --git a/include/linux/qed/qed_if.h b/include/linux/qed/qed_if.h
index cd6a5c7e56eb..cdd73afc4c46 100644
--- a/include/linux/qed/qed_if.h
+++ b/include/linux/qed/qed_if.h
@@ -623,6 +623,7 @@ struct qed_dev_info {
#define QED_MFW_VERSION_3_OFFSET 24
u32 flash_size;
+ bool b_arfs_capable;
bool b_inter_pf_switch;
bool tx_switching;
bool rdma_supported;
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 net 2/3] net: qede: Disable aRFS for NPAR and 100G
2020-08-19 20:29 ` [PATCH net 2/3] net: qede: " Dmitry Bogdanov
` (2 preceding siblings ...)
2020-08-21 11:51 ` [PATCH v2, " Dmitry Bogdanov
@ 2020-08-31 9:43 ` Dmitry Bogdanov
3 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-31 9:43 UTC (permalink / raw)
To: netdev, David S . Miller
Cc: Dmitry Bogdanov, Manish Chopra, Igor Russkikh, Michal Kalderon
In some configurations ARFS cannot be used, so disable it if device
is not capable.
Fixes: e4917d46a653 ("qede: Add aRFS support")
Signed-off-by: Manish Chopra <manishc@marvell.com>
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
---
drivers/net/ethernet/qlogic/qede/qede_filter.c | 3 +++
drivers/net/ethernet/qlogic/qede/qede_main.c | 11 +++++------
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/qlogic/qede/qede_filter.c b/drivers/net/ethernet/qlogic/qede/qede_filter.c
index f961f65d9372..c59b72c90293 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_filter.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_filter.c
@@ -311,6 +311,9 @@ int qede_alloc_arfs(struct qede_dev *edev)
{
int i;
+ if (!edev->dev_info.common.b_arfs_capable)
+ return -EINVAL;
+
edev->arfs = vzalloc(sizeof(*edev->arfs));
if (!edev->arfs)
return -ENOMEM;
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
index 140a392a81bb..9e1f41ba766c 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -804,7 +804,7 @@ static void qede_init_ndev(struct qede_dev *edev)
NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_HW_TC;
- if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1)
+ if (edev->dev_info.common.b_arfs_capable)
hw_features |= NETIF_F_NTUPLE;
if (edev->dev_info.common.vxlan_enable ||
@@ -2274,7 +2274,7 @@ static void qede_unload(struct qede_dev *edev, enum qede_unload_mode mode,
qede_vlan_mark_nonconfigured(edev);
edev->ops->fastpath_stop(edev->cdev);
- if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1) {
+ if (edev->dev_info.common.b_arfs_capable) {
qede_poll_for_freeing_arfs_filters(edev);
qede_free_arfs(edev);
}
@@ -2341,10 +2341,9 @@ static int qede_load(struct qede_dev *edev, enum qede_load_mode mode,
if (rc)
goto err2;
- if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1) {
- rc = qede_alloc_arfs(edev);
- if (rc)
- DP_NOTICE(edev, "aRFS memory allocation failed\n");
+ if (qede_alloc_arfs(edev)) {
+ edev->ndev->features &= ~NETIF_F_NTUPLE;
+ edev->dev_info.common.b_arfs_capable = false;
}
qede_napi_add_enable(edev);
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 net 3/3] net: qed: RDMA personality shouldn't fail VF load
2020-08-19 20:29 ` [PATCH net 3/3] net: qed: RDMA personality shouldn't fail VF load Dmitry Bogdanov
2020-08-20 11:08 ` Dmitry Bogdanov
2020-08-21 11:51 ` [PATCH v2, " Dmitry Bogdanov
@ 2020-08-31 9:43 ` Dmitry Bogdanov
2 siblings, 0 replies; 19+ messages in thread
From: Dmitry Bogdanov @ 2020-08-31 9:43 UTC (permalink / raw)
To: netdev, David S . Miller; +Cc: Dmitry Bogdanov, Igor Russkikh, Michal Kalderon
Fix the assert during VF driver installation when the personality is iWARP
Fixes: 1fe614d10f45 ("qed: Relax VF firmware requirements")
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
---
drivers/net/ethernet/qlogic/qed/qed_sriov.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_sriov.c b/drivers/net/ethernet/qlogic/qed/qed_sriov.c
index f1f75b6d0421..b8dc5c4591ef 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_sriov.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_sriov.c
@@ -71,6 +71,7 @@ static int qed_sp_vf_start(struct qed_hwfn *p_hwfn, struct qed_vf_info *p_vf)
p_ramrod->personality = PERSONALITY_ETH;
break;
case QED_PCI_ETH_ROCE:
+ case QED_PCI_ETH_IWARP:
p_ramrod->personality = PERSONALITY_RDMA_AND_ETH;
break;
default:
--
2.17.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 net 1/3] net: qed: Disable aRFS for NPAR and 100G
2020-08-19 20:29 ` [PATCH net 1/3] net: qed: Disable aRFS for " Dmitry Bogdanov
` (2 preceding siblings ...)
2020-08-31 9:43 ` [PATCH v2 " Dmitry Bogdanov
@ 2020-09-01 15:29 ` Igor Russkikh
3 siblings, 0 replies; 19+ messages in thread
From: Igor Russkikh @ 2020-09-01 15:29 UTC (permalink / raw)
To: Dmitry Bogdanov, netdev, David S . Miller; +Cc: Manish Chopra, Michal Kalderon
Hi David,
Strangely I don't see this series from Dmitry on patchwork, but emails seems
reached the list correctly:
https://lore.kernel.org/netdev/20200831094326.0mIWCNw1jJrHOif9nW17zot9j5BvO_ZP0orBrhmv6KE@z/
Could you please help with that?
Thanks,
Igor
On 31/08/2020 12:43 pm, Dmitry Bogdanov wrote:
> In CMT and NPAR the PF is unknown when the GFS block processes the
> packet. Therefore cannot use searcher as it has a per PF database,
> and thus ARFS must be disabled.
>
> Fixes: d51e4af5c209 ("qed: aRFS infrastructure support")
> Signed-off-by: Manish Chopra <manishc@marvell.com>
> Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
> Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
> Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
> ---
> drivers/net/ethernet/qlogic/qed/qed_dev.c | 11 ++++++++++-
> drivers/net/ethernet/qlogic/qed/qed_l2.c | 3 +++
> drivers/net/ethernet/qlogic/qed/qed_main.c | 2 ++
> include/linux/qed/qed_if.h | 1 +
> 4 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev.c
> b/drivers/net/ethernet/qlogic/qed/qed_dev.c
> index b3c9ebaf2280..c78a48ae9ea6 100644
> --- a/drivers/net/ethernet/qlogic/qed/qed_dev.c
> +++ b/drivers/net/ethernet/qlogic/qed/qed_dev.c
> @@ -4253,7 +4253,8 @@ static int qed_hw_get_nvm_info(struct qed_hwfn
> *p_hwfn, struct qed_ptt *p_ptt)
> cdev->mf_bits = BIT(QED_MF_LLH_MAC_CLSS) |
> BIT(QED_MF_LLH_PROTO_CLSS) |
> BIT(QED_MF_LL2_NON_UNICAST) |
> - BIT(QED_MF_INTER_PF_SWITCH);
> + BIT(QED_MF_INTER_PF_SWITCH) |
> + BIT(QED_MF_DISABLE_ARFS);
> break;
> case NVM_CFG1_GLOB_MF_MODE_DEFAULT:
> cdev->mf_bits = BIT(QED_MF_LLH_MAC_CLSS) |
> @@ -4266,6 +4267,14 @@ static int qed_hw_get_nvm_info(struct qed_hwfn
> *p_hwfn, struct qed_ptt *p_ptt)
>
> DP_INFO(p_hwfn, "Multi function mode is 0x%lx\n",
> cdev->mf_bits);
> +
> + /* In CMT the PF is unknown when the GFS block processes
> the
> + * packet. Therefore cannot use searcher as it has a per
> PF
> + * database, and thus ARFS must be disabled.
> + *
> + */
> + if (QED_IS_CMT(cdev))
> + cdev->mf_bits |= BIT(QED_MF_DISABLE_ARFS);
> }
>
> DP_INFO(p_hwfn, "Multi function mode is 0x%lx\n",
> diff --git a/drivers/net/ethernet/qlogic/qed/qed_l2.c
> b/drivers/net/ethernet/qlogic/qed/qed_l2.c
> index 4c6ac8862744..07824bf9d68d 100644
> --- a/drivers/net/ethernet/qlogic/qed/qed_l2.c
> +++ b/drivers/net/ethernet/qlogic/qed/qed_l2.c
> @@ -1980,6 +1980,9 @@ void qed_arfs_mode_configure(struct qed_hwfn
> *p_hwfn,
> struct qed_ptt *p_ptt,
> struct qed_arfs_config_params *p_cfg_params)
> {
> + if (test_bit(QED_MF_DISABLE_ARFS, &p_hwfn->cdev->mf_bits))
> + return;
> +
> if (p_cfg_params->mode != QED_FILTER_CONFIG_MODE_DISABLE) {
> qed_gft_config(p_hwfn, p_ptt, p_hwfn->rel_pf_id,
> p_cfg_params->tcp,
> diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c
> b/drivers/net/ethernet/qlogic/qed/qed_main.c
> index 2558cb680db3..309216ff7a84 100644
> --- a/drivers/net/ethernet/qlogic/qed/qed_main.c
> +++ b/drivers/net/ethernet/qlogic/qed/qed_main.c
> @@ -444,6 +444,8 @@ int qed_fill_dev_info(struct qed_dev *cdev,
> dev_info->fw_eng = FW_ENGINEERING_VERSION;
> dev_info->b_inter_pf_switch =
> test_bit(QED_MF_INTER_PF_SWITCH,
> &cdev->mf_bits);
> + if (!test_bit(QED_MF_DISABLE_ARFS, &cdev->mf_bits))
> + dev_info->b_arfs_capable = true;
> dev_info->tx_switching = true;
>
> if (hw_info->b_wol_support == QED_WOL_SUPPORT_PME)
> diff --git a/include/linux/qed/qed_if.h b/include/linux/qed/qed_if.h
> index cd6a5c7e56eb..cdd73afc4c46 100644
> --- a/include/linux/qed/qed_if.h
> +++ b/include/linux/qed/qed_if.h
> @@ -623,6 +623,7 @@ struct qed_dev_info {
> #define QED_MFW_VERSION_3_OFFSET 24
>
> u32 flash_size;
> + bool b_arfs_capable;
> bool b_inter_pf_switch;
> bool tx_switching;
> bool rdma_supported;
>
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2020-09-01 16:37 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-19 20:29 [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G Dmitry Bogdanov
2020-08-19 20:29 ` [PATCH net 1/3] net: qed: Disable aRFS for " Dmitry Bogdanov
2020-08-20 11:08 ` Dmitry Bogdanov
2020-08-21 11:51 ` [PATCH v2, " Dmitry Bogdanov
2020-08-31 9:43 ` [PATCH v2 " Dmitry Bogdanov
2020-09-01 15:29 ` Igor Russkikh
2020-08-19 20:29 ` [PATCH net 2/3] net: qede: " Dmitry Bogdanov
2020-08-19 22:49 ` David Miller
2020-08-20 11:08 ` Dmitry Bogdanov
2020-08-21 11:51 ` [PATCH v2, " Dmitry Bogdanov
2020-08-31 9:43 ` [PATCH v2 " Dmitry Bogdanov
2020-08-19 20:29 ` [PATCH net 3/3] net: qed: RDMA personality shouldn't fail VF load Dmitry Bogdanov
2020-08-20 11:08 ` Dmitry Bogdanov
2020-08-21 11:51 ` [PATCH v2, " Dmitry Bogdanov
2020-08-31 9:43 ` [PATCH v2 " Dmitry Bogdanov
2020-08-20 11:08 ` [PATCH net 0/3] net: qed disable aRFS in NPAR and 100G Dmitry Bogdanov
2020-08-21 11:45 ` Dmitry Bogdanov
2020-08-21 11:51 ` [PATCH v2, " Dmitry Bogdanov
2020-08-31 9:43 ` [PATCH v2 " Dmitry Bogdanov
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).