All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl
@ 2021-02-26 21:19 Tony Nguyen
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 02/13] ice: Fix VFR issues for AVF drivers that expect ATQLEN cleared Tony Nguyen
                   ` (12 more replies)
  0 siblings, 13 replies; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Brett Creeley <brett.creeley@intel.com>

Commit 12bb018c538c ("ice: Refactor VF reset") caused a regression
that removes the ability for a VF to request a different amount of
queues via VIRTCHNL_OP_REQUEST_QUEUES. This prevents VF drivers to
either increase or decrease the number of queue pairs they are
allocated. Fix this by using the variable vf->num_req_qs when
determining the vf->num_vf_qs during VF VSI creation.

Fixes: 12bb018c538c ("ice: Refactor VF reset")
Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_lib.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
index 8d4e2ad4328d..116f8556f4a8 100644
--- a/drivers/net/ethernet/intel/ice/ice_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_lib.c
@@ -192,6 +192,8 @@ static void ice_vsi_set_num_qs(struct ice_vsi *vsi, u16 vf_id)
 		break;
 	case ICE_VSI_VF:
 		vf = &pf->vf[vsi->vf_id];
+		if (vf->num_req_qs)
+			vf->num_vf_qs = vf->num_req_qs;
 		vsi->alloc_txq = vf->num_vf_qs;
 		vsi->alloc_rxq = vf->num_vf_qs;
 		/* pf->num_msix_per_vf includes (VF miscellaneous vector +
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 02/13] ice: Fix VFR issues for AVF drivers that expect ATQLEN cleared
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
@ 2021-02-26 21:19 ` Tony Nguyen
  2021-04-21 19:18   ` Jankowski, Konrad0
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 03/13] ice: Continue probe on link/PHY errors Tony Nguyen
                   ` (11 subsequent siblings)
  12 siblings, 1 reply; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Brett Creeley <brett.creeley@intel.com>

Some AVF drivers expect the VF_MBX_ATQLEN register to be cleared for any
type of VFR/VFLR. Fix this by clearing the VF_MBX_ATQLEN register at the
same time as VF_MBX_ARQLEN.

Fixes: 82ba01282cf8 ("ice: clear VF ARQLEN register on reset")
Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_hw_autogen.h  |  1 +
 drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c | 12 +++++++-----
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
index 093a1818a392..1998821896c0 100644
--- a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
+++ b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
@@ -31,6 +31,7 @@
 #define PF_FW_ATQLEN_ATQOVFL_M			BIT(29)
 #define PF_FW_ATQLEN_ATQCRIT_M			BIT(30)
 #define VF_MBX_ARQLEN(_VF)			(0x0022BC00 + ((_VF) * 4))
+#define VF_MBX_ATQLEN(_VF)			(0x0022A800 + ((_VF) * 4))
 #define PF_FW_ATQLEN_ATQENABLE_M		BIT(31)
 #define PF_FW_ATQT				0x00080400
 #define PF_MBX_ARQBAH				0x0022E400
diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
index 1f38a8d0c525..0f2a4d48574e 100644
--- a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
@@ -435,13 +435,15 @@ static void ice_trigger_vf_reset(struct ice_vf *vf, bool is_vflr, bool is_pfr)
 	 */
 	clear_bit(ICE_VF_STATE_INIT, vf->vf_states);
 
-	/* VF_MBX_ARQLEN is cleared by PFR, so the driver needs to clear it
-	 * in the case of VFR. If this is done for PFR, it can mess up VF
-	 * resets because the VF driver may already have started cleanup
-	 * by the time we get here.
+	/* VF_MBX_ARQLEN and VF_MBX_ATQLEN are cleared by PFR, so the driver
+	 * needs to clear them in the case of VFR/VFLR. If this is done for
+	 * PFR, it can mess up VF resets because the VF driver may already
+	 * have started cleanup by the time we get here.
 	 */
-	if (!is_pfr)
+	if (!is_pfr) {
 		wr32(hw, VF_MBX_ARQLEN(vf->vf_id), 0);
+		wr32(hw, VF_MBX_ATQLEN(vf->vf_id), 0);
+	}
 
 	/* In the case of a VFLR, the HW has already reset the VF and we
 	 * just need to clean up, so don't hit the VFRTRIG register.
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 03/13] ice: Continue probe on link/PHY errors
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 02/13] ice: Fix VFR issues for AVF drivers that expect ATQLEN cleared Tony Nguyen
@ 2021-02-26 21:19 ` Tony Nguyen
  2021-03-10 21:14   ` Brelinski, TonyX
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 04/13] ice: Fix VF true promiscuous mode Tony Nguyen
                   ` (10 subsequent siblings)
  12 siblings, 1 reply; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>

An incorrect NVM update procedure can result in the driver failing probe.
In this case, the recommended resolution method is to update the NVM
using the right procedure. However, if the driver fails probe, the user
will not be able to update the NVM. So do not fail probe on link/PHY
errors.

Fixes: 1a3571b5938c ("ice: restore PHY settings on media insertion")
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_main.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 2c23c8f468a5..53e053c997eb 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -4192,28 +4192,25 @@ ice_probe(struct pci_dev *pdev, const struct pci_device_id __always_unused *ent)
 		goto err_send_version_unroll;
 	}
 
+	/* not a fatal error if this fails */
 	err = ice_init_nvm_phy_type(pf->hw.port_info);
-	if (err) {
+	if (err)
 		dev_err(dev, "ice_init_nvm_phy_type failed: %d\n", err);
-		goto err_send_version_unroll;
-	}
 
+	/* not a fatal error if this fails */
 	err = ice_update_link_info(pf->hw.port_info);
-	if (err) {
+	if (err)
 		dev_err(dev, "ice_update_link_info failed: %d\n", err);
-		goto err_send_version_unroll;
-	}
 
 	ice_init_link_dflt_override(pf->hw.port_info);
 
 	/* if media available, initialize PHY settings */
 	if (pf->hw.port_info->phy.link_info.link_info &
 	    ICE_AQ_MEDIA_AVAILABLE) {
+		/* not a fatal error if this fails */
 		err = ice_init_phy_user_cfg(pf->hw.port_info);
-		if (err) {
+		if (err)
 			dev_err(dev, "ice_init_phy_user_cfg failed: %d\n", err);
-			goto err_send_version_unroll;
-		}
 
 		if (!test_bit(ICE_FLAG_LINK_DOWN_ON_CLOSE_ENA, pf->flags)) {
 			struct ice_vsi *vsi = ice_get_main_vsi(pf);
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 04/13] ice: Fix VF true promiscuous mode
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 02/13] ice: Fix VFR issues for AVF drivers that expect ATQLEN cleared Tony Nguyen
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 03/13] ice: Continue probe on link/PHY errors Tony Nguyen
@ 2021-02-26 21:19 ` Tony Nguyen
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 05/13] ice: Increase control queue timeout Tony Nguyen
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Brett Creeley <brett.creeley@intel.com>

When a VF requests promiscuous mode and it's trusted and true promiscuous
mode is enabled the PF driver attempts to enable unicast and/or
multicast promiscuous mode filters based on the request. This is fine,
but there are a couple issues with the current code.

[1] The define to configure the unicast promiscuous mode mask also
    includes bits to configure the multicast promiscuous mode mask, which
    causes multicast to be set/cleared unintentionally.
[2] All 4 cases for enable/disable unicast/multicast mode are not
    handled in the promiscuous mode message handler, which causes
    unexpected results regarding the current promiscuous mode settings.

To fix [1] make sure any promiscuous mask defines include the correct
bits for each of the promiscuous modes.

To fix [2] make sure that all 4 cases are handled since there are 2 bits
(FLAG_VF_UNICAST_PROMISC and FLAG_VF_MULTICAST_PROMISC) that can be
either set or cleared. Also, since either unicast and/or multicast
promiscuous configuration can fail, introduce two separate error values
to handle each of these cases.

Fixes: 01b5e89aab49 ("ice: Add VF promiscuous support")
Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/ice/ice.h          |  5 +-
 .../net/ethernet/intel/ice/ice_virtchnl_pf.c  | 78 +++++++++----------
 2 files changed, 40 insertions(+), 43 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
index 357706444dd5..264507762dc5 100644
--- a/drivers/net/ethernet/intel/ice/ice.h
+++ b/drivers/net/ethernet/intel/ice/ice.h
@@ -125,13 +125,10 @@
 #define ice_for_each_q_vector(vsi, i) \
 	for ((i) = 0; (i) < (vsi)->num_q_vectors; (i)++)
 
-#define ICE_UCAST_PROMISC_BITS (ICE_PROMISC_UCAST_TX | ICE_PROMISC_MCAST_TX | \
-				ICE_PROMISC_UCAST_RX | ICE_PROMISC_MCAST_RX)
+#define ICE_UCAST_PROMISC_BITS (ICE_PROMISC_UCAST_TX | ICE_PROMISC_UCAST_RX)
 
 #define ICE_UCAST_VLAN_PROMISC_BITS (ICE_PROMISC_UCAST_TX | \
-				     ICE_PROMISC_MCAST_TX | \
 				     ICE_PROMISC_UCAST_RX | \
-				     ICE_PROMISC_MCAST_RX | \
 				     ICE_PROMISC_VLAN_TX  | \
 				     ICE_PROMISC_VLAN_RX)
 
diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
index 0f2a4d48574e..5a581e759111 100644
--- a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
@@ -2378,6 +2378,7 @@ bool ice_is_any_vf_in_promisc(struct ice_pf *pf)
 static int ice_vc_cfg_promiscuous_mode_msg(struct ice_vf *vf, u8 *msg)
 {
 	enum virtchnl_status_code v_ret = VIRTCHNL_STATUS_SUCCESS;
+	enum ice_status mcast_status = 0, ucast_status = 0;
 	bool rm_promisc, alluni = false, allmulti = false;
 	struct virtchnl_promisc_info *info =
 	    (struct virtchnl_promisc_info *)msg;
@@ -2467,52 +2468,51 @@ static int ice_vc_cfg_promiscuous_mode_msg(struct ice_vf *vf, u8 *msg)
 			goto error_param;
 		}
 	} else {
-		enum ice_status status;
-		u8 promisc_m;
-
-		if (alluni) {
-			if (vf->port_vlan_info || vsi->num_vlan)
-				promisc_m = ICE_UCAST_VLAN_PROMISC_BITS;
-			else
-				promisc_m = ICE_UCAST_PROMISC_BITS;
-		} else if (allmulti) {
-			if (vf->port_vlan_info || vsi->num_vlan)
-				promisc_m = ICE_MCAST_VLAN_PROMISC_BITS;
-			else
-				promisc_m = ICE_MCAST_PROMISC_BITS;
+		u8 mcast_m, ucast_m;
+
+		if (vf->port_vlan_info || vsi->num_vlan > 1) {
+			mcast_m = ICE_MCAST_VLAN_PROMISC_BITS;
+			ucast_m = ICE_UCAST_VLAN_PROMISC_BITS;
 		} else {
-			if (vf->port_vlan_info || vsi->num_vlan)
-				promisc_m = ICE_UCAST_VLAN_PROMISC_BITS;
-			else
-				promisc_m = ICE_UCAST_PROMISC_BITS;
+			mcast_m = ICE_MCAST_PROMISC_BITS;
+			ucast_m = ICE_UCAST_PROMISC_BITS;
 		}
 
-		/* Configure multicast/unicast with or without VLAN promiscuous
-		 * mode
-		 */
-		status = ice_vf_set_vsi_promisc(vf, vsi, promisc_m, rm_promisc);
-		if (status) {
-			dev_err(dev, "%sable Tx/Rx filter promiscuous mode on VF-%d failed, error: %s\n",
-				rm_promisc ? "dis" : "en", vf->vf_id,
-				ice_stat_str(status));
-			v_ret = ice_err_to_virt_err(status);
-			goto error_param;
-		} else {
-			dev_dbg(dev, "%sable Tx/Rx filter promiscuous mode on VF-%d succeeded\n",
-				rm_promisc ? "dis" : "en", vf->vf_id);
+		ucast_status = ice_vf_set_vsi_promisc(vf, vsi, ucast_m,
+						      !alluni);
+		if (ucast_status) {
+			dev_err(dev, "%sable Tx/Rx filter promiscuous mode on VF-%d failed\n",
+				alluni ? "en" : "dis", vf->vf_id);
+			v_ret = ice_err_to_virt_err(ucast_status);
+		}
+
+		mcast_status = ice_vf_set_vsi_promisc(vf, vsi, mcast_m,
+						      !allmulti);
+		if (mcast_status) {
+			dev_err(dev, "%sable Tx/Rx filter promiscuous mode on VF-%d failed\n",
+				allmulti ? "en" : "dis", vf->vf_id);
+			v_ret = ice_err_to_virt_err(mcast_status);
 		}
 	}
 
-	if (allmulti &&
-	    !test_and_set_bit(ICE_VF_STATE_MC_PROMISC, vf->vf_states))
-		dev_info(dev, "VF %u successfully set multicast promiscuous mode\n", vf->vf_id);
-	else if (!allmulti && test_and_clear_bit(ICE_VF_STATE_MC_PROMISC, vf->vf_states))
-		dev_info(dev, "VF %u successfully unset multicast promiscuous mode\n", vf->vf_id);
+	if (!mcast_status) {
+		if (allmulti &&
+		    !test_and_set_bit(ICE_VF_STATE_MC_PROMISC, vf->vf_states))
+			dev_info(dev, "VF %u successfully set multicast promiscuous mode\n",
+				 vf->vf_id);
+		else if (!allmulti && test_and_clear_bit(ICE_VF_STATE_MC_PROMISC, vf->vf_states))
+			dev_info(dev, "VF %u successfully unset multicast promiscuous mode\n",
+				 vf->vf_id);
+	}
 
-	if (alluni && !test_and_set_bit(ICE_VF_STATE_UC_PROMISC, vf->vf_states))
-		dev_info(dev, "VF %u successfully set unicast promiscuous mode\n", vf->vf_id);
-	else if (!alluni && test_and_clear_bit(ICE_VF_STATE_UC_PROMISC, vf->vf_states))
-		dev_info(dev, "VF %u successfully unset unicast promiscuous mode\n", vf->vf_id);
+	if (!ucast_status) {
+		if (alluni && !test_and_set_bit(ICE_VF_STATE_UC_PROMISC, vf->vf_states))
+			dev_info(dev, "VF %u successfully set unicast promiscuous mode\n",
+				 vf->vf_id);
+		else if (!alluni && test_and_clear_bit(ICE_VF_STATE_UC_PROMISC, vf->vf_states))
+			dev_info(dev, "VF %u successfully unset unicast promiscuous mode\n",
+				 vf->vf_id);
+	}
 
 error_param:
 	return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE,
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 05/13] ice: Increase control queue timeout
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
                   ` (2 preceding siblings ...)
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 04/13] ice: Fix VF true promiscuous mode Tony Nguyen
@ 2021-02-26 21:19 ` Tony Nguyen
  2021-03-09 23:45   ` Brelinski, TonyX
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 06/13] ice: Recognize 860 as iSCSI port in CEE mode Tony Nguyen
                   ` (8 subsequent siblings)
  12 siblings, 1 reply; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Fabio Pricoco <fabio.pricoco@intel.com>

250 msec timeout is insufficient for some AQ commands. Advice from FW
team was to increase the timeout. Increase to 1 second.

Fixes: 7ec59eeac804 ("ice: Add support for control queues")
Signed-off-by: Fabio Pricoco <fabio.pricoco@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_controlq.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_controlq.h b/drivers/net/ethernet/intel/ice/ice_controlq.h
index faaa08e8171b..68866f4f0eb0 100644
--- a/drivers/net/ethernet/intel/ice/ice_controlq.h
+++ b/drivers/net/ethernet/intel/ice/ice_controlq.h
@@ -31,8 +31,8 @@ enum ice_ctl_q {
 	ICE_CTL_Q_MAILBOX,
 };
 
-/* Control Queue timeout settings - max delay 250ms */
-#define ICE_CTL_Q_SQ_CMD_TIMEOUT	2500  /* Count 2500 times */
+/* Control Queue timeout settings - max delay 1s */
+#define ICE_CTL_Q_SQ_CMD_TIMEOUT	10000 /* Count 10000 times */
 #define ICE_CTL_Q_SQ_CMD_USEC		100   /* Check every 100usec */
 #define ICE_CTL_Q_ADMIN_INIT_TIMEOUT	10    /* Count 10 times */
 #define ICE_CTL_Q_ADMIN_INIT_MSEC	100   /* Check every 100msec */
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 06/13] ice: Recognize 860 as iSCSI port in CEE mode
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
                   ` (3 preceding siblings ...)
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 05/13] ice: Increase control queue timeout Tony Nguyen
@ 2021-02-26 21:19 ` Tony Nguyen
  2021-03-23 22:41   ` Brelinski, TonyX
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 07/13] ice: prevent ice_open and ice_stop during reset Tony Nguyen
                   ` (7 subsequent siblings)
  12 siblings, 1 reply; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Chinh T Cao <chinh.t.cao@intel.com>

iSCSI can use both TCP ports 860 and 3260. However, in our current
implementation, the ice_aqc_opc_get_cee_dcb_cfg (0x0A07) AQ command
doesn't provide a way to communicate the protocol port number to the
AQ's caller. Thus, we assume that 3260 is the iSCSI port number at the
AQ's caller layer.

Rely on the dcbx-willing mode, desired QoS and remote QoS configuration to
determine which port number that iSCSI will use.

Fixes: 0ebd3ff13cca ("ice: Add code for DCB initialization part 2/4")
Signed-off-by: Chinh T Cao <chinh.t.cao@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_dcb.c  | 38 +++++++++++++++++------
 drivers/net/ethernet/intel/ice/ice_type.h |  1 +
 2 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_dcb.c b/drivers/net/ethernet/intel/ice/ice_dcb.c
index e42727941ef5..211ac6f907ad 100644
--- a/drivers/net/ethernet/intel/ice/ice_dcb.c
+++ b/drivers/net/ethernet/intel/ice/ice_dcb.c
@@ -738,22 +738,27 @@ ice_aq_get_cee_dcb_cfg(struct ice_hw *hw,
 /**
  * ice_cee_to_dcb_cfg
  * @cee_cfg: pointer to CEE configuration struct
- * @dcbcfg: DCB configuration struct
+ * @pi: port information structure
  *
  * Convert CEE configuration from firmware to DCB configuration
  */
 static void
 ice_cee_to_dcb_cfg(struct ice_aqc_get_cee_dcb_cfg_resp *cee_cfg,
-		   struct ice_dcbx_cfg *dcbcfg)
+		   struct ice_port_info *pi)
 {
 	u32 status, tlv_status = le32_to_cpu(cee_cfg->tlv_status);
 	u32 ice_aqc_cee_status_mask, ice_aqc_cee_status_shift;
+	u8 i, j, err, sync, oper, app_index, ice_app_sel_type;
 	u16 app_prio = le16_to_cpu(cee_cfg->oper_app_prio);
-	u8 i, err, sync, oper, app_index, ice_app_sel_type;
 	u16 ice_aqc_cee_app_mask, ice_aqc_cee_app_shift;
+	struct ice_dcbx_cfg *cmp_dcbcfg, *dcbcfg;
 	u16 ice_app_prot_id_type;
 
-	/* CEE PG data to ETS config */
+	dcbcfg = &pi->qos_cfg.local_dcbx_cfg;
+	dcbcfg->dcbx_mode = ICE_DCBX_MODE_CEE;
+	dcbcfg->tlv_status = tlv_status;
+
+	/* CEE PG data */
 	dcbcfg->etscfg.maxtcs = cee_cfg->oper_num_tc;
 
 	/* Note that the FW creates the oper_prio_tc nibbles reversed
@@ -780,10 +785,16 @@ ice_cee_to_dcb_cfg(struct ice_aqc_get_cee_dcb_cfg_resp *cee_cfg,
 		}
 	}
 
-	/* CEE PFC data to ETS config */
+	/* CEE PFC data */
 	dcbcfg->pfc.pfcena = cee_cfg->oper_pfc_en;
 	dcbcfg->pfc.pfccap = ICE_MAX_TRAFFIC_CLASS;
 
+	/* CEE APP TLV data */
+	if (dcbcfg->app_mode == ICE_DCBX_APPS_NON_WILLING)
+		cmp_dcbcfg = &pi->qos_cfg.desired_dcbx_cfg;
+	else
+		cmp_dcbcfg = &pi->qos_cfg.remote_dcbx_cfg;
+
 	app_index = 0;
 	for (i = 0; i < 3; i++) {
 		if (i == 0) {
@@ -802,6 +813,18 @@ ice_cee_to_dcb_cfg(struct ice_aqc_get_cee_dcb_cfg_resp *cee_cfg,
 			ice_aqc_cee_app_shift = ICE_AQC_CEE_APP_ISCSI_S;
 			ice_app_sel_type = ICE_APP_SEL_TCPIP;
 			ice_app_prot_id_type = ICE_APP_PROT_ID_ISCSI;
+
+			for (j = 0; j < cmp_dcbcfg->numapps; j++) {
+				u16 prot_id = cmp_dcbcfg->app[j].prot_id;
+				u8 sel = cmp_dcbcfg->app[j].selector;
+
+				if  (sel == ICE_APP_SEL_TCPIP &&
+				     (prot_id == ICE_APP_PROT_ID_ISCSI ||
+				      prot_id == ICE_APP_PROT_ID_ISCSI_860)) {
+					ice_app_prot_id_type = prot_id;
+					break;
+				}
+			}
 		} else {
 			/* FIP APP */
 			ice_aqc_cee_status_mask = ICE_AQC_CEE_FIP_STATUS_M;
@@ -892,11 +915,8 @@ enum ice_status ice_get_dcb_cfg(struct ice_port_info *pi)
 	ret = ice_aq_get_cee_dcb_cfg(pi->hw, &cee_cfg, NULL);
 	if (!ret) {
 		/* CEE mode */
-		dcbx_cfg = &pi->qos_cfg.local_dcbx_cfg;
-		dcbx_cfg->dcbx_mode = ICE_DCBX_MODE_CEE;
-		dcbx_cfg->tlv_status = le32_to_cpu(cee_cfg.tlv_status);
-		ice_cee_to_dcb_cfg(&cee_cfg, dcbx_cfg);
 		ret = ice_get_ieee_or_cee_dcb_cfg(pi, ICE_DCBX_MODE_CEE);
+		ice_cee_to_dcb_cfg(&cee_cfg, pi);
 	} else if (pi->hw->adminq.sq_last_status == ICE_AQ_RC_ENOENT) {
 		/* CEE mode not enabled try querying IEEE data */
 		dcbx_cfg = &pi->qos_cfg.local_dcbx_cfg;
diff --git a/drivers/net/ethernet/intel/ice/ice_type.h b/drivers/net/ethernet/intel/ice/ice_type.h
index a6cb0c35748c..266036b7a49a 100644
--- a/drivers/net/ethernet/intel/ice/ice_type.h
+++ b/drivers/net/ethernet/intel/ice/ice_type.h
@@ -535,6 +535,7 @@ struct ice_dcb_app_priority_table {
 #define ICE_TLV_STATUS_ERR	0x4
 #define ICE_APP_PROT_ID_FCOE	0x8906
 #define ICE_APP_PROT_ID_ISCSI	0x0cbc
+#define ICE_APP_PROT_ID_ISCSI_860 0x035c
 #define ICE_APP_PROT_ID_FIP	0x8914
 #define ICE_APP_SEL_ETHTYPE	0x1
 #define ICE_APP_SEL_TCPIP	0x2
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 07/13] ice: prevent ice_open and ice_stop during reset
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
                   ` (4 preceding siblings ...)
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 06/13] ice: Recognize 860 as iSCSI port in CEE mode Tony Nguyen
@ 2021-02-26 21:19 ` Tony Nguyen
  2021-03-11 22:50   ` Brelinski, TonyX
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 08/13] ice: fix memory allocation call Tony Nguyen
                   ` (6 subsequent siblings)
  12 siblings, 1 reply; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Krzysztof Goreczny <krzysztof.goreczny@intel.com>

There is a possibility of race between ice_open or ice_stop calls
performed by OS and reset handling routine both trying to modify VSI
resources. Observed scenarios:
- reset handler deallocates memory in ice_vsi_free_arrays and ice_open
  tries to access it in ice_vsi_cfg_txq leading to driver crash
- reset handler deallocates memory in ice_vsi_free_arrays and ice_close
  tries to access it in ice_down leading to driver crash
- reset handler clears port scheduler topology and sets port state to
  ICE_SCHED_PORT_STATE_INIT leading to ice_ena_vsi_txq fail in ice_open

To prevent this additional checks in ice_open and ice_stop are
introduced to make sure that OS is not allowed to alter VSI config while
reset is in progress.

Fixes: cdedef59deb0 ("ice: Configure VSIs for Tx/Rx")
Signed-off-by: Krzysztof Goreczny <krzysztof.goreczny@intel.com>
---
 drivers/net/ethernet/intel/ice/ice.h      |  1 +
 drivers/net/ethernet/intel/ice/ice_lib.c  |  4 ++--
 drivers/net/ethernet/intel/ice/ice_main.c | 28 +++++++++++++++++++++++
 3 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
index 264507762dc5..ae1c3a3b0780 100644
--- a/drivers/net/ethernet/intel/ice/ice.h
+++ b/drivers/net/ethernet/intel/ice/ice.h
@@ -639,6 +639,7 @@ int ice_fdir_create_dflt_rules(struct ice_pf *pf);
 int ice_aq_wait_for_event(struct ice_pf *pf, u16 opcode, unsigned long timeout,
 			  struct ice_rq_event_info *event);
 int ice_open(struct net_device *netdev);
+int ice_open_internal(struct net_device *netdev);
 int ice_stop(struct net_device *netdev);
 void ice_service_task_schedule(struct ice_pf *pf);
 
diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
index 116f8556f4a8..638304abef73 100644
--- a/drivers/net/ethernet/intel/ice/ice_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_lib.c
@@ -2622,7 +2622,7 @@ int ice_ena_vsi(struct ice_vsi *vsi, bool locked)
 			if (!locked)
 				rtnl_lock();
 
-			err = ice_open(vsi->netdev);
+			err = ice_open_internal(vsi->netdev);
 
 			if (!locked)
 				rtnl_unlock();
@@ -2651,7 +2651,7 @@ void ice_dis_vsi(struct ice_vsi *vsi, bool locked)
 			if (!locked)
 				rtnl_lock();
 
-			ice_stop(vsi->netdev);
+			ice_vsi_close(vsi);
 
 			if (!locked)
 				rtnl_unlock();
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 53e053c997eb..255a07c1e33a 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -6632,6 +6632,28 @@ static void ice_tx_timeout(struct net_device *netdev, unsigned int txqueue)
  * Returns 0 on success, negative value on failure
  */
 int ice_open(struct net_device *netdev)
+{
+	struct ice_netdev_priv *np = netdev_priv(netdev);
+	struct ice_pf *pf = np->vsi->back;
+
+	if (ice_is_reset_in_progress(pf->state)) {
+		netdev_err(netdev, "can't open net device while reset is in progress");
+		return -EBUSY;
+	}
+
+	return ice_open_internal(netdev);
+}
+
+/**
+ * ice_open_internal - Called when a network interface becomes active
+ * @netdev: network interface device structure
+ *
+ * Internal ice_open implementation. Should not be used directly except for ice_open and reset
+ * handling routine
+ *
+ * Returns 0 on success, negative value on failure
+ */
+int ice_open_internal(struct net_device *netdev)
 {
 	struct ice_netdev_priv *np = netdev_priv(netdev);
 	struct ice_vsi *vsi = np->vsi;
@@ -6712,6 +6734,12 @@ int ice_stop(struct net_device *netdev)
 {
 	struct ice_netdev_priv *np = netdev_priv(netdev);
 	struct ice_vsi *vsi = np->vsi;
+	struct ice_pf *pf = vsi->back;
+
+	if (ice_is_reset_in_progress(pf->state)) {
+		netdev_err(netdev, "can't stop net device while reset is in progress");
+		return -EBUSY;
+	}
 
 	ice_vsi_close(vsi);
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 08/13] ice: fix memory allocation call
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
                   ` (5 preceding siblings ...)
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 07/13] ice: prevent ice_open and ice_stop during reset Tony Nguyen
@ 2021-02-26 21:19 ` Tony Nguyen
  2021-03-09 23:47   ` Brelinski, TonyX
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 09/13] ice: remove DCBNL_DEVRESET bit from PF state Tony Nguyen
                   ` (5 subsequent siblings)
  12 siblings, 1 reply; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Bruce Allan <bruce.w.allan@intel.com>

Fix the order of number of array members and member size parameters in a
*calloc() call.

Fixes: b3c3890489f6 ("ice: avoid unnecessary single-member variable-length structs")
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_common.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c
index 3d9475e222cd..a20edf1538a0 100644
--- a/drivers/net/ethernet/intel/ice/ice_common.c
+++ b/drivers/net/ethernet/intel/ice/ice_common.c
@@ -717,8 +717,8 @@ static enum ice_status ice_cfg_fw_log(struct ice_hw *hw, bool enable)
 
 			if (!data) {
 				data = devm_kcalloc(ice_hw_to_dev(hw),
-						    sizeof(*data),
 						    ICE_AQC_FW_LOG_ID_MAX,
+						    sizeof(*data),
 						    GFP_KERNEL);
 				if (!data)
 					return ICE_ERR_NO_MEMORY;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 09/13] ice: remove DCBNL_DEVRESET bit from PF state
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
                   ` (6 preceding siblings ...)
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 08/13] ice: fix memory allocation call Tony Nguyen
@ 2021-02-26 21:19 ` Tony Nguyen
  2021-03-22 23:58   ` Brelinski, TonyX
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 10/13] ice: Fix for dereference of NULL pointer Tony Nguyen
                   ` (4 subsequent siblings)
  12 siblings, 1 reply; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Dave Ertman <david.m.ertman@intel.com>

The original purpose of the ICE_DCBNL_DEVRESET was to protect
the driver during DCBNL device resets.  But, the flow for
DCBNL device resets now consists of only calls up the stack
such as dev_close() and dev_open() that will result in NDO calls
to the driver.  These will be handled with state changes from the
stack.  Also, there is a problem of the dev_close and dev_open
being blocked by checks for reset in progress also using the
ICE_DCBNL_DEVRESET bit.

Since the ICE_DCBNL_DEVRESET bit is not necessary for protecting
the driver from DCBNL device resets and it is actually blocking
changes coming form the DCBNL interface, remove the bit from the
PF state and don't block driver function based on DCBNL reset in
progress.

Fixes: b94b013eb626 ("ice: Implement DCBNL support")
Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
---
 drivers/net/ethernet/intel/ice/ice.h        | 1 -
 drivers/net/ethernet/intel/ice/ice_dcb_nl.c | 2 --
 drivers/net/ethernet/intel/ice/ice_lib.c    | 1 -
 3 files changed, 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
index ae1c3a3b0780..522c7aa61cc7 100644
--- a/drivers/net/ethernet/intel/ice/ice.h
+++ b/drivers/net/ethernet/intel/ice/ice.h
@@ -193,7 +193,6 @@ enum ice_state {
 	__ICE_NEEDS_RESTART,
 	__ICE_PREPARED_FOR_RESET,	/* set by driver when prepared */
 	__ICE_RESET_OICR_RECV,		/* set by driver after rcv reset OICR */
-	__ICE_DCBNL_DEVRESET,		/* set by dcbnl devreset */
 	__ICE_PFR_REQ,			/* set by driver and peers */
 	__ICE_CORER_REQ,		/* set by driver and peers */
 	__ICE_GLOBR_REQ,		/* set by driver and peers */
diff --git a/drivers/net/ethernet/intel/ice/ice_dcb_nl.c b/drivers/net/ethernet/intel/ice/ice_dcb_nl.c
index 468a63f7eff9..4180f1f35fb8 100644
--- a/drivers/net/ethernet/intel/ice/ice_dcb_nl.c
+++ b/drivers/net/ethernet/intel/ice/ice_dcb_nl.c
@@ -18,12 +18,10 @@ static void ice_dcbnl_devreset(struct net_device *netdev)
 	while (ice_is_reset_in_progress(pf->state))
 		usleep_range(1000, 2000);
 
-	set_bit(__ICE_DCBNL_DEVRESET, pf->state);
 	dev_close(netdev);
 	netdev_state_change(netdev);
 	dev_open(netdev, NULL);
 	netdev_state_change(netdev);
-	clear_bit(__ICE_DCBNL_DEVRESET, pf->state);
 }
 
 /**
diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
index 638304abef73..d5b9ac620b06 100644
--- a/drivers/net/ethernet/intel/ice/ice_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_lib.c
@@ -3080,7 +3080,6 @@ int ice_vsi_rebuild(struct ice_vsi *vsi, bool init_vsi)
 bool ice_is_reset_in_progress(unsigned long *state)
 {
 	return test_bit(__ICE_RESET_OICR_RECV, state) ||
-	       test_bit(__ICE_DCBNL_DEVRESET, state) ||
 	       test_bit(__ICE_PFR_REQ, state) ||
 	       test_bit(__ICE_CORER_REQ, state) ||
 	       test_bit(__ICE_GLOBR_REQ, state);
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 10/13] ice: Fix for dereference of NULL pointer
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
                   ` (7 preceding siblings ...)
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 09/13] ice: remove DCBNL_DEVRESET bit from PF state Tony Nguyen
@ 2021-02-26 21:19 ` Tony Nguyen
  2021-03-09 23:49   ` Brelinski, TonyX
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 11/13] ice: Use port number instead of PF ID for WoL Tony Nguyen
                   ` (3 subsequent siblings)
  12 siblings, 1 reply; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Jacek Bu?atek <jacekx.bulatek@intel.com>

Add handling of allocation fault for ice_vsi_list_map_info.

Also *fi should not be NULL pointer, it is a reference to raw
data field, so remove this variable and use the reference
directly.

Fixes: 9daf8208dd4d ("ice: Add support for switch filter programming")
Signed-off-by: Jacek Bu?atek <jacekx.bulatek@intel.com>
Co-developed-by: Haiyue Wang <haiyue.wang@intel.com>
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_switch.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_switch.c b/drivers/net/ethernet/intel/ice/ice_switch.c
index 67c965a3f5d2..387d3f6cd71e 100644
--- a/drivers/net/ethernet/intel/ice/ice_switch.c
+++ b/drivers/net/ethernet/intel/ice/ice_switch.c
@@ -1238,6 +1238,9 @@ ice_add_update_vsi_list(struct ice_hw *hw,
 			ice_create_vsi_list_map(hw, &vsi_handle_arr[0], 2,
 						vsi_list_id);
 
+		if (!m_entry->vsi_list_info)
+			return ICE_ERR_NO_MEMORY;
+
 		/* If this entry was large action then the large action needs
 		 * to be updated to point to FWD to VSI list
 		 */
@@ -2220,6 +2223,7 @@ ice_vsi_uses_fltr(struct ice_fltr_mgmt_list_entry *fm_entry, u16 vsi_handle)
 	return ((fm_entry->fltr_info.fltr_act == ICE_FWD_TO_VSI &&
 		 fm_entry->fltr_info.vsi_handle == vsi_handle) ||
 		(fm_entry->fltr_info.fltr_act == ICE_FWD_TO_VSI_LIST &&
+		 fm_entry->vsi_list_info &&
 		 (test_bit(vsi_handle, fm_entry->vsi_list_info->vsi_map))));
 }
 
@@ -2292,14 +2296,12 @@ ice_add_to_vsi_fltr_list(struct ice_hw *hw, u16 vsi_handle,
 		return ICE_ERR_PARAM;
 
 	list_for_each_entry(fm_entry, lkup_list_head, list_entry) {
-		struct ice_fltr_info *fi;
-
-		fi = &fm_entry->fltr_info;
-		if (!fi || !ice_vsi_uses_fltr(fm_entry, vsi_handle))
+		if (!ice_vsi_uses_fltr(fm_entry, vsi_handle))
 			continue;
 
 		status = ice_add_entry_to_vsi_fltr_list(hw, vsi_handle,
-							vsi_list_head, fi);
+							vsi_list_head,
+							&fm_entry->fltr_info);
 		if (status)
 			return status;
 	}
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 11/13] ice: Use port number instead of PF ID for WoL
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
                   ` (8 preceding siblings ...)
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 10/13] ice: Fix for dereference of NULL pointer Tony Nguyen
@ 2021-02-26 21:19 ` Tony Nguyen
  2021-03-10 23:06   ` Brelinski, TonyX
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 12/13] ice: handle the VF VSI rebuild failure Tony Nguyen
                   ` (2 subsequent siblings)
  12 siblings, 1 reply; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>

As per the spec, the WoL control word read from the NVM should be
interpreted as port numbers, and not PF numbers. So when checking
if WoL supported, use the port number instead of the PF ID.

Also, ice_is_wol_supported doesn't really need a pointer to the pf
struct, but just needs a pointer to the hw instance.

Fixes: 769c500dcc1e ("ice: Add advanced power mgmt for WoL")
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice.h         | 2 +-
 drivers/net/ethernet/intel/ice/ice_ethtool.c | 4 ++--
 drivers/net/ethernet/intel/ice/ice_main.c    | 9 ++++-----
 3 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
index 522c7aa61cc7..def5439c3f6c 100644
--- a/drivers/net/ethernet/intel/ice/ice.h
+++ b/drivers/net/ethernet/intel/ice/ice.h
@@ -620,7 +620,7 @@ int ice_schedule_reset(struct ice_pf *pf, enum ice_reset_req reset);
 void ice_print_link_msg(struct ice_vsi *vsi, bool isup);
 const char *ice_stat_str(enum ice_status stat_err);
 const char *ice_aq_str(enum ice_aq_err aq_err);
-bool ice_is_wol_supported(struct ice_pf *pf);
+bool ice_is_wol_supported(struct ice_hw *hw);
 int
 ice_fdir_write_fltr(struct ice_pf *pf, struct ice_fdir_fltr *input, bool add,
 		    bool is_tun);
diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c
index 2dcfa685b763..32ba71a16165 100644
--- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
+++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
@@ -3472,7 +3472,7 @@ static void ice_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
 		netdev_warn(netdev, "Wake on LAN is not supported on this interface!\n");
 
 	/* Get WoL settings based on the HW capability */
-	if (ice_is_wol_supported(pf)) {
+	if (ice_is_wol_supported(&pf->hw)) {
 		wol->supported = WAKE_MAGIC;
 		wol->wolopts = pf->wol_ena ? WAKE_MAGIC : 0;
 	} else {
@@ -3492,7 +3492,7 @@ static int ice_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
 	struct ice_vsi *vsi = np->vsi;
 	struct ice_pf *pf = vsi->back;
 
-	if (vsi->type != ICE_VSI_PF || !ice_is_wol_supported(pf))
+	if (vsi->type != ICE_VSI_PF || !ice_is_wol_supported(&pf->hw))
 		return -EOPNOTSUPP;
 
 	/* only magic packet is supported */
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 255a07c1e33a..9f1adff85be7 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -3537,15 +3537,14 @@ static int ice_init_interrupt_scheme(struct ice_pf *pf)
 }
 
 /**
- * ice_is_wol_supported - get NVM state of WoL
- * @pf: board private structure
+ * ice_is_wol_supported - check if WoL is supported
+ * @hw: pointer to hardware info
  *
  * Check if WoL is supported based on the HW configuration.
  * Returns true if NVM supports and enables WoL for this port, false otherwise
  */
-bool ice_is_wol_supported(struct ice_pf *pf)
+bool ice_is_wol_supported(struct ice_hw *hw)
 {
-	struct ice_hw *hw = &pf->hw;
 	u16 wol_ctrl;
 
 	/* A bit set to 1 in the NVM Software Reserved Word 2 (WoL control
@@ -3554,7 +3553,7 @@ bool ice_is_wol_supported(struct ice_pf *pf)
 	if (ice_read_sr_word(hw, ICE_SR_NVM_WOL_CFG, &wol_ctrl))
 		return false;
 
-	return !(BIT(hw->pf_id) & wol_ctrl);
+	return !(BIT(hw->port_info->lport) & wol_ctrl);
 }
 
 /**
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 12/13] ice: handle the VF VSI rebuild failure
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
                   ` (9 preceding siblings ...)
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 11/13] ice: Use port number instead of PF ID for WoL Tony Nguyen
@ 2021-02-26 21:19 ` Tony Nguyen
  2021-04-21 19:17   ` Jankowski, Konrad0
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 13/13] ice: Cleanup fltr list in case of allocation issues Tony Nguyen
  2021-04-19 19:21 ` [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Jankowski, Konrad0
  12 siblings, 1 reply; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Haiyue Wang <haiyue.wang@intel.com>

VSI rebuild can be failed for LAN queue config, then the VF's VSI will
be NULL, the VF reset should be stopped with the VF entering into the
disable state.

Fixes: 12bb018c538c ("ice: Refactor VF reset")
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
index 5a581e759111..de438aba29cd 100644
--- a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
@@ -1377,7 +1377,12 @@ bool ice_reset_vf(struct ice_vf *vf, bool is_vflr)
 	}
 
 	ice_vf_pre_vsi_rebuild(vf);
-	ice_vf_rebuild_vsi_with_release(vf);
+
+	if (ice_vf_rebuild_vsi_with_release(vf)) {
+		dev_err(dev, "Failed to release and setup the VF%u's VSI\n", vf->vf_id);
+		return false;
+	}
+
 	ice_vf_post_vsi_rebuild(vf);
 
 	return true;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 13/13] ice: Cleanup fltr list in case of allocation issues
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
                   ` (10 preceding siblings ...)
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 12/13] ice: handle the VF VSI rebuild failure Tony Nguyen
@ 2021-02-26 21:19 ` Tony Nguyen
  2021-03-09 23:51   ` Brelinski, TonyX
  2021-04-19 19:21 ` [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Jankowski, Konrad0
  12 siblings, 1 reply; 25+ messages in thread
From: Tony Nguyen @ 2021-02-26 21:19 UTC (permalink / raw)
  To: intel-wired-lan

From: Robert Malz <robertx.malz@intel.com>

When ice_remove_vsi_lkup_fltr is called, by calling
ice_add_to_vsi_fltr_list local copy of vsi filter list
is created. If any issues during creation of vsi filter
list occurs it up for the caller to free already
allocated memory. This patch ensures proper memory
deallocation in these cases.

Fixes: 80d144c9ac82 ("ice: Refactor switch rule management structures and functions")
Signed-off-by: Robert Malz <robertx.malz@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_switch.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_switch.c b/drivers/net/ethernet/intel/ice/ice_switch.c
index 387d3f6cd71e..834cbd3f7b31 100644
--- a/drivers/net/ethernet/intel/ice/ice_switch.c
+++ b/drivers/net/ethernet/intel/ice/ice_switch.c
@@ -2624,7 +2624,7 @@ ice_remove_vsi_lkup_fltr(struct ice_hw *hw, u16 vsi_handle,
 					  &remove_list_head);
 	mutex_unlock(rule_lock);
 	if (status)
-		return;
+		goto free_fltr_list;
 
 	switch (lkup) {
 	case ICE_SW_LKUP_MAC:
@@ -2647,6 +2647,7 @@ ice_remove_vsi_lkup_fltr(struct ice_hw *hw, u16 vsi_handle,
 		break;
 	}
 
+free_fltr_list:
 	list_for_each_entry_safe(fm_entry, tmp, &remove_list_head, list_entry) {
 		list_del(&fm_entry->list_entry);
 		devm_kfree(ice_hw_to_dev(hw), fm_entry);
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 05/13] ice: Increase control queue timeout
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 05/13] ice: Increase control queue timeout Tony Nguyen
@ 2021-03-09 23:45   ` Brelinski, TonyX
  0 siblings, 0 replies; 25+ messages in thread
