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>
This commit is contained in:
parent
deffab0530
commit
6edae7a484
3 changed files with 0 additions and 18 deletions
|
@ -399,9 +399,6 @@ struct qlcnic_hardware_context {
|
||||||
|
|
||||||
unsigned long pci_len0;
|
unsigned long pci_len0;
|
||||||
|
|
||||||
u32 ocm_win;
|
|
||||||
u32 crb_win;
|
|
||||||
|
|
||||||
rwlock_t crb_lock;
|
rwlock_t crb_lock;
|
||||||
struct mutex mem_lock;
|
struct mutex mem_lock;
|
||||||
|
|
||||||
|
|
|
@ -776,9 +776,6 @@ qlcnic_pci_set_crbwindow_2M(struct qlcnic_adapter *adapter, ulong off)
|
||||||
|
|
||||||
window = CRB_HI(off);
|
window = CRB_HI(off);
|
||||||
|
|
||||||
if (adapter->ahw.crb_win == window)
|
|
||||||
return;
|
|
||||||
|
|
||||||
writel(window, addr);
|
writel(window, addr);
|
||||||
if (readl(addr) != window) {
|
if (readl(addr) != window) {
|
||||||
if (printk_ratelimit())
|
if (printk_ratelimit())
|
||||||
|
@ -786,7 +783,6 @@ qlcnic_pci_set_crbwindow_2M(struct qlcnic_adapter *adapter, ulong off)
|
||||||
"failed to set CRB window to %d off 0x%lx\n",
|
"failed to set CRB window to %d off 0x%lx\n",
|
||||||
window, off);
|
window, off);
|
||||||
}
|
}
|
||||||
adapter->ahw.crb_win = window;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -874,7 +870,6 @@ qlcnic_pci_set_window_2M(struct qlcnic_adapter *adapter,
|
||||||
/* read back to flush */
|
/* read back to flush */
|
||||||
readl(adapter->ahw.ocm_win_crb);
|
readl(adapter->ahw.ocm_win_crb);
|
||||||
|
|
||||||
adapter->ahw.ocm_win = window;
|
|
||||||
*start = QLCNIC_PCI_OCM0_2M + GET_MEM_OFFS_2M(addr);
|
*start = QLCNIC_PCI_OCM0_2M + GET_MEM_OFFS_2M(addr);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -517,13 +517,6 @@ qlcnic_setup_pci_map(struct qlcnic_adapter *adapter)
|
||||||
struct pci_dev *pdev = adapter->pdev;
|
struct pci_dev *pdev = adapter->pdev;
|
||||||
int pci_func = adapter->ahw.pci_func;
|
int pci_func = adapter->ahw.pci_func;
|
||||||
|
|
||||||
/*
|
|
||||||
* Set the CRB window to invalid. If any register in window 0 is
|
|
||||||
* accessed it should set the window to 0 and then reset it to 1.
|
|
||||||
*/
|
|
||||||
adapter->ahw.crb_win = -1;
|
|
||||||
adapter->ahw.ocm_win = -1;
|
|
||||||
|
|
||||||
/* remap phys address */
|
/* remap phys address */
|
||||||
mem_base = pci_resource_start(pdev, 0); /* 0 is for BAR 0 */
|
mem_base = pci_resource_start(pdev, 0); /* 0 is for BAR 0 */
|
||||||
mem_len = pci_resource_len(pdev, 0);
|
mem_len = pci_resource_len(pdev, 0);
|
||||||
|
@ -1311,9 +1304,6 @@ qlcnic_resume(struct pci_dev *pdev)
|
||||||
pci_set_master(pdev);
|
pci_set_master(pdev);
|
||||||
pci_restore_state(pdev);
|
pci_restore_state(pdev);
|
||||||
|
|
||||||
adapter->ahw.crb_win = -1;
|
|
||||||
adapter->ahw.ocm_win = -1;
|
|
||||||
|
|
||||||
err = qlcnic_start_firmware(adapter);
|
err = qlcnic_start_firmware(adapter);
|
||||||
if (err) {
|
if (err) {
|
||||||
dev_err(&pdev->dev, "failed to start firmware\n");
|
dev_err(&pdev->dev, "failed to start firmware\n");
|
||||||
|
|
Reference in a new issue