Commit a7717180 authored by Eddie Wai's avatar Eddie Wai Committed by James Bottomley

[SCSI] bnx2i: Removed the reference to the netdev->base_addr

The netdev->base_addr parameter has been deprecated in the L2 bnx2
driver.  This is used by bnx2i for the BARn iomapping.

This patch will directly reference the pci_resource_start instead
of using the deprecated netdev->base_addr.

This patch is actually a critical bug fix as the 1G bnx2 driver no
longer supports the netdev->base_addr in the current kernel of the scsi
tree.  This means that Broadcom's 1G Linux iSCSI offload solution would
not work at all without this patch. 
Signed-off-by: default avatarEddie Wai <eddie.wai@broadcom.com>
Reviewed-by: default avatarMike Christie <michaelc@cs.wisc.edu>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 6ef1b512
...@@ -350,6 +350,7 @@ struct bnx2i_hba { ...@@ -350,6 +350,7 @@ struct bnx2i_hba {
struct pci_dev *pcidev; struct pci_dev *pcidev;
struct net_device *netdev; struct net_device *netdev;
void __iomem *regview; void __iomem *regview;
resource_size_t reg_base;
u32 age; u32 age;
unsigned long cnic_dev_type; unsigned long cnic_dev_type;
......
...@@ -2724,7 +2724,6 @@ int bnx2i_map_ep_dbell_regs(struct bnx2i_endpoint *ep) ...@@ -2724,7 +2724,6 @@ int bnx2i_map_ep_dbell_regs(struct bnx2i_endpoint *ep)
goto arm_cq; goto arm_cq;
} }
reg_base = ep->hba->netdev->base_addr;
if ((test_bit(BNX2I_NX2_DEV_5709, &ep->hba->cnic_dev_type)) && if ((test_bit(BNX2I_NX2_DEV_5709, &ep->hba->cnic_dev_type)) &&
(ep->hba->mail_queue_access == BNX2I_MQ_BIN_MODE)) { (ep->hba->mail_queue_access == BNX2I_MQ_BIN_MODE)) {
config2 = REG_RD(ep->hba, BNX2_MQ_CONFIG2); config2 = REG_RD(ep->hba, BNX2_MQ_CONFIG2);
...@@ -2740,7 +2739,7 @@ int bnx2i_map_ep_dbell_regs(struct bnx2i_endpoint *ep) ...@@ -2740,7 +2739,7 @@ int bnx2i_map_ep_dbell_regs(struct bnx2i_endpoint *ep)
/* 5709 device in normal node and 5706/5708 devices */ /* 5709 device in normal node and 5706/5708 devices */
reg_off = CTX_OFFSET + (MB_KERNEL_CTX_SIZE * cid_num); reg_off = CTX_OFFSET + (MB_KERNEL_CTX_SIZE * cid_num);
ep->qp.ctx_base = ioremap_nocache(reg_base + reg_off, ep->qp.ctx_base = ioremap_nocache(ep->hba->reg_base + reg_off,
MB_KERNEL_CTX_SIZE); MB_KERNEL_CTX_SIZE);
if (!ep->qp.ctx_base) if (!ep->qp.ctx_base)
return -ENOMEM; return -ENOMEM;
......
...@@ -811,13 +811,13 @@ struct bnx2i_hba *bnx2i_alloc_hba(struct cnic_dev *cnic) ...@@ -811,13 +811,13 @@ struct bnx2i_hba *bnx2i_alloc_hba(struct cnic_dev *cnic)
bnx2i_identify_device(hba); bnx2i_identify_device(hba);
bnx2i_setup_host_queue_size(hba, shost); bnx2i_setup_host_queue_size(hba, shost);
hba->reg_base = pci_resource_start(hba->pcidev, 0);
if (test_bit(BNX2I_NX2_DEV_5709, &hba->cnic_dev_type)) { if (test_bit(BNX2I_NX2_DEV_5709, &hba->cnic_dev_type)) {
hba->regview = ioremap_nocache(hba->netdev->base_addr, hba->regview = pci_iomap(hba->pcidev, 0, BNX2_MQ_CONFIG2);
BNX2_MQ_CONFIG2);
if (!hba->regview) if (!hba->regview)
goto ioreg_map_err; goto ioreg_map_err;
} else if (test_bit(BNX2I_NX2_DEV_57710, &hba->cnic_dev_type)) { } else if (test_bit(BNX2I_NX2_DEV_57710, &hba->cnic_dev_type)) {
hba->regview = ioremap_nocache(hba->netdev->base_addr, 4096); hba->regview = pci_iomap(hba->pcidev, 0, 4096);
if (!hba->regview) if (!hba->regview)
goto ioreg_map_err; goto ioreg_map_err;
} }
...@@ -884,7 +884,7 @@ struct bnx2i_hba *bnx2i_alloc_hba(struct cnic_dev *cnic) ...@@ -884,7 +884,7 @@ struct bnx2i_hba *bnx2i_alloc_hba(struct cnic_dev *cnic)
bnx2i_free_mp_bdt(hba); bnx2i_free_mp_bdt(hba);
mp_bdt_mem_err: mp_bdt_mem_err:
if (hba->regview) { if (hba->regview) {
iounmap(hba->regview); pci_iounmap(hba->pcidev, hba->regview);
hba->regview = NULL; hba->regview = NULL;
} }
ioreg_map_err: ioreg_map_err:
...@@ -910,7 +910,7 @@ void bnx2i_free_hba(struct bnx2i_hba *hba) ...@@ -910,7 +910,7 @@ void bnx2i_free_hba(struct bnx2i_hba *hba)
pci_dev_put(hba->pcidev); pci_dev_put(hba->pcidev);
if (hba->regview) { if (hba->regview) {
iounmap(hba->regview); pci_iounmap(hba->pcidev, hba->regview);
hba->regview = NULL; hba->regview = NULL;
} }
bnx2i_free_mp_bdt(hba); bnx2i_free_mp_bdt(hba);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment