Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 277508
b: refs/heads/master
c: 6589ade
h: refs/heads/master
v: v3
  • Loading branch information
Sathya Perla authored and David S. Miller committed Nov 12, 2011
1 parent cad0fad commit 98a21d6
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 20 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 434b3648e9a58600cea5f3a1a0a7a89048e4df61
refs/heads/master: 6589ade019dcab245d3bb847370f855b56cdf6ad
8 changes: 7 additions & 1 deletion trunk/drivers/net/ethernet/emulex/benet/be.h
Original file line number Diff line number Diff line change
Expand Up @@ -350,14 +350,15 @@ struct be_adapter {
u32 beacon_state; /* for set_phys_id */

bool eeh_err;
bool ue_detected;
bool fw_timeout;
u32 port_num;
bool promiscuous;
bool wol;
u32 function_mode;
u32 function_caps;
u32 rx_fc; /* Rx flow control */
u32 tx_fc; /* Tx flow control */
bool ue_detected;
bool stats_cmd_sent;
int link_speed;
u8 port_type;
Expand Down Expand Up @@ -522,6 +523,11 @@ static inline bool be_multi_rxq(const struct be_adapter *adapter)
return adapter->num_rx_qs > 1;
}

static inline bool be_error(struct be_adapter *adapter)
{
return adapter->eeh_err || adapter->ue_detected || adapter->fw_timeout;
}

extern void be_cq_notify(struct be_adapter *adapter, u16 qid, bool arm,
u16 num_popped);
extern void be_link_status_update(struct be_adapter *adapter, u32 link_status);
Expand Down
29 changes: 11 additions & 18 deletions trunk/drivers/net/ethernet/emulex/benet/be_cmds.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ static void be_mcc_notify(struct be_adapter *adapter)
struct be_queue_info *mccq = &adapter->mcc_obj.q;
u32 val = 0;

if (adapter->eeh_err)
if (be_error(adapter))
return;

val |= mccq->id & DB_MCCQ_RING_ID_MASK;
Expand Down Expand Up @@ -263,10 +263,10 @@ static int be_mcc_wait_compl(struct be_adapter *adapter)
int i, num, status = 0;
struct be_mcc_obj *mcc_obj = &adapter->mcc_obj;

if (adapter->eeh_err)
return -EIO;

for (i = 0; i < mcc_timeout; i++) {
if (be_error(adapter))
return -EIO;

num = be_process_mcc(adapter, &status);
if (num)
be_cq_notify(adapter, mcc_obj->cq.id,
Expand All @@ -277,7 +277,8 @@ static int be_mcc_wait_compl(struct be_adapter *adapter)
udelay(100);
}
if (i == mcc_timeout) {
dev_err(&adapter->pdev->dev, "mccq poll timed out\n");
dev_err(&adapter->pdev->dev, "FW not responding\n");
adapter->fw_timeout = true;
return -1;
}
return status;
Expand All @@ -295,10 +296,10 @@ static int be_mbox_db_ready_wait(struct be_adapter *adapter, void __iomem *db)
int msecs = 0;
u32 ready;

if (adapter->eeh_err)
return -EIO;

do {
if (be_error(adapter))
return -EIO;

ready = ioread32(db);
if (ready == 0xffffffff)
return -1;
Expand All @@ -308,7 +309,8 @@ static int be_mbox_db_ready_wait(struct be_adapter *adapter, void __iomem *db)
break;

if (msecs > 4000) {
dev_err(&adapter->pdev->dev, "mbox poll timed out\n");
dev_err(&adapter->pdev->dev, "FW not responding\n");
adapter->fw_timeout = true;
be_detect_dump_ue(adapter);
return -1;
}
Expand Down Expand Up @@ -546,9 +548,6 @@ int be_cmd_fw_clean(struct be_adapter *adapter)
u8 *wrb;
int status;

if (adapter->eeh_err)
return -EIO;

if (mutex_lock_interruptible(&adapter->mbox_lock))
return -1;

Expand Down Expand Up @@ -1012,9 +1011,6 @@ int be_cmd_q_destroy(struct be_adapter *adapter, struct be_queue_info *q,
u8 subsys = 0, opcode = 0;
int status;

if (adapter->eeh_err)
return -EIO;

if (mutex_lock_interruptible(&adapter->mbox_lock))
return -1;

Expand Down Expand Up @@ -1136,9 +1132,6 @@ int be_cmd_if_destroy(struct be_adapter *adapter, int interface_id, u32 domain)
struct be_cmd_req_if_destroy *req;
int status;

if (adapter->eeh_err)
return -EIO;

if (interface_id == -1)
return 0;

Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/net/ethernet/emulex/benet/be_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3569,6 +3569,8 @@ static pci_ers_result_t be_eeh_reset(struct pci_dev *pdev)

dev_info(&adapter->pdev->dev, "EEH reset\n");
adapter->eeh_err = false;
adapter->ue_detected = false;
adapter->fw_timeout = false;

status = pci_enable_device(pdev);
if (status)
Expand Down

0 comments on commit 98a21d6

Please sign in to comment.