Merge branch 'net-qed-disable-aRFS-in-NPAR-and-100G'
Igor Russkikh says: ==================== net: qed disable aRFS in NPAR and 100G This patchset fixes some recent issues found by customers. v3: resending on Dmitry's behalf v2: correct hash in Fixes tag ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
9b29e26f79
@ -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",
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user