All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice
@ 2018-08-09 13:28 Anirudh Venkataramanan
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 01/13] ice: Fix multiple static analyser warnings Anirudh Venkataramanan
                   ` (13 more replies)
  0 siblings, 14 replies; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:28 UTC (permalink / raw)
  To: intel-wired-lan

This patch set fixes multiple bugs for the ice driver.

Anirudh Venkataramanan (5):
  ice: Fix multiple static analyser warnings
  ice: Cleanup magic number
  ice: Fix bugs in control queue processing
  ice: Fix a few null pointer dereference issues
  ice: Trivial formatting fixes

Brett Creeley (1):
  ice: Set VLAN flags correctly

Bruce Allan (3):
  ice: Remove unncessary node owner check
  ice: Update to interrupts enabled in OICR
  ice: Change struct members from bool to u8

Jacob Keller (2):
  ice: Report stats for allocated queues via ethtool stats
  ice: Use order_base_2 to calculate higher power of 2

Jesse Brandeburg (1):
  ice: Fix potential return of uninitialized value

Preethi Banala (1):
  ice: Clean control queues only when they are initialized

 drivers/net/ethernet/intel/ice/ice.h          |  15 ++-
 .../net/ethernet/intel/ice/ice_adminq_cmd.h   |  25 ++--
 drivers/net/ethernet/intel/ice/ice_common.c   |  30 +++--
 drivers/net/ethernet/intel/ice/ice_controlq.c |  29 +++--
 drivers/net/ethernet/intel/ice/ice_ethtool.c  |  52 ++++++--
 .../net/ethernet/intel/ice/ice_hw_autogen.h   |   8 --
 .../net/ethernet/intel/ice/ice_lan_tx_rx.h    |   1 +
 drivers/net/ethernet/intel/ice/ice_main.c     | 115 ++++++++++--------
 drivers/net/ethernet/intel/ice/ice_nvm.c      |   5 +-
 drivers/net/ethernet/intel/ice/ice_sched.c    |   3 +-
 drivers/net/ethernet/intel/ice/ice_switch.c   |   4 +-
 drivers/net/ethernet/intel/ice/ice_switch.h   |   6 +-
 drivers/net/ethernet/intel/ice/ice_txrx.h     |   2 +-
 drivers/net/ethernet/intel/ice/ice_type.h     |  16 +--
 14 files changed, 185 insertions(+), 126 deletions(-)

-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 01/13] ice: Fix multiple static analyser warnings
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
@ 2018-08-09 13:28 ` Anirudh Venkataramanan
  2018-08-21 21:32   ` Brelinski, TonyX
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 02/13] ice: Remove unncessary node owner check Anirudh Venkataramanan
                   ` (12 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:28 UTC (permalink / raw)
  To: intel-wired-lan

This patch fixes the following smatch errors:

1) Fix "odd binop '0x0 & 0xc'" when performing the bitwise-and with a
   constant value of zero (ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_128_FLAG).
   Remove a similar bitwise-and with 0 in ice_add_marker_act() and use the
   right mask ICE_LG_ACT_GENERIC_OFFSET_M in the expression.

2) Fix a similar issue "odd binop '0x0 & 0x1800' in ice_req_irq_msix_misc.

3) Fix "odd binop '0x380000 & 0x7fff8'" in ice_add_marker_act(). Also, use
   a new define ICE_LG_ACT_GENERIC_OFF_RX_DESC_PROF_IDX instead of magic
   number '7'.

4) Fix warn: odd binop '0x0 & 0x18' in ice_set_dflt_vsi_ctx() by removing
   unnecessary logic to explicitly unset bits 3 and 4 in port_vlan_bits.
   These bits are unset already by the memset on ctxt->info.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 .../net/ethernet/intel/ice/ice_adminq_cmd.h   |  1 +
 drivers/net/ethernet/intel/ice/ice_common.c   | 25 +++++++++++--------
 drivers/net/ethernet/intel/ice/ice_main.c     | 19 ++++++--------
 drivers/net/ethernet/intel/ice/ice_switch.c   |  4 +--
 4 files changed, 25 insertions(+), 24 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h b/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
index 7541ec2270b3..6d3e11659ba5 100644
--- a/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
+++ b/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
@@ -594,6 +594,7 @@ struct ice_sw_rule_lg_act {
 #define ICE_LG_ACT_GENERIC_OFFSET_M	(0x7 << ICE_LG_ACT_GENERIC_OFFSET_S)
 #define ICE_LG_ACT_GENERIC_PRIORITY_S	22
 #define ICE_LG_ACT_GENERIC_PRIORITY_M	(0x7 << ICE_LG_ACT_GENERIC_PRIORITY_S)
+#define ICE_LG_ACT_GENERIC_OFF_RX_DESC_PROF_IDX	7
 
 	/* Action = 7 - Set Stat count */
 #define ICE_LG_ACT_STAT_COUNT		0x7
diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c
index 71d032cc5fa7..d5300b606d5a 100644
--- a/drivers/net/ethernet/intel/ice/ice_common.c
+++ b/drivers/net/ethernet/intel/ice/ice_common.c
@@ -1619,20 +1619,23 @@ __ice_aq_get_set_rss_lut(struct ice_hw *hw, u16 vsi_id, u8 lut_type, u8 *lut,
 	}
 
 	/* LUT size is only valid for Global and PF table types */
-	if (lut_size == ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_128) {
-		flags |= (ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_128_FLAG <<
-			  ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_S) &
-			 ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_M;
-	} else if (lut_size == ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_512) {
+	switch (lut_size) {
+	case ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_128:
+		break;
+	case ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_512:
 		flags |= (ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_512_FLAG <<
 			  ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_S) &
 			 ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_M;
-	} else if ((lut_size == ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_2K) &&
-		   (lut_type == ICE_AQC_GSET_RSS_LUT_TABLE_TYPE_PF)) {
-		flags |= (ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_2K_FLAG <<
-			  ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_S) &
-			 ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_M;
-	} else {
+		break;
+	case ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_2K:
+		if (lut_type == ICE_AQC_GSET_RSS_LUT_TABLE_TYPE_PF) {
+			flags |= (ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_2K_FLAG <<
+				  ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_S) &
+				 ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_M;
+			break;
+		}
+		/* fall-through */
+	default:
 		status = ICE_ERR_PARAM;
 		goto ice_aq_get_set_rss_lut_exit;
 	}
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 5299caf55a7f..186e764a469a 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -1352,14 +1352,13 @@ static void ice_set_dflt_vsi_ctx(struct ice_vsi_ctx *ctxt)
 	ctxt->info.sw_flags = ICE_AQ_VSI_SW_FLAG_SRC_PRUNE;
 	/* Traffic from VSI can be sent to LAN */
 	ctxt->info.sw_flags2 = ICE_AQ_VSI_SW_FLAG_LAN_ENA;
-	/* Allow all packets untagged/tagged */
+	/* By default bits 3 and 4 in port_vlan_flags are 0's which results in
+	 * legacy behavior (show VLAN, DEI, and UP) in descriptor. Also, allow
+	 * all packets untagged/tagged.
+	 */
 	ctxt->info.port_vlan_flags = ((ICE_AQ_VSI_PVLAN_MODE_ALL &
 				       ICE_AQ_VSI_PVLAN_MODE_M) >>
 				      ICE_AQ_VSI_PVLAN_MODE_S);
-	/* Show VLAN/UP from packets in Rx descriptors */
-	ctxt->info.port_vlan_flags |= ((ICE_AQ_VSI_PVLAN_EMOD_STR_BOTH &
-					ICE_AQ_VSI_PVLAN_EMOD_M) >>
-				       ICE_AQ_VSI_PVLAN_EMOD_S);
 	/* Have 1:1 UP mapping for both ingress/egress tables */
 	table |= ICE_UP_TABLE_TRANSLATE(0, 0);
 	table |= ICE_UP_TABLE_TRANSLATE(1, 1);
@@ -2058,15 +2057,13 @@ static int ice_req_irq_msix_misc(struct ice_pf *pf)
 skip_req_irq:
 	ice_ena_misc_vector(pf);
 
-	val = (pf->oicr_idx & PFINT_OICR_CTL_MSIX_INDX_M) |
-	      (ICE_RX_ITR & PFINT_OICR_CTL_ITR_INDX_M) |
-	      PFINT_OICR_CTL_CAUSE_ENA_M;
+	val = ((pf->oicr_idx & PFINT_OICR_CTL_MSIX_INDX_M) |
+	       PFINT_OICR_CTL_CAUSE_ENA_M);
 	wr32(hw, PFINT_OICR_CTL, val);
 
 	/* This enables Admin queue Interrupt causes */
-	val = (pf->oicr_idx & PFINT_FW_CTL_MSIX_INDX_M) |
-	      (ICE_RX_ITR & PFINT_FW_CTL_ITR_INDX_M) |
-	      PFINT_FW_CTL_CAUSE_ENA_M;
+	val = ((pf->oicr_idx & PFINT_FW_CTL_MSIX_INDX_M) |
+	       PFINT_FW_CTL_CAUSE_ENA_M);
 	wr32(hw, PFINT_FW_CTL, val);
 
 	itr_gran = hw->itr_gran_200;
diff --git a/drivers/net/ethernet/intel/ice/ice_switch.c b/drivers/net/ethernet/intel/ice/ice_switch.c
index 723d15f1e90b..6b7ec2ae5ad6 100644
--- a/drivers/net/ethernet/intel/ice/ice_switch.c
+++ b/drivers/net/ethernet/intel/ice/ice_switch.c
@@ -645,14 +645,14 @@ ice_add_marker_act(struct ice_hw *hw, struct ice_fltr_mgmt_list_entry *m_ent,
 	act |= (1 << ICE_LG_ACT_GENERIC_VALUE_S) & ICE_LG_ACT_GENERIC_VALUE_M;
 	lg_act->pdata.lg_act.act[1] = cpu_to_le32(act);
 
-	act = (7 << ICE_LG_ACT_GENERIC_OFFSET_S) & ICE_LG_ACT_GENERIC_VALUE_M;
+	act = (ICE_LG_ACT_GENERIC_OFF_RX_DESC_PROF_IDX <<
+	       ICE_LG_ACT_GENERIC_OFFSET_S) & ICE_LG_ACT_GENERIC_OFFSET_M;
 
 	/* Third action Marker value */
 	act |= ICE_LG_ACT_GENERIC;
 	act |= (sw_marker << ICE_LG_ACT_GENERIC_VALUE_S) &
 		ICE_LG_ACT_GENERIC_VALUE_M;
 
-	act |= (0 << ICE_LG_ACT_GENERIC_OFFSET_S) & ICE_LG_ACT_GENERIC_VALUE_M;
 	lg_act->pdata.lg_act.act[2] = cpu_to_le32(act);
 
 	/* call the fill switch rule to fill the lookup tx rx structure */
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 02/13] ice: Remove unncessary node owner check
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 01/13] ice: Fix multiple static analyser warnings Anirudh Venkataramanan
@ 2018-08-09 13:28 ` Anirudh Venkataramanan
  2018-08-21 21:31   ` Brelinski, TonyX
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 03/13] ice: Cleanup magic number Anirudh Venkataramanan
                   ` (11 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:28 UTC (permalink / raw)
  To: intel-wired-lan

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

There is already a check for owner == ICE_SCHED_NODE_OWNER_LAN at the
beginning of ice_sched_update_vsi_child_nodes. Remove the additional
check to address the static anlaysis tool smatch issue "warn: we tested
'owner' before and it was 'false'".

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
--
[Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> rewrote commit message]
---
 drivers/net/ethernet/intel/ice/ice_sched.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_sched.c b/drivers/net/ethernet/intel/ice/ice_sched.c
index 2e6c1d92cc88..eeae199469b6 100644
--- a/drivers/net/ethernet/intel/ice/ice_sched.c
+++ b/drivers/net/ethernet/intel/ice/ice_sched.c
@@ -1576,8 +1576,7 @@ ice_sched_update_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_id, u8 tc,
 			return status;
 	}
 
-	if (owner == ICE_SCHED_NODE_OWNER_LAN)
-		vsi->max_lanq[tc] = new_numqs;
+	vsi->max_lanq[tc] = new_numqs;
 
 	return status;
 }
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 03/13] ice: Cleanup magic number
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 01/13] ice: Fix multiple static analyser warnings Anirudh Venkataramanan
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 02/13] ice: Remove unncessary node owner check Anirudh Venkataramanan
@ 2018-08-09 13:28 ` Anirudh Venkataramanan
  2018-08-21 21:32   ` Brelinski, TonyX
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 04/13] ice: Report stats for allocated queues via ethtool stats Anirudh Venkataramanan
                   ` (10 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:28 UTC (permalink / raw)
  To: intel-wired-lan

Use define for the unit size shift of the Rx LAN context descriptor base
address instead of the magic number 7.

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

diff --git a/drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h b/drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h
index d23a91665b46..068dbc740b76 100644
--- a/drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h
+++ b/drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h
@@ -265,6 +265,7 @@ enum ice_rx_flex_desc_status_error_0_bits {
 struct ice_rlan_ctx {
 	u16 head;
 	u16 cpuid; /* bigger than needed, see above for reason */
+#define ICE_RLAN_BASE_S 7
 	u64 base;
 	u16 qlen;
 #define ICE_RLAN_CTX_DBUF_S 7
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 186e764a469a..7d65e0ed3588 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -3983,7 +3983,7 @@ static int ice_setup_rx_ctx(struct ice_ring *ring)
 	/* clear the context structure first */
 	memset(&rlan_ctx, 0, sizeof(rlan_ctx));
 
-	rlan_ctx.base = ring->dma >> 7;
+	rlan_ctx.base = ring->dma >> ICE_RLAN_BASE_S;
 
 	rlan_ctx.qlen = ring->count;
 
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 04/13] ice: Report stats for allocated queues via ethtool stats
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
                   ` (2 preceding siblings ...)
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 03/13] ice: Cleanup magic number Anirudh Venkataramanan
@ 2018-08-09 13:28 ` Anirudh Venkataramanan
  2018-08-21 21:29   ` Brelinski, TonyX
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 05/13] ice: Clean control queues only when they are initialized Anirudh Venkataramanan
                   ` (9 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:28 UTC (permalink / raw)
  To: intel-wired-lan

From: Jacob Keller <jacob.e.keller@intel.com>

It is not safe to have the string table for statistics change order or
size over the lifetime of a given netdevice. This is because of the
nature of the 3-step process for obtaining stats. First, userspace
performs a request for the size of the strings table. Second it performs
a separate request for the strings themselves, after allocating space
for the table. Third, it requests the stats themselves, also allocating
space for the table.

If the size decreased, there is potential to see garbage data or stats
values. In the worst case, we could potentially see stats values become
mis-aligned with their strings, so that it looks like a statistic is
being reported differently than it actually is.

Even worse, if the size increased, there is potential that the strings
table or stats table was not allocated large enough and the stats code
could access and write to memory it should not, potentially resulting in
undefined behavior and system crashes.

It isn't even safe if the size always changes under the RTNL lock. This
is because the calls take place over multiple userspace commands, so it
is not possible to hold the RTNL lock for the entire duration of
obtaining strings and stats. Further, not all consumers of the ethtool
API are the userspace ethtool program, and it is possible that one
assumes the strings will not change (valid under the current contract),
and thus only requests the stats values when requesting stats in a loop.

Finally, it's not possible in the general case to detect when the size
changes, because it is quite possible that one value which could impact
the stat size increased, while another decreased. This would result in
the same total number of stats, but reordering them so that stats no
longer line up with the strings they belong to. Since only size changes
aren't enough, we would need some sort of hash or token to determine
when the strings no longer match. This would require extending the
ethtool stats commands, but there is no more space in the relevant
structures.

The real solution to resolve this would be to add a completely new API
for stats, probably over netlink.

In the ice driver, the only thing impacting the stats that is not
constant is the number of queues. Instead of reporting stats for each
used queue, report stats for each allocated queue. We do not change the
number of queues allocated for a given netdevice, as we pass this into
the alloc_etherdev_mq() function to set the num_tx_queues and
num_rx_queues.

This resolves the potential bugs at the slight cost of displaying many
queue statistics which will not be activated.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
[Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> cleaned up commit message]
---
 drivers/net/ethernet/intel/ice/ice.h         |  7 +++
 drivers/net/ethernet/intel/ice/ice_ethtool.c | 52 +++++++++++++++-----
 2 files changed, 46 insertions(+), 13 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
index d8b5fff581e7..ed071ea75f20 100644
--- a/drivers/net/ethernet/intel/ice/ice.h
+++ b/drivers/net/ethernet/intel/ice/ice.h
@@ -89,6 +89,13 @@ extern const char ice_drv_ver[];
 #define ice_for_each_rxq(vsi, i) \
 	for ((i) = 0; (i) < (vsi)->num_rxq; (i)++)
 
+/* Macros for each allocated tx/rx ring whether used or not in a VSI */
+#define ice_for_each_alloc_txq(vsi, i) \
+	for ((i) = 0; (i) < (vsi)->alloc_txq; (i)++)
+
+#define ice_for_each_alloc_rxq(vsi, i) \
+	for ((i) = 0; (i) < (vsi)->alloc_rxq; (i)++)
+
 struct ice_tc_info {
 	u16 qoffset;
 	u16 qcount;
diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c
index 1db304c01d10..807b683a5707 100644
--- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
+++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
@@ -26,7 +26,7 @@ static int ice_q_stats_len(struct net_device *netdev)
 {
 	struct ice_netdev_priv *np = netdev_priv(netdev);
 
-	return ((np->vsi->num_txq + np->vsi->num_rxq) *
+	return ((np->vsi->alloc_txq + np->vsi->alloc_rxq) *
 		(sizeof(struct ice_q_stats) / sizeof(u64)));
 }
 
@@ -218,7 +218,7 @@ static void ice_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
 			p += ETH_GSTRING_LEN;
 		}
 
-		ice_for_each_txq(vsi, i) {
+		ice_for_each_alloc_txq(vsi, i) {
 			snprintf(p, ETH_GSTRING_LEN,
 				 "tx-queue-%u.tx_packets", i);
 			p += ETH_GSTRING_LEN;
@@ -226,7 +226,7 @@ static void ice_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
 			p += ETH_GSTRING_LEN;
 		}
 
-		ice_for_each_rxq(vsi, i) {
+		ice_for_each_alloc_rxq(vsi, i) {
 			snprintf(p, ETH_GSTRING_LEN,
 				 "rx-queue-%u.rx_packets", i);
 			p += ETH_GSTRING_LEN;
@@ -253,6 +253,24 @@ static int ice_get_sset_count(struct net_device *netdev, int sset)
 {
 	switch (sset) {
 	case ETH_SS_STATS:
+		/* The number (and order) of strings reported *must* remain
+		 * constant for a given netdevice. This function must not
+		 * report a different number based on run time parameters
+		 * (such as the number of queues in use, or the setting of
+		 * a private ethtool flag). This is due to the nature of the
+		 * ethtool stats API.
+		 *
+		 * Userspace programs such as ethtool must make 3 separate
+		 * ioctl requests, one for size, one for the strings, and
+		 * finally one for the stats. Since these cross into
+		 * userspace, changes to the number or size could result in
+		 * undefined memory access or incorrect string<->value
+		 * correlations for statistics.
+		 *
+		 * Even if it appears to be safe, changes to the size or
+		 * order of strings will suffer from race conditions and are
+		 * not safe.
+		 */
 		return ICE_ALL_STATS_LEN(netdev);
 	default:
 		return -EOPNOTSUPP;
@@ -280,18 +298,26 @@ ice_get_ethtool_stats(struct net_device *netdev,
 	/* populate per queue stats */
 	rcu_read_lock();
 
-	ice_for_each_txq(vsi, j) {
+	ice_for_each_alloc_txq(vsi, j) {
 		ring = READ_ONCE(vsi->tx_rings[j]);
-		if (!ring)
-			continue;
-		data[i++] = ring->stats.pkts;
-		data[i++] = ring->stats.bytes;
+		if (ring) {
+			data[i++] = ring->stats.pkts;
+			data[i++] = ring->stats.bytes;
+		} else {
+			data[i++] = 0;
+			data[i++] = 0;
+		}
 	}
 
-	ice_for_each_rxq(vsi, j) {
+	ice_for_each_alloc_rxq(vsi, j) {
 		ring = READ_ONCE(vsi->rx_rings[j]);
-		data[i++] = ring->stats.pkts;
-		data[i++] = ring->stats.bytes;
+		if (ring) {
+			data[i++] = ring->stats.pkts;
+			data[i++] = ring->stats.bytes;
+		} else {
+			data[i++] = 0;
+			data[i++] = 0;
+		}
 	}
 
 	rcu_read_unlock();
@@ -519,7 +545,7 @@ ice_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
 		goto done;
 	}
 
-	for (i = 0; i < vsi->num_txq; i++) {
+	for (i = 0; i < vsi->alloc_txq; i++) {
 		/* clone ring and setup updated count */
 		tx_rings[i] = *vsi->tx_rings[i];
 		tx_rings[i].count = new_tx_cnt;
@@ -551,7 +577,7 @@ ice_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
 		goto done;
 	}
 
-	for (i = 0; i < vsi->num_rxq; i++) {
+	for (i = 0; i < vsi->alloc_rxq; i++) {
 		/* clone ring and setup updated count */
 		rx_rings[i] = *vsi->rx_rings[i];
 		rx_rings[i].count = new_rx_cnt;
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 05/13] ice: Clean control queues only when they are initialized
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
                   ` (3 preceding siblings ...)
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 04/13] ice: Report stats for allocated queues via ethtool stats Anirudh Venkataramanan
@ 2018-08-09 13:28 ` Anirudh Venkataramanan
  2018-08-21 21:31   ` Brelinski, TonyX
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 06/13] ice: Fix bugs in control queue processing Anirudh Venkataramanan
                   ` (8 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:28 UTC (permalink / raw)
  To: intel-wired-lan

From: Preethi Banala <preethi.banala@intel.com>

Clean control queues only when they are initialized. One of the ways to
validate if the basic initialization is done is by checking value of
cq->sq.head and cq->rq.head variables that specify the register address.
This patch adds a check to avoid NULL pointer dereference crash when tried
to shutdown uninitialized control queue.

Signed-off-by: Preethi Banala <preethi.banala@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_controlq.c | 24 ++++++++++++-------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_controlq.c b/drivers/net/ethernet/intel/ice/ice_controlq.c
index 7c511f144ed6..c064416080e7 100644
--- a/drivers/net/ethernet/intel/ice/ice_controlq.c
+++ b/drivers/net/ethernet/intel/ice/ice_controlq.c
@@ -597,10 +597,14 @@ static enum ice_status ice_init_check_adminq(struct ice_hw *hw)
 	return 0;
 
 init_ctrlq_free_rq:
-	ice_shutdown_rq(hw, cq);
-	ice_shutdown_sq(hw, cq);
-	mutex_destroy(&cq->sq_lock);
-	mutex_destroy(&cq->rq_lock);
+	if (cq->rq.head) {
+		ice_shutdown_rq(hw, cq);
+		mutex_destroy(&cq->rq_lock);
+	}
+	if (cq->sq.head) {
+		ice_shutdown_sq(hw, cq);
+		mutex_destroy(&cq->sq_lock);
+	}
 	return status;
 }
 
@@ -706,10 +710,14 @@ static void ice_shutdown_ctrlq(struct ice_hw *hw, enum ice_ctl_q q_type)
 		return;
 	}
 
-	ice_shutdown_sq(hw, cq);
-	ice_shutdown_rq(hw, cq);
-	mutex_destroy(&cq->sq_lock);
-	mutex_destroy(&cq->rq_lock);
+	if (cq->sq.head) {
+		ice_shutdown_sq(hw, cq);
+		mutex_destroy(&cq->sq_lock);
+	}
+	if (cq->rq.head) {
+		ice_shutdown_rq(hw, cq);
+		mutex_destroy(&cq->rq_lock);
+	}
 }
 
 /**
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 06/13] ice: Fix bugs in control queue processing
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
                   ` (4 preceding siblings ...)
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 05/13] ice: Clean control queues only when they are initialized Anirudh Venkataramanan
@ 2018-08-09 13:28 ` Anirudh Venkataramanan
  2018-08-21 21:31   ` Brelinski, TonyX
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 07/13] ice: Use order_base_2 to calculate higher power of 2 Anirudh Venkataramanan
                   ` (7 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:28 UTC (permalink / raw)
  To: intel-wired-lan

This patch is a consolidation of multiple bug fixes for control queue
processing.

1)  In ice_clean_adminq_subtask() remove unnecessary reads/writes to
    registers. The bits PFINT_FW_CTL, PFINT_MBX_CTL and PFINT_SB_CTL
    are not set when an interrupt arrives, which means that clearing them
    again can be omitted.

2)  Get an accurate value in "pending" by re-reading the control queue
    head register from the hardware.

3)  Fix a corner case involving lost control queue messages by checking
    for new control messages (using ice_ctrlq_pending) before exiting the
    cleanup routine.

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

diff --git a/drivers/net/ethernet/intel/ice/ice_controlq.c b/drivers/net/ethernet/intel/ice/ice_controlq.c
index c064416080e7..62be72fdc8f3 100644
--- a/drivers/net/ethernet/intel/ice/ice_controlq.c
+++ b/drivers/net/ethernet/intel/ice/ice_controlq.c
@@ -1065,8 +1065,11 @@ ice_clean_rq_elem(struct ice_hw *hw, struct ice_ctl_q_info *cq,
 
 clean_rq_elem_out:
 	/* Set pending if needed, unlock and return */
-	if (pending)
+	if (pending) {
+		/* re-read HW head to calculate actual pending messages */
+		ntu = (u16)(rd32(hw, cq->rq.head) & cq->rq.head_mask);
 		*pending = (u16)((ntc > ntu ? cq->rq.count : 0) + (ntu - ntc));
+	}
 clean_rq_elem_err:
 	mutex_unlock(&cq->rq_lock);
 
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 7d65e0ed3588..f3ba4f76b6cb 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -916,6 +916,21 @@ static int __ice_clean_ctrlq(struct ice_pf *pf, enum ice_ctl_q q_type)
 	return pending && (i == ICE_DFLT_IRQ_WORK);
 }
 
+/**
+ * ice_ctrlq_pending - check if there is a difference between ntc and ntu
+ * @hw: pointer to hardware info
+ * @cq: control queue information
+ *
+ * returns true if there are pending messages in a queue, false if there aren't
+ */
+static bool ice_ctrlq_pending(struct ice_hw *hw, struct ice_ctl_q_info *cq)
+{
+	u16 ntu;
+
+	ntu = (u16)(rd32(hw, cq->rq.head) & cq->rq.head_mask);
+	return cq->rq.next_to_clean != ntu;
+}
+
 /**
  * ice_clean_adminq_subtask - clean the AdminQ rings
  * @pf: board private structure
@@ -923,7 +938,6 @@ static int __ice_clean_ctrlq(struct ice_pf *pf, enum ice_ctl_q q_type)
 static void ice_clean_adminq_subtask(struct ice_pf *pf)
 {
 	struct ice_hw *hw = &pf->hw;
-	u32 val;
 
 	if (!test_bit(__ICE_ADMINQ_EVENT_PENDING, pf->state))
 		return;
@@ -933,9 +947,13 @@ static void ice_clean_adminq_subtask(struct ice_pf *pf)
 
 	clear_bit(__ICE_ADMINQ_EVENT_PENDING, pf->state);
 
-	/* re-enable Admin queue interrupt causes */
-	val = rd32(hw, PFINT_FW_CTL);
-	wr32(hw, PFINT_FW_CTL, (val | PFINT_FW_CTL_CAUSE_ENA_M));
+	/* There might be a situation where new messages arrive to a control
+	 * queue between processing the last message and clearing the
+	 * EVENT_PENDING bit. So before exiting, check queue head again (using
+	 * ice_ctrlq_pending) and process new messages if any.
+	 */
+	if (ice_ctrlq_pending(hw, &hw->adminq))
+		__ice_clean_ctrlq(pf, ICE_CTL_Q_ADMIN);
 
 	ice_flush(hw);
 }
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 07/13] ice: Use order_base_2 to calculate higher power of 2
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
                   ` (5 preceding siblings ...)
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 06/13] ice: Fix bugs in control queue processing Anirudh Venkataramanan
@ 2018-08-09 13:28 ` Anirudh Venkataramanan
  2018-08-21 21:14   ` Brelinski, TonyX
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 08/13] ice: Set VLAN flags correctly Anirudh Venkataramanan
                   ` (6 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:28 UTC (permalink / raw)
  To: intel-wired-lan

From: Jacob Keller <jacob.e.keller@intel.com>

Currently, we use a combination of ilog2 and is_power_of_2() to
calculate the next power of 2 for the qcount. This appears to be causing
a warning on some combinations of GCC and the Linux kernel:

MODPOST 1 modules
WARNING: "____ilog2_NaN" [ice.ko] undefined!

This appears to because because GCC realizes that qcount could be zero
in some circumstances and thus attempts to link against the
intentionally undefined ___ilog2_NaN function.

The order_base_2 function is intentionally defined to return 0 when
passed 0 as an argument, and thus will be safe to use here.

This not only fixes the warning but makes the resulting code slightly
cleaner, and is really what we should have used originally.

Also update the comment to make it more clear that we are rounding up,
not just incrementing the ilog2 of qcount unconditionally.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
[Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> minor cleanup for upstream submission]
---
 drivers/net/ethernet/intel/ice/ice_main.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index f3ba4f76b6cb..3eff1d2d1543 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -1313,11 +1313,8 @@ static void ice_vsi_setup_q_map(struct ice_vsi *vsi, struct ice_vsi_ctx *ctxt)
 		qcount = numq_tc;
 	}
 
-	/* find higher power-of-2 of qcount */
-	pow = ilog2(qcount);
-
-	if (!is_power_of_2(qcount))
-		pow++;
+	/* find the (rounded up) power-of-2 of qcount */
+	pow = order_base_2(qcount);
 
 	for (i = 0; i < ICE_MAX_TRAFFIC_CLASS; i++) {
 		if (!(vsi->tc_cfg.ena_tc & BIT(i))) {
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 08/13] ice: Set VLAN flags correctly
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
                   ` (6 preceding siblings ...)
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 07/13] ice: Use order_base_2 to calculate higher power of 2 Anirudh Venkataramanan
@ 2018-08-09 13:28 ` Anirudh Venkataramanan
  2018-08-21 21:30   ` Brelinski, TonyX
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 09/13] ice: Update to interrupts enabled in OICR Anirudh Venkataramanan
                   ` (5 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:28 UTC (permalink / raw)
  To: intel-wired-lan

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

In the struct ice_aqc_vsi_props the field port_vlan_flags is an
overloaded term because it is used for both port VLANs (PVLANs) and
regular VLANs. This is an issue and is very confusing especially when
dealing with VFs because normal VLANs and port VLANs are not the same.
To fix this the field was renamed to vlan_flags and all of the #define's
labeled *_PVLAN_* were renamed to *_VLAN_* if they are not specific to
port VLANs.

Also in ice_vsi_manage_vlan_stripping, set the ICE_AQ_VSI_VLAN_MODE_ALL
bit to allow the driver to add a VLAN tag to all packets it sends.

Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 .../net/ethernet/intel/ice/ice_adminq_cmd.h   | 24 +++++++-------
 drivers/net/ethernet/intel/ice/ice_main.c     | 31 +++++++++++--------
 2 files changed, 30 insertions(+), 25 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h b/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
index 6d3e11659ba5..a0614f472658 100644
--- a/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
+++ b/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
@@ -329,19 +329,19 @@ struct ice_aqc_vsi_props {
 	/* VLAN section */
 	__le16 pvid; /* VLANS include priority bits */
 	u8 pvlan_reserved[2];
-	u8 port_vlan_flags;
-#define ICE_AQ_VSI_PVLAN_MODE_S	0
-#define ICE_AQ_VSI_PVLAN_MODE_M	(0x3 << ICE_AQ_VSI_PVLAN_MODE_S)
-#define ICE_AQ_VSI_PVLAN_MODE_UNTAGGED	0x1
-#define ICE_AQ_VSI_PVLAN_MODE_TAGGED	0x2
-#define ICE_AQ_VSI_PVLAN_MODE_ALL	0x3
+	u8 vlan_flags;
+#define ICE_AQ_VSI_VLAN_MODE_S	0
+#define ICE_AQ_VSI_VLAN_MODE_M	(0x3 << ICE_AQ_VSI_VLAN_MODE_S)
+#define ICE_AQ_VSI_VLAN_MODE_UNTAGGED	0x1
+#define ICE_AQ_VSI_VLAN_MODE_TAGGED	0x2
+#define ICE_AQ_VSI_VLAN_MODE_ALL	0x3
 #define ICE_AQ_VSI_PVLAN_INSERT_PVID	BIT(2)
-#define ICE_AQ_VSI_PVLAN_EMOD_S	3
-#define ICE_AQ_VSI_PVLAN_EMOD_M	(0x3 << ICE_AQ_VSI_PVLAN_EMOD_S)
-#define ICE_AQ_VSI_PVLAN_EMOD_STR_BOTH	(0x0 << ICE_AQ_VSI_PVLAN_EMOD_S)
-#define ICE_AQ_VSI_PVLAN_EMOD_STR_UP	(0x1 << ICE_AQ_VSI_PVLAN_EMOD_S)
-#define ICE_AQ_VSI_PVLAN_EMOD_STR	(0x2 << ICE_AQ_VSI_PVLAN_EMOD_S)
-#define ICE_AQ_VSI_PVLAN_EMOD_NOTHING	(0x3 << ICE_AQ_VSI_PVLAN_EMOD_S)
+#define ICE_AQ_VSI_VLAN_EMOD_S		3
+#define ICE_AQ_VSI_VLAN_EMOD_M		(0x3 << ICE_AQ_VSI_VLAN_EMOD_S)
+#define ICE_AQ_VSI_VLAN_EMOD_STR_BOTH	(0x0 << ICE_AQ_VSI_VLAN_EMOD_S)
+#define ICE_AQ_VSI_VLAN_EMOD_STR_UP	(0x1 << ICE_AQ_VSI_VLAN_EMOD_S)
+#define ICE_AQ_VSI_VLAN_EMOD_STR	(0x2 << ICE_AQ_VSI_VLAN_EMOD_S)
+#define ICE_AQ_VSI_VLAN_EMOD_NOTHING	(0x3 << ICE_AQ_VSI_VLAN_EMOD_S)
 	u8 pvlan_reserved2[3];
 	/* ingress egress up sections */
 	__le32 ingress_table; /* bitmap, 3 bits per up */
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 3eff1d2d1543..68003fad33d1 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -1367,13 +1367,15 @@ static void ice_set_dflt_vsi_ctx(struct ice_vsi_ctx *ctxt)
 	ctxt->info.sw_flags = ICE_AQ_VSI_SW_FLAG_SRC_PRUNE;
 	/* Traffic from VSI can be sent to LAN */
 	ctxt->info.sw_flags2 = ICE_AQ_VSI_SW_FLAG_LAN_ENA;
-	/* By default bits 3 and 4 in port_vlan_flags are 0's which results in
-	 * legacy behavior (show VLAN, DEI, and UP) in descriptor. Also, allow
-	 * all packets untagged/tagged.
+
+	/* By default bits 3 and 4 in vlan_flags are 0's which results in legacy
+	 * behavior (show VLAN, DEI, and UP) in descriptor. Also, allow all
+	 * packets untagged/tagged.
 	 */
-	ctxt->info.port_vlan_flags = ((ICE_AQ_VSI_PVLAN_MODE_ALL &
-				       ICE_AQ_VSI_PVLAN_MODE_M) >>
-				      ICE_AQ_VSI_PVLAN_MODE_S);
+	ctxt->info.vlan_flags = ((ICE_AQ_VSI_VLAN_MODE_ALL &
+				  ICE_AQ_VSI_VLAN_MODE_M) >>
+				 ICE_AQ_VSI_VLAN_MODE_S);
+
 	/* Have 1:1 UP mapping for both ingress/egress tables */
 	table |= ICE_UP_TABLE_TRANSLATE(0, 0);
 	table |= ICE_UP_TABLE_TRANSLATE(1, 1);
@@ -3732,10 +3734,10 @@ static int ice_vsi_manage_vlan_insertion(struct ice_vsi *vsi)
 	enum ice_status status;
 
 	/* Here we are configuring the VSI to let the driver add VLAN tags by
-	 * setting port_vlan_flags to ICE_AQ_VSI_PVLAN_MODE_ALL. The actual VLAN
-	 * tag insertion happens in the Tx hot path, in ice_tx_map.
+	 * setting vlan_flags to ICE_AQ_VSI_VLAN_MODE_ALL. The actual VLAN tag
+	 * insertion happens in the Tx hot path, in ice_tx_map.
 	 */
-	ctxt.info.port_vlan_flags = ICE_AQ_VSI_PVLAN_MODE_ALL;
+	ctxt.info.vlan_flags = ICE_AQ_VSI_VLAN_MODE_ALL;
 
 	ctxt.info.valid_sections = cpu_to_le16(ICE_AQ_VSI_PROP_VLAN_VALID);
 	ctxt.vsi_num = vsi->vsi_num;
@@ -3747,7 +3749,7 @@ static int ice_vsi_manage_vlan_insertion(struct ice_vsi *vsi)
 		return -EIO;
 	}
 
-	vsi->info.port_vlan_flags = ctxt.info.port_vlan_flags;
+	vsi->info.vlan_flags = ctxt.info.vlan_flags;
 	return 0;
 }
 
@@ -3769,12 +3771,15 @@ static int ice_vsi_manage_vlan_stripping(struct ice_vsi *vsi, bool ena)
 	 */
 	if (ena) {
 		/* Strip VLAN tag from Rx packet and put it in the desc */
-		ctxt.info.port_vlan_flags = ICE_AQ_VSI_PVLAN_EMOD_STR_BOTH;
+		ctxt.info.vlan_flags = ICE_AQ_VSI_VLAN_EMOD_STR_BOTH;
 	} else {
 		/* Disable stripping. Leave tag in packet */
-		ctxt.info.port_vlan_flags = ICE_AQ_VSI_PVLAN_EMOD_NOTHING;
+		ctxt.info.vlan_flags = ICE_AQ_VSI_VLAN_EMOD_NOTHING;
 	}
 
+	/* Allow all packets untagged/tagged */
+	ctxt.info.vlan_flags |= ICE_AQ_VSI_VLAN_MODE_ALL;
+
 	ctxt.info.valid_sections = cpu_to_le16(ICE_AQ_VSI_PROP_VLAN_VALID);
 	ctxt.vsi_num = vsi->vsi_num;
 
@@ -3785,7 +3790,7 @@ static int ice_vsi_manage_vlan_stripping(struct ice_vsi *vsi, bool ena)
 		return -EIO;
 	}
 
-	vsi->info.port_vlan_flags = ctxt.info.port_vlan_flags;
+	vsi->info.vlan_flags = ctxt.info.vlan_flags;
 	return 0;
 }
 
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 09/13] ice: Update to interrupts enabled in OICR
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
                   ` (7 preceding siblings ...)
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 08/13] ice: Set VLAN flags correctly Anirudh Venkataramanan
@ 2018-08-09 13:28 ` Anirudh Venkataramanan
  2018-08-21 21:30   ` Brelinski, TonyX
  2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 10/13] ice: Fix a few null pointer dereference issues Anirudh Venkataramanan
                   ` (4 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:28 UTC (permalink / raw)
  To: intel-wired-lan

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

Remove the following interrupt causes that are not applicable or not
handled:
- PFINT_OICR_HLP_RDY_M
- PFINT_OICR_CPM_RDY_M
- PFINT_OICR_GPIO_M
- PFINT_OICR_STORM_DETECT_M

Add the following interrupt cause that's actually handled in ice_misc_intr:
- PFINT_OICR_PE_CRITERR_M

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
[Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> Removed defines from ice_hw_autogen.h]
---
 drivers/net/ethernet/intel/ice/ice_hw_autogen.h | 8 --------
 drivers/net/ethernet/intel/ice/ice_main.c       | 9 +++------
 2 files changed, 3 insertions(+), 14 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
index 499904874b3f..6076fc87df9d 100644
--- a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
+++ b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
@@ -121,10 +121,6 @@
 #define PFINT_FW_CTL_CAUSE_ENA_S	30
 #define PFINT_FW_CTL_CAUSE_ENA_M	BIT(PFINT_FW_CTL_CAUSE_ENA_S)
 #define PFINT_OICR			0x0016CA00
-#define PFINT_OICR_HLP_RDY_S		14
-#define PFINT_OICR_HLP_RDY_M		BIT(PFINT_OICR_HLP_RDY_S)
-#define PFINT_OICR_CPM_RDY_S		15
-#define PFINT_OICR_CPM_RDY_M		BIT(PFINT_OICR_CPM_RDY_S)
 #define PFINT_OICR_ECC_ERR_S		16
 #define PFINT_OICR_ECC_ERR_M		BIT(PFINT_OICR_ECC_ERR_S)
 #define PFINT_OICR_MAL_DETECT_S		19
@@ -133,10 +129,6 @@
 #define PFINT_OICR_GRST_M		BIT(PFINT_OICR_GRST_S)
 #define PFINT_OICR_PCI_EXCEPTION_S	21
 #define PFINT_OICR_PCI_EXCEPTION_M	BIT(PFINT_OICR_PCI_EXCEPTION_S)
-#define PFINT_OICR_GPIO_S		22
-#define PFINT_OICR_GPIO_M		BIT(PFINT_OICR_GPIO_S)
-#define PFINT_OICR_STORM_DETECT_S	24
-#define PFINT_OICR_STORM_DETECT_M	BIT(PFINT_OICR_STORM_DETECT_S)
 #define PFINT_OICR_HMC_ERR_S		26
 #define PFINT_OICR_HMC_ERR_M		BIT(PFINT_OICR_HMC_ERR_S)
 #define PFINT_OICR_PE_CRITERR_S		28
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 68003fad33d1..34be94a30a60 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -1704,15 +1704,12 @@ static void ice_ena_misc_vector(struct ice_pf *pf)
 	wr32(hw, PFINT_OICR_ENA, 0);	/* disable all */
 	rd32(hw, PFINT_OICR);		/* read to clear */
 
-	val = (PFINT_OICR_HLP_RDY_M |
-	       PFINT_OICR_CPM_RDY_M |
-	       PFINT_OICR_ECC_ERR_M |
+	val = (PFINT_OICR_ECC_ERR_M |
 	       PFINT_OICR_MAL_DETECT_M |
 	       PFINT_OICR_GRST_M |
 	       PFINT_OICR_PCI_EXCEPTION_M |
-	       PFINT_OICR_GPIO_M |
-	       PFINT_OICR_STORM_DETECT_M |
-	       PFINT_OICR_HMC_ERR_M);
+	       PFINT_OICR_HMC_ERR_M |
+	       PFINT_OICR_PE_CRITERR_M);
 
 	wr32(hw, PFINT_OICR_ENA, val);
 
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 10/13] ice: Fix a few null pointer dereference issues
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
                   ` (8 preceding siblings ...)
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 09/13] ice: Update to interrupts enabled in OICR Anirudh Venkataramanan
@ 2018-08-09 13:29 ` Anirudh Venkataramanan
  2018-08-21 21:30   ` Brelinski, TonyX
  2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 11/13] ice: Fix potential return of uninitialized value Anirudh Venkataramanan
                   ` (3 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:29 UTC (permalink / raw)
  To: intel-wired-lan

1) When ice_ena_msix_range() fails to reserve vectors, a devm_kfree()
   warning was seen in the error flow path. So check pf->irq_tracker
   before use in ice_clear_interrupt_scheme().

2) In ice_vsi_cfg(), check vsi->netdev before use.

3) In ice_get_link_status, check link_up before use.

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

diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c
index d5300b606d5a..ebd701ac9428 100644
--- a/drivers/net/ethernet/intel/ice/ice_common.c
+++ b/drivers/net/ethernet/intel/ice/ice_common.c
@@ -1483,7 +1483,7 @@ enum ice_status ice_get_link_status(struct ice_port_info *pi, bool *link_up)
 	struct ice_phy_info *phy_info;
 	enum ice_status status = 0;
 
-	if (!pi)
+	if (!pi || !link_up)
 		return ICE_ERR_PARAM;
 
 	phy_info = &pi->phy;
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 34be94a30a60..d5d83c8848f8 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -3257,8 +3257,10 @@ static void ice_clear_interrupt_scheme(struct ice_pf *pf)
 	if (test_bit(ICE_FLAG_MSIX_ENA, pf->flags))
 		ice_dis_msix(pf);
 
-	devm_kfree(&pf->pdev->dev, pf->irq_tracker);
-	pf->irq_tracker = NULL;
+	if (pf->irq_tracker) {
+		devm_kfree(&pf->pdev->dev, pf->irq_tracker);
+		pf->irq_tracker = NULL;
+	}
 }
 
 /**
@@ -4112,11 +4114,12 @@ static int ice_vsi_cfg(struct ice_vsi *vsi)
 {
 	int err;
 
-	ice_set_rx_mode(vsi->netdev);
-
-	err = ice_restore_vlan(vsi);
-	if (err)
-		return err;
+	if (vsi->netdev) {
+		ice_set_rx_mode(vsi->netdev);
+		err = ice_restore_vlan(vsi);
+		if (err)
+			return err;
+	}
 
 	err = ice_vsi_cfg_txqs(vsi);
 	if (!err)
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 11/13] ice: Fix potential return of uninitialized value
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
                   ` (9 preceding siblings ...)
  2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 10/13] ice: Fix a few null pointer dereference issues Anirudh Venkataramanan
@ 2018-08-09 13:29 ` Anirudh Venkataramanan
  2018-08-21 21:14   ` Brelinski, TonyX
  2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 12/13] ice: Change struct members from bool to u8 Anirudh Venkataramanan
                   ` (2 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:29 UTC (permalink / raw)
  To: intel-wired-lan

From: Jesse Brandeburg <jesse.brandeburg@intel.com>

In ice_vsi_setup_[tx|rx]_rings, err is uninitialized which can result in
a garbage value return to the caller. Fix that.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
[Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> cleaned up commit message]
---
 drivers/net/ethernet/intel/ice/ice_main.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index d5d83c8848f8..e23156515186 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -4885,7 +4885,7 @@ int ice_down(struct ice_vsi *vsi)
  */
 static int ice_vsi_setup_tx_rings(struct ice_vsi *vsi)
 {
-	int i, err;
+	int i, err = 0;
 
 	if (!vsi->num_txq) {
 		dev_err(&vsi->back->pdev->dev, "VSI %d has 0 Tx queues\n",
@@ -4910,7 +4910,7 @@ static int ice_vsi_setup_tx_rings(struct ice_vsi *vsi)
  */
 static int ice_vsi_setup_rx_rings(struct ice_vsi *vsi)
 {
-	int i, err;
+	int i, err = 0;
 
 	if (!vsi->num_rxq) {
 		dev_err(&vsi->back->pdev->dev, "VSI %d has 0 Rx queues\n",
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 12/13] ice: Change struct members from bool to u8
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
                   ` (10 preceding siblings ...)
  2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 11/13] ice: Fix potential return of uninitialized value Anirudh Venkataramanan
@ 2018-08-09 13:29 ` Anirudh Venkataramanan
  2018-08-21 21:28   ` Brelinski, TonyX
  2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 13/13] ice: Trivial formatting fixes Anirudh Venkataramanan
  2018-08-21 21:33 ` [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Brelinski, TonyX
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:29 UTC (permalink / raw)
  To: intel-wired-lan

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

Recent versions of checkpatch have a new warning based on a documented
preference of Linus to not use bool in structures due to wasted space and
the size of bool is implementation dependent.  For more information, see
the email thread at https://lkml.org/lkml/2017/11/21/384.

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice.h        |  8 ++++----
 drivers/net/ethernet/intel/ice/ice_switch.h |  6 +++---
 drivers/net/ethernet/intel/ice/ice_txrx.h   |  2 +-
 drivers/net/ethernet/intel/ice/ice_type.h   | 16 ++++++++--------
 4 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
index ed071ea75f20..868f4a1d0f72 100644
--- a/drivers/net/ethernet/intel/ice/ice.h
+++ b/drivers/net/ethernet/intel/ice/ice.h
@@ -196,9 +196,9 @@ struct ice_vsi {
 	struct list_head tmp_sync_list;		/* MAC filters to be synced */
 	struct list_head tmp_unsync_list;	/* MAC filters to be unsynced */
 
-	bool irqs_ready;
-	bool current_isup;		 /* Sync 'link up' logging */
-	bool stat_offsets_loaded;
+	u8 irqs_ready;
+	u8 current_isup;		 /* Sync 'link up' logging */
+	u8 stat_offsets_loaded;
 
 	/* queue information */
 	u8 tx_mapping_mode;		 /* ICE_MAP_MODE_[CONTIG|SCATTER] */
@@ -269,7 +269,7 @@ struct ice_pf {
 	struct ice_hw_port_stats stats;
 	struct ice_hw_port_stats stats_prev;
 	struct ice_hw hw;
-	bool stat_prev_loaded;	/* has previous stats been loaded */
+	u8 stat_prev_loaded;	/* has previous stats been loaded */
 	char int_name[ICE_INT_NAME_STR_LEN];
 };
 
diff --git a/drivers/net/ethernet/intel/ice/ice_switch.h b/drivers/net/ethernet/intel/ice/ice_switch.h
index 6f4a0d159dbf..9b8ec128ee31 100644
--- a/drivers/net/ethernet/intel/ice/ice_switch.h
+++ b/drivers/net/ethernet/intel/ice/ice_switch.h
@@ -17,7 +17,7 @@ struct ice_vsi_ctx {
 	u16 vsis_unallocated;
 	u16 flags;
 	struct ice_aqc_vsi_props info;
-	bool alloc_from_pool;
+	u8 alloc_from_pool;
 };
 
 enum ice_sw_fwd_act_type {
@@ -94,8 +94,8 @@ struct ice_fltr_info {
 	u8 qgrp_size;
 
 	/* Rule creations populate these indicators basing on the switch type */
-	bool lb_en;	/* Indicate if packet can be looped back */
-	bool lan_en;	/* Indicate if packet can be forwarded to the uplink */
+	u8 lb_en;	/* Indicate if packet can be looped back */
+	u8 lan_en;	/* Indicate if packet can be forwarded to the uplink */
 };
 
 /* Bookkeeping structure to hold bitmap of VSIs corresponding to VSI list id */
diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.h b/drivers/net/ethernet/intel/ice/ice_txrx.h
index 567067b650c4..31bc998fe200 100644
--- a/drivers/net/ethernet/intel/ice/ice_txrx.h
+++ b/drivers/net/ethernet/intel/ice/ice_txrx.h
@@ -143,7 +143,7 @@ struct ice_ring {
 	u16 next_to_use;
 	u16 next_to_clean;
 
-	bool ring_active;		/* is ring online or not */
+	u8 ring_active;			/* is ring online or not */
 
 	/* stats structs */
 	struct ice_q_stats	stats;
diff --git a/drivers/net/ethernet/intel/ice/ice_type.h b/drivers/net/ethernet/intel/ice/ice_type.h
index 99c8a9a71b5e..97c366e0ca59 100644
--- a/drivers/net/ethernet/intel/ice/ice_type.h
+++ b/drivers/net/ethernet/intel/ice/ice_type.h
@@ -83,7 +83,7 @@ struct ice_link_status {
 	u64 phy_type_low;
 	u16 max_frame_size;
 	u16 link_speed;
-	bool lse_ena;	/* Link Status Event notification */
+	u8 lse_ena;	/* Link Status Event notification */
 	u8 link_info;
 	u8 an_info;
 	u8 ext_info;
@@ -101,7 +101,7 @@ struct ice_phy_info {
 	struct ice_link_status link_info_old;
 	u64 phy_type_low;
 	enum ice_media_type media_type;
-	bool get_link_info;
+	u8 get_link_info;
 };
 
 /* Common HW capabilities for SW use */
@@ -167,7 +167,7 @@ struct ice_nvm_info {
 	u32 oem_ver;              /* OEM version info */
 	u16 sr_words;             /* Shadow RAM size in words */
 	u16 ver;                  /* NVM package version */
-	bool blank_nvm_mode;      /* is NVM empty (no FW present) */
+	u8 blank_nvm_mode;        /* is NVM empty (no FW present) */
 };
 
 /* Max number of port to queue branches w.r.t topology */
@@ -181,7 +181,7 @@ struct ice_sched_node {
 	struct ice_aqc_txsched_elem_data info;
 	u32 agg_id;			/* aggregator group id */
 	u16 vsi_id;
-	bool in_use;			/* suspended or in use */
+	u8 in_use;			/* suspended or in use */
 	u8 tx_sched_layer;		/* Logical Layer (1-9) */
 	u8 num_children;
 	u8 tc_num;
@@ -218,7 +218,7 @@ struct ice_sched_vsi_info {
 struct ice_sched_tx_policy {
 	u16 max_num_vsis;
 	u8 max_num_lan_qs_per_tc[ICE_MAX_TRAFFIC_CLASS];
-	bool rdma_ena;
+	u8 rdma_ena;
 };
 
 struct ice_port_info {
@@ -243,7 +243,7 @@ struct ice_port_info {
 	struct list_head agg_list;	/* lists all aggregator */
 	u8 lport;
 #define ICE_LPORT_MASK		0xff
-	bool is_vf;
+	u8 is_vf;
 };
 
 struct ice_switch_info {
@@ -287,7 +287,7 @@ struct ice_hw {
 	u8 max_cgds;
 	u8 sw_entry_point_layer;
 
-	bool evb_veb;		/* true for VEB, false for VEPA */
+	u8 evb_veb;		/* true for VEB, false for VEPA */
 	struct ice_bus_info bus;
 	struct ice_nvm_info nvm;
 	struct ice_hw_dev_caps dev_caps;	/* device capabilities */
@@ -318,7 +318,7 @@ struct ice_hw {
 	u8 itr_gran_100;
 	u8 itr_gran_50;
 	u8 itr_gran_25;
-	bool ucast_shared;	/* true if VSIs can share unicast addr */
+	u8 ucast_shared;	/* true if VSIs can share unicast addr */
 
 };
 
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 13/13] ice: Trivial formatting fixes
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
                   ` (11 preceding siblings ...)
  2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 12/13] ice: Change struct members from bool to u8 Anirudh Venkataramanan
@ 2018-08-09 13:29 ` Anirudh Venkataramanan
  2018-08-21 21:28   ` Brelinski, TonyX
  2018-08-21 21:33 ` [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Brelinski, TonyX
  13 siblings, 1 reply; 28+ messages in thread
From: Anirudh Venkataramanan @ 2018-08-09 13:29 UTC (permalink / raw)
  To: intel-wired-lan

1) Add missing "\n" when printing link event error message.

2) Update dev_err statement in probe.

3) Add function description for ice_clear_pf_cfg.

4) Fix coding style for ice_acquire_nvm.

5) netdev->mtu is unsigned so use %u.

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

diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c
index ebd701ac9428..661beea6af79 100644
--- a/drivers/net/ethernet/intel/ice/ice_common.c
+++ b/drivers/net/ethernet/intel/ice/ice_common.c
@@ -45,6 +45,9 @@ static enum ice_status ice_set_mac_type(struct ice_hw *hw)
 /**
  * ice_clear_pf_cfg - Clear PF configuration
  * @hw: pointer to the hardware structure
+ *
+ * Clears any existing PF configuration (VSIs, VSI lists, switch rules, port
+ * configuration, flow director filters, etc.).
  */
 enum ice_status ice_clear_pf_cfg(struct ice_hw *hw)
 {
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index e23156515186..f1e80eed2fd6 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -901,7 +901,7 @@ static int __ice_clean_ctrlq(struct ice_pf *pf, enum ice_ctl_q q_type)
 		case ice_aqc_opc_get_link_status:
 			if (ice_handle_link_event(pf))
 				dev_err(&pf->pdev->dev,
-					"Could not handle link event");
+					"Could not handle link event\n");
 			break;
 		default:
 			dev_dbg(&pf->pdev->dev,
@@ -3284,7 +3284,7 @@ static int ice_probe(struct pci_dev *pdev,
 
 	err = pcim_iomap_regions(pdev, BIT(ICE_BAR0), pci_name(pdev));
 	if (err) {
-		dev_err(&pdev->dev, "I/O map error %d\n", err);
+		dev_err(&pdev->dev, "BAR0 I/O map error %d\n", err);
 		return err;
 	}
 
@@ -5252,7 +5252,7 @@ static int ice_change_mtu(struct net_device *netdev, int new_mtu)
 	u8 count = 0;
 
 	if (new_mtu == netdev->mtu) {
-		netdev_warn(netdev, "mtu is already %d\n", netdev->mtu);
+		netdev_warn(netdev, "mtu is already %u\n", netdev->mtu);
 		return 0;
 	}
 
diff --git a/drivers/net/ethernet/intel/ice/ice_nvm.c b/drivers/net/ethernet/intel/ice/ice_nvm.c
index 92da0a626ce0..295a8cd87fc1 100644
--- a/drivers/net/ethernet/intel/ice/ice_nvm.c
+++ b/drivers/net/ethernet/intel/ice/ice_nvm.c
@@ -131,9 +131,8 @@ ice_read_sr_word_aq(struct ice_hw *hw, u16 offset, u16 *data)
  *
  * This function will request NVM ownership.
  */
-static enum
-ice_status ice_acquire_nvm(struct ice_hw *hw,
-			   enum ice_aq_res_access_type access)
+static enum ice_status
+ice_acquire_nvm(struct ice_hw *hw, enum ice_aq_res_access_type access)
 {
 	if (hw->nvm.blank_nvm_mode)
 		return 0;
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH v4 11/13] ice: Fix potential return of uninitialized value
  2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 11/13] ice: Fix potential return of uninitialized value Anirudh Venkataramanan
@ 2018-08-21 21:14   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:14 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 11/13] ice: Fix potential return of
> uninitialized value
> 
> From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 
> In ice_vsi_setup_[tx|rx]_rings, err is uninitialized which can result in a
> garbage value return to the caller. Fix that.
> 
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
> [Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> cleaned
> up commit message]
> ---
>  drivers/net/ethernet/intel/ice/ice_main.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 07/13] ice: Use order_base_2 to calculate higher power of 2
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 07/13] ice: Use order_base_2 to calculate higher power of 2 Anirudh Venkataramanan
@ 2018-08-21 21:14   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:14 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 07/13] ice: Use order_base_2 to
> calculate higher power of 2
> 
> From: Jacob Keller <jacob.e.keller@intel.com>
> 
> Currently, we use a combination of ilog2 and is_power_of_2() to calculate
> the next power of 2 for the qcount. This appears to be causing a warning on
> some combinations of GCC and the Linux kernel:
> 
> MODPOST 1 modules
> WARNING: "____ilog2_NaN" [ice.ko] undefined!
> 
> This appears to because because GCC realizes that qcount could be zero in
> some circumstances and thus attempts to link against the intentionally
> undefined ___ilog2_NaN function.
> 
> The order_base_2 function is intentionally defined to return 0 when passed 0
> as an argument, and thus will be safe to use here.
> 
> This not only fixes the warning but makes the resulting code slightly cleaner,
> and is really what we should have used originally.
> 
> Also update the comment to make it more clear that we are rounding up, not
> just incrementing the ilog2 of qcount unconditionally.
> 
> Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
> [Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> minor
> cleanup for upstream submission]
> ---
>  drivers/net/ethernet/intel/ice/ice_main.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 12/13] ice: Change struct members from bool to u8
  2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 12/13] ice: Change struct members from bool to u8 Anirudh Venkataramanan
@ 2018-08-21 21:28   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:28 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 12/13] ice: Change struct members from
> bool to u8
> 
> From: Bruce Allan <bruce.w.allan@intel.com>
> 
> Recent versions of checkpatch have a new warning based on a documented
> preference of Linus to not use bool in structures due to wasted space and
> the size of bool is implementation dependent.  For more information, see
> the email thread at https://lkml.org/lkml/2017/11/21/384.
> 
> Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice.h        |  8 ++++----
>  drivers/net/ethernet/intel/ice/ice_switch.h |  6 +++---
>  drivers/net/ethernet/intel/ice/ice_txrx.h   |  2 +-
>  drivers/net/ethernet/intel/ice/ice_type.h   | 16 ++++++++--------
>  4 files changed, 16 insertions(+), 16 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 13/13] ice: Trivial formatting fixes
  2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 13/13] ice: Trivial formatting fixes Anirudh Venkataramanan
@ 2018-08-21 21:28   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:28 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 13/13] ice: Trivial formatting fixes
> 
> 1) Add missing "\n" when printing link event error message.
> 
> 2) Update dev_err statement in probe.
> 
> 3) Add function description for ice_clear_pf_cfg.
> 
> 4) Fix coding style for ice_acquire_nvm.
> 
> 5) netdev->mtu is unsigned so use %u.
> 
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_common.c | 3 +++
>  drivers/net/ethernet/intel/ice/ice_main.c   | 6 +++---
>  drivers/net/ethernet/intel/ice/ice_nvm.c    | 5 ++---
>  3 files changed, 8 insertions(+), 6 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 04/13] ice: Report stats for allocated queues via ethtool stats
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 04/13] ice: Report stats for allocated queues via ethtool stats Anirudh Venkataramanan
@ 2018-08-21 21:29   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:29 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 04/13] ice: Report stats for allocated
> queues via ethtool stats
> 
> From: Jacob Keller <jacob.e.keller@intel.com>
> 
> It is not safe to have the string table for statistics change order or size over
> the lifetime of a given netdevice. This is because of the nature of the 3-step
> process for obtaining stats. First, userspace performs a request for the size of
> the strings table. Second it performs a separate request for the strings
> themselves, after allocating space for the table. Third, it requests the stats
> themselves, also allocating space for the table.
> 
> If the size decreased, there is potential to see garbage data or stats values. In
> the worst case, we could potentially see stats values become mis-aligned
> with their strings, so that it looks like a statistic is being reported differently
> than it actually is.
> 
> Even worse, if the size increased, there is potential that the strings table or
> stats table was not allocated large enough and the stats code could access
> and write to memory it should not, potentially resulting in undefined
> behavior and system crashes.
> 
> It isn't even safe if the size always changes under the RTNL lock. This is
> because the calls take place over multiple userspace commands, so it is not
> possible to hold the RTNL lock for the entire duration of obtaining strings and
> stats. Further, not all consumers of the ethtool API are the userspace ethtool
> program, and it is possible that one assumes the strings will not change (valid
> under the current contract), and thus only requests the stats values when
> requesting stats in a loop.
> 
> Finally, it's not possible in the general case to detect when the size changes,
> because it is quite possible that one value which could impact the stat size
> increased, while another decreased. This would result in the same total
> number of stats, but reordering them so that stats no longer line up with the
> strings they belong to. Since only size changes aren't enough, we would need
> some sort of hash or token to determine when the strings no longer match.
> This would require extending the ethtool stats commands, but there is no
> more space in the relevant structures.
> 
> The real solution to resolve this would be to add a completely new API for
> stats, probably over netlink.
> 
> In the ice driver, the only thing impacting the stats that is not constant is the
> number of queues. Instead of reporting stats for each used queue, report
> stats for each allocated queue. We do not change the number of queues
> allocated for a given netdevice, as we pass this into the alloc_etherdev_mq()
> function to set the num_tx_queues and num_rx_queues.
> 
> This resolves the potential bugs at the slight cost of displaying many queue
> statistics which will not be activated.
> 
> Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
> [Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> cleaned
> up commit message]
> ---
>  drivers/net/ethernet/intel/ice/ice.h         |  7 +++
>  drivers/net/ethernet/intel/ice/ice_ethtool.c | 52 +++++++++++++++-----
>  2 files changed, 46 insertions(+), 13 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 10/13] ice: Fix a few null pointer dereference issues
  2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 10/13] ice: Fix a few null pointer dereference issues Anirudh Venkataramanan
