All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-wired-lan] [PATCH 0/7] ice bug fixes and minor implementation updates
@ 2018-10-18 15:37 Anirudh Venkataramanan
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 1/7] ice: Make ice_msix_clean_rings static Anirudh Venkataramanan
                   ` (6 more replies)
  0 siblings, 7 replies; 18+ messages in thread
From: Anirudh Venkataramanan @ 2018-10-18 15:37 UTC (permalink / raw)
  To: intel-wired-lan

Anirudh Venkataramanan (7):
  ice: Make ice_msix_clean_rings static
  ice: Change device ID define names to align with branding string
  ice: Update expected FW version
  ice: Use capability count returned by the firmware
  ice: Introduce ice_dev_onetime_setup
  ice: Allocate VF interrupts and set queue map
  ice: Poll for link status change

 drivers/net/ethernet/intel/ice/ice_common.c      |  52 ++++------
 drivers/net/ethernet/intel/ice/ice_common.h      |   9 +-
 drivers/net/ethernet/intel/ice/ice_controlq.h    |   5 +-
 drivers/net/ethernet/intel/ice/ice_devids.h      |   6 +-
 drivers/net/ethernet/intel/ice/ice_hw_autogen.h  |   8 ++
 drivers/net/ethernet/intel/ice/ice_lib.c         |   3 +-
 drivers/net/ethernet/intel/ice/ice_lib.h         |   1 -
 drivers/net/ethernet/intel/ice/ice_main.c        | 116 ++++++-----------------
 drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c |  15 ++-
 9 files changed, 77 insertions(+), 138 deletions(-)

-- 
2.14.3


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

* [Intel-wired-lan] [PATCH 1/7] ice: Make ice_msix_clean_rings static
  2018-10-18 15:37 [Intel-wired-lan] [PATCH 0/7] ice bug fixes and minor implementation updates Anirudh Venkataramanan
@ 2018-10-18 15:37 ` Anirudh Venkataramanan
  2018-10-18 21:43   ` Bowers, AndrewX
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 2/7] ice: Change device ID define names to align with branding string Anirudh Venkataramanan
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Anirudh Venkataramanan @ 2018-10-18 15:37 UTC (permalink / raw)
  To: intel-wired-lan

commit 158a08a694c4e ("ice: remove ndo_poll_controller") removed
ice_netpoll and introduced a namespace warning for ice_msix_clean_rings.
Fix the namespace warning by making ice_msix_clean_rings static.

Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_lib.c | 2 +-
 drivers/net/ethernet/intel/ice/ice_lib.h | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
index 49f1940772ed..e750702bcdce 100644
--- a/drivers/net/ethernet/intel/ice/ice_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_lib.c
@@ -433,7 +433,7 @@ int ice_vsi_clear(struct ice_vsi *vsi)
  * @irq: interrupt number
  * @data: pointer to a q_vector
  */
-irqreturn_t ice_msix_clean_rings(int __always_unused irq, void *data)
+static irqreturn_t ice_msix_clean_rings(int __always_unused irq, void *data)
 {
 	struct ice_q_vector *q_vector = (struct ice_q_vector *)data;
 
diff --git a/drivers/net/ethernet/intel/ice/ice_lib.h b/drivers/net/ethernet/intel/ice/ice_lib.h
index 677db40338f5..3831b4f0960a 100644
--- a/drivers/net/ethernet/intel/ice/ice_lib.h
+++ b/drivers/net/ethernet/intel/ice/ice_lib.h
@@ -73,5 +73,4 @@ int ice_vsi_cfg_tc(struct ice_vsi *vsi, u8 ena_tc);
 
 int ice_vsi_manage_rss_lut(struct ice_vsi *vsi, bool ena);
 
-irqreturn_t ice_msix_clean_rings(int __always_unused irq, void *data);
 #endif /* !_ICE_LIB_H_ */
-- 
2.14.3


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

* [Intel-wired-lan] [PATCH 2/7] ice: Change device ID define names to align with branding string
  2018-10-18 15:37 [Intel-wired-lan] [PATCH 0/7] ice bug fixes and minor implementation updates Anirudh Venkataramanan
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 1/7] ice: Make ice_msix_clean_rings static Anirudh Venkataramanan
@ 2018-10-18 15:37 ` Anirudh Venkataramanan
  2018-10-18 21:43   ` Bowers, AndrewX
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 3/7] ice: Update expected FW version Anirudh Venkataramanan
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Anirudh Venkataramanan @ 2018-10-18 15:37 UTC (permalink / raw)
  To: intel-wired-lan

Basically remove references to C810 and use E810C (from the branding
string) instead.

Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_devids.h | 6 +++---
 drivers/net/ethernet/intel/ice/ice_main.c   | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_devids.h b/drivers/net/ethernet/intel/ice/ice_devids.h
index a6f0a5c0c305..f8d5c661d0ba 100644
--- a/drivers/net/ethernet/intel/ice/ice_devids.h
+++ b/drivers/net/ethernet/intel/ice/ice_devids.h
@@ -6,10 +6,10 @@
 
 /* Device IDs */
 /* Intel(R) Ethernet Controller E810-C for backplane */
-#define ICE_DEV_ID_C810_BACKPLANE	0x1591
+#define ICE_DEV_ID_E810C_BACKPLANE	0x1591
 /* Intel(R) Ethernet Controller E810-C for QSFP */
-#define ICE_DEV_ID_C810_QSFP		0x1592
+#define ICE_DEV_ID_E810C_QSFP		0x1592
 /* Intel(R) Ethernet Controller E810-C for SFP */
-#define ICE_DEV_ID_C810_SFP		0x1593
+#define ICE_DEV_ID_E810C_SFP		0x1593
 
 #endif /* _ICE_DEVIDS_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 8f61b375e768..0084b7290b2b 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -2271,9 +2271,9 @@ static void ice_remove(struct pci_dev *pdev)
  *   Class, Class Mask, private data (not used) }
  */
 static const struct pci_device_id ice_pci_tbl[] = {
-	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_C810_BACKPLANE), 0 },
-	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_C810_QSFP), 0 },
-	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_C810_SFP), 0 },
+	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E810C_BACKPLANE), 0 },
+	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E810C_QSFP), 0 },
+	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E810C_SFP), 0 },
 	/* required last entry */
 	{ 0, }
 };
-- 
2.14.3


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

* [Intel-wired-lan] [PATCH 3/7] ice: Update expected FW version
  2018-10-18 15:37 [Intel-wired-lan] [PATCH 0/7] ice bug fixes and minor implementation updates Anirudh Venkataramanan
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 1/7] ice: Make ice_msix_clean_rings static Anirudh Venkataramanan
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 2/7] ice: Change device ID define names to align with branding string Anirudh Venkataramanan
@ 2018-10-18 15:37 ` Anirudh Venkataramanan
  2018-10-18 21:43   ` Bowers, AndrewX
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 4/7] ice: Use capability count returned by the firmware Anirudh Venkataramanan
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Anirudh Venkataramanan @ 2018-10-18 15:37 UTC (permalink / raw)
  To: intel-wired-lan

Update to the current firmware major and minor version which are
1 and 3 respectively.

Also remove an empty comment line.

Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_controlq.h | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_controlq.h b/drivers/net/ethernet/intel/ice/ice_controlq.h
index 437f832fd7c4..0038a4109c99 100644
--- a/drivers/net/ethernet/intel/ice/ice_controlq.h
+++ b/drivers/net/ethernet/intel/ice/ice_controlq.h
@@ -19,11 +19,10 @@
 
 /* Defines that help manage the driver vs FW API checks.
  * Take a look at ice_aq_ver_check in ice_controlq.c for actual usage.
- *
  */
 #define EXP_FW_API_VER_BRANCH		0x00
-#define EXP_FW_API_VER_MAJOR		0x00
-#define EXP_FW_API_VER_MINOR		0x01
+#define EXP_FW_API_VER_MAJOR		0x01
+#define EXP_FW_API_VER_MINOR		0x03
 
 /* Different control queue types: These are mainly for SW consumption. */
 enum ice_ctl_q {
-- 
2.14.3


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

* [Intel-wired-lan] [PATCH 4/7] ice: Use capability count returned by the firmware
  2018-10-18 15:37 [Intel-wired-lan] [PATCH 0/7] ice bug fixes and minor implementation updates Anirudh Venkataramanan
                   ` (2 preceding siblings ...)
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 3/7] ice: Update expected FW version Anirudh Venkataramanan
@ 2018-10-18 15:37 ` Anirudh Venkataramanan
  2018-10-18 21:44   ` Bowers, AndrewX
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 5/7] ice: Introduce ice_dev_onetime_setup Anirudh Venkataramanan
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Anirudh Venkataramanan @ 2018-10-18 15:37 UTC (permalink / raw)
  To: intel-wired-lan