From: Brelinski, TonyX @ 2021-03-09 23:45 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: Friday, February 26, 2021 1:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH net 05/13] ice: Increase control queue
> timeout
> 
> From: Fabio Pricoco <fabio.pricoco@intel.com>
> 
> 250 msec timeout is insufficient for some AQ commands. Advice from FW
> team was to increase the timeout. Increase to 1 second.
> 
> Fixes: 7ec59eeac804 ("ice: Add support for control queues")
> Signed-off-by: Fabio Pricoco <fabio.pricoco@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_controlq.h | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com> A Contingent Worker at Intel



^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 08/13] ice: fix memory allocation call
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 08/13] ice: fix memory allocation call Tony Nguyen
@ 2021-03-09 23:47   ` Brelinski, TonyX
  0 siblings, 0 replies; 25+ messages in thread
From: Brelinski, TonyX @ 2021-03-09 23:47 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: Friday, February 26, 2021 1:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH net 08/13] ice: fix memory allocation call
> 
> From: Bruce Allan <bruce.w.allan@intel.com>
> 
> Fix the order of number of array members and member size parameters in a
> *calloc() call.
> 
> Fixes: b3c3890489f6 ("ice: avoid unnecessary single-member variable-length
> structs")
> Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_common.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com> A Contingent Worker at Intel



^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 10/13] ice: Fix for dereference of NULL pointer
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 10/13] ice: Fix for dereference of NULL pointer Tony Nguyen
@ 2021-03-09 23:49   ` Brelinski, TonyX
  0 siblings, 0 replies; 25+ messages in thread
