* [net-2.6 PATCH 0/5] qlge: Bug fixes for firmware handling.
@ 2009-06-07 23:58 Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 1/5] qlge: Fix firmware event handler loop Ron Mercer
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Ron Mercer @ 2009-06-07 23:58 UTC (permalink / raw)
To: davem; +Cc: netdev, ron.mercer
Hello Dave,
This patch series fixes some issues in the firmware event
handling area.
Regards,
Ron Mercer
^ permalink raw reply [flat|nested] 7+ messages in thread
* [net-2.6 PATCH 1/5] qlge: Fix firmware event handler loop.
2009-06-07 23:58 [net-2.6 PATCH 0/5] qlge: Bug fixes for firmware handling Ron Mercer
@ 2009-06-07 23:58 ` Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 2/5] qlge: Fix bug in firmware event handler Ron Mercer
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Ron Mercer @ 2009-06-07 23:58 UTC (permalink / raw)
To: davem; +Cc: netdev, ron.mercer
Check status on every iteration of event handler loop and exit
if an error occurred. If an error occurred then recover process
will be queued so this loop should no continue.
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
drivers/net/qlge/qlge_mpi.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/drivers/net/qlge/qlge_mpi.c b/drivers/net/qlge/qlge_mpi.c
index 9f81b79..7cb30fd 100644
--- a/drivers/net/qlge/qlge_mpi.c
+++ b/drivers/net/qlge/qlge_mpi.c
@@ -831,13 +831,19 @@ void ql_mpi_work(struct work_struct *work)
container_of(work, struct ql_adapter, mpi_work.work);
struct mbox_params mbc;
struct mbox_params *mbcp = &mbc;
+ int err = 0;
mutex_lock(&qdev->mpi_mutex);
while (ql_read32(qdev, STS) & STS_PI) {
memset(mbcp, 0, sizeof(struct mbox_params));
mbcp->out_count = 1;
- ql_mpi_handler(qdev, mbcp);
+ /* Don't continue if an async event
+ * did not complete properly.
+ */
+ err = ql_mpi_handler(qdev, mbcp);
+ if (err)
+ break;
}
mutex_unlock(&qdev->mpi_mutex);
--
1.6.0.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [net-2.6 PATCH 2/5] qlge: Fix bug in firmware event handler.
2009-06-07 23:58 [net-2.6 PATCH 0/5] qlge: Bug fixes for firmware handling Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 1/5] qlge: Fix firmware event handler loop Ron Mercer
@ 2009-06-07 23:58 ` Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 3/5] qlge: Fix bug in MTU setting process Ron Mercer
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Ron Mercer @ 2009-06-07 23:58 UTC (permalink / raw)
To: davem; +Cc: netdev, ron.mercer
Each firmware mailbox command can have a different number of
valid data elements. When waiting for a mailbox command to
complete it the process passes it's element count and
waits for the completion. It is possible that while waiting
an unrelated firmware async event (AE) can arrive. When this
happens, the handler will over write the element count
with the value for the newly arrived AE. This can cause
the mailbox command to not get all of it's data.
This patch restores original mailbox count at the end
of the handler.
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
drivers/net/qlge/qlge_mpi.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/drivers/net/qlge/qlge_mpi.c b/drivers/net/qlge/qlge_mpi.c
index 7cb30fd..ff84243 100644
--- a/drivers/net/qlge/qlge_mpi.c
+++ b/drivers/net/qlge/qlge_mpi.c
@@ -453,6 +453,13 @@ static int ql_mpi_handler(struct ql_adapter *qdev, struct mbox_params *mbcp)
}
end:
ql_write32(qdev, CSR, CSR_CMD_CLR_R2PCI_INT);
+ /* Restore the original mailbox count to
+ * what the caller asked for. This can get
+ * changed when a mailbox command is waiting
+ * for a response and an AEN arrives and
+ * is handled.
+ * */
+ mbcp->out_count = orig_count;
return status;
}
--
1.6.0.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [net-2.6 PATCH 3/5] qlge: Fix bug in MTU setting process.
2009-06-07 23:58 [net-2.6 PATCH 0/5] qlge: Bug fixes for firmware handling Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 1/5] qlge: Fix firmware event handler loop Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 2/5] qlge: Fix bug in firmware event handler Ron Mercer
@ 2009-06-07 23:58 ` Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 4/5] qlge: Fix timeout on indexed register wait Ron Mercer
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Ron Mercer @ 2009-06-07 23:58 UTC (permalink / raw)
To: davem; +Cc: netdev, ron.mercer
Since an FCoE function shares a port with this NIC function, the
jumbo settings must always be in place. This patch causes the
hardware to be set up for jumbo if it is not already done.
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
drivers/net/qlge/qlge_mpi.c | 5 +----
1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/drivers/net/qlge/qlge_mpi.c b/drivers/net/qlge/qlge_mpi.c
index ff84243..de96b8a 100644
--- a/drivers/net/qlge/qlge_mpi.c
+++ b/drivers/net/qlge/qlge_mpi.c
@@ -761,7 +761,6 @@ void ql_mpi_port_cfg_work(struct work_struct *work)
{
struct ql_adapter *qdev =
container_of(work, struct ql_adapter, mpi_port_cfg_work.work);
- struct net_device *ndev = qdev->ndev;
int status;
status = ql_mb_get_port_cfg(qdev);
@@ -771,9 +770,7 @@ void ql_mpi_port_cfg_work(struct work_struct *work)
goto err;
}
- if (ndev->mtu <= 2500)
- goto end;
- else if (qdev->link_config & CFG_JUMBO_FRAME_SIZE &&
+ if (qdev->link_config & CFG_JUMBO_FRAME_SIZE &&
qdev->max_frame_size ==
CFG_DEFAULT_MAX_FRAME_SIZE)
goto end;
--
1.6.0.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [net-2.6 PATCH 4/5] qlge: Fix timeout on indexed register wait.
2009-06-07 23:58 [net-2.6 PATCH 0/5] qlge: Bug fixes for firmware handling Ron Mercer
` (2 preceding siblings ...)
2009-06-07 23:58 ` [net-2.6 PATCH 3/5] qlge: Fix bug in MTU setting process Ron Mercer
@ 2009-06-07 23:58 ` Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 5/5] qlge: Fix timeout on firmware mailbox commands Ron Mercer
2009-06-08 7:10 ` [net-2.6 PATCH 0/5] qlge: Bug fixes for firmware handling David Miller
5 siblings, 0 replies; 7+ messages in thread
From: Ron Mercer @ 2009-06-07 23:58 UTC (permalink / raw)
To: davem; +Cc: netdev, ron.mercer
There are 8 banks of 'sub-registers' each of which are accessed
through address/data register pair. An example would be reading
flash or the xgmac. Accessing these require the driver to wait for
a ready bit before writing the address and then accessing the data.
This patch increases the timeout to 100us to prevent timeouts
that have been seen on some platforms.
These register are accessed in process context only.
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
drivers/net/qlge/qlge.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/qlge/qlge.h b/drivers/net/qlge/qlge.h
index fcb159e..e186071 100644
--- a/drivers/net/qlge/qlge.h
+++ b/drivers/net/qlge/qlge.h
@@ -50,7 +50,7 @@
#define MAX_INTER_FRAME_WAIT 10 /* 10 usec max interframe-wait for coalescing */
#define DFLT_INTER_FRAME_WAIT (MAX_INTER_FRAME_WAIT/2)
#define UDELAY_COUNT 3
-#define UDELAY_DELAY 10
+#define UDELAY_DELAY 100
#define TX_DESC_PER_IOCB 8
--
1.6.0.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [net-2.6 PATCH 5/5] qlge: Fix timeout on firmware mailbox commands.
2009-06-07 23:58 [net-2.6 PATCH 0/5] qlge: Bug fixes for firmware handling Ron Mercer
` (3 preceding siblings ...)
2009-06-07 23:58 ` [net-2.6 PATCH 4/5] qlge: Fix timeout on indexed register wait Ron Mercer
@ 2009-06-07 23:58 ` Ron Mercer
2009-06-08 7:10 ` [net-2.6 PATCH 0/5] qlge: Bug fixes for firmware handling David Miller
5 siblings, 0 replies; 7+ messages in thread
From: Ron Mercer @ 2009-06-07 23:58 UTC (permalink / raw)
To: davem; +Cc: netdev, ron.mercer
Some firmware mailbox commands require the firmware to
communicate with the FCoE driver running on another
PCI function. This can potentially take several seconds.
This wait is done in process context only.
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
drivers/net/qlge/qlge_mpi.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/qlge/qlge_mpi.c b/drivers/net/qlge/qlge_mpi.c
index de96b8a..3bd60a4 100644
--- a/drivers/net/qlge/qlge_mpi.c
+++ b/drivers/net/qlge/qlge_mpi.c
@@ -90,14 +90,14 @@ static int ql_get_mb_sts(struct ql_adapter *qdev, struct mbox_params *mbcp)
*/
static int ql_wait_mbx_cmd_cmplt(struct ql_adapter *qdev)
{
- int count = 50; /* TODO: arbitrary for now. */
+ int count = 100;
u32 value;
do {
value = ql_read32(qdev, STS);
if (value & STS_PI)
return 0;
- udelay(UDELAY_DELAY); /* 10us */
+ mdelay(UDELAY_DELAY); /* 100ms */
} while (--count);
return -ETIMEDOUT;
}
--
1.6.0.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [net-2.6 PATCH 0/5] qlge: Bug fixes for firmware handling.
2009-06-07 23:58 [net-2.6 PATCH 0/5] qlge: Bug fixes for firmware handling Ron Mercer
` (4 preceding siblings ...)
2009-06-07 23:58 ` [net-2.6 PATCH 5/5] qlge: Fix timeout on firmware mailbox commands Ron Mercer
@ 2009-06-08 7:10 ` David Miller
5 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2009-06-08 7:10 UTC (permalink / raw)
To: ron.mercer; +Cc: netdev
From: Ron Mercer <ron.mercer@qlogic.com>
Date: Sun, 7 Jun 2009 16:58:24 -0700
> This patch series fixes some issues in the firmware event
> handling area.
Applied to net-next-2.6, thanks!
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2009-06-08 7:10 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-07 23:58 [net-2.6 PATCH 0/5] qlge: Bug fixes for firmware handling Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 1/5] qlge: Fix firmware event handler loop Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 2/5] qlge: Fix bug in firmware event handler Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 3/5] qlge: Fix bug in MTU setting process Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 4/5] qlge: Fix timeout on indexed register wait Ron Mercer
2009-06-07 23:58 ` [net-2.6 PATCH 5/5] qlge: Fix timeout on firmware mailbox commands Ron Mercer
2009-06-08 7:10 ` [net-2.6 PATCH 0/5] qlge: Bug fixes for firmware handling David Miller
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).