The firmware now returns the capability count in the command buffer.
Use it.

Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_common.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c
index c52f450f2c0d..78df54b25bf1 100644
--- a/drivers/net/ethernet/intel/ice/ice_common.c
+++ b/drivers/net/ethernet/intel/ice/ice_common.c
@@ -1531,9 +1531,7 @@ ice_aq_discover_caps(struct ice_hw *hw, void *buf, u16 buf_size, u32 *cap_count,
 	if (!status)
 		ice_parse_caps(hw, buf, le32_to_cpu(cmd->count), opc);
 	else if (hw->adminq.sq_last_status == ICE_AQ_RC_ENOMEM)
-		*cap_count =
-			DIV_ROUND_UP(le16_to_cpu(desc.datalen),
-				     sizeof(struct ice_aqc_list_caps_elem));
+		*cap_count = le32_to_cpu(cmd->count);
 	return status;
 }
 
-- 
2.14.3


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

* [Intel-wired-lan] [PATCH 5/7] ice: Introduce ice_dev_onetime_setup
  2018-10-18 15:37 [Intel-wired-lan] [PATCH 0/7] ice bug fixes and minor implementation updates Anirudh Venkataramanan
                   ` (3 preceding siblings ...)
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 4/7] ice: Use capability count returned by the firmware Anirudh Venkataramanan
@ 2018-10-18 15:37 ` Anirudh Venkataramanan
  2018-10-18 16:06   ` Shannon Nelson
  2018-10-18 21:44   ` Bowers, AndrewX
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 6/7] ice: Allocate VF interrupts and set queue map Anirudh Venkataramanan
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 7/7] ice: Poll for link status change Anirudh Venkataramanan
  6 siblings, 2 replies; 18+ messages in thread
From: Anirudh Venkataramanan @ 2018-10-18 15:37 UTC (permalink / raw)
  To: intel-wired-lan

ice_dev_onetime_setup contains a couple of driver workarounds for current
firmware limitations. These workarounds are expected to go away once
these limitations are fixed in the firmware.

Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_common.c     | 19 +++++++++++++++++++
 drivers/net/ethernet/intel/ice/ice_common.h     |  3 +++
 drivers/net/ethernet/intel/ice/ice_hw_autogen.h |  2 ++
 drivers/net/ethernet/intel/ice/ice_lib.c        |  1 +
 4 files changed, 25 insertions(+)

diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c
index 78df54b25bf1..5a91a9087d1e 100644
--- a/drivers/net/ethernet/intel/ice/ice_common.c
+++ b/drivers/net/ethernet/intel/ice/ice_common.c
@@ -42,6 +42,23 @@ static enum ice_status ice_set_mac_type(struct ice_hw *hw)
 	return 0;
 }
 