From: Brelinski, TonyX @ 2021-03-09 23:49 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: Friday, February 26, 2021 1:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH net 10/13] ice: Fix for dereference of NULL
> pointer
> 
> From: Jacek Bu?atek <jacekx.bulatek@intel.com>
> 
> Add handling of allocation fault for ice_vsi_list_map_info.
> 
> Also *fi should not be NULL pointer, it is a reference to raw data field, so
> remove this variable and use the reference directly.
> 
> Fixes: 9daf8208dd4d ("ice: Add support for switch filter programming")
> Signed-off-by: Jacek Bu?atek <jacekx.bulatek@intel.com>
> Co-developed-by: Haiyue Wang <haiyue.wang@intel.com>
> Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_switch.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com> A Contingent Worker at Intel



^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 13/13] ice: Cleanup fltr list in case of allocation issues
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 13/13] ice: Cleanup fltr list in case of allocation issues Tony Nguyen
@ 2021-03-09 23:51   ` Brelinski, TonyX
  0 siblings, 0 replies; 25+ messages in thread
From: Brelinski, TonyX @ 2021-03-09 23:51 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: Friday, February 26, 2021 1:20 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH net 13/13] ice: Cleanup fltr list in case of
> allocation issues
> 
> From: Robert Malz <robertx.malz@intel.com>
> 
> When ice_remove_vsi_lkup_fltr is called, by calling ice_add_to_vsi_fltr_list
> local copy of vsi filter list is created. If any issues during creation of vsi filter
> list occurs it up for the caller to free already allocated memory. This patch
> ensures proper memory deallocation in these cases.
> 
> Fixes: 80d144c9ac82 ("ice: Refactor switch rule management structures and
> functions")
> Signed-off-by: Robert Malz <robertx.malz@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_switch.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com> A Contingent Worker at Intel



^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 03/13] ice: Continue probe on link/PHY errors
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 03/13] ice: Continue probe on link/PHY errors Tony Nguyen
@ 2021-03-10 21:14   ` Brelinski, TonyX
  0 siblings, 0 replies; 25+ messages in thread
