aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
diff options
context:
space:
mode:
authorYuval Mintz <yuvalmin@broadcom.com>2012-03-12 04:53:11 -0400
committerDavid S. Miller <davem@davemloft.net>2012-03-12 20:10:49 -0400
commit9ce392d4fa43c3abb9ab02a29e225084ed84451e (patch)
treea92594c502c403d5573f8e1081c913b30628038d /drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
parent259afa1f725dc7ec1626835b9ac54827a46cdf80 (diff)
bnx2x: mark functions as loaded on shared memory
This change enables the FW to make more accurate decisions regarding the active functions. Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c')
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index f82dfff58243..c11e50d328c4 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -2007,6 +2007,15 @@ int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
2007 bnx2x_cnic_notify(bp, CNIC_CTL_START_CMD); 2007 bnx2x_cnic_notify(bp, CNIC_CTL_START_CMD);
2008#endif 2008#endif
2009 2009
2010 /* mark driver is loaded in shmem2 */
2011 if (SHMEM2_HAS(bp, drv_capabilities_flag)) {
2012 u32 val;
2013 val = SHMEM2_RD(bp, drv_capabilities_flag[BP_FW_MB_IDX(bp)]);
2014 SHMEM2_WR(bp, drv_capabilities_flag[BP_FW_MB_IDX(bp)],
2015 val | DRV_FLAGS_CAPABILITIES_LOADED_SUPPORTED |
2016 DRV_FLAGS_CAPABILITIES_LOADED_L2);
2017 }
2018
2010 /* Wait for all pending SP commands to complete */ 2019 /* Wait for all pending SP commands to complete */
2011 if (!bnx2x_wait_sp_comp(bp, ~0x0UL)) { 2020 if (!bnx2x_wait_sp_comp(bp, ~0x0UL)) {
2012 BNX2X_ERR("Timeout waiting for SP elements to complete\n"); 2021 BNX2X_ERR("Timeout waiting for SP elements to complete\n");
@@ -2060,6 +2069,14 @@ int bnx2x_nic_unload(struct bnx2x *bp, int unload_mode)
2060 int i; 2069 int i;
2061 bool global = false; 2070 bool global = false;
2062 2071
2072 /* mark driver is unloaded in shmem2 */
2073 if (SHMEM2_HAS(bp, drv_capabilities_flag)) {
2074 u32 val;
2075 val = SHMEM2_RD(bp, drv_capabilities_flag[BP_FW_MB_IDX(bp)]);
2076 SHMEM2_WR(bp, drv_capabilities_flag[BP_FW_MB_IDX(bp)],
2077 val & ~DRV_FLAGS_CAPABILITIES_LOADED_L2);
2078 }
2079
2063 if ((bp->state == BNX2X_STATE_CLOSED) || 2080 if ((bp->state == BNX2X_STATE_CLOSED) ||
2064 (bp->state == BNX2X_STATE_ERROR)) { 2081 (bp->state == BNX2X_STATE_ERROR)) {
2065 /* We can get here if the driver has been unloaded 2082 /* We can get here if the driver has been unloaded