+/**
+ * ice_dev_onetime_setup - Temporary HW/FW workarounds
+ * @hw: pointer to the HW structure
+ *
+ * This function provides temporary workarounds for certain issues
+ * that are expected to be fixed in the HW/FW.
+ */
+void ice_dev_onetime_setup(struct ice_hw *hw)
+{
+	/* configure Rx - set non pxe mode */
+	wr32(hw, GLLAN_RCTL_0, 0x1);
+
+#define MBX_PF_VT_PFALLOC	0x00231E80
+	/* set VFs per PF */
+	wr32(hw, MBX_PF_VT_PFALLOC, rd32(hw, PF_VT_PFALLOC_HIF));
+}
+
 /**
  * ice_clear_pf_cfg - Clear PF configuration
  * @hw: pointer to the hardware structure
@@ -740,6 +757,8 @@ enum ice_status ice_init_hw(struct ice_hw *hw)
 	if (status)
 		goto err_unroll_sched;
 
+	ice_dev_onetime_setup(hw);
+
 	/* Get MAC information */
 	/* A single port can report up to two (LAN and WoL) addresses */
 	mac_buf = devm_kcalloc(ice_hw_to_dev(hw), 2,
diff --git a/drivers/net/ethernet/intel/ice/ice_common.h b/drivers/net/ethernet/intel/ice/ice_common.h
index 1900681289a4..876347e32b6f 100644
--- a/drivers/net/ethernet/intel/ice/ice_common.h
+++ b/drivers/net/ethernet/intel/ice/ice_common.h
@@ -34,6 +34,9 @@ ice_sq_send_cmd(struct ice_hw *hw, struct ice_ctl_q_info *cq,
 		struct ice_sq_cd *cd);
 void ice_clear_pxe_mode(struct ice_hw *hw);
 enum ice_status ice_get_caps(struct ice_hw *hw);
+
+void ice_dev_onetime_setup(struct ice_hw *hw);
+
 enum ice_status
 ice_write_rxq_ctx(struct ice_hw *hw, struct ice_rlan_ctx *rlan_ctx,
 		  u32 rxq_index);
diff --git a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
index a6679a9bfd3a..228afcad6fc3 100644
--- a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
+++ b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
@@ -157,6 +157,7 @@
 #define VPINT_ALLOC_LAST_S			12
 #define VPINT_ALLOC_LAST_M			ICE_M(0x7FF, 12)
 #define VPINT_ALLOC_VALID_M			BIT(31)
+#define GLLAN_RCTL_0				0x002941F8
 #define QRX_CONTEXT(_i, _QRX)			(0x00280000 + ((_i) * 8192 + (_QRX) * 4))
 #define QRX_CTRL(_QRX)				(0x00120000 + ((_QRX) * 4))
 #define QRX_CTRL_MAX_INDEX			2047
@@ -320,6 +321,7 @@
 #define GLV_UPRCL(_i)				(0x003B2000 + ((_i) * 8))
 #define GLV_UPTCH(_i)				(0x0030A004 + ((_i) * 8))
 #define GLV_UPTCL(_i)				(0x0030A000 + ((_i) * 8))
+#define PF_VT_PFALLOC_HIF			0x0009DD80
 #define VSIQF_HKEY_MAX_INDEX			12
 #define VSIQF_HLUT_MAX_INDEX			15
 #define VFINT_DYN_CTLN(_i)			(0x00003800 + ((_i) * 4))
diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
index e750702bcdce..5bacad01f0c9 100644
--- a/drivers/net/ethernet/intel/ice/ice_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_lib.c
@@ -2529,6 +2529,7 @@ int ice_vsi_rebuild(struct ice_vsi *vsi)
 	vsi->hw_base_vector = 0;
 	ice_vsi_clear_rings(vsi);
 	ice_vsi_free_arrays(vsi, false);
+	ice_dev_onetime_setup(&vsi->back->hw);
 	ice_vsi_set_num_qs(vsi);
 
 	/* Initialize VSI struct elements and create VSI in FW */
-- 
2.14.3


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

* [Intel-wired-lan] [PATCH 6/7] ice: Allocate VF interrupts and set queue map
  2018-10-18 15:37 [Intel-wired-lan] [PATCH 0/7] ice bug fixes and minor implementation updates Anirudh Venkataramanan
                   ` (4 preceding siblings ...)
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 5/7] ice: Introduce ice_dev_onetime_setup Anirudh Venkataramanan
@ 2018-10-18 15:37 ` Anirudh Venkataramanan
  2018-10-18 21:45   ` Bowers, AndrewX
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 7/7] ice: Poll for link status change Anirudh Venkataramanan
  6 siblings, 1 reply; 18+ messages in thread
From: Anirudh Venkataramanan @ 2018-10-18 15:37 UTC (permalink / raw)
  To: intel-wired-lan

Allocate VF interrupts using VPINT_ALLOC_PCI. Multiple interrupts are
specified as a range from "first" to "last".

Also, according to the spec, the queue mapping for a VF needs to be set
in both contig and scatter queue modes. So make this change as well.

Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_hw_autogen.h  |  6 ++++++
 drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c | 15 +++++++++++----
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
index 228afcad6fc3..5fdea6ec7675 100644
--- a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
+++ b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
@@ -157,6 +157,12 @@
 #define VPINT_ALLOC_LAST_S			12
 #define VPINT_ALLOC_LAST_M			ICE_M(0x7FF, 12)
 #define VPINT_ALLOC_VALID_M			BIT(31)
+#define VPINT_ALLOC_PCI(_VF)			(0x0009D000 + ((_VF) * 4))
+#define VPINT_ALLOC_PCI_FIRST_S			0
+#define VPINT_ALLOC_PCI_FIRST_M			ICE_M(0x7FF, 0)
+#define VPINT_ALLOC_PCI_LAST_S			12
+#define VPINT_ALLOC_PCI_LAST_M			ICE_M(0x7FF, 12)
+#define VPINT_ALLOC_PCI_VALID_M			BIT(31)
 #define GLLAN_RCTL_0				0x002941F8
 #define QRX_CONTEXT(_i, _QRX)			(0x00280000 + ((_i) * 8192 + (_QRX) * 4))
 #define QRX_CTRL(_QRX)				(0x00120000 + ((_QRX) * 4))
diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
index c25e486706f3..45f10f8f01dc 100644
--- a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
@@ -173,6 +173,7 @@ static void ice_dis_vf_mappings(struct ice_vf *vf)
 	vsi = pf->vsi[vf->lan_vsi_idx];
 
 	wr32(hw, VPINT_ALLOC(vf->vf_id), 0);
+	wr32(hw, VPINT_ALLOC_PCI(vf->vf_id), 0);
 
 	first = vf->first_vector_idx;
 	last = first + pf->num_vf_msix - 1;
@@ -519,6 +520,10 @@ static void ice_ena_vf_mappings(struct ice_vf *vf)
 	       VPINT_ALLOC_VALID_M);
 	wr32(hw, VPINT_ALLOC(vf->vf_id), reg);
 
+	reg = (((first << VPINT_ALLOC_PCI_FIRST_S) & VPINT_ALLOC_PCI_FIRST_M) |
+	       ((last << VPINT_ALLOC_PCI_LAST_S) & VPINT_ALLOC_PCI_LAST_M) |
+	       VPINT_ALLOC_PCI_VALID_M);
+	wr32(hw, VPINT_ALLOC_PCI(vf->vf_id), reg);
 	/* map the interrupts to its functions */
 	for (v = first; v <= last; v++) {
 		reg = (((abs_vf_id << GLINT_VECT2FUNC_VF_NUM_S) &
@@ -528,10 +533,11 @@ static void ice_ena_vf_mappings(struct ice_vf *vf)
 		wr32(hw, GLINT_VECT2FUNC(v), reg);
 	}
 
+	/* set regardless of mapping mode */
+	wr32(hw, VPLAN_TXQ_MAPENA(vf->vf_id), VPLAN_TXQ_MAPENA_TX_ENA_M);
+
 	/* VF Tx queues allocation */
 	if (vsi->tx_mapping_mode == ICE_VSI_MAP_CONTIG) {
-		wr32(hw, VPLAN_TXQ_MAPENA(vf->vf_id),
-		     VPLAN_TXQ_MAPENA_TX_ENA_M);
 		/* set the VF PF Tx queue range
 		 * VFNUMQ value should be set to (number of queues - 1). A value
 		 * of 0 means 1 queue and a value of 255 means 256 queues
@@ -546,10 +552,11 @@ static void ice_ena_vf_mappings(struct ice_vf *vf)
 			"Scattered mode for VF Tx queues is not yet implemented\n");
 	}
 
+	/* set regardless of mapping mode */
+	wr32(hw, VPLAN_RXQ_MAPENA(vf->vf_id), VPLAN_RXQ_MAPENA_RX_ENA_M);
+
 	/* VF Rx queues allocation */
 	if (vsi->rx_mapping_mode == ICE_VSI_MAP_CONTIG) {
-		wr32(hw, VPLAN_RXQ_MAPENA(vf->vf_id),
-		     VPLAN_RXQ_MAPENA_RX_ENA_M);
 		/* set the VF PF Rx queue range
 		 * VFNUMQ value should be set to (number of queues - 1). A value
 		 * of 0 means 1 queue and a value of 255 means 256 queues
-- 
2.14.3


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

* [Intel-wired-lan] [PATCH 7/7] ice: Poll for link status change
  2018-10-18 15:37 [Intel-wired-lan] [PATCH 0/7] ice bug fixes and minor implementation updates Anirudh Venkataramanan
                   ` (5 preceding siblings ...)
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 6/7] ice: Allocate VF interrupts and set queue map Anirudh Venkataramanan
@ 2018-10-18 15:37 ` Anirudh Venkataramanan
  2018-10-18 21:45   ` Bowers, AndrewX
  6 siblings, 1 reply; 18+ messages in thread
From: Anirudh Venkataramanan @ 2018-10-18 15:37 UTC (permalink / raw)
  To: intel-wired-lan

When the physical link goes up or down, the driver is supposed to
receive a link status event (LSE). The driver currently has the code
to handle LSEs but there is no firmware support for this feature yet.
So this patch adds the ability for the driver to poll for link status
changes. The polling itself is done in ice_watchdog_subtask.

For namespace cleanliness, this patch also removes code that handles
LSE. This code will be reintroduced once the feature is officially
supported.

Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_common.c |  29 +-------
 drivers/net/ethernet/intel/ice/ice_common.h |   6 --
 drivers/net/ethernet/intel/ice/ice_main.c   | 110 ++++++----------------------
 3 files changed, 25 insertions(+), 120 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c