From: Brelinski, TonyX @ 2021-03-10 21:14 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: Friday, February 26, 2021 1:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH net 03/13] ice: Continue probe on link/PHY
> errors
> 
> From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
> 
> An incorrect NVM update procedure can result in the driver failing probe.
> In this case, the recommended resolution method is to update the NVM
> using the right procedure. However, if the driver fails probe, the user will not
> be able to update the NVM. So do not fail probe on link/PHY errors.
> 
> Fixes: 1a3571b5938c ("ice: restore PHY settings on media insertion")
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_main.c | 15 ++++++---------
>  1 file changed, 6 insertions(+), 9 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com> A Contingent Worker at Intel



^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 11/13] ice: Use port number instead of PF ID for WoL
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 11/13] ice: Use port number instead of PF ID for WoL Tony Nguyen
@ 2021-03-10 23:06   ` Brelinski, TonyX
  0 siblings, 0 replies; 25+ messages in thread
From: Brelinski, TonyX @ 2021-03-10 23:06 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: Friday, February 26, 2021 1:20 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH net 11/13] ice: Use port number instead of
> PF ID for WoL
> 
> From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
> 
> As per the spec, the WoL control word read from the NVM should be
> interpreted as port numbers, and not PF numbers. So when checking if WoL
> supported, use the port number instead of the PF ID.
> 
> Also, ice_is_wol_supported doesn't really need a pointer to the pf struct, but
> just needs a pointer to the hw instance.
> 
> Fixes: 769c500dcc1e ("ice: Add advanced power mgmt for WoL")
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice.h         | 2 +-
>  drivers/net/ethernet/intel/ice/ice_ethtool.c | 4 ++--
>  drivers/net/ethernet/intel/ice/ice_main.c    | 9 ++++-----
>  3 files changed, 7 insertions(+), 8 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com> A Contingent Worker at Intel



^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 07/13] ice: prevent ice_open and ice_stop during reset
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 07/13] ice: prevent ice_open and ice_stop during reset Tony Nguyen
@ 2021-03-11 22:50   ` Brelinski, TonyX
  0 siblings, 0 replies; 25+ messages in thread
