Commit d79c0a20 authored by Sathya Perla's avatar Sathya Perla Committed by David S. Miller

be2net: do not use SCRATCHPAD register

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: default avatarSathya Perla <sathya.perla@emulex.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 421737bd
...@@ -58,8 +58,6 @@ ...@@ -58,8 +58,6 @@
#define SLI_PORT_CONTROL_IP_MASK 0x08000000 #define SLI_PORT_CONTROL_IP_MASK 0x08000000
#define PCICFG_CUST_SCRATCHPAD_CSR 0x1EC
/********* Memory BAR register ************/ /********* Memory BAR register ************/
#define PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET 0xfc #define PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET 0xfc
/* Host Interrupt Enable, if set interrupts are enabled although "PCI Interrupt /* Host Interrupt Enable, if set interrupts are enabled although "PCI Interrupt
......
...@@ -1049,6 +1049,8 @@ static int be_find_vfs(struct be_adapter *adapter, int vf_state) ...@@ -1049,6 +1049,8 @@ static int be_find_vfs(struct be_adapter *adapter, int vf_state)
u16 offset, stride; u16 offset, stride;
pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV); 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_OFFSET, &offset);
pci_read_config_word(pdev, pos + PCI_SRIOV_VF_STRIDE, &stride); pci_read_config_word(pdev, pos + PCI_SRIOV_VF_STRIDE, &stride);
...@@ -2542,7 +2544,6 @@ static int be_clear(struct be_adapter *adapter) ...@@ -2542,7 +2544,6 @@ static int be_clear(struct be_adapter *adapter)
be_cmd_fw_clean(adapter); be_cmd_fw_clean(adapter);
be_msix_disable(adapter); be_msix_disable(adapter);
pci_write_config_dword(adapter->pdev, PCICFG_CUST_SCRATCHPAD_CSR, 0);
return 0; return 0;
} }
...@@ -2785,8 +2786,6 @@ static int be_setup(struct be_adapter *adapter) ...@@ -2785,8 +2786,6 @@ static int be_setup(struct be_adapter *adapter)
schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000)); schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000));
adapter->flags |= BE_FLAGS_WORKER_SCHEDULED; adapter->flags |= BE_FLAGS_WORKER_SCHEDULED;
pci_write_config_dword(adapter->pdev, PCICFG_CUST_SCRATCHPAD_CSR, 1);
return 0; return 0;
err: err:
be_clear(adapter); be_clear(adapter);
...@@ -3724,10 +3723,7 @@ static void be_worker(struct work_struct *work) ...@@ -3724,10 +3723,7 @@ static void be_worker(struct work_struct *work)
static bool be_reset_required(struct be_adapter *adapter) static bool be_reset_required(struct be_adapter *adapter)
{ {
u32 reg; return be_find_vfs(adapter, ENABLED) > 0 ? false : true;
pci_read_config_dword(adapter->pdev, PCICFG_CUST_SCRATCHPAD_CSR, &reg);
return reg;
} }
static int __devinit be_probe(struct pci_dev *pdev, static int __devinit be_probe(struct pci_dev *pdev,
......
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