index 5a91a9087d1e..8cd6a2401fd9 100644
--- a/drivers/net/ethernet/intel/ice/ice_common.c
+++ b/drivers/net/ethernet/intel/ice/ice_common.c
@@ -235,7 +235,7 @@ static enum ice_media_type ice_get_media_type(struct ice_port_info *pi)
  *
  * Get Link Status (0x607). Returns the link status of the adapter.
  */
-enum ice_status
+static enum ice_status
 ice_aq_get_link_info(struct ice_port_info *pi, bool ena_lse,
 		     struct ice_link_status *link, struct ice_sq_cd *cd)
 {
@@ -2004,33 +2004,6 @@ ice_aq_set_link_restart_an(struct ice_port_info *pi, bool ena_link,
 	return ice_aq_send_cmd(pi->hw, &desc, NULL, 0, cd);
 }
 
-/**
- * ice_aq_set_event_mask
- * @hw: pointer to the hw struct
- * @port_num: port number of the physical function
- * @mask: event mask to be set
- * @cd: pointer to command details structure or NULL
- *
- * Set event mask (0x0613)
- */
-enum ice_status
-ice_aq_set_event_mask(struct ice_hw *hw, u8 port_num, u16 mask,
-		      struct ice_sq_cd *cd)
-{
-	struct ice_aqc_set_event_mask *cmd;
-	struct ice_aq_desc desc;
-
-	cmd = &desc.params.set_event_mask;
-
-	ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_set_event_mask);
-
-	cmd->lport_num = port_num;
-
-	cmd->event_mask = cpu_to_le16(mask);
-
-	return ice_aq_send_cmd(hw, &desc, NULL, 0, cd);
-}
-
 /**
  * __ice_aq_get_set_rss_lut
  * @hw: pointer to the hardware structure
diff --git a/drivers/net/ethernet/intel/ice/ice_common.h b/drivers/net/ethernet/intel/ice/ice_common.h
index 876347e32b6f..cf760c24a6aa 100644
--- a/drivers/net/ethernet/intel/ice/ice_common.h
+++ b/drivers/net/ethernet/intel/ice/ice_common.h
@@ -86,12 +86,6 @@ enum ice_status
 ice_aq_set_link_restart_an(struct ice_port_info *pi, bool ena_link,
 			   struct ice_sq_cd *cd);
 enum ice_status
-ice_aq_get_link_info(struct ice_port_info *pi, bool ena_lse,
-		     struct ice_link_status *link, struct ice_sq_cd *cd);
-enum ice_status
-ice_aq_set_event_mask(struct ice_hw *hw, u8 port_num, u16 mask,
-		      struct ice_sq_cd *cd);
-enum ice_status
 ice_dis_vsi_txq(struct ice_port_info *pi, u8 num_queues, u16 *q_ids,
 		u32 *q_teids, enum ice_disq_rst_src rst_src, u16 vmvf_num,
 		struct ice_sq_cd *cmd_details);
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 0084b7290b2b..05993451147a 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -456,35 +456,6 @@ static void ice_reset_subtask(struct ice_pf *pf)
 	}
 }
 
-/**
- * ice_watchdog_subtask - periodic tasks not using event driven scheduling
- * @pf: board private structure
- */
-static void ice_watchdog_subtask(struct ice_pf *pf)
-{
-	int i;
-
-	/* if interface is down do nothing */
-	if (test_bit(__ICE_DOWN, pf->state) ||
-	    test_bit(__ICE_CFG_BUSY, pf->state))
-		return;
-
-	/* make sure we don't do these things too often */
-	if (time_before(jiffies,
-			pf->serv_tmr_prev + pf->serv_tmr_period))
-		return;
-
-	pf->serv_tmr_prev = jiffies;
-
-	/* Update the stats for active netdevs so the network stack
-	 * can look at updated numbers whenever it cares to
-	 */
-	ice_update_pf_stats(pf);
-	for (i = 0; i < pf->num_alloc_vsi; i++)
-		if (pf->vsi[i] && pf->vsi[i]->netdev)
-			ice_update_vsi_stats(pf->vsi[i]);
-}
-
 /**
  * ice_print_link_msg - print link up or down message
  * @vsi: the VSI whose link status is being queried
@@ -554,36 +525,6 @@ void ice_print_link_msg(struct ice_vsi *vsi, bool isup)
 		    speed, fc);
 }
 
-/**
- * ice_init_link_events - enable/initialize link events
- * @pi: pointer to the port_info instance
- *
- * Returns -EIO on failure, 0 on success
- */
-static int ice_init_link_events(struct ice_port_info *pi)
-{
-	u16 mask;
-
-	mask = ~((u16)(ICE_AQ_LINK_EVENT_UPDOWN | ICE_AQ_LINK_EVENT_MEDIA_NA |
-		       ICE_AQ_LINK_EVENT_MODULE_QUAL_FAIL));
-
-	if (ice_aq_set_event_mask(pi->hw, pi->lport, mask, NULL)) {
-		dev_dbg(ice_hw_to_dev(pi->hw),
-			"Failed to set link event mask for port %d\n",
-			pi->lport);
-		return -EIO;
-	}
-
-	if (ice_aq_get_link_info(pi, true, NULL, NULL)) {
-		dev_dbg(ice_hw_to_dev(pi->hw),
-			"Failed to enable link events for port %d\n",
-			pi->lport);
-		return -EIO;
-	}
-
-	return 0;
-}
-
 /**
  * ice_vsi_link_event - update the vsi's netdev
  * @vsi: the vsi on which the link event occurred
@@ -671,27 +612,35 @@ ice_link_event(struct ice_pf *pf, struct ice_port_info *pi)
 }
 
 /**
- * ice_handle_link_event - handle link event via ARQ
- * @pf: pf that the link event is associated with
- *
- * Return -EINVAL if port_info is null
- * Return status on succes
+ * ice_watchdog_subtask - periodic tasks not using event driven scheduling
+ * @pf: board private structure
  */
-static int ice_handle_link_event(struct ice_pf *pf)
+static void ice_watchdog_subtask(struct ice_pf *pf)
 {
-	struct ice_port_info *port_info;
-	int status;
+	int i;
 
-	port_info = pf->hw.port_info;
-	if (!port_info)
-		return -EINVAL;
+	/* if interface is down do nothing */
+	if (test_bit(__ICE_DOWN, pf->state) ||
+	    test_bit(__ICE_CFG_BUSY, pf->state))
+		return;
 
-	status = ice_link_event(pf, port_info);
-	if (status)
-		dev_dbg(&pf->pdev->dev,
-			"Could not process link event, error %d\n", status);
+	/* make sure we don't do these things too often */
+	if (time_before(jiffies,
+			pf->serv_tmr_prev + pf->serv_tmr_period))
+		return;
 
-	return status;
+	pf->serv_tmr_prev = jiffies;
+
+	if (ice_link_event(pf, pf->hw.port_info))
+		dev_dbg(&pf->pdev->dev, "ice_link_event failed\n");
+
+	/* Update the stats for active netdevs so the network stack
+	 * can look at updated numbers whenever it cares to
+	 */
+	ice_update_pf_stats(pf);
+	for (i = 0; i < pf->num_alloc_vsi; i++)
+		if (pf->vsi[i] && pf->vsi[i]->netdev)
+			ice_update_vsi_stats(pf->vsi[i]);
 }
 
 /**
@@ -797,11 +746,6 @@ static int __ice_clean_ctrlq(struct ice_pf *pf, enum ice_ctl_q q_type)
 		opcode = le16_to_cpu(event.desc.opcode);
 
 		switch (opcode) {
-		case ice_aqc_opc_get_link_status:
-			if (ice_handle_link_event(pf))
-				dev_err(&pf->pdev->dev,
-					"Could not handle link event\n");
-			break;
 		case ice_mbx_opc_send_msg_to_pf:
 			ice_vc_process_vf_msg(pf, &event);
 			break;
@@ -2207,12 +2151,6 @@ static int ice_probe(struct pci_dev *pdev,
 	/* since everything is good, start the service timer */
 	mod_timer(&pf->serv_tmr, round_jiffies(jiffies + pf->serv_tmr_period));
 
