Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6edae7a4 authored by Amit Kumar Salecha's avatar Amit Kumar Salecha Committed by David S. Miller
Browse files

qlcnic: fix caching window register



o Window register is not per pci-func, so caching can
result in expected result.

Signed-off-by: default avatarAmit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent deffab05
Loading
Loading
Loading
Loading
+0 −3
Original line number Original line Diff line number Diff line
@@ -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;


+0 −5
Original line number Original line Diff line number Diff line
@@ -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;
}
}
+0 −10
Original line number Original line Diff line number Diff line
@@ -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");