@ 2018-08-21 21:30   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:30 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 10/13] ice: Fix a few null pointer
> dereference issues
> 
> 1) When ice_ena_msix_range() fails to reserve vectors, a devm_kfree()
>    warning was seen in the error flow path. So check pf->irq_tracker
>    before use in ice_clear_interrupt_scheme().
> 
> 2) In ice_vsi_cfg(), check vsi->netdev before use.
> 
> 3) In ice_get_link_status, check link_up before use.
> 
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_common.c |  2 +-
>  drivers/net/ethernet/intel/ice/ice_main.c   | 17 ++++++++++-------
>  2 files changed, 11 insertions(+), 8 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 09/13] ice: Update to interrupts enabled in OICR
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 09/13] ice: Update to interrupts enabled in OICR Anirudh Venkataramanan
@ 2018-08-21 21:30   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:30 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 09/13] ice: Update to interrupts enabled
> in OICR
> 
> From: Bruce Allan <bruce.w.allan@intel.com>
> 
> Remove the following interrupt causes that are not applicable or not
> handled:
> - PFINT_OICR_HLP_RDY_M
> - PFINT_OICR_CPM_RDY_M
> - PFINT_OICR_GPIO_M
> - PFINT_OICR_STORM_DETECT_M
> 
> Add the following interrupt cause that's actually handled in ice_misc_intr:
> - PFINT_OICR_PE_CRITERR_M
> 
> Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
> [Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> Removed
> defines from ice_hw_autogen.h]
> ---
>  drivers/net/ethernet/intel/ice/ice_hw_autogen.h | 8 --------
>  drivers/net/ethernet/intel/ice/ice_main.c       | 9 +++------
>  2 files changed, 3 insertions(+), 14 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 08/13] ice: Set VLAN flags correctly
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 08/13] ice: Set VLAN flags correctly Anirudh Venkataramanan
@ 2018-08-21 21:30   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:30 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 08/13] ice: Set VLAN flags correctly
> 
> From: Brett Creeley <brett.creeley@intel.com>
> 
> In the struct ice_aqc_vsi_props the field port_vlan_flags is an overloaded
> term because it is used for both port VLANs (PVLANs) and regular VLANs.
> This is an issue and is very confusing especially when dealing with VFs
> because normal VLANs and port VLANs are not the same.
> To fix this the field was renamed to vlan_flags and all of the #define's labeled
> *_PVLAN_* were renamed to *_VLAN_* if they are not specific to port
> VLANs.
> 
> Also in ice_vsi_manage_vlan_stripping, set the
> ICE_AQ_VSI_VLAN_MODE_ALL bit to allow the driver to add a VLAN tag to all
> packets it sends.
> 
> Signed-off-by: Brett Creeley <brett.creeley@intel.com>
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  .../net/ethernet/intel/ice/ice_adminq_cmd.h   | 24 +++++++-------
>  drivers/net/ethernet/intel/ice/ice_main.c     | 31 +++++++++++--------
>  2 files changed, 30 insertions(+), 25 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 02/13] ice: Remove unncessary node owner check
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 02/13] ice: Remove unncessary node owner check Anirudh Venkataramanan
@ 2018-08-21 21:31   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:31 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 02/13] ice: Remove unncessary node
> owner check
> 
> From: Bruce Allan <bruce.w.allan@intel.com>
> 
> There is already a check for owner == ICE_SCHED_NODE_OWNER_LAN at the
> beginning of ice_sched_update_vsi_child_nodes. Remove the additional
> check to address the static anlaysis tool smatch issue "warn: we tested
> 'owner' before and it was 'false'".
> 
> Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> --
> [Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> rewrote
> commit message]
> ---
>  drivers/net/ethernet/intel/ice/ice_sched.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 05/13] ice: Clean control queues only when they are initialized
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 05/13] ice: Clean control queues only when they are initialized Anirudh Venkataramanan
@ 2018-08-21 21:31   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:31 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 05/13] ice: Clean control queues only
> when they are initialized
> 
> From: Preethi Banala <preethi.banala@intel.com>
> 
> Clean control queues only when they are initialized. One of the ways to
> validate if the basic initialization is done is by checking value of
> cq->sq.head and cq->rq.head variables that specify the register address.
> This patch adds a check to avoid NULL pointer dereference crash when tried
> to shutdown uninitialized control queue.
> 
> Signed-off-by: Preethi Banala <preethi.banala@intel.com>
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_controlq.c | 24 ++++++++++++-------
>  1 file changed, 16 insertions(+), 8 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 06/13] ice: Fix bugs in control queue processing
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 06/13] ice: Fix bugs in control queue processing Anirudh Venkataramanan
@ 2018-08-21 21:31   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:31 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 06/13] ice: Fix bugs in control queue
> processing
> 
> This patch is a consolidation of multiple bug fixes for control queue
> processing.
> 
> 1)  In ice_clean_adminq_subtask() remove unnecessary reads/writes to
>     registers. The bits PFINT_FW_CTL, PFINT_MBX_CTL and PFINT_SB_CTL
>     are not set when an interrupt arrives, which means that clearing them
>     again can be omitted.
> 
> 2)  Get an accurate value in "pending" by re-reading the control queue
>     head register from the hardware.
> 
> 3)  Fix a corner case involving lost control queue messages by checking
>     for new control messages (using ice_ctrlq_pending) before exiting the
>     cleanup routine.
> 
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_controlq.c |  5 +++-
>  drivers/net/ethernet/intel/ice/ice_main.c     | 26 ++++++++++++++++---
>  2 files changed, 26 insertions(+), 5 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 03/13] ice: Cleanup magic number
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 03/13] ice: Cleanup magic number Anirudh Venkataramanan
@ 2018-08-21 21:32   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:32 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 03/13] ice: Cleanup magic number
> 
> Use define for the unit size shift of the Rx LAN context descriptor base
> address instead of the magic number 7.
> 
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h | 1 +
>  drivers/net/ethernet/intel/ice/ice_main.c      | 2 +-
>  2 files changed, 2 insertions(+), 1 deletion(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 01/13] ice: Fix multiple static analyser warnings
  2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 01/13] ice: Fix multiple static analyser warnings Anirudh Venkataramanan