-	err = ice_init_link_events(pf->hw.port_info);
-	if (err) {
-		dev_err(&pdev->dev, "ice_init_link_events failed: %d\n", err);
-		goto err_alloc_sw_unroll;
-	}
-
 	return 0;
 
 err_alloc_sw_unroll:
-- 
2.14.3


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

* [Intel-wired-lan] [PATCH 5/7] ice: Introduce ice_dev_onetime_setup
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 5/7] ice: Introduce ice_dev_onetime_setup Anirudh Venkataramanan
@ 2018-10-18 16:06   ` Shannon Nelson
  2018-10-18 21:05     ` Venkataramanan, Anirudh
  2018-10-18 21:44   ` Bowers, AndrewX
  1 sibling, 1 reply; 18+ messages in thread
From: Shannon Nelson @ 2018-10-18 16:06 UTC (permalink / raw)
  To: intel-wired-lan

On 10/18/2018 8:37 AM, Anirudh Venkataramanan wrote:
> ice_dev_onetime_setup contains a couple of driver workarounds for current
> firmware limitations. These workarounds are expected to go away once
> these limitations are fixed in the firmware.

Can you add a check for firmware version or feature to see if this is 
needed before using it?

sln


> 
> Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
> ---
>   drivers/net/ethernet/intel/ice/ice_common.c     | 19 +++++++++++++++++++
>   drivers/net/ethernet/intel/ice/ice_common.h     |  3 +++
>   drivers/net/ethernet/intel/ice/ice_hw_autogen.h |  2 ++
>   drivers/net/ethernet/intel/ice/ice_lib.c        |  1 +
>   4 files changed, 25 insertions(+)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c
> index 78df54b25bf1..5a91a9087d1e 100644
> --- a/drivers/net/ethernet/intel/ice/ice_common.c
> +++ b/drivers/net/ethernet/intel/ice/ice_common.c
> @@ -42,6 +42,23 @@ static enum ice_status ice_set_mac_type(struct ice_hw *hw)
>   	return 0;
>   }
>   
> +/**
> + * ice_dev_onetime_setup - Temporary HW/FW workarounds
> + * @hw: pointer to the HW structure
> + *
> + * This function provides temporary workarounds for certain issues
> + * that are expected to be fixed in the HW/FW.
> + */
> +void ice_dev_onetime_setup(struct ice_hw *hw)
> +{
> +	/* configure Rx - set non pxe mode */
> +	wr32(hw, GLLAN_RCTL_0, 0x1);
> +
> +#define MBX_PF_VT_PFALLOC	0x00231E80
> +	/* set VFs per PF */
> +	wr32(hw, MBX_PF_VT_PFALLOC, rd32(hw, PF_VT_PFALLOC_HIF));
> +}
> +
>   /**
>    * ice_clear_pf_cfg - Clear PF configuration
>    * @hw: pointer to the hardware structure
> @@ -740,6 +757,8 @@ enum ice_status ice_init_hw(struct ice_hw *hw)
>   	if (status)
>   		goto err_unroll_sched;
>   
> +	ice_dev_onetime_setup(hw);
> +
>   	/* Get MAC information */
>   	/* A single port can report up to two (LAN and WoL) addresses */
>   	mac_buf = devm_kcalloc(ice_hw_to_dev(hw), 2,
> diff --git a/drivers/net/ethernet/intel/ice/ice_common.h b/drivers/net/ethernet/intel/ice/ice_common.h
> index 1900681289a4..876347e32b6f 100644
> --- a/drivers/net/ethernet/intel/ice/ice_common.h
> +++ b/drivers/net/ethernet/intel/ice/ice_common.h
> @@ -34,6 +34,9 @@ ice_sq_send_cmd(struct ice_hw *hw, struct ice_ctl_q_info *cq,
>   		struct ice_sq_cd *cd);
>   void ice_clear_pxe_mode(struct ice_hw *hw);
>   enum ice_status ice_get_caps(struct ice_hw *hw);
> +
> +void ice_dev_onetime_setup(struct ice_hw *hw);
> +
>   enum ice_status
>   ice_write_rxq_ctx(struct ice_hw *hw, struct ice_rlan_ctx *rlan_ctx,
>   		  u32 rxq_index);
> diff --git a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> index a6679a9bfd3a..228afcad6fc3 100644
> --- a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> +++ b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> @@ -157,6 +157,7 @@
>   #define VPINT_ALLOC_LAST_S			12
>   #define VPINT_ALLOC_LAST_M			ICE_M(0x7FF, 12)
>   #define VPINT_ALLOC_VALID_M			BIT(31)
> +#define GLLAN_RCTL_0				0x002941F8
>   #define QRX_CONTEXT(_i, _QRX)			(0x00280000 + ((_i) * 8192 + (_QRX) * 4))
>   #define QRX_CTRL(_QRX)				(0x00120000 + ((_QRX) * 4))
>   #define QRX_CTRL_MAX_INDEX			2047
> @@ -320,6 +321,7 @@
>   #define GLV_UPRCL(_i)				(0x003B2000 + ((_i) * 8))
>   #define GLV_UPTCH(_i)				(0x0030A004 + ((_i) * 8))
>   #define GLV_UPTCL(_i)				(0x0030A000 + ((_i) * 8))
> +#define PF_VT_PFALLOC_HIF			0x0009DD80
>   #define VSIQF_HKEY_MAX_INDEX			12
>   #define VSIQF_HLUT_MAX_INDEX			15
>   #define VFINT_DYN_CTLN(_i)			(0x00003800 + ((_i) * 4))
> diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
> index e750702bcdce..5bacad01f0c9 100644
> --- a/drivers/net/ethernet/intel/ice/ice_lib.c
> +++ b/drivers/net/ethernet/intel/ice/ice_lib.c
> @@ -2529,6 +2529,7 @@ int ice_vsi_rebuild(struct ice_vsi *vsi)
>   	vsi->hw_base_vector = 0;
>   	ice_vsi_clear_rings(vsi);
>   	ice_vsi_free_arrays(vsi, false);
> +	ice_dev_onetime_setup(&vsi->back->hw);
>   	ice_vsi_set_num_qs(vsi);
>   
>   	/* Initialize VSI struct elements and create VSI in FW */
> 

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

* [Intel-wired-lan] [PATCH 5/7] ice: Introduce ice_dev_onetime_setup
  2018-10-18 16:06   ` Shannon Nelson
@ 2018-10-18 21:05     ` Venkataramanan, Anirudh
  2018-10-18 21:48       ` Shannon Nelson
  0 siblings, 1 reply; 18+ messages in thread
From: Venkataramanan, Anirudh @ 2018-10-18 21:05 UTC (permalink / raw)
  To: intel-wired-lan

On Thu, 2018-10-18 at 09:06 -0700, Shannon Nelson wrote:
> On 10/18/2018 8:37 AM, Anirudh Venkataramanan wrote:
> > ice_dev_onetime_setup contains a couple of driver workarounds for
> > current
> > firmware limitations. These workarounds are expected to go away
> > once
> > these limitations are fixed in the firmware.
> 
> Can you add a check for firmware version or feature to see if this
> is 
> needed before using it?
> 
> sln

Hi Shannon,

We discussed this internally a few weeks back and the conclusion was
that right now there's no reliable way to apply these workarounds
conditionally.

On a FW release that has these issues addressed, these workarounds
while unncessary, won't break anything. So for now, IMHO, it's fine the
way it is.

Thanks,
Ani

> 
> 
> > 
> > Signed-off-by: Anirudh Venkataramanan <
> > anirudh.venkataramanan at intel.com>
> > ---
> >   drivers/net/ethernet/intel/ice/ice_common.c     | 19
> > +++++++++++++++++++
> >   drivers/net/ethernet/intel/ice/ice_common.h     |  3 +++
> >   drivers/net/ethernet/intel/ice/ice_hw_autogen.h |  2 ++
> >   drivers/net/ethernet/intel/ice/ice_lib.c        |  1 +
> >   4 files changed, 25 insertions(+)
> > 
> > diff --git a/drivers/net/ethernet/intel/ice/ice_common.c
> > b/drivers/net/ethernet/intel/ice/ice_common.c
> > index 78df54b25bf1..5a91a9087d1e 100644
> > --- a/drivers/net/ethernet/intel/ice/ice_common.c
> > +++ b/drivers/net/ethernet/intel/ice/ice_common.c
> > @@ -42,6 +42,23 @@ static enum ice_status ice_set_mac_type(struct
> > ice_hw *hw)
> >   	return 0;
> >   }
> >   
> > +/**
> > + * ice_dev_onetime_setup - Temporary HW/FW workarounds
> > + * @hw: pointer to the HW structure
> > + *
> > + * This function provides temporary workarounds for certain issues
> > + * that are expected to be fixed in the HW/FW.
> > + */
> > +void ice_dev_onetime_setup(struct ice_hw *hw)
> > +{
> > +	/* configure Rx - set non pxe mode */
> > +	wr32(hw, GLLAN_RCTL_0, 0x1);
> > +
> > +#define MBX_PF_VT_PFALLOC	0x00231E80
> > +	/* set VFs per PF */
> > +	wr32(hw, MBX_PF_VT_PFALLOC, rd32(hw, PF_VT_PFALLOC_HIF));
> > +}
> > +
> >   /**
> >    * ice_clear_pf_cfg - Clear PF configuration
> >    * @hw: pointer to the hardware structure
> > @@ -740,6 +757,8 @@ enum ice_status ice_init_hw(struct ice_hw *hw)
> >   	if (status)
> >   		goto err_unroll_sched;
> >   
> > +	ice_dev_onetime_setup(hw);
> > +
> >   	/* Get MAC information */
> >   	/* A single port can report up to two (LAN and WoL) addresses
> > */
> >   	mac_buf = devm_kcalloc(ice_hw_to_dev(hw), 2,
> > diff --git a/drivers/net/ethernet/intel/ice/ice_common.h
> > b/drivers/net/ethernet/intel/ice/ice_common.h
> > index 1900681289a4..876347e32b6f 100644
> > --- a/drivers/net/ethernet/intel/ice/ice_common.h
> > +++ b/drivers/net/ethernet/intel/ice/ice_common.h
> > @@ -34,6 +34,9 @@ ice_sq_send_cmd(struct ice_hw *hw, struct
> > ice_ctl_q_info *cq,
> >   		struct ice_sq_cd *cd);
> >   void ice_clear_pxe_mode(struct ice_hw *hw);
> >   enum ice_status ice_get_caps(struct ice_hw *hw);
> > +
> > +void ice_dev_onetime_setup(struct ice_hw *hw);
> > +
> >   enum ice_status
> >   ice_write_rxq_ctx(struct ice_hw *hw, struct ice_rlan_ctx
> > *rlan_ctx,
> >   		  u32 rxq_index);
> > diff --git a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> > b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> > index a6679a9bfd3a..228afcad6fc3 100644
> > --- a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> > +++ b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> > @@ -157,6 +157,7 @@
> >   #define VPINT_ALLOC_LAST_S			12
> >   #define VPINT_ALLOC_LAST_M			ICE_M(0x7FF,
> > 12)
> >   #define VPINT_ALLOC_VALID_M			BIT(31)
> > +#define GLLAN_RCTL_0				0x002941F8
> >   #define QRX_CONTEXT(_i, _QRX)			(0x00280000 +
> > ((_i) * 8192 + (_QRX) * 4))
> >   #define QRX_CTRL(_QRX)				(0x00120000 +
> > ((_QRX) * 4))
> >   #define QRX_CTRL_MAX_INDEX			2047
> > @@ -320,6 +321,7 @@
> >   #define GLV_UPRCL(_i)				(0x003B2000 +
> > ((_i) * 8))
> >   #define GLV_UPTCH(_i)				(0x0030A004 +
> > ((_i) * 8))
> >   #define GLV_UPTCL(_i)				(0x0030A000 +
> > ((_i) * 8))
> > +#define PF_VT_PFALLOC_HIF			0x0009DD80
> >   #define VSIQF_HKEY_MAX_INDEX			12
> >   #define VSIQF_HLUT_MAX_INDEX			15
> >   #define VFINT_DYN_CTLN(_i)			(0x00003800 +
> > ((_i) * 4))
> > diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c
> > b/drivers/net/ethernet/intel/ice/ice_lib.c
> > index e750702bcdce..5bacad01f0c9 100644
> > --- a/drivers/net/ethernet/intel/ice/ice_lib.c
> > +++ b/drivers/net/ethernet/intel/ice/ice_lib.c
> > @@ -2529,6 +2529,7 @@ int ice_vsi_rebuild(struct ice_vsi *vsi)
> >   	vsi->hw_base_vector = 0;
> >   	ice_vsi_clear_rings(vsi);
> >   	ice_vsi_free_arrays(vsi, false);
> > +	ice_dev_onetime_setup(&vsi->back->hw);
> >   	ice_vsi_set_num_qs(vsi);
> >   
> >   	/* Initialize VSI struct elements and create VSI in FW */
> > 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3302 bytes
Desc: not available
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20181018/2676020d/attachment-0001.bin>

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

* [Intel-wired-lan] [PATCH 1/7] ice: Make ice_msix_clean_rings static
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 1/7] ice: Make ice_msix_clean_rings static Anirudh Venkataramanan
@ 2018-10-18 21:43   ` Bowers, AndrewX
  0 siblings, 0 replies; 18+ messages in thread
From: Bowers, AndrewX @ 2018-10-18 21:43 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at osuosl.org] On
> Behalf Of Anirudh Venkataramanan
> Sent: Thursday, October 18, 2018 8:37 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH 1/7] ice: Make ice_msix_clean_rings static
> 
> commit 158a08a694c4e ("ice: remove ndo_poll_controller") removed
> ice_netpoll and introduced a namespace warning for ice_msix_clean_rings.
> Fix the namespace warning by making ice_msix_clean_rings static.
> 
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_lib.c | 2 +-
> drivers/net/ethernet/intel/ice/ice_lib.h | 1 -
>  2 files changed, 1 insertion(+), 2 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>



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

* [Intel-wired-lan] [PATCH 2/7] ice: Change device ID define names to align with branding string
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 2/7] ice: Change device ID define names to align with branding string Anirudh Venkataramanan
@ 2018-10-18 21:43   ` Bowers, AndrewX
  0 siblings, 0 replies; 18+ messages in thread
