Patchwork be2net: Remove code that stops further access to BE NIC based on UE bits

login
register
mail settings
Submitter Ajit Khaparde
Date Oct. 9, 2012, 4:18 a.m.
Message ID <20121009041821.GA16595@akhaparde-VBox>
Download mbox | patch
Permalink /patch/190192/
State Accepted
Delegated to: David Miller
Headers show

Comments

Ajit Khaparde - Oct. 9, 2012, 4:18 a.m.
On certain platforms, BE hardware could  falsely indicate UE.
For BE family of NICs, do not set hw_error based on the UE bits.
If there was a real fatal error, the corresponding h/w block will
automatically go offline and stop traffic.

Signed-off-by: Ajit Khaparde <ajit.khaparde@emulex.com>
---
 drivers/net/ethernet/emulex/benet/be_main.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
David Miller - Oct. 9, 2012, 5:55 p.m.
From: Ajit Khaparde <ajit.khaparde@emulex.com>
Date: Mon, 8 Oct 2012 23:18:21 -0500

> On certain platforms, BE hardware could  falsely indicate UE.
> For BE family of NICs, do not set hw_error based on the UE bits.
> If there was a real fatal error, the corresponding h/w block will
> automatically go offline and stop traffic.
> 
> Signed-off-by: Ajit Khaparde <ajit.khaparde@emulex.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index eb3f2cb..d1b6cc5 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -2129,8 +2129,11 @@  void be_detect_error(struct be_adapter *adapter)
 		ue_hi = (ue_hi & ~ue_hi_mask);
 	}
 
-	if (ue_lo || ue_hi ||
-		sliport_status & SLIPORT_STATUS_ERR_MASK) {
+	/* On certain platforms BE hardware can indicate spurious UEs.
+	 * Allow the h/w to stop working completely in case of a real UE.
+	 * Hence not setting the hw_error for UE detection.
+	 */
+	if (sliport_status & SLIPORT_STATUS_ERR_MASK) {
 		adapter->hw_error = true;
 		dev_err(&adapter->pdev->dev,
 			"Error detected in the card\n");