aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/qlcnic
diff options
context:
space:
mode:
authorAmit Kumar Salecha <amit.salecha@qlogic.com>2010-05-12 23:07:44 -0400
committerDavid S. Miller <davem@davemloft.net>2010-05-14 06:06:54 -0400
commit6edae7a4848ae5b363dcc7d8ee4f3f7a34e31e36 (patch)
treef3abc76586b0af5308c72eb18abbf95e6b9d0cbc /drivers/net/qlcnic
parentdeffab05308f783482d11c1bb52f24afa94cd632 (diff)
qlcnic: fix caching window register
o Window register is not per pci-func, so caching can result in expected result. Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/qlcnic')
-rw-r--r--drivers/net/qlcnic/qlcnic.h3
-rw-r--r--drivers/net/qlcnic/qlcnic_hw.c5
-rw-r--r--drivers/net/qlcnic/qlcnic_main.c10
3 files changed, 0 insertions, 18 deletions
diff --git a/drivers/net/qlcnic/qlcnic.h b/drivers/net/qlcnic/qlcnic.h
index 2fba9cd5946f..cfedcbdd8c75 100644
--- a/drivers/net/qlcnic/qlcnic.h
+++ b/drivers/net/qlcnic/qlcnic.h
@@ -399,9 +399,6 @@ struct qlcnic_hardware_context {
399 399
400 unsigned long pci_len0; 400 unsigned long pci_len0;
401 401
402 u32 ocm_win;
403 u32 crb_win;
404
405 rwlock_t crb_lock; 402 rwlock_t crb_lock;
406 struct mutex mem_lock; 403 struct mutex mem_lock;
407 404
diff --git a/drivers/net/qlcnic/qlcnic_hw.c b/drivers/net/qlcnic/qlcnic_hw.c
index 7a72b8d06bcb..0c2e1f08f459 100644
--- a/drivers/net/qlcnic/qlcnic_hw.c
+++ b/drivers/net/qlcnic/qlcnic_hw.c
@@ -776,9 +776,6 @@ qlcnic_pci_set_crbwindow_2M(struct qlcnic_adapter *adapter, ulong off)
776 776
777 window = CRB_HI(off); 777 window = CRB_HI(off);
778 778
779 if (adapter->ahw.crb_win == window)
780 return;
781
782 writel(window, addr); 779 writel(window, addr);
783 if (readl(addr) != window) { 780 if (readl(addr) != window) {
784 if (printk_ratelimit()) 781 if (printk_ratelimit())
@@ -786,7 +783,6 @@ qlcnic_pci_set_crbwindow_2M(struct qlcnic_adapter *adapter, ulong off)
786 "failed to set CRB window to %d off 0x%lx\n", 783 "failed to set CRB window to %d off 0x%lx\n",
787 window, off); 784 window, off);
788 } 785 }
789 adapter->ahw.crb_win = window;
790} 786}
791 787
792int 788int
@@ -874,7 +870,6 @@ qlcnic_pci_set_window_2M(struct qlcnic_adapter *adapter,
874 /* read back to flush */ 870 /* read back to flush */
875 readl(adapter->ahw.ocm_win_crb); 871 readl(adapter->ahw.ocm_win_crb);
876 872
877 adapter->ahw.ocm_win = window;
878 *start = QLCNIC_PCI_OCM0_2M + GET_MEM_OFFS_2M(addr); 873 *start = QLCNIC_PCI_OCM0_2M + GET_MEM_OFFS_2M(addr);
879 return 0; 874 return 0;
880} 875}
diff --git a/drivers/net/qlcnic/qlcnic_main.c b/drivers/net/qlcnic/qlcnic_main.c
index 3d90bb2fc7db..bd6730e53fd0 100644
--- a/drivers/net/qlcnic/qlcnic_main.c
+++ b/drivers/net/qlcnic/qlcnic_main.c
@@ -517,13 +517,6 @@ qlcnic_setup_pci_map(struct qlcnic_adapter *adapter)
517 struct pci_dev *pdev = adapter->pdev; 517 struct pci_dev *pdev = adapter->pdev;
518 int pci_func = adapter->ahw.pci_func; 518 int pci_func = adapter->ahw.pci_func;
519 519
520 /*
521 * Set the CRB window to invalid. If any register in window 0 is
522 * accessed it should set the window to 0 and then reset it to 1.
523 */
524 adapter->ahw.crb_win = -1;
525 adapter->ahw.ocm_win = -1;
526
527 /* remap phys address */ 520 /* remap phys address */
528 mem_base = pci_resource_start(pdev, 0); /* 0 is for BAR 0 */ 521 mem_base = pci_resource_start(pdev, 0); /* 0 is for BAR 0 */
529 mem_len = pci_resource_len(pdev, 0); 522 mem_len = pci_resource_len(pdev, 0);
@@ -1311,9 +1304,6 @@ qlcnic_resume(struct pci_dev *pdev)
1311 pci_set_master(pdev); 1304 pci_set_master(pdev);
1312 pci_restore_state(pdev); 1305 pci_restore_state(pdev);
1313 1306
1314 adapter->ahw.crb_win = -1;
1315 adapter->ahw.ocm_win = -1;
1316
1317 err = qlcnic_start_firmware(adapter); 1307 err = qlcnic_start_firmware(adapter);
1318 if (err) { 1308 if (err) {
1319 dev_err(&pdev->dev, "failed to start firmware\n"); 1309 dev_err(&pdev->dev, "failed to start firmware\n");