Merge branch 'be2net-next'

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>
This commit is contained in:
David S. Miller 2017-05-25 14:44:50 -04:00
commit ff5f58f53c
3 changed files with 23 additions and 9 deletions

View file

@ -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"

View file

@ -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

View file

@ -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;
@ -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)