@ 2018-08-21 21:32   ` Brelinski, TonyX
  0 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:32 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 01/13] ice: Fix multiple static analyser
> warnings
> 
> This patch fixes the following smatch errors:
> 
> 1) Fix "odd binop '0x0 & 0xc'" when performing the bitwise-and with a
>    constant value of zero (ICE_AQC_GSET_RSS_LUT_TABLE_SIZE_128_FLAG).
>    Remove a similar bitwise-and with 0 in ice_add_marker_act() and use the
>    right mask ICE_LG_ACT_GENERIC_OFFSET_M in the expression.
> 
> 2) Fix a similar issue "odd binop '0x0 & 0x1800' in ice_req_irq_msix_misc.
> 
> 3) Fix "odd binop '0x380000 & 0x7fff8'" in ice_add_marker_act(). Also, use
>    a new define ICE_LG_ACT_GENERIC_OFF_RX_DESC_PROF_IDX instead of
> magic
>    number '7'.
> 
> 4) Fix warn: odd binop '0x0 & 0x18' in ice_set_dflt_vsi_ctx() by removing
>    unnecessary logic to explicitly unset bits 3 and 4 in port_vlan_bits.
>    These bits are unset already by the memset on ctxt->info.
> 
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan@intel.com>
> ---
>  .../net/ethernet/intel/ice/ice_adminq_cmd.h   |  1 +
>  drivers/net/ethernet/intel/ice/ice_common.c   | 25 +++++++++++--------
>  drivers/net/ethernet/intel/ice/ice_main.c     | 19 ++++++--------
>  drivers/net/ethernet/intel/ice/ice_switch.c   |  4 +--
>  4 files changed, 25 insertions(+), 24 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

* [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice
  2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
                   ` (12 preceding siblings ...)
  2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 13/13] ice: Trivial formatting fixes Anirudh Venkataramanan