From: Bowers, AndrewX @ 2018-10-18 21:43 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at osuosl.org] On
> Behalf Of Anirudh Venkataramanan
> Sent: Thursday, October 18, 2018 8:37 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH 2/7] ice: Change device ID define names to
> align with branding string
> 
> Basically remove references to C810 and use E810C (from the branding
> string) instead.
> 
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_devids.h | 6 +++---
>  drivers/net/ethernet/intel/ice/ice_main.c   | 6 +++---
>  2 files changed, 6 insertions(+), 6 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>



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

* [Intel-wired-lan] [PATCH 3/7] ice: Update expected FW version
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 3/7] ice: Update expected FW version Anirudh Venkataramanan
@ 2018-10-18 21:43   ` Bowers, AndrewX
  0 siblings, 0 replies; 18+ messages in thread
From: Bowers, AndrewX @ 2018-10-18 21:43 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at osuosl.org] On
> Behalf Of Anirudh Venkataramanan
> Sent: Thursday, October 18, 2018 8:37 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH 3/7] ice: Update expected FW version
> 
> Update to the current firmware major and minor version which are
> 1 and 3 respectively.
> 
> Also remove an empty comment line.
> 
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_controlq.h | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>



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

* [Intel-wired-lan] [PATCH 4/7] ice: Use capability count returned by the firmware
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 4/7] ice: Use capability count returned by the firmware Anirudh Venkataramanan
@ 2018-10-18 21:44   ` Bowers, AndrewX
  0 siblings, 0 replies; 18+ messages in thread
From: Bowers, AndrewX @ 2018-10-18 21:44 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at osuosl.org] On
> Behalf Of Anirudh Venkataramanan
> Sent: Thursday, October 18, 2018 8:37 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH 4/7] ice: Use capability count returned by
> the firmware
> 
> The firmware now returns the capability count in the command buffer.
> Use it.
> 
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_common.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>



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

* [Intel-wired-lan] [PATCH 5/7] ice: Introduce ice_dev_onetime_setup
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 5/7] ice: Introduce ice_dev_onetime_setup Anirudh Venkataramanan
  2018-10-18 16:06   ` Shannon Nelson
@ 2018-10-18 21:44   ` Bowers, AndrewX
  1 sibling, 0 replies; 18+ messages in thread
From: Bowers, AndrewX @ 2018-10-18 21:44 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at osuosl.org] On
> Behalf Of Anirudh Venkataramanan
> Sent: Thursday, October 18, 2018 8:37 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH 5/7] ice: Introduce
> ice_dev_onetime_setup
> 
> ice_dev_onetime_setup contains a couple of driver workarounds for current
> firmware limitations. These workarounds are expected to go away once
> these limitations are fixed in the firmware.
> 
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_common.c     | 19
> +++++++++++++++++++
>  drivers/net/ethernet/intel/ice/ice_common.h     |  3 +++
>  drivers/net/ethernet/intel/ice/ice_hw_autogen.h |  2 ++
>  drivers/net/ethernet/intel/ice/ice_lib.c        |  1 +
>  4 files changed, 25 insertions(+)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>



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

* [Intel-wired-lan] [PATCH 6/7] ice: Allocate VF interrupts and set queue map
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 6/7] ice: Allocate VF interrupts and set queue map Anirudh Venkataramanan
@ 2018-10-18 21:45   ` Bowers, AndrewX
  0 siblings, 0 replies; 18+ messages in thread
From: Bowers, AndrewX @ 2018-10-18 21:45 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at osuosl.org] On
> Behalf Of Anirudh Venkataramanan
> Sent: Thursday, October 18, 2018 8:37 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH 6/7] ice: Allocate VF interrupts and set
> queue map
> 
> Allocate VF interrupts using VPINT_ALLOC_PCI. Multiple interrupts are
> specified as a range from "first" to "last".
> 
> Also, according to the spec, the queue mapping for a VF needs to be set in
> both contig and scatter queue modes. So make this change as well.
> 
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_hw_autogen.h  |  6 ++++++
> drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c | 15 +++++++++++----
>  2 files changed, 17 insertions(+), 4 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>



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

* [Intel-wired-lan] [PATCH 7/7] ice: Poll for link status change
  2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 7/7] ice: Poll for link status change Anirudh Venkataramanan
@ 2018-10-18 21:45   ` Bowers, AndrewX
  0 siblings, 0 replies; 18+ messages in thread
From: Bowers, AndrewX @ 2018-10-18 21:45 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at osuosl.org] On
> Behalf Of Anirudh Venkataramanan
> Sent: Thursday, October 18, 2018 8:37 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH 7/7] ice: Poll for link status change
> 
> When the physical link goes up or down, the driver is supposed to receive a
> link status event (LSE). The driver currently has the code to handle LSEs but
> there is no firmware support for this feature yet.
> So this patch adds the ability for the driver to poll for link status changes. The
> polling itself is done in ice_watchdog_subtask.
> 
> For namespace cleanliness, this patch also removes code that handles LSE.
> This code will be reintroduced once the feature is officially supported.
> 
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_common.c |  29 +-------
>  drivers/net/ethernet/intel/ice/ice_common.h |   6 --
>  drivers/net/ethernet/intel/ice/ice_main.c   | 110 ++++++----------------------
>  3 files changed, 25 insertions(+), 120 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>



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

* [Intel-wired-lan] [PATCH 5/7] ice: Introduce ice_dev_onetime_setup
  2018-10-18 21:05     ` Venkataramanan, Anirudh
@ 2018-10-18 21:48       ` Shannon Nelson
  0 siblings, 0 replies; 18+ messages in thread
From: Shannon Nelson @ 2018-10-18 21:48 UTC (permalink / raw)
  To: intel-wired-lan

On 10/18/2018 2:05 PM, Venkataramanan, Anirudh wrote:
> On Thu, 2018-10-18 at 09:06 -0700, Shannon Nelson wrote:
>> On 10/18/2018 8:37 AM, Anirudh Venkataramanan wrote:
>>> ice_dev_onetime_setup contains a couple of driver workarounds for
>>> current
>>> firmware limitations. These workarounds are expected to go away
>>> once
>>> these limitations are fixed in the firmware.
>>
>> Can you add a check for firmware version or feature to see if this
>> is
>> needed before using it?
>>
>> sln
> 
> Hi Shannon,
> 
> We discussed this internally a few weeks back and the conclusion was
> that right now there's no reliable way to apply these workarounds
> conditionally.
> 
> On a FW release that has these issues addressed, these workarounds
> while unncessary, won't break anything. So for now, IMHO, it's fine the
> way it is.

You should add this statement into the commit message.

The "won't break anything" is something that has bitten things in the 
past, so you'll want to keep an eye on that.

sln

