Skip to contentSkip to conversation

i40evf: fix bad indentation

PATCH New Catherine Sullivan 4 participants 38 messages Apr 7, 2015 – Apr 14, 2015

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/13 i40evf: fix bad indentation

From: Mitch Williams <[email protected]>

Not sure how this slipped through. Cosmetic change only.

Change-ID Iefec17e6bc14985d8cb7925c0bac770aa37de7c9
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/ethernet/intel/i40evf/i40evf_main.c +1 -1
index 6d5f3b2..a31bfd1 100644
@@ -2029,7 +2029,7 @@ static void i40evf_init_task(struct work_struct *work)
 		if (err) {
 			dev_err(&pdev->dev, "Failed to set MAC type (%d)\n",
 				err);
-		goto err;
+			goto err;
 		}
 		err = i40evf_check_reset_complete(hw);
 		if (err) {
Signature · 1 line
1.9.3
#1 lore raw

PATCH 2/13 i40e: Add support to program FDir SB rules for VF from PF through ethtool

From: Anjali Singhai Jain <[email protected]>

With this patch we can now add Flow director Sideband rules for a VF from it's PF.
Here is an example on how it can be done when VF id = 5 and queue = 2
"ethtool -N ethx flow-type udp4 src-ip x.x.x.x dst-ip y.y.y.y src-port p1 dst-port p2 action 2 user-def 5" User-def specifies VF id and action specifies queue.

Change-ID Ib37d6dff3823a4d85caffde638473891c38c2b89
---
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c +26 -0
index c848b18..7d60587 100644
@@ -1914,6 +1914,16 @@ static int i40e_get_ethtool_fdir_entry(struct i40e_pf *pf,
 	else
 		fsp->ring_cookie = rule->q_index;
 
+	if (rule->dest_vsi != pf->vsi[pf->lan_vsi]->id) {
+		struct i40e_vsi *vsi;
+
+		vsi = i40e_find_vsi_from_id(pf, rule->dest_vsi);
+		if (vsi && vsi->type == I40E_VSI_SRIOV) {
+			fsp->h_ext.data[1] = htonl(vsi->vf_id);
+			fsp->m_ext.data[1] = htonl(0x1);
+		}
+	}
+
 	return 0;
 }
 
@@ -2207,6 +2217,7 @@ static int i40e_add_fdir_ethtool(struct i40e_vsi *vsi,
 	struct i40e_fdir_filter *input;
 	struct i40e_pf *pf;
 	int ret = -EINVAL;
+	u16 vf_id;
 
 	if (!vsi)
 		return -EINVAL;
@@ -2267,7 +2278,22 @@ static int i40e_add_fdir_ethtool(struct i40e_vsi *vsi,
 	input->dst_ip[0] = fsp->h_u.tcp_ip4_spec.ip4src;
 	input->src_ip[0] = fsp->h_u.tcp_ip4_spec.ip4dst;
 
+	if (ntohl(fsp->m_ext.data[1])) {
+		if (ntohl(fsp->h_ext.data[1]) >= pf->num_alloc_vfs) {
+			netif_info(pf, drv, vsi->netdev, "Invalid VF id\n");
+			goto free_input;
+		}
+		vf_id = ntohl(fsp->h_ext.data[1]);
+		/* Find vsi id from vf id and override dest vsi */
+		input->dest_vsi = pf->vf[vf_id].lan_vsi_id;
+		if (input->q_index >= pf->vf[vf_id].num_queue_pairs) {
+			netif_info(pf, drv, vsi->netdev, "Invalid queue id\n");
+			goto free_input;
+		}
+	}
+
 	ret = i40e_add_del_fdir(vsi, input, true);
+free_input:
 	if (ret)
 		kfree(input);
 	else
Signature · 1 line
1.9.3
#2 lore raw

PATCH 2/13 i40e: Add support to program FDir SB rules for VF from PF through ethtool

Quoted 9 lines · Catherine Sullivan

From: Anjali Singhai Jain <[email protected]>

With this patch we can now add Flow director Sideband rules for a VF from it's PF.
Here is an example on how it can be done when VF id = 5 and queue = 2 "ethtool -N ethx flow-type udp4 src-ip x.x.x.x dst-ip y.y.y.y src-port p1 dst-port p2 action 2 user-def 5"
User-def specifies VF id and action specifies queue.

Quoted 6 lines
Change-ID Ib37d6dff3823a4d85caffde638473891c38c2b89
---
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 26
++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/4c0eb603/attachment.asc>
#3 lore raw

PATCH 3/13 i40evf: remove aq_pending

In reply to Catherine Sullivan

From: Mitch Williams <[email protected]>

The aq_pending field in the adapter structure is actually redundant with the current_op field. Remove the aq_pending field and expunge all traces of it from the official record. This simplifies the code significantly, especially in the virtual channel completion routine.

Change-ID Ib2957c8c19882bd0cecc6fcd133912c24b46a1ff
---
 drivers/net/ethernet/intel/i40evf/i40evf.h         |  1 -
 drivers/net/ethernet/intel/i40evf/i40evf_main.c    |  7 +---
 .../net/ethernet/intel/i40evf/i40evf_virtchnl.c    | 42 ++++++----------------
 3 files changed, 12 insertions(+), 38 deletions(-)
drivers/net/ethernet/intel/i40evf/i40evf.h +0 -1
index 34c8565..1b98c25 100644
@@ -225,7 +225,6 @@ struct i40evf_adapter {
 #define I40E_FLAG_RX_CSUM_ENABLED                I40EVF_FLAG_RX_CSUM_ENABLED
 	/* flags for admin queue service task */
 	u32 aq_required;
-	u32 aq_pending;
 #define I40EVF_FLAG_AQ_ENABLE_QUEUES		(u32)(1)
 #define I40EVF_FLAG_AQ_DISABLE_QUEUES		(u32)(1 << 1)
 #define I40EVF_FLAG_AQ_ADD_MAC_FILTER		(u32)(1 << 2)
drivers/net/ethernet/intel/i40evf/i40evf_main.c +1 -6
index a31bfd1..7c53aca 100644
@@ -1008,7 +1008,6 @@ void i40evf_down(struct i40evf_adapter *adapter)
 	    adapter->state != __I40EVF_RESETTING) {
 		/* cancel any current operation */
 		adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN;
-		adapter->aq_pending = 0;
 		/* Schedule operations to close down the HW. Don't wait
 		 * here for this to complete. The watchdog is still running
 		 * and it will take care of this.
@@ -1335,7 +1334,6 @@ static void i40evf_watchdog_task(struct work_struct *work)
 			 */
 			return;
 		}
-		adapter->aq_pending = 0;
 		adapter->aq_required = 0;
 		adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN;
 		goto watchdog_done;
@@ -1355,7 +1353,6 @@ static void i40evf_watchdog_task(struct work_struct *work)
 		adapter->flags |= I40EVF_FLAG_RESET_PENDING;
 		dev_err(&adapter->pdev->dev, "Hardware reset detected\n");
 		schedule_work(&adapter->reset_task);
-		adapter->aq_pending = 0;
 		adapter->aq_required = 0;
 		adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN;
 		goto watchdog_done;
@@ -1364,7 +1361,7 @@ static void i40evf_watchdog_task(struct work_struct *work)
 	/* Process admin queue tasks. After init, everything gets done
 	 * here so we don't race on the admin queue.
 	 */
-	if (adapter->aq_pending) {
+	if (adapter->current_op) {
 		if (!i40evf_asq_done(hw)) {
 			dev_dbg(&adapter->pdev->dev, "Admin queue timeout\n");
 			i40evf_send_api_ver(adapter);
@@ -2249,7 +2246,6 @@ static void i40evf_shutdown(struct pci_dev *pdev)
 	/* Prevent the watchdog from running. */
 	adapter->state = __I40EVF_REMOVE;
 	adapter->aq_required = 0;
-	adapter->aq_pending = 0;
 
 #ifdef CONFIG_PM
 	pci_save_state(pdev);
@@ -2467,7 +2463,6 @@ static void i40evf_remove(struct pci_dev *pdev)
 	/* Shut down all the garbage mashers on the detention level */
 	adapter->state = __I40EVF_REMOVE;
 	adapter->aq_required = 0;
-	adapter->aq_pending = 0;
 	i40evf_request_reset(adapter);
 	msleep(20);
 	/* If the FW isn't responding, kick it once, but only once. */
drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c +11 -31

115 lines not on this page · raw message

Signature · 1 line
1.9.3
#4 lore raw

PATCH 3/13 i40evf: remove aq_pending

Quoted 10 lines · Catherine Sullivan

From: Mitch Williams <[email protected]>

The aq_pending field in the adapter structure is actually redundant with
the current_op field. Remove the aq_pending field and expunge all traces
of it from the official record. This simplifies the code significantly,
especially in the virtual channel completion routine.

Quoted 8 lines
Change-ID Ib2957c8c19882bd0cecc6fcd133912c24b46a1ff
---
 drivers/net/ethernet/intel/i40evf/i40evf.h         |  1 -
 drivers/net/ethernet/intel/i40evf/i40evf_main.c    |  7 +---
 .../net/ethernet/intel/i40evf/i40evf_virtchnl.c    | 42
++++++----------------
 3 files changed, 12 insertions(+), 38 deletions(-)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/a5a5742b/attachment.asc>
#5 lore raw

PATCH 3/13 i40evf: remove aq_pending

-----Original Message-----
From: Kirsher, Jeffrey T
Sent: Tuesday, April 07, 2015 4:54 PM
To: Sullivan, Catherine; Young, James M
Cc: intel-wired-lan at lists.osuosl.org
Subject: Re: [Intel-wired-lan] [net-next S3 03/13] i40evf: remove aq_pending

Quoted 7 lines · Catherine Sullivan

From: Mitch Williams <[email protected]>

The aq_pending field in the adapter structure is actually redundant with the current_op field. Remove the aq_pending field and expunge all traces of it from the official record. This simplifies the code significantly, especially in the virtual channel completion routine.

Quoted 8 lines
Change-ID Ib2957c8c19882bd0cecc6fcd133912c24b46a1ff
---
 drivers/net/ethernet/intel/i40evf/i40evf.h         |  1 -
 drivers/net/ethernet/intel/i40evf/i40evf_main.c    |  7 +---
 .../net/ethernet/intel/i40evf/i40evf_virtchnl.c    | 42
++++++----------------
 3 files changed, 12 insertions(+), 38 deletions(-)

Thanks Catherine, I have added your patch to my queue. --
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue

#6 lore raw

PATCH 4/13 i40e: notify VFs of link state

In reply to Catherine Sullivan

From: Mitch Williams <[email protected]>

Gratuitously notify VFs of link state when they activate their queues. In general, this is the last thing that a VF driver will do as it opens its interface, so this is a good time to notify the VF.

Currently, VF devices assume link is up unless told otherwise, which means that VFs instantiated on a PF with no link will report the wrong state. This change corrects that issue.

Change-ID Iea53622904ecc681ac3f8938d81c30033ef9a0a6
---
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 50 ++++++++++++++--------
 1 file changed, 31 insertions(+), 19 deletions(-)
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +31 -19
index 9b3fc83..8df2b52 100644
@@ -25,6 +25,7 @@
  ******************************************************************************/
 
 #include "i40e.h"
+static void i40e_vc_notify_vf_link_state(struct i40e_vf *vf);
 
 /***********************misc routines*****************************/
 
@@ -1767,6 +1768,7 @@ int i40e_vc_process_vf_msg(struct i40e_pf *pf, u16 vf_id, u32 v_opcode,
 		break;
 	case I40E_VIRTCHNL_OP_ENABLE_QUEUES:
 		ret = i40e_vc_enable_queues_msg(vf, msg, msglen);
+		i40e_vc_notify_vf_link_state(vf);
 		break;
 	case I40E_VIRTCHNL_OP_DISABLE_QUEUES:
 		ret = i40e_vc_disable_queues_msg(vf, msg, msglen);
@@ -1875,35 +1877,45 @@ static void i40e_vc_vf_broadcast(struct i40e_pf *pf,
 
 /**
  * i40e_vc_notify_link_state
- * @pf: pointer to the PF structure
+ * @vf: pointer to the VF structure
  *
- * send a link status message to all VFs on a given PF
+ * send a link status message to a single VF
  **/
-void i40e_vc_notify_link_state(struct i40e_pf *pf)
+static void i40e_vc_notify_vf_link_state(struct i40e_vf *vf)
 {
 	struct i40e_virtchnl_pf_event pfe;
+	struct i40e_pf *pf = vf->pf;
 	struct i40e_hw *hw = &pf->hw;
-	struct i40e_vf *vf = pf->vf;
 	struct i40e_link_status *ls = &pf->hw.phy.link_info;
-	int i;
+	int abs_vf_id = vf->vf_id + hw->func_caps.vf_base_id;
 
 	pfe.event = I40E_VIRTCHNL_EVENT_LINK_CHANGE;
 	pfe.severity = I40E_PF_EVENT_SEVERITY_INFO;
-	for (i = 0; i < pf->num_alloc_vfs; i++, vf++) {
-		int abs_vf_id = vf->vf_id + hw->func_caps.vf_base_id;
-		if (vf->link_forced) {
-			pfe.event_data.link_event.link_status = vf->link_up;
-			pfe.event_data.link_event.link_speed =
-				(vf->link_up ? I40E_LINK_SPEED_40GB : 0);
-		} else {
-			pfe.event_data.link_event.link_status =
-				ls->link_info & I40E_AQ_LINK_UP;
-			pfe.event_data.link_event.link_speed = ls->link_speed;
-		}
-		i40e_aq_send_msg_to_vf(hw, abs_vf_id, I40E_VIRTCHNL_OP_EVENT,
-				       0, (u8 *)&pfe, sizeof(pfe),
-				       NULL);
+	if (vf->link_forced) {
+		pfe.event_data.link_event.link_status = vf->link_up;
+		pfe.event_data.link_event.link_speed =
+			(vf->link_up ? I40E_LINK_SPEED_40GB : 0);
+	} else {
+		pfe.event_data.link_event.link_status =
+			ls->link_info & I40E_AQ_LINK_UP;
+		pfe.event_data.link_event.link_speed = ls->link_speed;
 	}
+	i40e_aq_send_msg_to_vf(hw, abs_vf_id, I40E_VIRTCHNL_OP_EVENT,
+			       0, (u8 *)&pfe, sizeof(pfe), NULL);
+}
+
+/**
+ * i40e_vc_notify_link_state
+ * @pf: pointer to the PF structure
+ *
+ * send a link status message to all VFs on a given PF
+ **/
+void i40e_vc_notify_link_state(struct i40e_pf *pf)
+{
+	int i;
+
+	for (i = 0; i < pf->num_alloc_vfs; i++)
+		i40e_vc_notify_vf_link_state(&pf->vf[i]);
 }
 
 /**
Signature · 1 line
1.9.3
#7 lore raw

PATCH 4/13 i40e: notify VFs of link state

Quoted 11 lines · Catherine Sullivan

From: Mitch Williams <[email protected]>

Gratuitously notify VFs of link state when they activate their queues. In general, this is the last thing that a VF driver will do as it opens
its interface, so this is a good time to notify the VF.

Currently, VF devices assume link is up unless told otherwise, which means that VFs instantiated on a PF with no link will report the wrong state. This change corrects that issue.

Quoted 6 lines
Change-ID Iea53622904ecc681ac3f8938d81c30033ef9a0a6
---
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 50
++++++++++++++--------
 1 file changed, 31 insertions(+), 19 deletions(-)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/1f9fddad/attachment.asc>
#8 lore raw

PATCH 4/13 i40e: notify VFs of link state

-----Original Message-----
From: Kirsher, Jeffrey T
Sent: Tuesday, April 07, 2015 4:54 PM
To: Sullivan, Catherine; Young, James M
Cc: intel-wired-lan at lists.osuosl.org
Subject: Re: [Intel-wired-lan] [net-next S3 04/13] i40e: notify VFs of link state

Quoted 10 lines · Catherine Sullivan

From: Mitch Williams <[email protected]>

Gratuitously notify VFs of link state when they activate their queues. In general, this is the last thing that a VF driver will do as it opens its interface, so this is a good time to notify the VF.

Currently, VF devices assume link is up unless told otherwise, which means that VFs instantiated on a PF with no link will report the wrong state. This change corrects that issue.

Quoted 6 lines
Change-ID Iea53622904ecc681ac3f8938d81c30033ef9a0a6
---
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 50
++++++++++++++--------
 1 file changed, 31 insertions(+), 19 deletions(-)

Thanks Catherine, I have added your patch to my queue. --
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue

#9 lore raw

PATCH 5/13 i40e: move VF notification routines up

In reply to Catherine Sullivan

From: Mitch Williams <[email protected]>

Move the VF notification functions to the top of the file. This eliminates an unnecessary declaration.

Change-ID I036171f14180ee9f0ce4e0a21334d6a217d06c94
---
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 246 ++++++++++-----------
 1 file changed, 123 insertions(+), 123 deletions(-)
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +123 -123
index 8df2b52..98e0921 100644
@@ -25,8 +25,130 @@
  ******************************************************************************/
 
 #include "i40e.h"
-static void i40e_vc_notify_vf_link_state(struct i40e_vf *vf);
 
+/*********************notification routines***********************/
+
+/**
+ * i40e_vc_vf_broadcast
+ * @pf: pointer to the PF structure
+ * @opcode: operation code
+ * @retval: return value
+ * @msg: pointer to the msg buffer
+ * @msglen: msg length
+ *
+ * send a message to all VFs on a given PF
+ **/
+static void i40e_vc_vf_broadcast(struct i40e_pf *pf,
+				 enum i40e_virtchnl_ops v_opcode,
+				 i40e_status v_retval, u8 *msg,
+				 u16 msglen)
+{
+	struct i40e_hw *hw = &pf->hw;
+	struct i40e_vf *vf = pf->vf;
+	int i;
+
+	for (i = 0; i < pf->num_alloc_vfs; i++, vf++) {
+		int abs_vf_id = vf->vf_id + hw->func_caps.vf_base_id;
+		/* Not all vfs are enabled so skip the ones that are not */
+		if (!test_bit(I40E_VF_STAT_INIT, &vf->vf_states) &&
+		    !test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states))
+			continue;
+
+		/* Ignore return value on purpose - a given VF may fail, but
+		 * we need to keep going and send to all of them
+		 */
+		i40e_aq_send_msg_to_vf(hw, abs_vf_id, v_opcode, v_retval,
+				       msg, msglen, NULL);
+	}
+}
+
+/**
+ * i40e_vc_notify_link_state
+ * @vf: pointer to the VF structure
+ *
+ * send a link status message to a single VF
+ **/
+static void i40e_vc_notify_vf_link_state(struct i40e_vf *vf)
+{
+	struct i40e_virtchnl_pf_event pfe;
+	struct i40e_pf *pf = vf->pf;
+	struct i40e_hw *hw = &pf->hw;
+	struct i40e_link_status *ls = &pf->hw.phy.link_info;
+	int abs_vf_id = vf->vf_id + hw->func_caps.vf_base_id;
+
+	pfe.event = I40E_VIRTCHNL_EVENT_LINK_CHANGE;
+	pfe.severity = I40E_PF_EVENT_SEVERITY_INFO;
+	if (vf->link_forced) {
+		pfe.event_data.link_event.link_status = vf->link_up;
+		pfe.event_data.link_event.link_speed =
+			(vf->link_up ? I40E_LINK_SPEED_40GB : 0);
+	} else {
+		pfe.event_data.link_event.link_status =
+			ls->link_info & I40E_AQ_LINK_UP;
+		pfe.event_data.link_event.link_speed = ls->link_speed;
+	}
+	i40e_aq_send_msg_to_vf(hw, abs_vf_id, I40E_VIRTCHNL_OP_EVENT,
+			       0, (u8 *)&pfe, sizeof(pfe), NULL);
+}
+
+/**
+ * i40e_vc_notify_link_state
+ * @pf: pointer to the PF structure
+ *
+ * send a link status message to all VFs on a given PF
+ **/
+void i40e_vc_notify_link_state(struct i40e_pf *pf)
+{
+	int i;
+
+	for (i = 0; i < pf->num_alloc_vfs; i++)
+		i40e_vc_notify_vf_link_state(&pf->vf[i]);
+}
+
+/**
+ * i40e_vc_notify_reset
+ * @pf: pointer to the PF structure
+ *
+ * indicate a pending reset to all VFs on a given PF
+ **/
+void i40e_vc_notify_reset(struct i40e_pf *pf)
+{
+	struct i40e_virtchnl_pf_event pfe;
+
+	pfe.event = I40E_VIRTCHNL_EVENT_RESET_IMPENDING;
+	pfe.severity = I40E_PF_EVENT_SEVERITY_CERTAIN_DOOM;
+	i40e_vc_vf_broadcast(pf, I40E_VIRTCHNL_OP_EVENT, 0,
+			     (u8 *)&pfe, sizeof(struct i40e_virtchnl_pf_event));
+}
+
+/**
+ * i40e_vc_notify_vf_reset
+ * @vf: pointer to the VF structure
+ *
+ * indicate a pending reset to the given VF
+ **/
+void i40e_vc_notify_vf_reset(struct i40e_vf *vf)
+{
+	struct i40e_virtchnl_pf_event pfe;
+	int abs_vf_id;
+
+	/* validate the request */
+	if (!vf || vf->vf_id >= vf->pf->num_alloc_vfs)
+		return;
+
+	/* verify if the VF is in either init or active before proceeding */
+	if (!test_bit(I40E_VF_STAT_INIT, &vf->vf_states) &&
+	    !test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states))
+		return;
+
+	abs_vf_id = vf->vf_id + vf->pf->hw.func_caps.vf_base_id;
+
+	pfe.event = I40E_VIRTCHNL_EVENT_RESET_IMPENDING;
+	pfe.severity = I40E_PF_EVENT_SEVERITY_CERTAIN_DOOM;
+	i40e_aq_send_msg_to_vf(&vf->pf->hw, abs_vf_id, I40E_VIRTCHNL_OP_EVENT,
+			       0, (u8 *)&pfe,
+			       sizeof(struct i40e_virtchnl_pf_event), NULL);
+}
 /***********************misc routines*****************************/
 
 /**
@@ -1842,128 +1964,6 @@ int i40e_vc_process_vflr_event(struct i40e_pf *pf)
 }
 
 /**
- * i40e_vc_vf_broadcast
- * @pf: pointer to the PF structure
- * @opcode: operation code
- * @retval: return value
- * @msg: pointer to the msg buffer
- * @msglen: msg length
- *
- * send a message to all VFs on a given PF
- **/
-static void i40e_vc_vf_broadcast(struct i40e_pf *pf,
-				 enum i40e_virtchnl_ops v_opcode,
-				 i40e_status v_retval, u8 *msg,
-				 u16 msglen)
-{
-	struct i40e_hw *hw = &pf->hw;
-	struct i40e_vf *vf = pf->vf;
-	int i;
-
-	for (i = 0; i < pf->num_alloc_vfs; i++, vf++) {
-		int abs_vf_id = vf->vf_id + hw->func_caps.vf_base_id;
-		/* Not all VFs are enabled so skip the ones that are not */
-		if (!test_bit(I40E_VF_STAT_INIT, &vf->vf_states) &&
-		    !test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states))
-			continue;
-
-		/* Ignore return value on purpose - a given VF may fail, but
-		 * we need to keep going and send to all of them
-		 */
-		i40e_aq_send_msg_to_vf(hw, abs_vf_id, v_opcode, v_retval,
-				       msg, msglen, NULL);
-	}
-}
-
-/**
- * i40e_vc_notify_link_state
- * @vf: pointer to the VF structure
- *
- * send a link status message to a single VF
- **/
-static void i40e_vc_notify_vf_link_state(struct i40e_vf *vf)
-{
-	struct i40e_virtchnl_pf_event pfe;
-	struct i40e_pf *pf = vf->pf;
-	struct i40e_hw *hw = &pf->hw;
-	struct i40e_link_status *ls = &pf->hw.phy.link_info;
-	int abs_vf_id = vf->vf_id + hw->func_caps.vf_base_id;
-
-	pfe.event = I40E_VIRTCHNL_EVENT_LINK_CHANGE;
-	pfe.severity = I40E_PF_EVENT_SEVERITY_INFO;
-	if (vf->link_forced) {
-		pfe.event_data.link_event.link_status = vf->link_up;
-		pfe.event_data.link_event.link_speed =
-			(vf->link_up ? I40E_LINK_SPEED_40GB : 0);
-	} else {
-		pfe.event_data.link_event.link_status =
-			ls->link_info & I40E_AQ_LINK_UP;
-		pfe.event_data.link_event.link_speed = ls->link_speed;
-	}
-	i40e_aq_send_msg_to_vf(hw, abs_vf_id, I40E_VIRTCHNL_OP_EVENT,
-			       0, (u8 *)&pfe, sizeof(pfe), NULL);
-}
-
-/**
- * i40e_vc_notify_link_state
- * @pf: pointer to the PF structure
- *
- * send a link status message to all VFs on a given PF
- **/
-void i40e_vc_notify_link_state(struct i40e_pf *pf)
-{
-	int i;
-
-	for (i = 0; i < pf->num_alloc_vfs; i++)
-		i40e_vc_notify_vf_link_state(&pf->vf[i]);
-}
-
-/**
- * i40e_vc_notify_reset
- * @pf: pointer to the PF structure
- *
- * indicate a pending reset to all VFs on a given PF
- **/
-void i40e_vc_notify_reset(struct i40e_pf *pf)
-{
-	struct i40e_virtchnl_pf_event pfe;
-
-	pfe.event = I40E_VIRTCHNL_EVENT_RESET_IMPENDING;
-	pfe.severity = I40E_PF_EVENT_SEVERITY_CERTAIN_DOOM;
-	i40e_vc_vf_broadcast(pf, I40E_VIRTCHNL_OP_EVENT, I40E_SUCCESS,
-			     (u8 *)&pfe, sizeof(struct i40e_virtchnl_pf_event));
-}
-
-/**
- * i40e_vc_notify_vf_reset
- * @vf: pointer to the VF structure
- *
- * indicate a pending reset to the given VF
- **/
-void i40e_vc_notify_vf_reset(struct i40e_vf *vf)
-{
-	struct i40e_virtchnl_pf_event pfe;
-	int abs_vf_id;
-
-	/* validate the request */
-	if (!vf || vf->vf_id >= vf->pf->num_alloc_vfs)
-		return;
-
-	/* verify if the VF is in either init or active before proceeding */
-	if (!test_bit(I40E_VF_STAT_INIT, &vf->vf_states) &&
-	    !test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states))
-		return;
-
-	abs_vf_id = vf->vf_id + vf->pf->hw.func_caps.vf_base_id;
-
-	pfe.event = I40E_VIRTCHNL_EVENT_RESET_IMPENDING;
-	pfe.severity = I40E_PF_EVENT_SEVERITY_CERTAIN_DOOM;
-	i40e_aq_send_msg_to_vf(&vf->pf->hw, abs_vf_id, I40E_VIRTCHNL_OP_EVENT,
-			       I40E_SUCCESS, (u8 *)&pfe,
-			       sizeof(struct i40e_virtchnl_pf_event), NULL);
-}
-
-/**
  * i40e_ndo_set_vf_mac
  * @netdev: network interface device structure
  * @vf_id: VF identifier
Signature · 1 line
1.9.3
#10 lore raw

PATCH 5/13 i40e: move VF notification routines up

Quoted 11 lines · Catherine Sullivan

From: Mitch Williams <[email protected]>

Move the VF notification functions to the top of the file. This eliminates an unnecessary declaration.

Change-ID I036171f14180ee9f0ce4e0a21334d6a217d06c94
---
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 246
++++++++++-----------
 1 file changed, 123 insertions(+), 123 deletions(-)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/8f15212b/attachment-0001.asc>
#11 lore raw

PATCH 5/13 i40e: move VF notification routines up

-----Original Message-----
From: Kirsher, Jeffrey T
Sent: Tuesday, April 07, 2015 4:54 PM
To: Sullivan, Catherine; Young, James M
Cc: intel-wired-lan at lists.osuosl.org
Subject: Re: [Intel-wired-lan] [net-next S3 05/13] i40e: move VF notification routines up

Quoted 11 lines · Catherine Sullivan

From: Mitch Williams <[email protected]>

Move the VF notification functions to the top of the file. This eliminates an unnecessary declaration.

Change-ID I036171f14180ee9f0ce4e0a21334d6a217d06c94
---
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 246
++++++++++-----------
 1 file changed, 123 insertions(+), 123 deletions(-)

Thanks Catherine, I have added your patch to my queue. --
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue

#12 lore raw

PATCH 6/13 i40e: For VF reset (VFR and VFLR) add some more delay

In reply to Catherine Sullivan

From: Anjali Singhai Jain <[email protected]>

With a HW issue that was recently discovered, after a VFLR HW might be indicating to us a reset completion little too early. So wait another 10 msec for cache to be cleaned up.

Change-ID I6a24dcf5dd7ffcd6500246e717411ef58532d1e9
---
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +3 -0
index 98e0921..78d1c4f 100644
@@ -812,6 +812,9 @@ void i40e_reset_vf(struct i40e_vf *vf, bool flr)
 		}
 	}
 
+	if (flr)
+		usleep_range(10000, 20000);
+
 	if (!rsd)
 		dev_err(&pf->pdev->dev, "VF reset check timeout on VF %d\n",
 			vf->vf_id);
Signature · 1 line
1.9.3
#13 lore raw

PATCH 6/13 i40e: For VF reset (VFR and VFLR) add some more delay

Quoted 7 lines · Catherine Sullivan

From: Anjali Singhai Jain <[email protected]>

With a HW issue that was recently discovered, after a VFLR HW might be indicating to us a reset completion little too early. So wait another 10
msec for cache to be cleaned up.

Quoted 5 lines
Change-ID I6a24dcf5dd7ffcd6500246e717411ef58532d1e9
---
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 3 +++
 1 file changed, 3 insertions(+)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/954d7fcb/attachment.asc>
#14 lore raw

PATCH 7/13 i40e: print FCoE capability reported by the device function

In reply to Catherine Sullivan

From: Vasu Dev <[email protected]>

This is to allow quick check for FCoE capability is enabled or not in device function before any SW overrides.

Change-ID I5f78ba798d566f143161273156916c6f4074496e
---
 drivers/net/ethernet/intel/i40e/i40e_common.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/net/ethernet/intel/i40e/i40e_common.c +3 -0
index d596f66..44dc4b1 100644
@@ -2546,6 +2546,9 @@ static void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
 		}
 	}
 
+	if (p->fcoe)
+		i40e_debug(hw, I40E_DEBUG_ALL, "device is FCoE capable\n");
+
 	/* Software override ensuring FCoE is disabled if npar or mfp
 	 * mode because it is not supported in these modes.
 	 */
Signature · 1 line
1.9.3
#15 lore raw

PATCH 7/13 i40e: print FCoE capability reported by the device function

Quoted 10 lines · Catherine Sullivan

From: Vasu Dev <[email protected]>

This is to allow quick check for FCoE capability is enabled or not in device function before any SW overrides.

Change-ID I5f78ba798d566f143161273156916c6f4074496e
---
 drivers/net/ethernet/intel/i40e/i40e_common.c | 3 +++
 1 file changed, 3 insertions(+)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/1990dea2/attachment.asc>
#16 lore raw

PATCH 7/13 i40e: print FCoE capability reported by the device function

-----Original Message-----
From: Kirsher, Jeffrey T
Sent: Tuesday, April 07, 2015 4:55 PM
To: Sullivan, Catherine; Young, James M
Cc: intel-wired-lan at lists.osuosl.org
Subject: Re: [Intel-wired-lan] [net-next S3 07/13] i40e: print FCoE capability reported by the device function

Quoted 10 lines · Catherine Sullivan

From: Vasu Dev <[email protected]>

This is to allow quick check for FCoE capability is enabled or not in device function before any SW overrides.

Change-ID I5f78ba798d566f143161273156916c6f4074496e
---
 drivers/net/ethernet/intel/i40e/i40e_common.c | 3 +++
 1 file changed, 3 insertions(+)

Thanks Catherine, I have added your patch to my queue. --
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue

#17 lore raw

PATCH 8/13 i40e: enable user dump of internal hardware state

In reply to Catherine Sullivan

From: Jesse Brandeburg <[email protected]>

This is a feature to enable better debugging of user reported issues by allowing a bash script to acquire information about the internal hardware state. The data output to the kernel log is collected by the script and can then be sent to Intel. This is a critical debugging feature for helping us interpret and reproduce complex customer setups.

Change-ID Ie8b3ab09086d6870a709015f51ada05af10b41bb
---
 drivers/net/ethernet/intel/i40e/i40e_common.c    | 57 ++++++++++++++++++++++++
 drivers/net/ethernet/intel/i40e/i40e_debugfs.c   | 45 +++++++++++++++++++
 drivers/net/ethernet/intel/i40e/i40e_prototype.h |  5 +++
 3 files changed, 107 insertions(+)
drivers/net/ethernet/intel/i40e/i40e_common.c +57 -0
index 44dc4b1..ce522d7 100644
@@ -3506,6 +3506,63 @@ void i40e_set_pci_config_data(struct i40e_hw *hw, u16 link_status)
 }
 
 /**
+ * i40e_aq_debug_dump
+ * @hw: pointer to the hardware structure
+ * @cluster_id: specific cluster to dump
+ * @table_id: table id within cluster
+ * @start_index: index of line in the block to read
+ * @buff_size: dump buffer size
+ * @buff: dump buffer
+ * @ret_buff_size: actual buffer size returned
+ * @ret_next_table: next block to read
+ * @ret_next_index: next index to read
+ *
+ * Dump internal FW/HW data for debug purposes.
+ *
+ **/
+i40e_status i40e_aq_debug_dump(struct i40e_hw *hw, u8 cluster_id,
+			       u8 table_id, u32 start_index, u16 buff_size,
+			       void *buff, u16 *ret_buff_size,
+			       u8 *ret_next_table, u32 *ret_next_index,
+			       struct i40e_asq_cmd_details *cmd_details)
+{
+	struct i40e_aq_desc desc;
+	struct i40e_aqc_debug_dump_internals *cmd =
+		(struct i40e_aqc_debug_dump_internals *)&desc.params.raw;
+	struct i40e_aqc_debug_dump_internals *resp =
+		(struct i40e_aqc_debug_dump_internals *)&desc.params.raw;
+	i40e_status status;
+
+	if (buff_size == 0 || !buff)
+		return I40E_ERR_PARAM;
+
+	i40e_fill_default_direct_cmd_desc(&desc,
+					  i40e_aqc_opc_debug_dump_internals);
+	/* Indirect Command */
+	desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_BUF);
+	if (buff_size > I40E_AQ_LARGE_BUF)
+		desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_LB);
+
+	cmd->cluster_id = cluster_id;
+	cmd->table_id = table_id;
+	cmd->idx = cpu_to_le32(start_index);
+
+	desc.datalen = cpu_to_le16(buff_size);
+
+	status = i40e_asq_send_command(hw, &desc, buff, buff_size, cmd_details);
+	if (!status) {
+		if (ret_buff_size)
+			*ret_buff_size = le16_to_cpu(desc.datalen);
+		if (ret_next_table)
+			*ret_next_table = resp->table_id;
+		if (ret_next_index)
+			*ret_next_index = le32_to_cpu(resp->idx);
+	}
+
+	return status;
+}
+
+/**
  * i40e_read_bw_from_alt_ram
  * @hw: pointer to the hardware structure
  * @max_bw: pointer for max_bw read
drivers/net/ethernet/intel/i40e/i40e_debugfs.c +45 -0

57 lines not on this page · raw message

drivers/net/ethernet/intel/i40e/i40e_prototype.h +5 -0
index fea0d37..7b34f1e 100644
@@ -303,4 +303,9 @@ i40e_status i40e_aq_add_rem_control_packet_filter(struct i40e_hw *hw,
 				u16 vsi_seid, u16 queue, bool is_add,
 				struct i40e_control_filter_stats *stats,
 				struct i40e_asq_cmd_details *cmd_details);
+i40e_status i40e_aq_debug_dump(struct i40e_hw *hw, u8 cluster_id,
+			       u8 table_id, u32 start_index, u16 buff_size,
+			       void *buff, u16 *ret_buff_size,
+			       u8 *ret_next_table, u32 *ret_next_index,
+			       struct i40e_asq_cmd_details *cmd_details);
 #endif /* _I40E_PROTOTYPE_H_ */
Signature · 1 line
1.9.3
#18 lore raw

PATCH 8/13 i40e: enable user dump of internal hardware state

Quoted 14 lines · Catherine Sullivan

From: Jesse Brandeburg <[email protected]>

This is a feature to enable better debugging of user reported issues by
allowing a bash script to acquire information about the internal hardware
state. The data output to the kernel log is collected by the script and can
then be sent to Intel. This is a critical debugging feature for helping us
interpret and reproduce complex customer setups.

Change-ID Ie8b3ab09086d6870a709015f51ada05af10b41bb
Quoted 7 lines
---
 drivers/net/ethernet/intel/i40e/i40e_common.c    | 57
++++++++++++++++++++++++
 drivers/net/ethernet/intel/i40e/i40e_debugfs.c   | 45
+++++++++++++++++++
 drivers/net/ethernet/intel/i40e/i40e_prototype.h |  5 +++
 3 files changed, 107 insertions(+)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/026f367e/attachment.asc>
#19 lore raw

PATCH 8/13 i40e: enable user dump of internal hardware state

-----Original Message-----
From: Kirsher, Jeffrey T
Sent: Tuesday, April 07, 2015 4:58 PM
To: Sullivan, Catherine; Young, James M
Cc: intel-wired-lan at lists.osuosl.org
Subject: Re: [Intel-wired-lan] [net-next S3 08/13] i40e: enable user dump of internal hardware state

Quoted 11 lines · Catherine Sullivan

From: Jesse Brandeburg <[email protected]>

This is a feature to enable better debugging of user reported issues by allowing a bash script to acquire information about the internal hardware state. The data output to the kernel log is collected by the script and can then be sent to Intel. This is a critical debugging feature for helping us interpret and reproduce complex customer setups.

Change-ID Ie8b3ab09086d6870a709015f51ada05af10b41bb
Quoted 7 lines
---
 drivers/net/ethernet/intel/i40e/i40e_common.c    | 57
++++++++++++++++++++++++
 drivers/net/ethernet/intel/i40e/i40e_debugfs.c   | 45
+++++++++++++++++++
 drivers/net/ethernet/intel/i40e/i40e_prototype.h |  5 +++
 3 files changed, 107 insertions(+)

Thanks Catherine, I have added your patch to my queue. --
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue

#20 lore raw

PATCH 9/13 i40e/i40evf: Save WR_CSR_PROT field from DEV/FUNC capabilities

In reply to Catherine Sullivan

From: Kevin Scott <[email protected]>

Store the 8 bytes of the WR_CSR_PROT field returned as part of the get device/function capabilities AQ command.

Change-ID Ifcaeea2ff29885fa769e4f384c7db88a25e8afd0
---
 drivers/net/ethernet/intel/i40e/i40e_common.c | 5 +++++
 drivers/net/ethernet/intel/i40e/i40e_type.h   | 1 +
 drivers/net/ethernet/intel/i40evf/i40e_type.h | 1 +
 3 files changed, 7 insertions(+)
drivers/net/ethernet/intel/i40e/i40e_common.c +5 -0
index ce522d7..0bae22d 100644
@@ -2397,6 +2397,7 @@ i40e_aq_erase_nvm_exit:
 #define I40E_DEV_FUNC_CAP_LED		0x61
 #define I40E_DEV_FUNC_CAP_SDP		0x62
 #define I40E_DEV_FUNC_CAP_MDIO		0x63
+#define I40E_DEV_FUNC_CAP_WR_CSR_PROT	0x64
 
 /**
  * i40e_parse_discover_capabilities
@@ -2541,6 +2542,10 @@ static void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
 			p->fd_filters_guaranteed = number;
 			p->fd_filters_best_effort = logical_id;
 			break;
+		case I40E_DEV_FUNC_CAP_WR_CSR_PROT:
+			p->wr_csr_prot = (u64)number;
+			p->wr_csr_prot |= (u64)logical_id << 32;
+			break;
 		default:
 			break;
 		}
drivers/net/ethernet/intel/i40e/i40e_type.h +1 -0
index 67c7bc9e9..568e855 100644
@@ -242,6 +242,7 @@ struct i40e_hw_capabilities {
 	u8 rx_buf_chain_len;
 	u32 enabled_tcmap;
 	u32 maxtc;
+	u64 wr_csr_prot;
 };
 
 struct i40e_mac_info {
drivers/net/ethernet/intel/i40evf/i40e_type.h +1 -0
index 9c79cb6..ec9d83a 100644
@@ -242,6 +242,7 @@ struct i40e_hw_capabilities {
 	u8 rx_buf_chain_len;
 	u32 enabled_tcmap;
 	u32 maxtc;
+	u64 wr_csr_prot;
 };
 
 struct i40e_mac_info {
Signature · 1 line
1.9.3
#21 lore raw

PATCH 9/13 i40e/i40evf: Save WR_CSR_PROT field from DEV/FUNC capabilities

Quoted 5 lines · Catherine Sullivan

From: Kevin Scott <[email protected]>

Store the 8 bytes of the WR_CSR_PROT field returned as part of the get device/function capabilities AQ command.

Quoted 7 lines
Change-ID Ifcaeea2ff29885fa769e4f384c7db88a25e8afd0
---
 drivers/net/ethernet/intel/i40e/i40e_common.c | 5 +++++
 drivers/net/ethernet/intel/i40e/i40e_type.h   | 1 +
 drivers/net/ethernet/intel/i40evf/i40e_type.h | 1 +
 3 files changed, 7 insertions(+)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/cd8de579/attachment.asc>
#22 lore raw

PATCH 10/13 i40e: handle possible memory allocation failure

In reply to Catherine Sullivan

From: Jesse Brandeburg <[email protected]>

The init_interrupt_scheme function had a possible failure path to allocate memory that was found by smatch.

This adds the correct handling to the function to abort probe if the memory allocation fails.

Change-ID I2bf1d826a244209619da4c452d0d58b3eb5e26a3
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)
drivers/net/ethernet/intel/i40e/i40e_main.c +11 -3
index 63de3f4..b297294 100644
@@ -7301,7 +7301,7 @@ err_out:
  * i40e_init_interrupt_scheme - Determine proper interrupt scheme
  * @pf: board private structure to initialize
  **/
-static void i40e_init_interrupt_scheme(struct i40e_pf *pf)
+static int i40e_init_interrupt_scheme(struct i40e_pf *pf)
 {
 	int vectors = 0;
 	ssize_t size;
@@ -7343,11 +7343,17 @@ static void i40e_init_interrupt_scheme(struct i40e_pf *pf)
 	/* set up vector assignment tracking */
 	size = sizeof(struct i40e_lump_tracking) + (sizeof(u16) * vectors);
 	pf->irq_pile = kzalloc(size, GFP_KERNEL);
+	if (!pf->irq_pile) {
+		dev_err(&pf->pdev->dev, "error allocating irq_pile memory\n");
+		return -ENOMEM;
+	}
 	pf->irq_pile->num_entries = vectors;
 	pf->irq_pile->search_hint = 0;
 
-	/* track first vector for misc interrupts */
+	/* track first vector for misc interrupts, ignore return */
 	(void)i40e_get_lump(pf, pf->irq_pile, 1, I40E_PILE_VALID_BIT - 1);
+
+	return 0;
 }
 
 /**
@@ -9827,7 +9833,9 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	/* set up the main switch operations */
 	i40e_determine_queue_usage(pf);
-	i40e_init_interrupt_scheme(pf);
+	err = i40e_init_interrupt_scheme(pf);
+	if (err)
+		goto err_switch_setup;
 
 	/* The number of VSIs reported by the FW is the minimum guaranteed
 	 * to us; HW supports far more and we share the remaining pool with
Signature · 1 line
1.9.3
#23 lore raw

PATCH 10/13 i40e: handle possible memory allocation failure

Quoted 5 lines · Catherine Sullivan

From: Jesse Brandeburg <[email protected]>

The init_interrupt_scheme function had a possible failure path to allocate memory that was found by smatch.

Quoted 8 lines

This adds the correct handling to the function to abort probe if the memory allocation fails.

Change-ID I2bf1d826a244209619da4c452d0d58b3eb5e26a3
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/e0cbce5f/attachment.asc>
#24 lore raw

PATCH 10/13 i40e: handle possible memory allocation failure

-----Original Message-----
From: Kirsher, Jeffrey T
Sent: Tuesday, April 07, 2015 4:59 PM
To: Sullivan, Catherine; Young, James M
Cc: intel-wired-lan at lists.osuosl.org
Subject: Re: [Intel-wired-lan] [net-next S3 10/13] i40e: handle possible memory allocation failure

Quoted 5 lines · Catherine Sullivan

From: Jesse Brandeburg <[email protected]>

The init_interrupt_scheme function had a possible failure path to allocate memory that was found by smatch.

Quoted 8 lines

This adds the correct handling to the function to abort probe if the memory allocation fails.

Change-ID I2bf1d826a244209619da4c452d0d58b3eb5e26a3
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

Thanks Catherine, I have added your patch to my queue. --
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue

#25 lore raw

PATCH 11/13 i40e: get rid of unused locals

In reply to Catherine Sullivan

From: Jesse Brandeburg <[email protected]>

These changes just remove unused variables and any code that uses them as the results of storing into these variables doesn't have any side effects that I can see or provide any benefit.

Change-ID I8a5ec7132ff1443d23aae729cef94beaaaf19e3a
---
 drivers/net/ethernet/intel/i40e/i40e_dcb.c | 6 ++----
 drivers/net/ethernet/intel/i40e/i40e_nvm.c | 3 +--
 2 files changed, 3 insertions(+), 6 deletions(-)
drivers/net/ethernet/intel/i40e/i40e_dcb.c +2 -4
index 6e14667..2547aa2 100644
@@ -419,7 +419,7 @@ static void i40e_cee_to_dcb_v1_config(
 {
 	u16 status, tlv_status = le16_to_cpu(cee_cfg->tlv_status);
 	u16 app_prio = le16_to_cpu(cee_cfg->oper_app_prio);
-	u8 i, tc, err, sync, oper;
+	u8 i, tc, err;
 
 	/* CEE PG data to ETS config */
 	dcbcfg->etscfg.maxtcs = cee_cfg->oper_num_tc;
@@ -456,9 +456,7 @@ static void i40e_cee_to_dcb_v1_config(
 	status = (tlv_status & I40E_AQC_CEE_APP_STATUS_MASK) >>
 		  I40E_AQC_CEE_APP_STATUS_SHIFT;
 	err = (status & I40E_TLV_STATUS_ERR) ? 1 : 0;
-	sync = (status & I40E_TLV_STATUS_SYNC) ? 1 : 0;
-	oper = (status & I40E_TLV_STATUS_OPER) ? 1 : 0;
-	/* Add APPs if Error is False and Oper/Sync is True */
+	/* Add APPs if Error is False */
 	if (!err) {
 		/* CEE operating configuration supports FCoE/iSCSI/FIP only */
 		dcbcfg->numapps = I40E_CEE_OPER_MAX_APPS;
drivers/net/ethernet/intel/i40e/i40e_nvm.c +1 -2
index e49acd2..554e49d 100644
@@ -821,13 +821,12 @@ static enum i40e_nvmupd_cmd i40e_nvmupd_validate_command(struct i40e_hw *hw,
 						 int *errno)
 {
 	enum i40e_nvmupd_cmd upd_cmd;
-	u8 transaction, module;
+	u8 transaction;
 
 	/* anything that doesn't match a recognized case is an error */
 	upd_cmd = I40E_NVMUPD_INVALID;
 
 	transaction = i40e_nvmupd_get_transaction(cmd->config);
-	module = i40e_nvmupd_get_module(cmd->config);
 
 	/* limits on data size */
 	if ((cmd->data_size < 1) ||
Signature · 1 line
1.9.3
#26 lore raw

PATCH 11/13 i40e: get rid of unused locals

Quoted 6 lines · Catherine Sullivan

From: Jesse Brandeburg <[email protected]>

These changes just remove unused variables and any code that uses them as the results of storing into these variables doesn't have any side effects that I can see or provide any benefit.

Quoted 6 lines
Change-ID I8a5ec7132ff1443d23aae729cef94beaaaf19e3a
---
 drivers/net/ethernet/intel/i40e/i40e_dcb.c | 6 ++----
 drivers/net/ethernet/intel/i40e/i40e_nvm.c | 3 +--
 2 files changed, 3 insertions(+), 6 deletions(-)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/8606470d/attachment.asc>
#27 lore raw

PATCH 11/13 i40e: get rid of unused locals

-----Original Message-----
From: Kirsher, Jeffrey T
Sent: Tuesday, April 07, 2015 4:59 PM
To: Sullivan, Catherine; Young, James M
Cc: intel-wired-lan at lists.osuosl.org
Subject: Re: [Intel-wired-lan] [net-next S3 11/13] i40e: get rid of unused locals

Quoted 6 lines · Catherine Sullivan

From: Jesse Brandeburg <[email protected]>

These changes just remove unused variables and any code that uses them as the results of storing into these variables doesn't have any side effects that I can see or provide any benefit.

Quoted 6 lines
Change-ID I8a5ec7132ff1443d23aae729cef94beaaaf19e3a
---
 drivers/net/ethernet/intel/i40e/i40e_dcb.c | 6 ++----  
drivers/net/ethernet/intel/i40e/i40e_nvm.c | 3 +--
 2 files changed, 3 insertions(+), 6 deletions(-)

Thanks Catherine, I have added your patch to my queue. --
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue

#28 lore raw

PATCH 12/13 i40e: Use new 40G speeds

In reply to Catherine Sullivan

From: Greg Rose <[email protected]>

The kernel has added SPEED_40000 for ethtool.
Go ahead and use the new #define.

Change-ID Ic7e16e5c9e91085afe539f11ee1b7668adc4d0ef
---
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c +1 -2
index 7d60587..4cbaaeb 100644
@@ -356,8 +356,7 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,
 	/* Set speed and duplex */
 	switch (link_speed) {
 	case I40E_LINK_SPEED_40GB:
-		/* need a SPEED_40000 in ethtool.h */
-		ethtool_cmd_speed_set(ecmd, 40000);
+		ethtool_cmd_speed_set(ecmd, SPEED_40000);
 		break;
 	case I40E_LINK_SPEED_20GB:
 		ethtool_cmd_speed_set(ecmd, SPEED_20000);
Signature · 1 line
1.9.3
#29 lore raw

PATCH 12/13 i40e: Use new 40G speeds

Quoted 10 lines · Catherine Sullivan

From: Greg Rose <[email protected]>

The kernel has added SPEED_40000 for ethtool.
Go ahead and use the new #define.

Change-ID Ic7e16e5c9e91085afe539f11ee1b7668adc4d0ef
---
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/43ff9ea2/attachment.asc>
#30 lore raw

PATCH 12/13 i40e: Use new 40G speeds

-----Original Message-----
From: Kirsher, Jeffrey T
Sent: Tuesday, April 07, 2015 5:02 PM
To: Sullivan, Catherine; Young, James M
Cc: intel-wired-lan at lists.osuosl.org
Subject: Re: [Intel-wired-lan] [net-next S3 12/13] i40e: Use new 40G speeds

Quoted 10 lines · Catherine Sullivan

From: Greg Rose <[email protected]>

The kernel has added SPEED_40000 for ethtool.
Go ahead and use the new #define.

Change-ID Ic7e16e5c9e91085afe539f11ee1b7668adc4d0ef
---
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Thanks Catherine, I have added your patch to my queue.

Signature · 4 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue

Tested-by: Jim Young <[email protected]>
#31 lore raw

PATCH 13/13 i40e: Bump version to 1.3.2

In reply to Catherine Sullivan

Bump.

Change-ID Id14baae72332d0f1a9bc5d351ea1a85cb0295ec3
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/ethernet/intel/i40e/i40e_main.c +1 -1
index b297294..24481cd 100644
@@ -39,7 +39,7 @@ static const char i40e_driver_string[] =
 
 #define DRV_VERSION_MAJOR 1
 #define DRV_VERSION_MINOR 3
-#define DRV_VERSION_BUILD 1
+#define DRV_VERSION_BUILD 2
 #define DRV_VERSION __stringify(DRV_VERSION_MAJOR) "." \
 	     __stringify(DRV_VERSION_MINOR) "." \
 	     __stringify(DRV_VERSION_BUILD)    DRV_KERN
Signature · 1 line
1.9.3
#32 lore raw

PATCH 13/13 i40e: Bump version to 1.3.2

Quoted 7 lines · Catherine Sullivan

Bump.

Change-ID Id14baae72332d0f1a9bc5d351ea1a85cb0295ec3
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/e4ee5495/attachment-0001.asc>
#33 lore raw

PATCH 13/13 i40e: Bump version to 1.3.2

-----Original Message-----
From: Kirsher, Jeffrey T
Sent: Tuesday, April 07, 2015 5:00 PM
To: Sullivan, Catherine; Young, James M
Cc: intel-wired-lan at lists.osuosl.org
Subject: Re: [Intel-wired-lan] [net-next S3 13/13] i40e: Bump version to 1.3.2

Quoted 7 lines · Catherine Sullivan

Bump.

Change-ID Id14baae72332d0f1a9bc5d351ea1a85cb0295ec3
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Thanks Catherine, I have added your patch to my queue.

Signature · 4 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue

Tested-by: Jim Young <[email protected]>
#34 lore raw

PATCH 1/13 i40evf: fix bad indentation

In reply to Catherine Sullivan
Quoted 9 lines · Catherine Sullivan

From: Mitch Williams <[email protected]>

Not sure how this slipped through. Cosmetic change only.

Change-ID Iefec17e6bc14985d8cb7925c0bac770aa37de7c9
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Thanks Catherine, I have added your patch to my queue.

Signature · 9 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/00d359c9/attachment.asc>
#35 lore raw

PATCH 1/13 i40evf: fix bad indentation

Quoted 11 lines · Jeff Kirsher
Quoted 9 lines · Catherine Sullivan

From: Mitch Williams <[email protected]>

Not sure how this slipped through. Cosmetic change only.

Change-ID Iefec17e6bc14985d8cb7925c0bac770aa37de7c9
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Thanks Catherine, I have added your patch to my queue.

When you guys send out these series, and have Jeff just reply to every
patch it quickly bloats a 13 patch series over 26 emails. Any chance
of getting a 00/XX patch with maybe a simple note such as "i40e updates", and then just have Jeff reply to that? Otherwise this is going to probably just degenerate into noise as all of the patches being replied to makes this kind of hard to review.

- Alex

#36 lore raw

PATCH 1/13 i40evf: fix bad indentation

Quoted 13 lines · Alexander Duyck
Quoted 11 lines · Jeff Kirsher
Quoted 9 lines · Catherine Sullivan

From: Mitch Williams <[email protected]>

Not sure how this slipped through. Cosmetic change only.

Change-ID Iefec17e6bc14985d8cb7925c0bac770aa37de7c9
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Thanks Catherine, I have added your patch to my queue.

Quoted 7 lines

When you guys send out these series, and have Jeff just reply to every
patch it quickly bloats a 13 patch series over 26 emails. Any chance
of getting a 00/XX patch with maybe a simple note such as "i40e updates", and then just have Jeff reply to that? Otherwise this is going to probably just degenerate into noise as all of the patches being
replied to makes this kind of hard to review.

I was thinking the same thing Alex. I will work with Catherine (and the
others) to generate a cover patch for patches in a series.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150407/aaca6744/attachment.asc>

#37 lore raw

PATCH 1/13 i40evf: fix bad indentation

In reply to Jeff Kirsher

-----Original Message-----
From: Kirsher, Jeffrey T
Sent: Tuesday, April 07, 2015 4:53 PM
To: Sullivan, Catherine; Young, James M
Cc: intel-wired-lan at lists.osuosl.org
Subject: Re: [Intel-wired-lan] [net-next S3 01/13] i40evf: fix bad indentation

Quoted 9 lines · Catherine Sullivan

From: Mitch Williams <[email protected]>

Not sure how this slipped through. Cosmetic change only.

Change-ID Iefec17e6bc14985d8cb7925c0bac770aa37de7c9
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Thanks Catherine, I have added your patch to my queue.

Signature · 4 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
dev-queue

Tested-by: Jim Young <[email protected]>