79 lines
2.7 KiB
Diff
79 lines
2.7 KiB
Diff
From 798402055b562b87e4e9a1b6caf5e9e1d685af22 Mon Sep 17 00:00:00 2001
|
|
From: Sathya Perla <sathya.perla@emulex.com>
|
|
Date: Tue, 5 Jun 2012 19:37:22 +0000
|
|
Subject: [PATCH 03/13] be2net: do not use SCRATCHPAD register
|
|
|
|
commit d79c0a207aa3be002e1d9473ea98cc4f838e5a8b upstream.
|
|
|
|
The CUST_SCRATCHPAD_CSR register is used for marking if FW cleanup is
|
|
needed. This is used in a crash kernel scenario. Do no use this register as
|
|
it is not available for some functions. Instead, always issue an FLR when
|
|
a function is probed *except* when VFs are preset (enabled in the previous
|
|
PF load).
|
|
|
|
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/ethernet/emulex/benet/be_hw.h | 2 --
|
|
drivers/net/ethernet/emulex/benet/be_main.c | 10 +++-------
|
|
2 files changed, 3 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/emulex/benet/be_hw.h b/drivers/net/ethernet/emulex/benet/be_hw.h
|
|
index f38b58c..0949aa6 100644
|
|
--- a/drivers/net/ethernet/emulex/benet/be_hw.h
|
|
+++ b/drivers/net/ethernet/emulex/benet/be_hw.h
|
|
@@ -58,8 +58,6 @@
|
|
|
|
#define SLI_PORT_CONTROL_IP_MASK 0x08000000
|
|
|
|
-#define PCICFG_CUST_SCRATCHPAD_CSR 0x1EC
|
|
-
|
|
/********* Memory BAR register ************/
|
|
#define PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET 0xfc
|
|
/* Host Interrupt Enable, if set interrupts are enabled although "PCI Interrupt
|
|
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
|
|
index 4e1305f..24bd2cb 100644
|
|
--- a/drivers/net/ethernet/emulex/benet/be_main.c
|
|
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
|
|
@@ -1049,6 +1049,8 @@ static int be_find_vfs(struct be_adapter *adapter, int vf_state)
|
|
u16 offset, stride;
|
|
|
|
pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV);
|
|
+ if (!pos)
|
|
+ return 0;
|
|
pci_read_config_word(pdev, pos + PCI_SRIOV_VF_OFFSET, &offset);
|
|
pci_read_config_word(pdev, pos + PCI_SRIOV_VF_STRIDE, &stride);
|
|
|
|
@@ -2522,7 +2524,6 @@ static int be_clear(struct be_adapter *adapter)
|
|
be_cmd_fw_clean(adapter);
|
|
|
|
be_msix_disable(adapter);
|
|
- pci_write_config_dword(adapter->pdev, PCICFG_CUST_SCRATCHPAD_CSR, 0);
|
|
return 0;
|
|
}
|
|
|
|
@@ -2764,8 +2765,6 @@ static int be_setup(struct be_adapter *adapter)
|
|
|
|
schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000));
|
|
adapter->flags |= BE_FLAGS_WORKER_SCHEDULED;
|
|
-
|
|
- pci_write_config_dword(adapter->pdev, PCICFG_CUST_SCRATCHPAD_CSR, 1);
|
|
return 0;
|
|
err:
|
|
be_clear(adapter);
|
|
@@ -3624,10 +3623,7 @@ reschedule:
|
|
|
|
static bool be_reset_required(struct be_adapter *adapter)
|
|
{
|
|
- u32 reg;
|
|
-
|
|
- pci_read_config_dword(adapter->pdev, PCICFG_CUST_SCRATCHPAD_CSR, ®);
|
|
- return reg;
|
|
+ return be_find_vfs(adapter, ENABLED) > 0 ? false : true;
|
|
}
|
|
|
|
static int __devinit be_probe(struct pci_dev *pdev,
|
|
--
|
|
1.7.10.4
|
|
|