@ 2018-08-21 21:33 ` Brelinski, TonyX
  13 siblings, 0 replies; 28+ messages in thread
From: Brelinski, TonyX @ 2018-08-21 21:33 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, August 9, 2018 6:29 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice
> 
> This patch set fixes multiple bugs for the ice driver.
> 
> Anirudh Venkataramanan (5):
>   ice: Fix multiple static analyser warnings
>   ice: Cleanup magic number
>   ice: Fix bugs in control queue processing
>   ice: Fix a few null pointer dereference issues
>   ice: Trivial formatting fixes
> 
> Brett Creeley (1):
>   ice: Set VLAN flags correctly
> 
> Bruce Allan (3):
>   ice: Remove unncessary node owner check
>   ice: Update to interrupts enabled in OICR
>   ice: Change struct members from bool to u8
> 
> Jacob Keller (2):
>   ice: Report stats for allocated queues via ethtool stats
>   ice: Use order_base_2 to calculate higher power of 2
> 
> Jesse Brandeburg (1):
>   ice: Fix potential return of uninitialized value
> 
> Preethi Banala (1):
>   ice: Clean control queues only when they are initialized
> 
>  drivers/net/ethernet/intel/ice/ice.h          |  15 ++-
>  .../net/ethernet/intel/ice/ice_adminq_cmd.h   |  25 ++--
>  drivers/net/ethernet/intel/ice/ice_common.c   |  30 +++--
>  drivers/net/ethernet/intel/ice/ice_controlq.c |  29 +++--
> drivers/net/ethernet/intel/ice/ice_ethtool.c  |  52 ++++++--
>  .../net/ethernet/intel/ice/ice_hw_autogen.h   |   8 --
>  .../net/ethernet/intel/ice/ice_lan_tx_rx.h    |   1 +
>  drivers/net/ethernet/intel/ice/ice_main.c     | 115 ++++++++++--------
>  drivers/net/ethernet/intel/ice/ice_nvm.c      |   5 +-
>  drivers/net/ethernet/intel/ice/ice_sched.c    |   3 +-
>  drivers/net/ethernet/intel/ice/ice_switch.c   |   4 +-
>  drivers/net/ethernet/intel/ice/ice_switch.h   |   6 +-
>  drivers/net/ethernet/intel/ice/ice_txrx.h     |   2 +-
>  drivers/net/ethernet/intel/ice/ice_type.h     |  16 +--
>  14 files changed, 185 insertions(+), 126 deletions(-)

Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>



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

end of thread, other threads:[~2018-08-21 21:33 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-09 13:28 [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Anirudh Venkataramanan
2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 01/13] ice: Fix multiple static analyser warnings Anirudh Venkataramanan
2018-08-21 21:32   ` Brelinski, TonyX
2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 02/13] ice: Remove unncessary node owner check Anirudh Venkataramanan
2018-08-21 21:31   ` Brelinski, TonyX
2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 03/13] ice: Cleanup magic number Anirudh Venkataramanan
2018-08-21 21:32   ` Brelinski, TonyX
2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 04/13] ice: Report stats for allocated queues via ethtool stats Anirudh Venkataramanan
2018-08-21 21:29   ` Brelinski, TonyX
2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 05/13] ice: Clean control queues only when they are initialized Anirudh Venkataramanan
2018-08-21 21:31   ` Brelinski, TonyX
2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 06/13] ice: Fix bugs in control queue processing Anirudh Venkataramanan
2018-08-21 21:31   ` Brelinski, TonyX
2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 07/13] ice: Use order_base_2 to calculate higher power of 2 Anirudh Venkataramanan
2018-08-21 21:14   ` Brelinski, TonyX
2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 08/13] ice: Set VLAN flags correctly Anirudh Venkataramanan
2018-08-21 21:30   ` Brelinski, TonyX
2018-08-09 13:28 ` [Intel-wired-lan] [PATCH v4 09/13] ice: Update to interrupts enabled in OICR Anirudh Venkataramanan
2018-08-21 21:30   ` Brelinski, TonyX
2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 10/13] ice: Fix a few null pointer dereference issues Anirudh Venkataramanan
2018-08-21 21:30   ` Brelinski, TonyX
2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 11/13] ice: Fix potential return of uninitialized value Anirudh Venkataramanan
2018-08-21 21:14   ` Brelinski, TonyX
2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 12/13] ice: Change struct members from bool to u8 Anirudh Venkataramanan
2018-08-21 21:28   ` Brelinski, TonyX
2018-08-09 13:29 ` [Intel-wired-lan] [PATCH v4 13/13] ice: Trivial formatting fixes Anirudh Venkataramanan
2018-08-21 21:28   ` Brelinski, TonyX
2018-08-21 21:33 ` [Intel-wired-lan] [PATCH v4 00/13] Bug fixes for ice Brelinski, TonyX

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.