|
Thomas Bogendoerfer |
a805d8 |
From: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
|
|
Thomas Bogendoerfer |
a805d8 |
Date: Sat, 23 Jan 2021 00:22:23 +0000
|
|
Thomas Bogendoerfer |
a805d8 |
Subject: i40e: Revert "i40e: don't report link up for a VF who hasn't enabled
|
|
Thomas Bogendoerfer |
a805d8 |
queues"
|
|
Thomas Bogendoerfer |
a805d8 |
Git-commit: f559a356043a55bab25a4c00505ea65c50a956fb
|
|
Thomas Bogendoerfer |
a805d8 |
Patch-mainline: v5.11-rc7
|
|
Thomas Bogendoerfer |
a805d8 |
References: jsc#SLE-8025
|
|
Thomas Bogendoerfer |
a805d8 |
|
|
Thomas Bogendoerfer |
a805d8 |
This reverts commit 2ad1274fa35ace5c6360762ba48d33b63da2396c
|
|
Thomas Bogendoerfer |
a805d8 |
|
|
Thomas Bogendoerfer |
a805d8 |
VF queues were not brought up when PF was brought up after being
|
|
Thomas Bogendoerfer |
a805d8 |
downed if the VF driver disabled VFs queues during PF down.
|
|
Thomas Bogendoerfer |
a805d8 |
This could happen in some older or external VF driver implementations.
|
|
Thomas Bogendoerfer |
a805d8 |
The problem was that PF driver used vf->queues_enabled as a condition
|
|
Thomas Bogendoerfer |
a805d8 |
to decide what link-state it would send out which caused the issue.
|
|
Thomas Bogendoerfer |
a805d8 |
|
|
Thomas Bogendoerfer |
a805d8 |
Remove the check for vf->queues_enabled in the VF link notify.
|
|
Thomas Bogendoerfer |
a805d8 |
Now VF will always be notified of the current link status.
|
|
Thomas Bogendoerfer |
a805d8 |
Also remove the queues_enabled member from i40e_vf structure as it is
|
|
Thomas Bogendoerfer |
a805d8 |
not used anymore. Otherwise VNF implementation was broken and caused
|
|
Thomas Bogendoerfer |
a805d8 |
a link flap.
|
|
Thomas Bogendoerfer |
a805d8 |
|
|
Thomas Bogendoerfer |
a805d8 |
The original commit was a workaround to avoid breaking existing VFs though
|
|
Thomas Bogendoerfer |
a805d8 |
it's really a fault of the VF code not the PF. The commit should be safe to
|
|
Thomas Bogendoerfer |
a805d8 |
revert as all of the VFs we know of have been fixed. Also, since we now
|
|
Thomas Bogendoerfer |
a805d8 |
know there is a related bug in the workaround, removing it is preferred.
|
|
Thomas Bogendoerfer |
a805d8 |
|
|
Thomas Bogendoerfer |
a805d8 |
Fixes: 2ad1274fa35a ("i40e: don't report link up for a VF who hasn't enabled")
|
|
Thomas Bogendoerfer |
a805d8 |
Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
|
|
Thomas Bogendoerfer |
a805d8 |
Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
|
|
Thomas Bogendoerfer |
a805d8 |
Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
|
|
Thomas Bogendoerfer |
a805d8 |
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
|
|
Thomas Bogendoerfer |
a805d8 |
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
|
|
Thomas Bogendoerfer |
a805d8 |
---
|
|
Thomas Bogendoerfer |
a805d8 |
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 13 +------------
|
|
Thomas Bogendoerfer |
a805d8 |
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h | 1 -
|
|
Thomas Bogendoerfer |
a805d8 |
2 files changed, 1 insertion(+), 13 deletions(-)
|
|
Thomas Bogendoerfer |
a805d8 |
|
|
Thomas Bogendoerfer |
a805d8 |
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
|
|
Thomas Bogendoerfer |
a805d8 |
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
|
|
Thomas Bogendoerfer |
a805d8 |
@@ -55,12 +55,7 @@ static void i40e_vc_notify_vf_link_state
|
|
Thomas Bogendoerfer |
a805d8 |
|
|
Thomas Bogendoerfer |
a805d8 |
pfe.event = VIRTCHNL_EVENT_LINK_CHANGE;
|
|
Thomas Bogendoerfer |
a805d8 |
pfe.severity = PF_EVENT_SEVERITY_INFO;
|
|
Thomas Bogendoerfer |
a805d8 |
-
|
|
Thomas Bogendoerfer |
a805d8 |
- /* Always report link is down if the VF queues aren't enabled */
|
|
Thomas Bogendoerfer |
a805d8 |
- if (!vf->queues_enabled) {
|
|
Thomas Bogendoerfer |
a805d8 |
- pfe.event_data.link_event.link_status = false;
|
|
Thomas Bogendoerfer |
a805d8 |
- pfe.event_data.link_event.link_speed = 0;
|
|
Thomas Bogendoerfer |
a805d8 |
- } else if (vf->link_forced) {
|
|
Thomas Bogendoerfer |
a805d8 |
+ if (vf->link_forced) {
|
|
Thomas Bogendoerfer |
a805d8 |
pfe.event_data.link_event.link_status = vf->link_up;
|
|
Thomas Bogendoerfer |
a805d8 |
pfe.event_data.link_event.link_speed =
|
|
Thomas Bogendoerfer |
a805d8 |
(vf->link_up ? VIRTCHNL_LINK_SPEED_40GB : 0);
|
|
Thomas Bogendoerfer |
a805d8 |
@@ -70,7 +65,6 @@ static void i40e_vc_notify_vf_link_state
|
|
Thomas Bogendoerfer |
a805d8 |
pfe.event_data.link_event.link_speed =
|
|
Thomas Bogendoerfer |
a805d8 |
i40e_virtchnl_link_speed(ls->link_speed);
|
|
Thomas Bogendoerfer |
a805d8 |
}
|
|
Thomas Bogendoerfer |
a805d8 |
-
|
|
Thomas Bogendoerfer |
a805d8 |
i40e_aq_send_msg_to_vf(hw, abs_vf_id, VIRTCHNL_OP_EVENT,
|
|
Thomas Bogendoerfer |
a805d8 |
0, (u8 *)&pfe, sizeof(pfe), NULL);
|
|
Thomas Bogendoerfer |
a805d8 |
}
|
|
Thomas Bogendoerfer |
a805d8 |
@@ -2388,8 +2382,6 @@ static int i40e_vc_enable_queues_msg(str
|
|
Thomas Bogendoerfer |
a805d8 |
}
|
|
Thomas Bogendoerfer |
a805d8 |
}
|
|
Thomas Bogendoerfer |
a805d8 |
|
|
Thomas Bogendoerfer |
a805d8 |
- vf->queues_enabled = true;
|
|
Thomas Bogendoerfer |
a805d8 |
-
|
|
Thomas Bogendoerfer |
a805d8 |
error_param:
|
|
Thomas Bogendoerfer |
a805d8 |
/* send the response to the VF */
|
|
Thomas Bogendoerfer |
a805d8 |
return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_ENABLE_QUEUES,
|
|
Thomas Bogendoerfer |
a805d8 |
@@ -2411,9 +2403,6 @@ static int i40e_vc_disable_queues_msg(st
|
|
Thomas Bogendoerfer |
a805d8 |
struct i40e_pf *pf = vf->pf;
|
|
Thomas Bogendoerfer |
a805d8 |
i40e_status aq_ret = 0;
|
|
Thomas Bogendoerfer |
a805d8 |
|
|
Thomas Bogendoerfer |
a805d8 |
- /* Immediately mark queues as disabled */
|
|
Thomas Bogendoerfer |
a805d8 |
- vf->queues_enabled = false;
|
|
Thomas Bogendoerfer |
a805d8 |
-
|
|
Thomas Bogendoerfer |
a805d8 |
if (!test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states)) {
|
|
Thomas Bogendoerfer |
a805d8 |
aq_ret = I40E_ERR_PARAM;
|
|
Thomas Bogendoerfer |
a805d8 |
goto error_param;
|
|
Thomas Bogendoerfer |
a805d8 |
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h
|
|
Thomas Bogendoerfer |
a805d8 |
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h
|
|
Thomas Bogendoerfer |
a805d8 |
@@ -99,7 +99,6 @@ struct i40e_vf {
|
|
Thomas Bogendoerfer |
a805d8 |
unsigned int tx_rate; /* Tx bandwidth limit in Mbps */
|
|
Thomas Bogendoerfer |
a805d8 |
bool link_forced;
|
|
Thomas Bogendoerfer |
a805d8 |
bool link_up; /* only valid if VF link is forced */
|
|
Thomas Bogendoerfer |
a805d8 |
- bool queues_enabled; /* true if the VF queues are enabled */
|
|
Thomas Bogendoerfer |
a805d8 |
bool spoofchk;
|
|
Thomas Bogendoerfer |
a805d8 |
u16 num_vlan;
|
|
Thomas Bogendoerfer |
a805d8 |
|