* [PATCH net-next 0/4] be2net: fixes
@ 2011-10-24 12:44 Sathya Perla
2011-10-24 22:35 ` David Miller
0 siblings, 1 reply; 12+ messages in thread
From: Sathya Perla @ 2011-10-24 12:44 UTC (permalink / raw)
To: netdev
Pls apply.
Sathya Perla (4):
be2net: add vlan/rx-mode/flow-control config to be_setup()
be2net: refactor VF setup/teardown code into be_vf_setup/clear()
be2net: don't create multiple TXQs in BE2
be2net: don't create multiple RX/TX rings in multi channel mode
drivers/net/ethernet/emulex/benet/be_cmds.c | 66 +++--
drivers/net/ethernet/emulex/benet/be_cmds.h | 10 +-
drivers/net/ethernet/emulex/benet/be_main.c | 362 +++++++++++++--------------
3 files changed, 222 insertions(+), 216 deletions(-)
--
1.7.4
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 0/4] be2net: fixes
2011-10-24 12:44 [PATCH net-next 0/4] be2net: fixes Sathya Perla
@ 2011-10-24 22:35 ` David Miller
2011-10-25 4:49 ` Sathya.Perla
0 siblings, 1 reply; 12+ messages in thread
From: David Miller @ 2011-10-24 22:35 UTC (permalink / raw)
To: sathya.perla; +Cc: netdev
From: Sathya Perla <sathya.perla@emulex.com>
Date: Mon, 24 Oct 2011 18:14:59 +0530
> Pls apply.
>
> Sathya Perla (4):
> be2net: add vlan/rx-mode/flow-control config to be_setup()
> be2net: refactor VF setup/teardown code into be_vf_setup/clear()
> be2net: don't create multiple TXQs in BE2
> be2net: don't create multiple RX/TX rings in multi channel mode
Applied, but many of your commit messages were poorly formatted (lines
exceeding 80 columns) and patches #1 and #2 had several trailing
whitespace errors.
I fixed this all up, but you have to be better than this.
^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: [PATCH net-next 0/4] be2net: fixes
2011-10-24 22:35 ` David Miller
@ 2011-10-25 4:49 ` Sathya.Perla
0 siblings, 0 replies; 12+ messages in thread
From: Sathya.Perla @ 2011-10-25 4:49 UTC (permalink / raw)
To: davem; +Cc: netdev
>-----Original Message-----
>From: David Miller [mailto:davem@davemloft.net]
>Sent: Tuesday, October 25, 2011 4:06 AM
>
>From: Sathya Perla <sathya.perla@emulex.com>
>Date: Mon, 24 Oct 2011 18:14:59 +0530
>
>> Pls apply.
>>
>> Sathya Perla (4):
>> be2net: add vlan/rx-mode/flow-control config to be_setup()
>> be2net: refactor VF setup/teardown code into be_vf_setup/clear()
>> be2net: don't create multiple TXQs in BE2
>> be2net: don't create multiple RX/TX rings in multi channel mode
>
>Applied, but many of your commit messages were poorly formatted (lines
>exceeding 80 columns) and patches #1 and #2 had several trailing
>whitespace errors.
>
>I fixed this all up, but you have to be better than this.
Dave, thanks. Will be careful....
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH net-next 0/4] be2net fixes
@ 2011-11-11 5:17 Sathya Perla
2011-11-11 5:17 ` [PATCH net-next 1/4] be2net: init (vf)_if_handle/vf_pmac_id to handle failure scenarios Sathya Perla
` (4 more replies)
0 siblings, 5 replies; 12+ messages in thread
From: Sathya Perla @ 2011-11-11 5:17 UTC (permalink / raw)
To: netdev
Pls apply. Thanks.
Sathya Perla (4):
be2net: init (vf)_if_handle/vf_pmac_id to handle failure scenarios
be2net: stop checking the UE registers after an EEH error
be2net: don't log more than one error on detecting EEH/UE errors
be2net: stop issuing FW cmds if any cmd times out
drivers/net/ethernet/emulex/benet/be.h | 16 ++++---
drivers/net/ethernet/emulex/benet/be_cmds.c | 49 +++++++-------------
drivers/net/ethernet/emulex/benet/be_cmds.h | 4 +-
drivers/net/ethernet/emulex/benet/be_main.c | 66 ++++++++++++++++-----------
4 files changed, 69 insertions(+), 66 deletions(-)
--
1.7.4
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH net-next 1/4] be2net: init (vf)_if_handle/vf_pmac_id to handle failure scenarios
2011-11-11 5:17 [PATCH net-next 0/4] be2net fixes Sathya Perla
@ 2011-11-11 5:17 ` Sathya Perla
2011-11-11 5:17 ` [PATCH net-next 2/4] be2net: stop checking the UE registers after an EEH error Sathya Perla
` (3 subsequent siblings)
4 siblings, 0 replies; 12+ messages in thread
From: Sathya Perla @ 2011-11-11 5:17 UTC (permalink / raw)
To: netdev
Initialize if_handle, vf_if_handle and vf_pmac_id with "-1" so that in
failure cases when be_clear() is called, we can skip over
if_destroy/pmac_del cmds if they have not been created.
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be.h | 8 +--
drivers/net/ethernet/emulex/benet/be_cmds.c | 9 +++-
drivers/net/ethernet/emulex/benet/be_cmds.h | 4 +-
drivers/net/ethernet/emulex/benet/be_main.c | 55 +++++++++++++++------------
4 files changed, 42 insertions(+), 34 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index 644e8fe..4163980 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -289,14 +289,12 @@ struct be_drv_stats {
struct be_vf_cfg {
unsigned char vf_mac_addr[ETH_ALEN];
- u32 vf_if_handle;
- u32 vf_pmac_id;
+ int vf_if_handle;
+ int vf_pmac_id;
u16 vf_vlan_tag;
u32 vf_tx_rate;
};
-#define BE_INVALID_PMAC_ID 0xffffffff
-
struct be_adapter {
struct pci_dev *pdev;
struct net_device *netdev;
@@ -347,7 +345,7 @@ struct be_adapter {
/* Ethtool knobs and info */
char fw_ver[FW_VER_LEN];
- u32 if_handle; /* Used to configure filtering */
+ int if_handle; /* Used to configure filtering */
u32 pmac_id; /* MAC addr handle used by BE card */
u32 beacon_state; /* for set_phys_id */
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index 2c7b366..c5912c4 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -695,12 +695,15 @@ err:
}
/* Uses synchronous MCCQ */
-int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, u32 pmac_id, u32 dom)
+int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, int pmac_id, u32 dom)
{
struct be_mcc_wrb *wrb;
struct be_cmd_req_pmac_del *req;
int status;
+ if (pmac_id == -1)
+ return 0;
+
spin_lock_bh(&adapter->mcc_lock);
wrb = wrb_from_mccq(adapter);
@@ -1136,7 +1139,7 @@ err:
}
/* Uses MCCQ */
-int be_cmd_if_destroy(struct be_adapter *adapter, u32 interface_id, u32 domain)
+int be_cmd_if_destroy(struct be_adapter *adapter, int interface_id, u32 domain)
{
struct be_mcc_wrb *wrb;
struct be_cmd_req_if_destroy *req;
@@ -1145,7 +1148,7 @@ int be_cmd_if_destroy(struct be_adapter *adapter, u32 interface_id, u32 domain)
if (adapter->eeh_err)
return -EIO;
- if (!interface_id)
+ if (interface_id == -1)
return 0;
spin_lock_bh(&adapter->mcc_lock);
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.h b/drivers/net/ethernet/emulex/benet/be_cmds.h
index a35cd03..0818039 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.h
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.h
@@ -1417,11 +1417,11 @@ extern int be_cmd_mac_addr_query(struct be_adapter *adapter, u8 *mac_addr,
extern int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr,
u32 if_id, u32 *pmac_id, u32 domain);
extern int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id,
- u32 pmac_id, u32 domain);
+ int pmac_id, u32 domain);
extern int be_cmd_if_create(struct be_adapter *adapter, u32 cap_flags,
u32 en_flags, u8 *mac, u32 *if_handle, u32 *pmac_id,
u32 domain);
-extern int be_cmd_if_destroy(struct be_adapter *adapter, u32 if_handle,
+extern int be_cmd_if_destroy(struct be_adapter *adapter, int if_handle,
u32 domain);
extern int be_cmd_eq_create(struct be_adapter *adapter,
struct be_queue_info *eq, int eq_delay);
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index bf266a0..83d971d 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -848,15 +848,11 @@ static int be_set_vf_mac(struct net_device *netdev, int vf, u8 *mac)
if (!is_valid_ether_addr(mac) || (vf >= num_vfs))
return -EINVAL;
- if (adapter->vf_cfg[vf].vf_pmac_id != BE_INVALID_PMAC_ID)
- status = be_cmd_pmac_del(adapter,
- adapter->vf_cfg[vf].vf_if_handle,
- adapter->vf_cfg[vf].vf_pmac_id, vf + 1);
+ status = be_cmd_pmac_del(adapter, adapter->vf_cfg[vf].vf_if_handle,
+ adapter->vf_cfg[vf].vf_pmac_id, vf + 1);
- status = be_cmd_pmac_add(adapter, mac,
- adapter->vf_cfg[vf].vf_if_handle,
+ status = be_cmd_pmac_add(adapter, mac, adapter->vf_cfg[vf].vf_if_handle,
&adapter->vf_cfg[vf].vf_pmac_id, vf + 1);
-
if (status)
dev_err(&adapter->pdev->dev, "MAC %pM set on VF %d Failed\n",
mac, vf);
@@ -2488,17 +2484,13 @@ static void be_vf_clear(struct be_adapter *adapter)
{
u32 vf;
- for (vf = 0; vf < num_vfs; vf++) {
- if (adapter->vf_cfg[vf].vf_pmac_id != BE_INVALID_PMAC_ID)
- be_cmd_pmac_del(adapter,
- adapter->vf_cfg[vf].vf_if_handle,
- adapter->vf_cfg[vf].vf_pmac_id, vf + 1);
- }
+ for (vf = 0; vf < num_vfs; vf++)
+ be_cmd_pmac_del(adapter, adapter->vf_cfg[vf].vf_if_handle,
+ adapter->vf_cfg[vf].vf_pmac_id, vf + 1);
for (vf = 0; vf < num_vfs; vf++)
- if (adapter->vf_cfg[vf].vf_if_handle)
- be_cmd_if_destroy(adapter,
- adapter->vf_cfg[vf].vf_if_handle, vf + 1);
+ be_cmd_if_destroy(adapter, adapter->vf_cfg[vf].vf_if_handle,
+ vf + 1);
}
static int be_clear(struct be_adapter *adapter)
@@ -2511,22 +2503,30 @@ static int be_clear(struct be_adapter *adapter)
be_mcc_queues_destroy(adapter);
be_rx_queues_destroy(adapter);
be_tx_queues_destroy(adapter);
- adapter->eq_next_idx = 0;
-
- adapter->be3_native = false;
- adapter->promiscuous = false;
/* tell fw we're done with firing cmds */
be_cmd_fw_clean(adapter);
return 0;
}
+static void be_vf_setup_init(struct be_adapter *adapter)
+{
+ int vf;
+
+ for (vf = 0; vf < num_vfs; vf++) {
+ adapter->vf_cfg[vf].vf_if_handle = -1;
+ adapter->vf_cfg[vf].vf_pmac_id = -1;
+ }
+}
+
static int be_vf_setup(struct be_adapter *adapter)
{
u32 cap_flags, en_flags, vf;
u16 lnk_speed;
int status;
+ be_vf_setup_init(adapter);
+
cap_flags = en_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST;
for (vf = 0; vf < num_vfs; vf++) {
status = be_cmd_if_create(adapter, cap_flags, en_flags, NULL,
@@ -2534,7 +2534,6 @@ static int be_vf_setup(struct be_adapter *adapter)
NULL, vf+1);
if (status)
goto err;
- adapter->vf_cfg[vf].vf_pmac_id = BE_INVALID_PMAC_ID;
}
if (!lancer_chip(adapter)) {
@@ -2555,6 +2554,16 @@ err:
return status;
}
+static void be_setup_init(struct be_adapter *adapter)
+{
+ adapter->vlan_prio_bmap = 0xff;
+ adapter->link_speed = -1;
+ adapter->if_handle = -1;
+ adapter->be3_native = false;
+ adapter->promiscuous = false;
+ adapter->eq_next_idx = 0;
+}
+
static int be_setup(struct be_adapter *adapter)
{
struct net_device *netdev = adapter->netdev;
@@ -2563,9 +2572,7 @@ static int be_setup(struct be_adapter *adapter)
int status;
u8 mac[ETH_ALEN];
- /* Allow all priorities by default. A GRP5 evt may modify this */
- adapter->vlan_prio_bmap = 0xff;
- adapter->link_speed = -1;
+ be_setup_init(adapter);
be_cmd_req_native_mode(adapter);
--
1.7.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 2/4] be2net: stop checking the UE registers after an EEH error
2011-11-11 5:17 [PATCH net-next 0/4] be2net fixes Sathya Perla
2011-11-11 5:17 ` [PATCH net-next 1/4] be2net: init (vf)_if_handle/vf_pmac_id to handle failure scenarios Sathya Perla
@ 2011-11-11 5:17 ` Sathya Perla
2011-11-11 5:17 ` [PATCH net-next 3/4] be2net: don't log more than one error on detecting EEH/UE errors Sathya Perla
` (2 subsequent siblings)
4 siblings, 0 replies; 12+ messages in thread
From: Sathya Perla @ 2011-11-11 5:17 UTC (permalink / raw)
To: netdev
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_main.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 83d971d..99da07f 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -1978,6 +1978,9 @@ void be_detect_dump_ue(struct be_adapter *adapter)
u32 sliport_status = 0, sliport_err1 = 0, sliport_err2 = 0;
u32 i;
+ if (adapter->eeh_err || adapter->ue_detected)
+ return;
+
if (lancer_chip(adapter)) {
sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET);
if (sliport_status & SLIPORT_STATUS_ERR_MASK) {
@@ -2039,8 +2042,7 @@ static void be_worker(struct work_struct *work)
struct be_rx_obj *rxo;
int i;
- if (!adapter->ue_detected)
- be_detect_dump_ue(adapter);
+ be_detect_dump_ue(adapter);
/* when interrupts are not yet enabled, just reap any pending
* mcc completions */
--
1.7.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 3/4] be2net: don't log more than one error on detecting EEH/UE errors
2011-11-11 5:17 [PATCH net-next 0/4] be2net fixes Sathya Perla
2011-11-11 5:17 ` [PATCH net-next 1/4] be2net: init (vf)_if_handle/vf_pmac_id to handle failure scenarios Sathya Perla
2011-11-11 5:17 ` [PATCH net-next 2/4] be2net: stop checking the UE registers after an EEH error Sathya Perla
@ 2011-11-11 5:17 ` Sathya Perla
2011-11-11 5:18 ` [PATCH net-next 4/4] be2net: stop issuing FW cmds if any cmd times out Sathya Perla
2011-11-12 22:59 ` [PATCH net-next 0/4] be2net fixes David Miller
4 siblings, 0 replies; 12+ messages in thread
From: Sathya Perla @ 2011-11-11 5:17 UTC (permalink / raw)
To: netdev
Currently we're spamming error messages each time a FW cmd call is made
while in EEH/UE error state. One log msg on error detection is enough.
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_cmds.c | 15 +++------------
drivers/net/ethernet/emulex/benet/be_main.c | 3 ++-
2 files changed, 5 insertions(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index c5912c4..94cd77c 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -31,11 +31,8 @@ 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) {
- dev_info(&adapter->pdev->dev,
- "Error in Card Detected! Cannot issue commands\n");
+ if (adapter->eeh_err)
return;
- }
val |= mccq->id & DB_MCCQ_RING_ID_MASK;
val |= 1 << DB_MCCQ_NUM_POSTED_SHIFT;
@@ -298,19 +295,13 @@ static int be_mbox_db_ready_wait(struct be_adapter *adapter, void __iomem *db)
int msecs = 0;
u32 ready;
- if (adapter->eeh_err) {
- dev_err(&adapter->pdev->dev,
- "Error detected in card.Cannot issue commands\n");
+ if (adapter->eeh_err)
return -EIO;
- }
do {
ready = ioread32(db);
- if (ready == 0xffffffff) {
- dev_err(&adapter->pdev->dev,
- "pci slot disconnected\n");
+ if (ready == 0xffffffff)
return -1;
- }
ready &= MPU_MAILBOX_DB_RDY_MASK;
if (ready)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 99da07f..0e97b6d 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -2007,7 +2007,8 @@ void be_detect_dump_ue(struct be_adapter *adapter)
sliport_status & SLIPORT_STATUS_ERR_MASK) {
adapter->ue_detected = true;
adapter->eeh_err = true;
- dev_err(&adapter->pdev->dev, "UE Detected!!\n");
+ dev_err(&adapter->pdev->dev,
+ "Unrecoverable error in the card\n");
}
if (ue_lo) {
--
1.7.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 4/4] be2net: stop issuing FW cmds if any cmd times out
2011-11-11 5:17 [PATCH net-next 0/4] be2net fixes Sathya Perla
` (2 preceding siblings ...)
2011-11-11 5:17 ` [PATCH net-next 3/4] be2net: don't log more than one error on detecting EEH/UE errors Sathya Perla
@ 2011-11-11 5:18 ` Sathya Perla
2011-11-12 22:59 ` [PATCH net-next 0/4] be2net fixes David Miller
4 siblings, 0 replies; 12+ messages in thread
From: Sathya Perla @ 2011-11-11 5:18 UTC (permalink / raw)
To: netdev
A FW cmd timeout (with a sufficiently large timeout value in the
order of tens of seconds) indicates an unresponsive FW. In this state
issuing further cmds and waiting for a completion will only stall the process.
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be.h | 8 ++++++-
drivers/net/ethernet/emulex/benet/be_cmds.c | 29 ++++++++++----------------
drivers/net/ethernet/emulex/benet/be_main.c | 2 +
3 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index 4163980..34f162d 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -350,6 +350,8 @@ 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;
@@ -357,7 +359,6 @@ struct be_adapter {
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;
@@ -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);
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index 94cd77c..ad3eef0 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -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;
@@ -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,
@@ -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;
@@ -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;
@@ -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;
}
@@ -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;
@@ -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;
@@ -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;
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 0e97b6d..ce20d64 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -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)
--
1.7.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 0/4] be2net fixes
2011-11-11 5:17 [PATCH net-next 0/4] be2net fixes Sathya Perla
` (3 preceding siblings ...)
2011-11-11 5:18 ` [PATCH net-next 4/4] be2net: stop issuing FW cmds if any cmd times out Sathya Perla
@ 2011-11-12 22:59 ` David Miller
4 siblings, 0 replies; 12+ messages in thread
From: David Miller @ 2011-11-12 22:59 UTC (permalink / raw)
To: sathya.perla; +Cc: netdev
From: Sathya Perla <sathya.perla@emulex.com>
Date: Fri, 11 Nov 2011 10:47:56 +0530
> Pls apply. Thanks.
>
> Sathya Perla (4):
> be2net: init (vf)_if_handle/vf_pmac_id to handle failure scenarios
> be2net: stop checking the UE registers after an EEH error
> be2net: don't log more than one error on detecting EEH/UE errors
> be2net: stop issuing FW cmds if any cmd times out
All applied, thank you.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH net-next 0/4] be2net fixes
@ 2012-05-02 13:39 Somnath Kotur
2012-05-03 1:07 ` David Miller
0 siblings, 1 reply; 12+ messages in thread
From: Somnath Kotur @ 2012-05-02 13:39 UTC (permalink / raw)
To: netdev; +Cc: Somnath Kotur
Re-posting patches 1-4 from the earlier patch set of 5.
Incorporated review comment from Ben Hutchings in patch 2.
Will address comments in Patch 5 and send it out seperately.
Somnath Kotur (4):
be2net: Fix to not set link speed for disabled functions of a UMC
card
be2net: Fix to apply duplex value as unknown when link is down.
be2net: Record receive queue index in skb to aid RPS.
be2net: Fix EEH error reset before a flash dump completes
drivers/net/ethernet/emulex/benet/be_ethtool.c | 4 ++--
drivers/net/ethernet/emulex/benet/be_main.c | 7 +++++++
2 files changed, 9 insertions(+), 2 deletions(-)
^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: [PATCH net-next 0/4] be2net fixes
[not found] <1335965986-31886-1-git-send-email-somnath.kotur@emulex.com>
@ 2012-05-02 14:04 ` Somnath.Kotur
0 siblings, 0 replies; 12+ messages in thread
From: Somnath.Kotur @ 2012-05-02 14:04 UTC (permalink / raw)
To: Somnath.Kotur, netdev
David,
Have sent the 4 patches from the earlier patch series of 5 as is without updating the individual patch numbers i.e they still denote patch 1/5 etc.
Pls let me know if this is a problem and/or if you want me to resend them again?
Thanks
Somnath
> -----Original Message-----
> From: Somnath Kotur [mailto:somnath.kotur@emulex.com]
> Sent: Wednesday, May 02, 2012 7:10 PM
> To: netdev@vger.kernel.org
> Cc: Kotur, Somnath
> Subject: [PATCH net-next 0/4] be2net fixes
>
> Re-posting patches 1-4 from the earlier patch set of 5.
> Incorporated review comment from Ben Hutchings in patch 2.
> Will address comments in Patch 5 and send it out seperately.
>
> Somnath Kotur (4):
> be2net: Fix to not set link speed for disabled functions of a UMC
> card
> be2net: Fix to apply duplex value as unknown when link is down.
> be2net: Record receive queue index in skb to aid RPS.
> be2net: Fix EEH error reset before a flash dump completes
>
> drivers/net/ethernet/emulex/benet/be_ethtool.c | 4 ++--
> drivers/net/ethernet/emulex/benet/be_main.c | 7 +++++++
> 2 files changed, 9 insertions(+), 2 deletions(-)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 0/4] be2net fixes
2012-05-02 13:39 Somnath Kotur
@ 2012-05-03 1:07 ` David Miller
0 siblings, 0 replies; 12+ messages in thread
From: David Miller @ 2012-05-03 1:07 UTC (permalink / raw)
To: somnath.kotur; +Cc: netdev
From: Somnath Kotur <somnath.kotur@emulex.com>
Date: Wed, 2 May 2012 19:09:46 +0530
> Re-posting patches 1-4 from the earlier patch set of 5.
> Incorporated review comment from Ben Hutchings in patch 2.
> Will address comments in Patch 5 and send it out seperately.
>
> Somnath Kotur (4):
> be2net: Fix to not set link speed for disabled functions of a UMC
> card
> be2net: Fix to apply duplex value as unknown when link is down.
> be2net: Record receive queue index in skb to aid RPS.
> be2net: Fix EEH error reset before a flash dump completes
All applied, thanks.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2012-05-03 1:07 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-11 5:17 [PATCH net-next 0/4] be2net fixes Sathya Perla
2011-11-11 5:17 ` [PATCH net-next 1/4] be2net: init (vf)_if_handle/vf_pmac_id to handle failure scenarios Sathya Perla
2011-11-11 5:17 ` [PATCH net-next 2/4] be2net: stop checking the UE registers after an EEH error Sathya Perla
2011-11-11 5:17 ` [PATCH net-next 3/4] be2net: don't log more than one error on detecting EEH/UE errors Sathya Perla
2011-11-11 5:18 ` [PATCH net-next 4/4] be2net: stop issuing FW cmds if any cmd times out Sathya Perla
2011-11-12 22:59 ` [PATCH net-next 0/4] be2net fixes David Miller
[not found] <1335965986-31886-1-git-send-email-somnath.kotur@emulex.com>
2012-05-02 14:04 ` Somnath.Kotur
-- strict thread matches above, loose matches on Subject: below --
2012-05-02 13:39 Somnath Kotur
2012-05-03 1:07 ` David Miller
2011-10-24 12:44 [PATCH net-next 0/4] be2net: fixes Sathya Perla
2011-10-24 22:35 ` David Miller
2011-10-25 4:49 ` Sathya.Perla
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).