netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [net-2.6 PATCH 0/5] qlge: Bug fixes for qlge.
@ 2009-09-29 18:39 Ron Mercer
  2009-09-29 18:39 ` [net-2.6 PATCH 1/5] qlge: Fix bad bit definitions Ron Mercer
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Ron Mercer @ 2009-09-29 18:39 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer



^ permalink raw reply	[flat|nested] 7+ messages in thread

* [net-2.6 PATCH 1/5] qlge: Fix bad bit definitions.
  2009-09-29 18:39 [net-2.6 PATCH 0/5] qlge: Bug fixes for qlge Ron Mercer
@ 2009-09-29 18:39 ` Ron Mercer
  2009-09-29 18:39 ` [net-2.6 PATCH 2/5] qlge: Fix out of sync hardware semaphore Ron Mercer
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Ron Mercer @ 2009-09-29 18:39 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
 drivers/net/qlge/qlge.h |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/net/qlge/qlge.h b/drivers/net/qlge/qlge.h
index a9845a2..30d5585 100644
--- a/drivers/net/qlge/qlge.h
+++ b/drivers/net/qlge/qlge.h
@@ -1381,15 +1381,15 @@ struct intr_context {
 
 /* adapter flags definitions. */
 enum {
-	QL_ADAPTER_UP = (1 << 0),	/* Adapter has been brought up. */
-	QL_LEGACY_ENABLED = (1 << 3),
-	QL_MSI_ENABLED = (1 << 3),
-	QL_MSIX_ENABLED = (1 << 4),
-	QL_DMA64 = (1 << 5),
-	QL_PROMISCUOUS = (1 << 6),
-	QL_ALLMULTI = (1 << 7),
-	QL_PORT_CFG = (1 << 8),
-	QL_CAM_RT_SET = (1 << 9),
+	QL_ADAPTER_UP = 0,	/* Adapter has been brought up. */
+	QL_LEGACY_ENABLED = 1,
+	QL_MSI_ENABLED = 2,
+	QL_MSIX_ENABLED = 3,
+	QL_DMA64 = 4,
+	QL_PROMISCUOUS = 5,
+	QL_ALLMULTI = 6,
+	QL_PORT_CFG = 7,
+	QL_CAM_RT_SET = 8,
 };
 
 /* link_status bit definitions */
-- 
1.6.0.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [net-2.6 PATCH 2/5] qlge: Fix out of sync hardware semaphore.
  2009-09-29 18:39 [net-2.6 PATCH 0/5] qlge: Bug fixes for qlge Ron Mercer
  2009-09-29 18:39 ` [net-2.6 PATCH 1/5] qlge: Fix bad bit definitions Ron Mercer
@ 2009-09-29 18:39 ` Ron Mercer
  2009-09-29 18:39 ` [net-2.6 PATCH 3/5] qlge: Fix spin_lock warning Ron Mercer
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Ron Mercer @ 2009-09-29 18:39 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer

ql_clear_routing_entries() takes/gives it's own hardware semaphore since
it is called from more than one place.  ql_route_initialize() should
make this call and THEN take it's own semaphore before doing it's work.

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
 drivers/net/qlge/qlge_main.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index 2205292..e4b756d 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -3142,14 +3142,14 @@ static int ql_route_initialize(struct ql_adapter *qdev)
 {
 	int status = 0;
 
-	status = ql_sem_spinlock(qdev, SEM_RT_IDX_MASK);
+	/* Clear all the entries in the routing table. */
+	status = ql_clear_routing_entries(qdev);
 	if (status)
 		return status;
 
-	/* Clear all the entries in the routing table. */
-	status = ql_clear_routing_entries(qdev);
+	status = ql_sem_spinlock(qdev, SEM_RT_IDX_MASK);
 	if (status)
-		goto exit;
+		return status;
 
 	status = ql_set_routing_reg(qdev, RT_IDX_ALL_ERR_SLOT, RT_IDX_ERR, 1);
 	if (status) {
-- 
1.6.0.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [net-2.6 PATCH 3/5] qlge: Fix spin_lock warning.
  2009-09-29 18:39 [net-2.6 PATCH 0/5] qlge: Bug fixes for qlge Ron Mercer
  2009-09-29 18:39 ` [net-2.6 PATCH 1/5] qlge: Fix bad bit definitions Ron Mercer
  2009-09-29 18:39 ` [net-2.6 PATCH 2/5] qlge: Fix out of sync hardware semaphore Ron Mercer
@ 2009-09-29 18:39 ` Ron Mercer
  2009-09-29 18:39 ` [net-2.6 PATCH 4/5] qlge: Protect reset recovery with rtnl_lock() Ron Mercer
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Ron Mercer @ 2009-09-29 18:39 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer

Remove the unnecessary locking around the call to ql_adapter_reset().

Sep 25 08:17:29 localhost kernel:    SOFTIRQ-ON-W at:
Sep 25 08:17:29 localhost kernel:                         [<c0000000000a2964>] .lock_acquire+0x10c/0x158
Sep 25 08:17:29 localhost kernel:                         [<c0000000004542e0>] ._spin_lock+0x34/0x58
Sep 25 08:17:29 localhost kernel:                         [<d000000006723070>] .ql_adapter_down+0x40c/0x4a0 [qlge]
Sep 25 08:17:29 localhost kernel:                         [<d0000000067256d8>] .qlge_close+0x38/0x58 [qlge]
Sep 25 08:17:29 localhost kernel:                         [<c0000000003ada6c>] .dev_close+0xdc/0x118
Sep 25 08:17:29 localhost kernel:                         [<c0000000003adb48>] .rollback_registered+0xa0/0x158
Sep 25 08:17:29 localhost kernel:                         [<c0000000003adc50>] .unregister_netdevice+0x50/0x7c
Sep 25 08:17:29 localhost kernel:                         [<c0000000003adca0>] .unregister_netdev+0x24/0x40
Sep 25 08:17:29 localhost kernel:                         [<d00000000672e0c0>] .qlge_remove+0x28/0x64 [qlge]
Sep 25 08:17:29 localhost kernel:                         [<c000000000253fdc>] .pci_device_remove+0x50/0x90
Sep 25 08:17:29 localhost kernel:                         [<c0000000002f5434>] .__device_release_driver+0x94/0xf8
Sep 25 08:17:29 localhost kernel:                         [<c0000000002f5560>] .driver_detach+0xc8/0xfc
Sep 25 08:17:29 localhost kernel:                         [<c0000000002f3fd8>] .bus_remove_driver+0xb4/0x114
Sep 25 08:17:29 localhost kernel:                         [<c0000000002f5d4c>] .driver_unregister+0x80/0xa4
Sep 25 08:17:29 localhost kernel:                         [<c00000000025421c>] .pci_unregister_driver+0x50/0xc8
Sep 25 08:17:29 localhost kernel:                         [<d00000000672e044>] .qlge_exit+0x1c/0x34 [qlge]
Sep 25 08:17:29 localhost kernel:                         [<c0000000000ac8b0>] .SyS_delete_module+0x234/0x2d0
Sep 25 08:17:29 localhost kernel:                         [<c000000000008554>] syscall_exit+0x0/0x40
Sep 25 08:17:29 localhost kernel:    INITIAL USE at:

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
 drivers/net/qlge/qlge_main.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index e4b756d..b05300d 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -3380,12 +3380,10 @@ static int ql_adapter_down(struct ql_adapter *qdev)
 
 	ql_free_rx_buffers(qdev);
 
-	spin_lock(&qdev->hw_lock);
 	status = ql_adapter_reset(qdev);
 	if (status)
 		QPRINTK(qdev, IFDOWN, ERR, "reset(func #%d) FAILED!\n",
 			qdev->func);
-	spin_unlock(&qdev->hw_lock);
 	return status;
 }
 
-- 
1.6.0.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [net-2.6 PATCH 4/5] qlge: Protect reset recovery with rtnl_lock().
  2009-09-29 18:39 [net-2.6 PATCH 0/5] qlge: Bug fixes for qlge Ron Mercer
                   ` (2 preceding siblings ...)
  2009-09-29 18:39 ` [net-2.6 PATCH 3/5] qlge: Fix spin_lock warning Ron Mercer
@ 2009-09-29 18:39 ` Ron Mercer
  2009-09-29 18:39 ` [net-2.6 PATCH 5/5] qlge: Fix error exit for probe call Ron Mercer
  2009-10-01  3:04 ` [net-2.6 PATCH 0/5] qlge: Bug fixes for qlge David Miller
  5 siblings, 0 replies; 7+ messages in thread
From: Ron Mercer @ 2009-09-29 18:39 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer

Move the call to rtnl_lock() to before the internal call to
ql_adapter_down()/ql_adapter_up().  This prevents collisions that can
happen when recovering from an asic error.

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
 drivers/net/qlge/qlge_main.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index b05300d..fbef305 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -3703,7 +3703,7 @@ static void ql_asic_reset_work(struct work_struct *work)
 	struct ql_adapter *qdev =
 	    container_of(work, struct ql_adapter, asic_reset_work.work);
 	int status;
-
+	rtnl_lock();
 	status = ql_adapter_down(qdev);
 	if (status)
 		goto error;
@@ -3711,12 +3711,12 @@ static void ql_asic_reset_work(struct work_struct *work)
 	status = ql_adapter_up(qdev);
 	if (status)
 		goto error;
-
+	rtnl_unlock();
 	return;
 error:
 	QPRINTK(qdev, IFUP, ALERT,
 		"Driver up/down cycle failed, closing device\n");
-	rtnl_lock();
+
 	set_bit(QL_ADAPTER_UP, &qdev->flags);
 	dev_close(qdev->ndev);
 	rtnl_unlock();
-- 
1.6.0.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [net-2.6 PATCH 5/5] qlge: Fix error exit for probe call.
  2009-09-29 18:39 [net-2.6 PATCH 0/5] qlge: Bug fixes for qlge Ron Mercer
                   ` (3 preceding siblings ...)
  2009-09-29 18:39 ` [net-2.6 PATCH 4/5] qlge: Protect reset recovery with rtnl_lock() Ron Mercer
@ 2009-09-29 18:39 ` Ron Mercer
  2009-10-01  3:04 ` [net-2.6 PATCH 0/5] qlge: Bug fixes for qlge David Miller
  5 siblings, 0 replies; 7+ messages in thread
From: Ron Mercer @ 2009-09-29 18:39 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer


Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
 drivers/net/qlge/qlge_main.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index fbef305..c8a9efe 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -3832,11 +3832,14 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
 		return err;
 	}
 
+	qdev->ndev = ndev;
+	qdev->pdev = pdev;
+	pci_set_drvdata(pdev, ndev);
 	pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
 	if (pos <= 0) {
 		dev_err(&pdev->dev, PFX "Cannot find PCI Express capability, "
 			"aborting.\n");
-		goto err_out;
+		return pos;
 	} else {
 		pci_read_config_word(pdev, pos + PCI_EXP_DEVCTL, &val16);
 		val16 &= ~PCI_EXP_DEVCTL_NOSNOOP_EN;
@@ -3849,7 +3852,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
 	err = pci_request_regions(pdev, DRV_NAME);
 	if (err) {
 		dev_err(&pdev->dev, "PCI region request failed.\n");
-		goto err_out;
+		return err;
 	}
 
 	pci_set_master(pdev);
@@ -3867,7 +3870,6 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
 		goto err_out;
 	}
 
-	pci_set_drvdata(pdev, ndev);
 	qdev->reg_base =
 	    ioremap_nocache(pci_resource_start(pdev, 1),
 			    pci_resource_len(pdev, 1));
@@ -3887,8 +3889,6 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
 		goto err_out;
 	}
 
-	qdev->ndev = ndev;
-	qdev->pdev = pdev;
 	err = ql_get_board_info(qdev);
 	if (err) {
 		dev_err(&pdev->dev, "Register access failed.\n");
-- 
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 qlge.
  2009-09-29 18:39 [net-2.6 PATCH 0/5] qlge: Bug fixes for qlge Ron Mercer
                   ` (4 preceding siblings ...)
  2009-09-29 18:39 ` [net-2.6 PATCH 5/5] qlge: Fix error exit for probe call Ron Mercer
@ 2009-10-01  3:04 ` David Miller
  5 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2009-10-01  3:04 UTC (permalink / raw)
  To: ron.mercer; +Cc: netdev


All applied, thanks Ron.



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-10-01  3:04 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-29 18:39 [net-2.6 PATCH 0/5] qlge: Bug fixes for qlge Ron Mercer
2009-09-29 18:39 ` [net-2.6 PATCH 1/5] qlge: Fix bad bit definitions Ron Mercer
2009-09-29 18:39 ` [net-2.6 PATCH 2/5] qlge: Fix out of sync hardware semaphore Ron Mercer
2009-09-29 18:39 ` [net-2.6 PATCH 3/5] qlge: Fix spin_lock warning Ron Mercer
2009-09-29 18:39 ` [net-2.6 PATCH 4/5] qlge: Protect reset recovery with rtnl_lock() Ron Mercer
2009-09-29 18:39 ` [net-2.6 PATCH 5/5] qlge: Fix error exit for probe call Ron Mercer
2009-10-01  3:04 ` [net-2.6 PATCH 0/5] qlge: Bug fixes for qlge 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).