All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.