> 
> Thanks,
> Ani
> 
>>
>>
>>>
>>> Signed-off-by: Anirudh Venkataramanan <
>>> anirudh.venkataramanan at intel.com>
>>> ---
>>>    drivers/net/ethernet/intel/ice/ice_common.c     | 19
>>> +++++++++++++++++++
>>>    drivers/net/ethernet/intel/ice/ice_common.h     |  3 +++
>>>    drivers/net/ethernet/intel/ice/ice_hw_autogen.h |  2 ++
>>>    drivers/net/ethernet/intel/ice/ice_lib.c        |  1 +
>>>    4 files changed, 25 insertions(+)
>>>
>>> diff --git a/drivers/net/ethernet/intel/ice/ice_common.c
>>> b/drivers/net/ethernet/intel/ice/ice_common.c
>>> index 78df54b25bf1..5a91a9087d1e 100644
>>> --- a/drivers/net/ethernet/intel/ice/ice_common.c
>>> +++ b/drivers/net/ethernet/intel/ice/ice_common.c
>>> @@ -42,6 +42,23 @@ static enum ice_status ice_set_mac_type(struct
>>> ice_hw *hw)
>>>    	return 0;
>>>    }
>>>    
>>> +/**
>>> + * ice_dev_onetime_setup - Temporary HW/FW workarounds
>>> + * @hw: pointer to the HW structure
>>> + *
>>> + * This function provides temporary workarounds for certain issues
>>> + * that are expected to be fixed in the HW/FW.
>>> + */
>>> +void ice_dev_onetime_setup(struct ice_hw *hw)
>>> +{
>>> +	/* configure Rx - set non pxe mode */
>>> +	wr32(hw, GLLAN_RCTL_0, 0x1);
>>> +
>>> +#define MBX_PF_VT_PFALLOC	0x00231E80
>>> +	/* set VFs per PF */
>>> +	wr32(hw, MBX_PF_VT_PFALLOC, rd32(hw, PF_VT_PFALLOC_HIF));
>>> +}
>>> +
>>>    /**
>>>     * ice_clear_pf_cfg - Clear PF configuration
>>>     * @hw: pointer to the hardware structure
>>> @@ -740,6 +757,8 @@ enum ice_status ice_init_hw(struct ice_hw *hw)
>>>    	if (status)
>>>    		goto err_unroll_sched;
>>>    
>>> +	ice_dev_onetime_setup(hw);
>>> +
>>>    	/* Get MAC information */
>>>    	/* A single port can report up to two (LAN and WoL) addresses
>>> */
>>>    	mac_buf = devm_kcalloc(ice_hw_to_dev(hw), 2,
>>> diff --git a/drivers/net/ethernet/intel/ice/ice_common.h
>>> b/drivers/net/ethernet/intel/ice/ice_common.h
>>> index 1900681289a4..876347e32b6f 100644
>>> --- a/drivers/net/ethernet/intel/ice/ice_common.h
>>> +++ b/drivers/net/ethernet/intel/ice/ice_common.h
>>> @@ -34,6 +34,9 @@ ice_sq_send_cmd(struct ice_hw *hw, struct
>>> ice_ctl_q_info *cq,
>>>    		struct ice_sq_cd *cd);
>>>    void ice_clear_pxe_mode(struct ice_hw *hw);
>>>    enum ice_status ice_get_caps(struct ice_hw *hw);
>>> +
>>> +void ice_dev_onetime_setup(struct ice_hw *hw);
>>> +
>>>    enum ice_status
>>>    ice_write_rxq_ctx(struct ice_hw *hw, struct ice_rlan_ctx
>>> *rlan_ctx,
>>>    		  u32 rxq_index);
>>> diff --git a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
>>> b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
>>> index a6679a9bfd3a..228afcad6fc3 100644
>>> --- a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
>>> +++ b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
>>> @@ -157,6 +157,7 @@
>>>    #define VPINT_ALLOC_LAST_S			12
>>>    #define VPINT_ALLOC_LAST_M			ICE_M(0x7FF,
>>> 12)
>>>    #define VPINT_ALLOC_VALID_M			BIT(31)
>>> +#define GLLAN_RCTL_0				0x002941F8
>>>    #define QRX_CONTEXT(_i, _QRX)			(0x00280000 +
>>> ((_i) * 8192 + (_QRX) * 4))
>>>    #define QRX_CTRL(_QRX)				(0x00120000 +
>>> ((_QRX) * 4))
>>>    #define QRX_CTRL_MAX_INDEX			2047
>>> @@ -320,6 +321,7 @@
>>>    #define GLV_UPRCL(_i)				(0x003B2000 +
>>> ((_i) * 8))
>>>    #define GLV_UPTCH(_i)				(0x0030A004 +
>>> ((_i) * 8))
>>>    #define GLV_UPTCL(_i)				(0x0030A000 +
>>> ((_i) * 8))
>>> +#define PF_VT_PFALLOC_HIF			0x0009DD80
>>>    #define VSIQF_HKEY_MAX_INDEX			12
>>>    #define VSIQF_HLUT_MAX_INDEX			15
>>>    #define VFINT_DYN_CTLN(_i)			(0x00003800 +
>>> ((_i) * 4))
>>> diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c
>>> b/drivers/net/ethernet/intel/ice/ice_lib.c
>>> index e750702bcdce..5bacad01f0c9 100644
>>> --- a/drivers/net/ethernet/intel/ice/ice_lib.c
>>> +++ b/drivers/net/ethernet/intel/ice/ice_lib.c
>>> @@ -2529,6 +2529,7 @@ int ice_vsi_rebuild(struct ice_vsi *vsi)
>>>    	vsi->hw_base_vector = 0;
>>>    	ice_vsi_clear_rings(vsi);
>>>    	ice_vsi_free_arrays(vsi, false);
>>> +	ice_dev_onetime_setup(&vsi->back->hw);
>>>    	ice_vsi_set_num_qs(vsi);
>>>    
>>>    	/* Initialize VSI struct elements and create VSI in FW */
>>>

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

end of thread, other threads:[~2018-10-18 21:48 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-18 15:37 [Intel-wired-lan] [PATCH 0/7] ice bug fixes and minor implementation updates Anirudh Venkataramanan
2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 1/7] ice: Make ice_msix_clean_rings static Anirudh Venkataramanan
2018-10-18 21:43   ` Bowers, AndrewX
2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 2/7] ice: Change device ID define names to align with branding string Anirudh Venkataramanan
2018-10-18 21:43   ` Bowers, AndrewX
2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 3/7] ice: Update expected FW version Anirudh Venkataramanan
2018-10-18 21:43   ` Bowers, AndrewX
2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 4/7] ice: Use capability count returned by the firmware Anirudh Venkataramanan
2018-10-18 21:44   ` Bowers, AndrewX
2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 5/7] ice: Introduce ice_dev_onetime_setup Anirudh Venkataramanan
2018-10-18 16:06   ` Shannon Nelson
2018-10-18 21:05     ` Venkataramanan, Anirudh
2018-10-18 21:48       ` Shannon Nelson
2018-10-18 21:44   ` Bowers, AndrewX
2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 6/7] ice: Allocate VF interrupts and set queue map Anirudh Venkataramanan
2018-10-18 21:45   ` Bowers, AndrewX
2018-10-18 15:37 ` [Intel-wired-lan] [PATCH 7/7] ice: Poll for link status change Anirudh Venkataramanan
2018-10-18 21:45   ` Bowers, AndrewX

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.