Skip to content

Commit

Permalink
Merge branch 'be2net-next'
Browse files Browse the repository at this point in the history
Suresh Reddy says:

====================
be2net: patch-set

Hi Dave, Please consider applying these two patches to net-next
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed May 25, 2017
2 parents 2baec2c + aab0830 commit ff5f58f
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 9 deletions.
2 changes: 1 addition & 1 deletion drivers/net/ethernet/emulex/benet/be.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
#include "be_hw.h"
#include "be_roce.h"

#define DRV_VER "11.1.0.0"
#define DRV_VER "11.4.0.0"
#define DRV_NAME "be2net"
#define BE_NAME "Emulex BladeEngine2"
#define BE3_NAME "Emulex BladeEngine3"
Expand Down
3 changes: 3 additions & 0 deletions drivers/net/ethernet/emulex/benet/be_hw.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@
#define POST_STAGE_BE_RESET 0x3 /* Host wants to reset chip */
#define POST_STAGE_ARMFW_RDY 0xc000 /* FW is done with POST */
#define POST_STAGE_RECOVERABLE_ERR 0xE000 /* Recoverable err detected */
/* FW has detected a UE and is dumping FAT log data */
#define POST_STAGE_FAT_LOG_START 0x0D00
#define POST_STAGE_ARMFW_UE 0xF000 /*FW has asserted an UE*/

/* Lancer SLIPORT registers */
#define SLIPORT_STATUS_OFFSET 0x404
Expand Down
27 changes: 19 additions & 8 deletions drivers/net/ethernet/emulex/benet/be_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3241,8 +3241,9 @@ void be_detect_error(struct be_adapter *adapter)
{
u32 ue_lo = 0, ue_hi = 0, ue_lo_mask = 0, ue_hi_mask = 0;
u32 sliport_status = 0, sliport_err1 = 0, sliport_err2 = 0;
u32 i;
struct device *dev = &adapter->pdev->dev;
u16 val;
u32 i;

if (be_check_error(adapter, BE_ERROR_HW))
return;
Expand Down Expand Up @@ -3280,15 +3281,25 @@ void be_detect_error(struct be_adapter *adapter)
ue_lo = (ue_lo & ~ue_lo_mask);
ue_hi = (ue_hi & ~ue_hi_mask);

/* On certain platforms BE hardware can indicate spurious UEs.
* Allow HW to stop working completely in case of a real UE.
* Hence not setting the hw_error for UE detection.
*/

if (ue_lo || ue_hi) {
/* On certain platforms BE3 hardware can indicate
* spurious UEs. In case of a UE in the chip,
* the POST register correctly reports either a
* FAT_LOG_START state (FW is currently dumping
* FAT log data) or a ARMFW_UE state. Check for the
* above states to ascertain if the UE is valid or not.
*/
if (BE3_chip(adapter)) {
val = be_POST_stage_get(adapter);
if ((val & POST_STAGE_FAT_LOG_START)
!= POST_STAGE_FAT_LOG_START &&
(val & POST_STAGE_ARMFW_UE)
!= POST_STAGE_ARMFW_UE)
return;
}

dev_err(dev, "Error detected in the adapter");
if (skyhawk_chip(adapter))
be_set_error(adapter, BE_ERROR_UE);
be_set_error(adapter, BE_ERROR_UE);

for (i = 0; ue_lo; ue_lo >>= 1, i++) {
if (ue_lo & 1)
Expand Down

0 comments on commit ff5f58f

Please sign in to comment.