From: Brelinski, TonyX @ 2021-03-11 22:50 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: Friday, February 26, 2021 1:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH net 07/13] ice: prevent ice_open and
> ice_stop during reset
> 
> From: Krzysztof Goreczny <krzysztof.goreczny@intel.com>
> 
> There is a possibility of race between ice_open or ice_stop calls performed
> by OS and reset handling routine both trying to modify VSI resources.
> Observed scenarios:
> - reset handler deallocates memory in ice_vsi_free_arrays and ice_open
>   tries to access it in ice_vsi_cfg_txq leading to driver crash
> - reset handler deallocates memory in ice_vsi_free_arrays and ice_close
>   tries to access it in ice_down leading to driver crash
> - reset handler clears port scheduler topology and sets port state to
>   ICE_SCHED_PORT_STATE_INIT leading to ice_ena_vsi_txq fail in ice_open
> 
> To prevent this additional checks in ice_open and ice_stop are introduced to
> make sure that OS is not allowed to alter VSI config while reset is in progress.
> 
> Fixes: cdedef59deb0 ("ice: Configure VSIs for Tx/Rx")
> Signed-off-by: Krzysztof Goreczny <krzysztof.goreczny@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice.h      |  1 +
>  drivers/net/ethernet/intel/ice/ice_lib.c  |  4 ++--
> drivers/net/ethernet/intel/ice/ice_main.c | 28
> +++++++++++++++++++++++
>  3 files changed, 31 insertions(+), 2 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com> A Contingent Worker at Intel



^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 09/13] ice: remove DCBNL_DEVRESET bit from PF state
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 09/13] ice: remove DCBNL_DEVRESET bit from PF state Tony Nguyen
@ 2021-03-22 23:58   ` Brelinski, TonyX
  0 siblings, 0 replies; 25+ messages in thread
From: Brelinski, TonyX @ 2021-03-22 23:58 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: Friday, February 26, 2021 1:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH net 09/13] ice: remove DCBNL_DEVRESET
> bit from PF state
> 
> From: Dave Ertman <david.m.ertman@intel.com>
> 
> The original purpose of the ICE_DCBNL_DEVRESET was to protect the driver
> during DCBNL device resets.  But, the flow for DCBNL device resets now
> consists of only calls up the stack such as dev_close() and dev_open() that
> will result in NDO calls to the driver.  These will be handled with state changes
> from the stack.  Also, there is a problem of the dev_close and dev_open
> being blocked by checks for reset in progress also using the
> ICE_DCBNL_DEVRESET bit.
> 
> Since the ICE_DCBNL_DEVRESET bit is not necessary for protecting the driver
> from DCBNL device resets and it is actually blocking changes coming form the
> DCBNL interface, remove the bit from the PF state and don't block driver
> function based on DCBNL reset in progress.
> 
> Fixes: b94b013eb626 ("ice: Implement DCBNL support")
> Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice.h        | 1 -
>  drivers/net/ethernet/intel/ice/ice_dcb_nl.c | 2 --
>  drivers/net/ethernet/intel/ice/ice_lib.c    | 1 -
>  3 files changed, 4 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com> A Contingent Worker at Intel



^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 06/13] ice: Recognize 860 as iSCSI port in CEE mode
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 06/13] ice: Recognize 860 as iSCSI port in CEE mode Tony Nguyen
@ 2021-03-23 22:41   ` Brelinski, TonyX
  0 siblings, 0 replies; 25+ messages in thread
From: Brelinski, TonyX @ 2021-03-23 22:41 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: Friday, February 26, 2021 1:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH net 06/13] ice: Recognize 860 as iSCSI port
> in CEE mode
> 
> From: Chinh T Cao <chinh.t.cao@intel.com>
> 
> iSCSI can use both TCP ports 860 and 3260. However, in our current
> implementation, the ice_aqc_opc_get_cee_dcb_cfg (0x0A07) AQ command
> doesn't provide a way to communicate the protocol port number to the AQ's
> caller. Thus, we assume that 3260 is the iSCSI port number at the AQ's caller
> layer.
> 
> Rely on the dcbx-willing mode, desired QoS and remote QoS configuration to
> determine which port number that iSCSI will use.
> 
> Fixes: 0ebd3ff13cca ("ice: Add code for DCB initialization part 2/4")
> Signed-off-by: Chinh T Cao <chinh.t.cao@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_dcb.c  | 38 +++++++++++++++++------
> drivers/net/ethernet/intel/ice/ice_type.h |  1 +
>  2 files changed, 30 insertions(+), 9 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com> A Contingent Worker at Intel



^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl
  2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
                   ` (11 preceding siblings ...)
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 13/13] ice: Cleanup fltr list in case of allocation issues Tony Nguyen
@ 2021-04-19 19:21 ` Jankowski, Konrad0
  12 siblings, 0 replies; 25+ messages in thread
From: Jankowski, Konrad0 @ 2021-04-19 19:21 UTC (permalink / raw)
  To: intel-wired-lan



> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: pi?tek, 26 lutego 2021 22:19
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request
> more/less queues via virtchnl
> 
> From: Brett Creeley <brett.creeley@intel.com>
> 
> Commit 12bb018c538c ("ice: Refactor VF reset") caused a regression that
> removes the ability for a VF to request a different amount of queues via
> VIRTCHNL_OP_REQUEST_QUEUES. This prevents VF drivers to either
> increase or decrease the number of queue pairs they are allocated. Fix this
> by using the variable vf->num_req_qs when determining the vf->num_vf_qs
> during VF VSI creation.
> 
> Fixes: 12bb018c538c ("ice: Refactor VF reset")
> Signed-off-by: Brett Creeley <brett.creeley@intel.com>
> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_lib.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c
> b/drivers/net/ethernet/intel/ice/ice_lib.c
> index 8d4e2ad4328d..116f8556f4a8 100644
> --- a/drivers/net/ethernet/intel/ice/ice_lib.c
> +++ b/drivers/net/ethernet/intel/ice/ice_lib.c
> @@ -192,6 +192,8 @@ static void ice_vsi_set_num_qs(struct ice_vsi *vsi,
> u16 vf_id)
>  		break;
>  	case ICE_VSI_VF:
>  		vf = &pf->vf[vsi->vf_id];
> +		if (vf->num_req_qs)
> +			vf->num_vf_qs = vf->num_req_qs;
>  		vsi->alloc_txq = vf->num_vf_qs;
>  		vsi->alloc_rxq = vf->num_vf_qs;
>  		/* pf->num_msix_per_vf includes (VF miscellaneous vector
> +

Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 12/13] ice: handle the VF VSI rebuild failure
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 12/13] ice: handle the VF VSI rebuild failure Tony Nguyen
@ 2021-04-21 19:17   ` Jankowski, Konrad0
  0 siblings, 0 replies; 25+ messages in thread
From: Jankowski, Konrad0 @ 2021-04-21 19:17 UTC (permalink / raw)
  To: intel-wired-lan



> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: pi?tek, 26 lutego 2021 22:20
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH net 12/13] ice: handle the VF VSI rebuild
> failure
> 
> From: Haiyue Wang <haiyue.wang@intel.com>
> 
> VSI rebuild can be failed for LAN queue config, then the VF's VSI will be NULL,
> the VF reset should be stopped with the VF entering into the disable state.
> 
> Fixes: 12bb018c538c ("ice: Refactor VF reset")
> Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
> b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
> index 5a581e759111..de438aba29cd 100644
> --- a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
> +++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
> @@ -1377,7 +1377,12 @@ bool ice_reset_vf(struct ice_vf *vf, bool is_vflr)
>  	}
> 
>  	ice_vf_pre_vsi_rebuild(vf);
> -	ice_vf_rebuild_vsi_with_release(vf);
> +
> +	if (ice_vf_rebuild_vsi_with_release(vf)) {
> +		dev_err(dev, "Failed to release and setup the VF%u's VSI\n",
> vf->vf_id);
> +		return false;
> +	}
> +
>  	ice_vf_post_vsi_rebuild(vf);
> 
>  	return true;

Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Intel-wired-lan] [PATCH net 02/13] ice: Fix VFR issues for AVF drivers that expect ATQLEN cleared
  2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 02/13] ice: Fix VFR issues for AVF drivers that expect ATQLEN cleared Tony Nguyen
@ 2021-04-21 19:18   ` Jankowski, Konrad0
  0 siblings, 0 replies; 25+ messages in thread
From: Jankowski, Konrad0 @ 2021-04-21 19:18 UTC (permalink / raw)
  To: intel-wired-lan



> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: pi?tek, 26 lutego 2021 22:19
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH net 02/13] ice: Fix VFR issues for AVF
> drivers that expect ATQLEN cleared
> 
> From: Brett Creeley <brett.creeley@intel.com>
> 
> Some AVF drivers expect the VF_MBX_ATQLEN register to be cleared for any
> type of VFR/VFLR. Fix this by clearing the VF_MBX_ATQLEN register at the
> same time as VF_MBX_ARQLEN.
> 
> Fixes: 82ba01282cf8 ("ice: clear VF ARQLEN register on reset")
> Signed-off-by: Brett Creeley <brett.creeley@intel.com>
> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_hw_autogen.h  |  1 +
> drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c | 12 +++++++-----
>  2 files changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> index 093a1818a392..1998821896c0 100644
> --- a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> +++ b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> @@ -31,6 +31,7 @@
>  #define PF_FW_ATQLEN_ATQOVFL_M			BIT(29)
>  #define PF_FW_ATQLEN_ATQCRIT_M			BIT(30)
>  #define VF_MBX_ARQLEN(_VF)			(0x0022BC00 + ((_VF)
> * 4))
> +#define VF_MBX_ATQLEN(_VF)			(0x0022A800 + ((_VF)
> * 4))
>  #define PF_FW_ATQLEN_ATQENABLE_M		BIT(31)
>  #define PF_FW_ATQT				0x00080400
>  #define PF_MBX_ARQBAH				0x0022E400
> diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
> b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
> index 1f38a8d0c525..0f2a4d48574e 100644
> --- a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
> +++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
> @@ -435,13 +435,15 @@ static void ice_trigger_vf_reset(struct ice_vf *vf,
> bool is_vflr, bool is_pfr)
>  	 */
>  	clear_bit(ICE_VF_STATE_INIT, vf->vf_states);
> 
> -	/* VF_MBX_ARQLEN is cleared by PFR, so the driver needs to clear it
> -	 * in the case of VFR. If this is done for PFR, it can mess up VF
> -	 * resets because the VF driver may already have started cleanup
> -	 * by the time we get here.
> +	/* VF_MBX_ARQLEN and VF_MBX_ATQLEN are cleared by PFR, so
> the driver
> +	 * needs to clear them in the case of VFR/VFLR. If this is done for
> +	 * PFR, it can mess up VF resets because the VF driver may already
> +	 * have started cleanup by the time we get here.
>  	 */
> -	if (!is_pfr)
> +	if (!is_pfr) {
>  		wr32(hw, VF_MBX_ARQLEN(vf->vf_id), 0);
> +		wr32(hw, VF_MBX_ATQLEN(vf->vf_id), 0);
> +	}
> 
>  	/* In the case of a VFLR, the HW has already reset the VF and we
>  	 * just need to clean up, so don't hit the VFRTRIG register.

Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2021-04-21 19:18 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-26 21:19 [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Tony Nguyen
2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 02/13] ice: Fix VFR issues for AVF drivers that expect ATQLEN cleared Tony Nguyen
2021-04-21 19:18   ` Jankowski, Konrad0
2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 03/13] ice: Continue probe on link/PHY errors Tony Nguyen
2021-03-10 21:14   ` Brelinski, TonyX
2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 04/13] ice: Fix VF true promiscuous mode Tony Nguyen
2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 05/13] ice: Increase control queue timeout Tony Nguyen
2021-03-09 23:45   ` Brelinski, TonyX
2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 06/13] ice: Recognize 860 as iSCSI port in CEE mode Tony Nguyen
2021-03-23 22:41   ` Brelinski, TonyX
2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 07/13] ice: prevent ice_open and ice_stop during reset Tony Nguyen
2021-03-11 22:50   ` Brelinski, TonyX
2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 08/13] ice: fix memory allocation call Tony Nguyen
2021-03-09 23:47   ` Brelinski, TonyX
2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 09/13] ice: remove DCBNL_DEVRESET bit from PF state Tony Nguyen
2021-03-22 23:58   ` Brelinski, TonyX
2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 10/13] ice: Fix for dereference of NULL pointer Tony Nguyen
2021-03-09 23:49   ` Brelinski, TonyX
2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 11/13] ice: Use port number instead of PF ID for WoL Tony Nguyen
2021-03-10 23:06   ` Brelinski, TonyX
2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 12/13] ice: handle the VF VSI rebuild failure Tony Nguyen
2021-04-21 19:17   ` Jankowski, Konrad0
2021-02-26 21:19 ` [Intel-wired-lan] [PATCH net 13/13] ice: Cleanup fltr list in case of allocation issues Tony Nguyen
2021-03-09 23:51   ` Brelinski, TonyX
2021-04-19 19:21 ` [Intel-wired-lan] [PATCH net 01/13] ice: Fix allowing VF to request more/less queues via virtchnl Jankowski, Konrad0

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.