Lines Matching refs:pUM

44 static void BnxeVerifySavedDmaList(um_device_t * pUM)  in BnxeVerifySavedDmaList()  argument
49 BNXE_LOCK_ENTER_MEM(pUM); in BnxeVerifySavedDmaList()
51 pTmp = (BnxeMemDma *)d_list_peek_head(&pUM->memDmaListSaved); in BnxeVerifySavedDmaList()
54 BnxeLogWarn(pUM, "testing dma block %p / %p %d", in BnxeVerifySavedDmaList()
60 BnxeDbgBreakMsg(pUM, "old dma block wacked %p (byte %i)", in BnxeVerifySavedDmaList()
68 BNXE_LOCK_EXIT_MEM(pUM); in BnxeVerifySavedDmaList()
74 static boolean_t BnxeRssEnable(um_device_t * pUM) in BnxeRssEnable() argument
83 if (!pUM->devParams.numRings) in BnxeRssEnable()
91 indirectionTable[i] = (i % pUM->devParams.numRings); in BnxeRssEnable()
102 rc = lm_enable_rss((lm_device_t *)pUM, in BnxeRssEnable()
113 if ((rc = lm_wait_config_rss_done(&pUM->lm_dev)) != LM_STATUS_SUCCESS) in BnxeRssEnable()
115 BnxeLogWarn(pUM, "Failed to enable RSS from pending operation (%d)", rc); in BnxeRssEnable()
116 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_NO_RESPONSE); in BnxeRssEnable()
121 BnxeLogWarn(pUM, "Failed to enable RSS (%d)", rc); in BnxeRssEnable()
122 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeRssEnable()
129 static lm_status_t BnxeRssDisable(um_device_t * pUM) in BnxeRssDisable() argument
133 rc = lm_disable_rss((lm_device_t *)pUM, FALSE, NULL); in BnxeRssDisable()
137 if ((rc = lm_wait_config_rss_done(&pUM->lm_dev)) != LM_STATUS_SUCCESS) in BnxeRssDisable()
139 BnxeLogWarn(pUM, "Failed to disable RSS from pending operation (%d)", rc); in BnxeRssDisable()
140 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_NO_RESPONSE); in BnxeRssDisable()
145 BnxeLogWarn(pUM, "Failed to disable RSS (%d)", rc); in BnxeRssDisable()
146 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeRssDisable()
153 lm_medium_t BnxeHwReqPhyMediumSettings(um_device_t * pUM) in BnxeHwReqPhyMediumSettings() argument
155 lm_device_t * pLM = &pUM->lm_dev; in BnxeHwReqPhyMediumSettings()
160 memset(pUM->hwinit.supported, 0, sizeof(pUM->hwinit.supported)); in BnxeHwReqPhyMediumSettings()
166 pUM->hwinit.supported[0] = in BnxeHwReqPhyMediumSettings()
168 pUM->hwinit.phy_cfg_size = 1; in BnxeHwReqPhyMediumSettings()
173 pUM->hwinit.supported[0] = in BnxeHwReqPhyMediumSettings()
175 pUM->hwinit.phy_cfg_size = 1; in BnxeHwReqPhyMediumSettings()
183 pUM->hwinit.supported[1] = in BnxeHwReqPhyMediumSettings()
185 pUM->hwinit.supported[0] = in BnxeHwReqPhyMediumSettings()
190 pUM->hwinit.supported[0] = in BnxeHwReqPhyMediumSettings()
192 pUM->hwinit.supported[1] = in BnxeHwReqPhyMediumSettings()
196 pUM->hwinit.phy_cfg_size = 2; in BnxeHwReqPhyMediumSettings()
201 BnxeLogWarn(pUM, "Unexpected number of phys, check nvram config! (%d)", in BnxeHwReqPhyMediumSettings()
206 for (i = 0; i < pUM->hwinit.phy_cfg_size; i++) in BnxeHwReqPhyMediumSettings()
214 pUM->hwinit.supported[i] &= ~ELINK_SUPPORTED_10baseT_Half; in BnxeHwReqPhyMediumSettings()
225 pUM->hwinit.supported[i] &= ~ELINK_SUPPORTED_10baseT_Full; in BnxeHwReqPhyMediumSettings()
236 pUM->hwinit.supported[i] &= ~ELINK_SUPPORTED_100baseT_Half; in BnxeHwReqPhyMediumSettings()
247 pUM->hwinit.supported[i] &= ~ELINK_SUPPORTED_100baseT_Full; in BnxeHwReqPhyMediumSettings()
258 pUM->hwinit.supported[i] &= ~ELINK_SUPPORTED_1000baseT_Full; in BnxeHwReqPhyMediumSettings()
269 pUM->hwinit.supported[i] &= ~ELINK_SUPPORTED_2500baseX_Full; in BnxeHwReqPhyMediumSettings()
280 pUM->hwinit.supported[i] &= ~ELINK_SUPPORTED_10000baseT_Full; in BnxeHwReqPhyMediumSettings()
291 pUM->hwinit.supported[i] &= ~(ELINK_SUPPORTED_20000baseMLD2_Full | in BnxeHwReqPhyMediumSettings()
300 BnxeLogInfo(pUM, buf); in BnxeHwReqPhyMediumSettings()
404 BnxeLogInfo(pUM, buf); in BnxeHwReqPhyMediumSettings()
407 for (i = 0; i < pUM->hwinit.phy_cfg_size; i++) in BnxeHwReqPhyMediumSettings()
412 if (pUM->curcfg.lnkcfg.param_10hdx) in BnxeHwReqPhyMediumSettings()
427 BnxeLogWarn(pUM, "Phy 10hdx requested but not supported"); in BnxeHwReqPhyMediumSettings()
431 if (pUM->curcfg.lnkcfg.param_10fdx) in BnxeHwReqPhyMediumSettings()
446 BnxeLogWarn(pUM, "Phy 10fdx requested but not supported"); in BnxeHwReqPhyMediumSettings()
450 if (pUM->curcfg.lnkcfg.param_100hdx) in BnxeHwReqPhyMediumSettings()
465 BnxeLogWarn(pUM, "Phy 100hdx requested but not supported"); in BnxeHwReqPhyMediumSettings()
469 if (pUM->curcfg.lnkcfg.param_100fdx) in BnxeHwReqPhyMediumSettings()
484 BnxeLogWarn(pUM, "Phy 100fdx requested but not supported"); in BnxeHwReqPhyMediumSettings()
488 if (pUM->curcfg.lnkcfg.param_1000fdx) in BnxeHwReqPhyMediumSettings()
503 BnxeLogWarn(pUM, "Phy 1000fdx requested but not supported"); in BnxeHwReqPhyMediumSettings()
507 if (pUM->curcfg.lnkcfg.param_10000fdx) in BnxeHwReqPhyMediumSettings()
522 BnxeLogWarn(pUM, "Phy 10000fdx requested but not supported"); in BnxeHwReqPhyMediumSettings()
526 if (pUM->curcfg.lnkcfg.param_20000fdx) in BnxeHwReqPhyMediumSettings()
541 BnxeLogWarn(pUM, "Phy 20000fdx requested but not supported"); in BnxeHwReqPhyMediumSettings()
545 if (pUM->curcfg.lnkcfg.link_autoneg) in BnxeHwReqPhyMediumSettings()
553 …BnxeLogWarn(pUM, "Phy autoneg requested along with other speeds, ignoring others and forcing auton… in BnxeHwReqPhyMediumSettings()
562 BnxeLogWarn(pUM, "Phy autoneg requested but not supported"); in BnxeHwReqPhyMediumSettings()
566 BnxeLogInfo(pUM, buf); in BnxeHwReqPhyMediumSettings()
575 lm_flow_control_t BnxeHwReqPhyFlowSettings(um_device_t * pUM) in BnxeHwReqPhyFlowSettings() argument
577 lm_device_t * pLM = &pUM->lm_dev; in BnxeHwReqPhyFlowSettings()
584 for (i = 0; i < pUM->hwinit.phy_cfg_size; i++) in BnxeHwReqPhyFlowSettings()
589 if (pUM->curcfg.lnkcfg.param_txpause) in BnxeHwReqPhyFlowSettings()
601 BnxeLogWarn(pUM, "Phy TX flow requested but not supported"); in BnxeHwReqPhyFlowSettings()
605 if (pUM->curcfg.lnkcfg.param_rxpause) in BnxeHwReqPhyFlowSettings()
617 BnxeLogWarn(pUM, "Phy RX flow requested but not supported"); in BnxeHwReqPhyFlowSettings()
621 if (pUM->curcfg.flow_autoneg) in BnxeHwReqPhyFlowSettings()
642 BnxeLogWarn(pUM, "Phy Auto flow requested but not supported"); in BnxeHwReqPhyFlowSettings()
646 BnxeLogInfo(pUM, buf); in BnxeHwReqPhyFlowSettings()
653 void BnxeUpdatePhy(um_device_t * pUM) in BnxeUpdatePhy() argument
655 lm_device_t * pLM = &pUM->lm_dev; in BnxeUpdatePhy()
658 BNXE_LOCK_ENTER_PHY(pUM); in BnxeUpdatePhy()
660 pLM->params.req_medium = BnxeHwReqPhyMediumSettings(pUM); in BnxeUpdatePhy()
661 pLM->params.flow_ctrl_cap = BnxeHwReqPhyFlowSettings(pUM); in BnxeUpdatePhy()
663 if (IS_PMF(&pUM->lm_dev)) in BnxeUpdatePhy()
675 if (pUM->fmCapabilities && in BnxeUpdatePhy()
678 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_DEGRADED); in BnxeUpdatePhy()
683 pUM->phyInitialized = B_TRUE; in BnxeUpdatePhy()
687 BnxeLogWarn(pUM, "Failed to initialize the phy (%d)", rc); in BnxeUpdatePhy()
688 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeUpdatePhy()
699 if (IS_MF_AFEX_MODE(&pUM->lm_dev)) in BnxeUpdatePhy()
701 lm_niv_set_loopback_mode(&pUM->lm_dev, FALSE); in BnxeUpdatePhy()
705 BNXE_LOCK_EXIT_PHY(pUM); in BnxeUpdatePhy()
715 int BnxeMacAddress(um_device_t * pUM, in BnxeMacAddress() argument
727 BnxeLogDbg(pUM, "%s MAC address: %02x:%02x:%02x:%02x:%02x:%02x", in BnxeMacAddress()
732 rc = lm_set_mac_addr(&pUM->lm_dev, in BnxeMacAddress()
735 LM_CLI_CID(&pUM->lm_dev, cliIdx), in BnxeMacAddress()
740 if ((rc = lm_wait_set_mac_done(&pUM->lm_dev, in BnxeMacAddress()
741 LM_CLI_CID(&pUM->lm_dev, cliIdx))) != in BnxeMacAddress()
744 BnxeLogWarn(pUM, "Failed to %s MAC Address from pending operation (%d)", in BnxeMacAddress()
746 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_NO_RESPONSE); in BnxeMacAddress()
752 BnxeLogWarn(pUM, "Failed to %s MAC Address (%d)", in BnxeMacAddress()
754 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeMacAddress()
770 void BnxeMulticastE1(um_device_t * pUM, in BnxeMulticastE1() argument
773 if ((cliIdx != LM_CLI_IDX_NDIS) || !CHIP_IS_E1(&pUM->lm_dev)) in BnxeMulticastE1()
780 if (d_list_entry_cnt(&pUM->mcast_l2) > 64) in BnxeMulticastE1()
782 if (!(pUM->devParams.rx_filter_mask[LM_CLI_IDX_NDIS] & in BnxeMulticastE1()
785 … BnxeLogInfo(pUM, "Turning ON the ALL_MCAST rx mask, number of multicast addressess is >64"); in BnxeMulticastE1()
787 pUM->devParams.rx_filter_mask[LM_CLI_IDX_NDIS] |= in BnxeMulticastE1()
790 BnxeRxMask(pUM, LM_CLI_IDX_NDIS, in BnxeMulticastE1()
791 pUM->devParams.rx_filter_mask[LM_CLI_IDX_NDIS]); in BnxeMulticastE1()
796 if (pUM->devParams.rx_filter_mask[LM_CLI_IDX_NDIS] & in BnxeMulticastE1()
799 … BnxeLogInfo(pUM, "Turning OFF the ALL_MCAST rx mask, number of multicast addressess is <=64"); in BnxeMulticastE1()
801 pUM->devParams.rx_filter_mask[LM_CLI_IDX_NDIS] &= in BnxeMulticastE1()
804 BnxeRxMask(pUM, LM_CLI_IDX_NDIS, in BnxeMulticastE1()
805 pUM->devParams.rx_filter_mask[LM_CLI_IDX_NDIS]); in BnxeMulticastE1()
810 int BnxeMulticast(um_device_t * pUM, in BnxeMulticast() argument
827 BnxeLogInfo(pUM, "Removing all multicast"); in BnxeMulticast()
831 BnxeLogInfo(pUM, "%s multicast: %02x:%02x:%02x:%02x:%02x:%02x", in BnxeMulticast()
837 mcastList = (cliIdx == LM_CLI_IDX_NDIS) ? &pUM->mcast_l2 : in BnxeMulticast()
838 &pUM->mcast_fcoe; in BnxeMulticast()
843 BnxeLogWarn(pUM, "ERROR: Multicast address not specified"); in BnxeMulticast()
862 rc = lm_set_mc_list(&pUM->lm_dev, mcastList, NULL, cliIdx); in BnxeMulticast()
866 if ((rc = lm_wait_set_mc_done(&pUM->lm_dev, cliIdx)) != in BnxeMulticast()
869 … BnxeLogWarn(pUM, "Failed to clear Multicast Address table from pending operation (%d)", rc); in BnxeMulticast()
870 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_NO_RESPONSE); in BnxeMulticast()
876 BnxeLogWarn(pUM, "Failed to clear Multicast Address table (%d)", rc); in BnxeMulticast()
877 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeMulticast()
881 BnxeMulticastE1(pUM, cliIdx); in BnxeMulticast()
907 BnxeLogWarn(pUM, "Failed to alloc Multicast Address node"); in BnxeMulticast()
937 rc = lm_set_mc_list(&pUM->lm_dev, mcastList, NULL, cliIdx); in BnxeMulticast()
941 if ((rc = lm_wait_set_mc_done(&pUM->lm_dev, cliIdx)) != in BnxeMulticast()
944 … BnxeLogWarn(pUM, "Failed to set Multicast Address table from pending operation (%d)", rc); in BnxeMulticast()
945 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_NO_RESPONSE); in BnxeMulticast()
951 BnxeLogWarn(pUM, "Failed to set Multicast Address table (%d)", rc); in BnxeMulticast()
952 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeMulticast()
956 BnxeMulticastE1(pUM, cliIdx); in BnxeMulticast()
966 int BnxeRxMask(um_device_t * pUM, in BnxeRxMask() argument
977 pUM->devParams.rx_filter_mask[cliIdx] = mask; in BnxeRxMask()
979 rc = lm_set_rx_mask(&pUM->lm_dev, in BnxeRxMask()
980 LM_CLI_CID(&pUM->lm_dev, cliIdx), mask, NULL); in BnxeRxMask()
985 lm_wait_set_rx_mask_done(&pUM->lm_dev, in BnxeRxMask()
986 LM_CLI_CID(&pUM->lm_dev, cliIdx))) != in BnxeRxMask()
989 BnxeLogWarn(pUM, "Failed to set Rx mask from pending operation (%d)", rc); in BnxeRxMask()
990 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_NO_RESPONSE); in BnxeRxMask()
995 if (pUM->fmCapabilities && in BnxeRxMask()
996 BnxeCheckAccHandle(pUM->lm_dev.vars.reg_handle[BAR_0]) != DDI_FM_OK) in BnxeRxMask()
998 BnxeLogWarn(pUM, "DMA fault when setting Rx mask"); in BnxeRxMask()
999 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_LOST); in BnxeRxMask()
1005 BnxeLogWarn(pUM, "Failed to set Rx mask (%d)", rc); in BnxeRxMask()
1006 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeRxMask()
1014 boolean_t BnxeEstablishHwConn(um_device_t * pUM, in BnxeEstablishHwConn() argument
1017 lm_device_t * pLM = &pUM->lm_dev; in BnxeEstablishHwConn()
1022 sb_id = lm_sb_id_from_chain(&pUM->lm_dev, cid); in BnxeEstablishHwConn()
1025 cliParams.mtu = pUM->devParams.mtu[LM_CHAIN_IDX_CLI(pLM, cid)]; in BnxeEstablishHwConn()
1028 cliParams.num_rx_desc = pUM->devParams.numRxDesc[LM_CHAIN_IDX_CLI(pLM, cid)]; in BnxeEstablishHwConn()
1029 cliParams.num_tx_desc = pUM->devParams.numTxDesc[LM_CHAIN_IDX_CLI(pLM, cid)]; in BnxeEstablishHwConn()
1034 BnxeLogDbg(pUM, "Setting up client for cid %d", cid); in BnxeEstablishHwConn()
1037 BnxeLogWarn(pUM, "Failed to setup client for cid %d", cid); in BnxeEstablishHwConn()
1043 BnxeLogDbg(pUM, "Initializing client for cid %d", cid); in BnxeEstablishHwConn()
1046 if (pUM->fmCapabilities && in BnxeEstablishHwConn()
1047 BnxeCheckAccHandle(pUM->pPciCfg) != DDI_FM_OK) in BnxeEstablishHwConn()
1049 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_LOST); in BnxeEstablishHwConn()
1053 if (pUM->fmCapabilities && in BnxeEstablishHwConn()
1056 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_LOST); in BnxeEstablishHwConn()
1062 BnxeLogWarn(pUM, "Failed to initialize client for cid %d", cid); in BnxeEstablishHwConn()
1063 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeEstablishHwConn()
1069 BnxeLogDbg(pUM, "Establishing client for cid %d", cid); in BnxeEstablishHwConn()
1073 if (pUM->fmCapabilities && in BnxeEstablishHwConn()
1074 BnxeCheckAccHandle(pUM->pPciCfg) != DDI_FM_OK) in BnxeEstablishHwConn()
1076 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_LOST); in BnxeEstablishHwConn()
1080 if (pUM->fmCapabilities && in BnxeEstablishHwConn()
1083 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_LOST); in BnxeEstablishHwConn()
1089 BnxeLogWarn(pUM, "Failed to establish client connection"); in BnxeEstablishHwConn()
1090 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeEstablishHwConn()
1098 int BnxeHwStartFCOE(um_device_t * pUM) in BnxeHwStartFCOE() argument
1100 lm_device_t * pLM = &pUM->lm_dev; in BnxeHwStartFCOE()
1103 if (!BNXE_FCOE(pUM)) in BnxeHwStartFCOE()
1105 BnxeDbgBreakMsg(pUM, "Inside BnxeHwStartFCOE and FCoE not supported!"); in BnxeHwStartFCOE()
1109 BNXE_LOCK_ENTER_HWINIT(pUM); in BnxeHwStartFCOE()
1111 BnxeLogInfo(pUM, "BnxeHwStartFCOE: Starting FCoE (clients %s)", in BnxeHwStartFCOE()
1112 BnxeClientsHw(pUM)); in BnxeHwStartFCOE()
1114 if (BnxeHwStartCore(pUM)) in BnxeHwStartFCOE()
1119 if (!pUM->hwInitDone) in BnxeHwStartFCOE()
1121 BnxeLogWarn(pUM, "BnxeHwStartFCOE: Failed, hardware not initialized (clients %s)", in BnxeHwStartFCOE()
1122 BnxeClientsHw(pUM)); in BnxeHwStartFCOE()
1128 BnxeLogDbg(pUM, "Allocating FCoE Resources"); in BnxeHwStartFCOE()
1130 if (lm_fc_alloc_resc(&pUM->lm_dev) != LM_STATUS_SUCCESS) in BnxeHwStartFCOE()
1132 BnxeLogWarn(pUM, "Failed to allocate FCoE resources"); in BnxeHwStartFCOE()
1138 BnxeLogDbg(pUM, "Opening FCoE Ethernet Connection"); in BnxeHwStartFCOE()
1140 pUM->lm_dev.ofld_info.state_blks[STATE_BLOCK_FCOE] = in BnxeHwStartFCOE()
1141 &pUM->lm_dev.fcoe_info.run_time.state_blk; in BnxeHwStartFCOE()
1143 if (!BnxeEstablishHwConn(pUM, FCOE_CID(pLM))) in BnxeHwStartFCOE()
1150 BnxeLogDbg(pUM, "Initializing FCoE Tx Pkts"); in BnxeHwStartFCOE()
1152 if (BnxeTxPktsInit(pUM, LM_CLI_IDX_FCOE)) in BnxeHwStartFCOE()
1154 BnxeLogWarn(pUM, "Failed to allocate FCoE Tx resources"); in BnxeHwStartFCOE()
1160 BnxeLogDbg(pUM, "Initializing FCoE Rx Pkts"); in BnxeHwStartFCOE()
1162 if (BnxeRxPktsInit(pUM, LM_CLI_IDX_FCOE)) in BnxeHwStartFCOE()
1164 BnxeLogWarn(pUM, "Failed to allocate FCoE Rx resources"); in BnxeHwStartFCOE()
1168 if (BnxeRxPktsInitPostBuffers(pUM, LM_CLI_IDX_FCOE)) in BnxeHwStartFCOE()
1170 BnxeLogWarn(pUM, "Failed to post FCoE Rx buffers"); in BnxeHwStartFCOE()
1176 BnxeLogDbg(pUM, "Setting FCoE MAC Address"); in BnxeHwStartFCOE()
1178 if (BnxeMacAddress(pUM, LM_CLI_IDX_FCOE, B_TRUE, in BnxeHwStartFCOE()
1186 BnxeLogDbg(pUM, "Setting FCoE Multicast Addresses"); in BnxeHwStartFCOE()
1191 if ((BnxeMulticast(pUM, LM_CLI_IDX_FCOE, B_TRUE, ALL_FCOE_MACS, B_FALSE) < 0) || in BnxeHwStartFCOE()
1192 (BnxeMulticast(pUM, LM_CLI_IDX_FCOE, B_TRUE, ALL_ENODE_MACS, B_TRUE) < 0)) in BnxeHwStartFCOE()
1199 BnxeLogDbg(pUM, "Turning on FCoE Rx Mask"); in BnxeHwStartFCOE()
1201 if (BnxeRxMask(pUM, LM_CLI_IDX_FCOE, ( in BnxeHwStartFCOE()
1214 CLIENT_HW_SET(pUM, LM_CLI_IDX_FCOE); in BnxeHwStartFCOE()
1216 BnxeLogInfo(pUM, "BnxeHwStartFCOE: FCoE started (clients %s)", in BnxeHwStartFCOE()
1217 BnxeClientsHw(pUM)); in BnxeHwStartFCOE()
1219 BNXE_LOCK_EXIT_HWINIT(pUM); in BnxeHwStartFCOE()
1224 BNXE_LOCK_EXIT_HWINIT(pUM); in BnxeHwStartFCOE()
1229 int BnxeHwStartL2(um_device_t * pUM) in BnxeHwStartL2() argument
1231 lm_device_t * pLM = &pUM->lm_dev; in BnxeHwStartL2()
1234 BNXE_LOCK_ENTER_HWINIT(pUM); in BnxeHwStartL2()
1236 BnxeLogInfo(pUM, "BnxeHwStartL2: Starting L2 (clients %s)", in BnxeHwStartL2()
1237 BnxeClientsHw(pUM)); in BnxeHwStartL2()
1239 if (BnxeHwStartCore(pUM)) in BnxeHwStartL2()
1244 if (!pUM->hwInitDone) in BnxeHwStartL2()
1246 BnxeLogWarn(pUM, "BnxeHwStartL2: Failed, hardware not initialized (clients %s)", in BnxeHwStartL2()
1247 BnxeClientsHw(pUM)); in BnxeHwStartL2()
1253 BnxeLogDbg(pUM, "Opening L2 Ethernet Connections (%d)", in BnxeHwStartL2()
1258 if (!BnxeEstablishHwConn(pUM, idx)) in BnxeHwStartL2()
1266 BnxeLogDbg(pUM, "Initializing Tx Pkts"); in BnxeHwStartL2()
1268 if (BnxeTxPktsInit(pUM, LM_CLI_IDX_NDIS)) in BnxeHwStartL2()
1270 BnxeLogWarn(pUM, "Failed to allocate tx resources"); in BnxeHwStartL2()
1276 BnxeLogDbg(pUM, "Initializing Rx Pkts"); in BnxeHwStartL2()
1278 if (BnxeRxPktsInit(pUM, LM_CLI_IDX_NDIS)) in BnxeHwStartL2()
1280 BnxeLogWarn(pUM, "Failed to allocate L2 Rx resources"); in BnxeHwStartL2()
1284 if (BnxeRxPktsInitPostBuffers(pUM, LM_CLI_IDX_NDIS)) in BnxeHwStartL2()
1286 BnxeLogWarn(pUM, "Failed to post L2 Rx buffers"); in BnxeHwStartL2()
1292 BnxeLogDbg(pUM, "Enabling RSS"); in BnxeHwStartL2()
1294 if (!BnxeRssEnable(pUM)) in BnxeHwStartL2()
1301 BnxeLogDbg(pUM, "Setting L2 MAC Address"); in BnxeHwStartL2()
1309 if (IS_ETH_ADDRESS_EQUAL(pUM->gldMac, zero_mac_addr)) in BnxeHwStartL2()
1311 COPY_ETH_ADDRESS(pUM->lm_dev.hw_info.mac_addr, in BnxeHwStartL2()
1312 pUM->lm_dev.params.mac_addr); in BnxeHwStartL2()
1316 COPY_ETH_ADDRESS(pUM->gldMac, in BnxeHwStartL2()
1317 pUM->lm_dev.params.mac_addr); in BnxeHwStartL2()
1321 if (BnxeMacAddress(pUM, LM_CLI_IDX_NDIS, B_TRUE, in BnxeHwStartL2()
1322 pUM->lm_dev.params.mac_addr) < 0) in BnxeHwStartL2()
1329 BnxeLogDbg(pUM, "Turning on L2 Rx Mask"); in BnxeHwStartL2()
1331 if (BnxeRxMask(pUM, LM_CLI_IDX_NDIS, ( in BnxeHwStartL2()
1344 CLIENT_HW_SET(pUM, LM_CLI_IDX_NDIS); in BnxeHwStartL2()
1345 lm_mcp_indicate_client_bind(&pUM->lm_dev, LM_CLI_IDX_NDIS); in BnxeHwStartL2()
1347 BNXE_LOCK_EXIT_HWINIT(pUM); in BnxeHwStartL2()
1355 BnxeGldLink(pUM, (pUM->devParams.lastIndLink == LM_STATUS_LINK_ACTIVE) ? in BnxeHwStartL2()
1358 BnxeLogInfo(pUM, "BnxeHwStartL2: L2 started (clients %s)", in BnxeHwStartL2()
1359 BnxeClientsHw(pUM)); in BnxeHwStartL2()
1367 BNXE_LOCK_EXIT_HWINIT(pUM); in BnxeHwStartL2()
1373 int BnxeHwStartCore(um_device_t * pUM) in BnxeHwStartCore() argument
1375 lm_device_t * pLM = &pUM->lm_dev; in BnxeHwStartCore()
1378 if (pUM->hwInitDone) in BnxeHwStartCore()
1381 BnxeLogInfo(pUM, "BnxeHwStartCore: Hardware already initialized (clients %s)", in BnxeHwStartCore()
1382 BnxeClientsHw(pUM)); in BnxeHwStartCore()
1386 BnxeLogInfo(pUM, "BnxeHwStartCore: Starting hardware (clients %s)", in BnxeHwStartCore()
1387 BnxeClientsHw(pUM)); in BnxeHwStartCore()
1394 BnxeCfgReset(pUM); in BnxeHwStartCore()
1396 pUM->phyInitialized = B_FALSE; in BnxeHwStartCore()
1400 BnxeLogDbg(pUM, "Allocating LM Resources"); in BnxeHwStartCore()
1404 BnxeLogWarn(pUM, "Failed to allocate resources"); in BnxeHwStartCore()
1410 BnxeLogDbg(pUM, "Initializing BRCM Chip"); in BnxeHwStartCore()
1414 if (pUM->fmCapabilities && in BnxeHwStartCore()
1415 BnxeCheckAccHandle(pUM->pPciCfg) != DDI_FM_OK) in BnxeHwStartCore()
1417 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_LOST); in BnxeHwStartCore()
1421 if (pUM->fmCapabilities && in BnxeHwStartCore()
1424 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_LOST); in BnxeHwStartCore()
1430 BnxeLogWarn(pUM, "Failed to initialize chip"); in BnxeHwStartCore()
1431 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeHwStartCore()
1437 BnxeLogDbg(pUM, "Enabling Interrupts"); in BnxeHwStartCore()
1439 if (BnxeIntrEnable(pUM)) in BnxeHwStartCore()
1441 BnxeLogWarn(pUM, "Failed to enable interrupts"); in BnxeHwStartCore()
1447 BnxeLogDbg(pUM, "Starting BRCM Chip"); in BnxeHwStartCore()
1451 if (pUM->fmCapabilities && in BnxeHwStartCore()
1454 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_LOST); in BnxeHwStartCore()
1460 BnxeLogWarn(pUM, "Failed to start chip"); in BnxeHwStartCore()
1461 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeHwStartCore()
1465 atomic_swap_32(&pUM->chipStarted, B_TRUE); in BnxeHwStartCore()
1469 BnxeLogDbg(pUM, "Activating pending WorkQ items"); in BnxeHwStartCore()
1471 BnxeWorkQueueStartPending(pUM); in BnxeHwStartCore()
1475 BnxeLogDbg(pUM, "Initializing DCBX"); in BnxeHwStartCore()
1481 BnxeLogDbg(pUM, "Initializing Phy"); in BnxeHwStartCore()
1483 BnxeUpdatePhy(pUM); in BnxeHwStartCore()
1487 BnxeLogDbg(pUM, "Starting Timer"); in BnxeHwStartCore()
1489 BnxeTimerStart(pUM); in BnxeHwStartCore()
1493 atomic_swap_32(&pUM->hwInitDone, B_TRUE); in BnxeHwStartCore()
1495 BnxeLogInfo(pUM, "BnxeHwStartCore: Hardware started (clients %s)", in BnxeHwStartCore()
1496 BnxeClientsHw(pUM)); in BnxeHwStartCore()
1506 void BnxeHwStopFCOE(um_device_t * pUM) in BnxeHwStopFCOE() argument
1508 lm_device_t * pLM = &pUM->lm_dev; in BnxeHwStopFCOE()
1511 if (!BNXE_FCOE(pUM)) in BnxeHwStopFCOE()
1513 BnxeDbgBreakMsg(pUM, "Inside BnxeHwStopFCOE and FCoE not supported!"); in BnxeHwStopFCOE()
1517 BNXE_LOCK_ENTER_HWINIT(pUM); in BnxeHwStopFCOE()
1519 BnxeLogInfo(pUM, "BnxeHwStopFCOE: Stopping FCoE (clients %s)", in BnxeHwStopFCOE()
1520 BnxeClientsHw(pUM)); in BnxeHwStopFCOE()
1522 CLIENT_HW_RESET(pUM, LM_CLI_IDX_FCOE); in BnxeHwStopFCOE()
1526 BnxeLogDbg(pUM, "Turning off FCoE RX Mask"); in BnxeHwStopFCOE()
1528 BnxeRxMask(pUM, LM_CLI_IDX_FCOE, LM_RX_MASK_ACCEPT_NONE); in BnxeHwStopFCOE()
1532 BnxeLogDbg(pUM, "Clearing the FCoE Multicast Table"); in BnxeHwStopFCOE()
1534 BnxeMulticast(pUM, LM_CLI_IDX_FCOE, B_FALSE, NULL, B_TRUE); in BnxeHwStopFCOE()
1538 BnxeLogDbg(pUM, "Closing FCoE Connection"); in BnxeHwStopFCOE()
1543 BnxeLogWarn(pUM, "Failed to close FCoE conn %d (%d)", in BnxeHwStopFCOE()
1545 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeHwStopFCOE()
1550 BnxeLogDbg(pUM, "Aborting FCoE TX Chains"); in BnxeHwStopFCOE()
1552 BnxeTxPktsAbort(pUM, LM_CLI_IDX_FCOE); in BnxeHwStopFCOE()
1556 BnxeLogDbg(pUM, "Aborting FCoE RX Chains"); in BnxeHwStopFCOE()
1558 BnxeRxPktsAbort(pUM, LM_CLI_IDX_FCOE); in BnxeHwStopFCOE()
1562 BnxeLogDbg(pUM, "Cleaning up FCoE Tx Pkts"); in BnxeHwStopFCOE()
1564 BnxeTxPktsFini(pUM, LM_CLI_IDX_FCOE); in BnxeHwStopFCOE()
1568 BnxeLogDbg(pUM, "Cleaning up FCoE Rx Pkts"); in BnxeHwStopFCOE()
1570 BnxeRxPktsFini(pUM, LM_CLI_IDX_FCOE); in BnxeHwStopFCOE()
1574 BnxeLogDbg(pUM, "Clearing FCoE Resources"); in BnxeHwStopFCOE()
1578 BnxeLogWarn(pUM, "Failed to clear FCoE resources (%d)\n", rc); in BnxeHwStopFCOE()
1585 BnxeHwStopCore(pUM); in BnxeHwStopFCOE()
1589 BnxeLogInfo(pUM, "BnxeHwStopFCOE: FCoE stopped (clients %s)", in BnxeHwStopFCOE()
1590 BnxeClientsHw(pUM)); in BnxeHwStopFCOE()
1592 BNXE_LOCK_EXIT_HWINIT(pUM); in BnxeHwStopFCOE()
1596 void BnxeHwStopL2(um_device_t * pUM) in BnxeHwStopL2() argument
1598 lm_device_t * pLM = &pUM->lm_dev; in BnxeHwStopL2()
1601 BNXE_LOCK_ENTER_HWINIT(pUM); in BnxeHwStopL2()
1603 BnxeLogInfo(pUM, "BnxeHwStopL2: Stopping L2 (clients %s)", in BnxeHwStopL2()
1604 BnxeClientsHw(pUM)); in BnxeHwStopL2()
1606 lm_mcp_indicate_client_unbind(&pUM->lm_dev, LM_CLI_IDX_NDIS); in BnxeHwStopL2()
1607 CLIENT_HW_RESET(pUM, LM_CLI_IDX_NDIS); in BnxeHwStopL2()
1611 BnxeLogDbg(pUM, "Turning off L2 RX Mask"); in BnxeHwStopL2()
1613 BnxeRxMask(pUM, LM_CLI_IDX_NDIS, LM_RX_MASK_ACCEPT_NONE); in BnxeHwStopL2()
1617 BnxeLogDbg(pUM, "Clearing the L2 MAC Address"); in BnxeHwStopL2()
1625 COPY_ETH_ADDRESS(pUM->lm_dev.params.mac_addr, in BnxeHwStopL2()
1628 COPY_ETH_ADDRESS(pUM->lm_dev.hw_info.mac_addr, in BnxeHwStopL2()
1629 pUM->lm_dev.params.mac_addr); in BnxeHwStopL2()
1630 memset(pUM->gldMac, 0, ETHERNET_ADDRESS_SIZE); in BnxeHwStopL2()
1633 BnxeMacAddress(pUM, LM_CLI_IDX_NDIS, B_FALSE, mac_to_delete); in BnxeHwStopL2()
1635 BnxeLogInfo(pUM, "Removing all MAC addresses"); in BnxeHwStopL2()
1638 LM_CLI_CID(&pUM->lm_dev, in BnxeHwStopL2()
1642 BnxeLogWarn(pUM, "Failed to delete all MAC addresses (%d)", rc); in BnxeHwStopL2()
1643 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeHwStopL2()
1650 BnxeLogDbg(pUM, "Clearing the L2 Multicast Table"); in BnxeHwStopL2()
1652 BnxeMulticast(pUM, LM_CLI_IDX_NDIS, B_FALSE, NULL, B_TRUE); in BnxeHwStopL2()
1656 BnxeLogDbg(pUM, "Disabling RSS"); in BnxeHwStopL2()
1658 BnxeRssDisable(pUM); in BnxeHwStopL2()
1671 BNXE_LOCK_ENTER_GLDTX(pUM, RW_WRITER); in BnxeHwStopL2()
1675 BnxeLogDbg(pUM, "Closing L2 Ethernet Connections (%d)", in BnxeHwStopL2()
1683 BnxeLogWarn(pUM, "Failed to close Ethernet conn on RSS %d (%d)", in BnxeHwStopL2()
1685 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeHwStopL2()
1691 BnxeLogDbg(pUM, "Aborting L2 Tx Chains"); in BnxeHwStopL2()
1693 BnxeTxPktsAbort(pUM, LM_CLI_IDX_NDIS); in BnxeHwStopL2()
1697 BnxeLogDbg(pUM, "Aborting L2 Rx Chains"); in BnxeHwStopL2()
1699 BnxeRxPktsAbort(pUM, LM_CLI_IDX_NDIS); in BnxeHwStopL2()
1703 BNXE_LOCK_EXIT_GLDTX(pUM); in BnxeHwStopL2()
1707 BnxeLogDbg(pUM, "Cleaning up L2 Tx Pkts"); in BnxeHwStopL2()
1709 BnxeTxPktsFini(pUM, LM_CLI_IDX_NDIS); in BnxeHwStopL2()
1713 BnxeLogDbg(pUM, "Cleaning up L2 Rx Pkts"); in BnxeHwStopL2()
1715 BnxeRxPktsFini(pUM, LM_CLI_IDX_NDIS); in BnxeHwStopL2()
1719 BnxeHwStopCore(pUM); in BnxeHwStopL2()
1723 BnxeLogInfo(pUM, "BnxeHwStopL2: L2 stopped (clients %s)", in BnxeHwStopL2()
1724 BnxeClientsHw(pUM)); in BnxeHwStopL2()
1726 BNXE_LOCK_EXIT_HWINIT(pUM); in BnxeHwStopL2()
1731 void BnxeHwStopCore(um_device_t * pUM) in BnxeHwStopCore() argument
1733 lm_device_t * pLM = &pUM->lm_dev; in BnxeHwStopCore()
1741 if (!pUM->hwInitDone) in BnxeHwStopCore()
1744 BnxeLogWarn(pUM, "BnxeHwStopCore: Hardware already stopped (clients %s)", in BnxeHwStopCore()
1745 BnxeClientsHw(pUM)); in BnxeHwStopCore()
1749 if (BnxeIsClientBound(pUM)) in BnxeHwStopCore()
1751 BnxeLogInfo(pUM, "BnxeHwStopCore: Hardware cannot be stopped (clients %s)", in BnxeHwStopCore()
1752 BnxeClientsHw(pUM)); in BnxeHwStopCore()
1756 BnxeLogInfo(pUM, "BnxeHwStopCore: Stopping hardware (clients %s)", in BnxeHwStopCore()
1757 BnxeClientsHw(pUM)); in BnxeHwStopCore()
1759 mm_indicate_link(pLM, LM_STATUS_LINK_DOWN, pUM->devParams.lastIndMedium); in BnxeHwStopCore()
1763 BnxeLogDbg(pUM, "Stopping Timer"); in BnxeHwStopCore()
1765 BnxeTimerStop(pUM); in BnxeHwStopCore()
1769 BnxeLogDbg(pUM, "Stopping DCBX"); in BnxeHwStopCore()
1775 BnxeLogDbg(pUM, "Stopping BRCM Chip"); in BnxeHwStopCore()
1779 if (pUM->fmCapabilities && in BnxeHwStopCore()
1782 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_DEGRADED); in BnxeHwStopCore()
1787 BnxeFmErrorReport(pUM, DDI_FM_DEVICE_INVAL_STATE); in BnxeHwStopCore()
1790 atomic_swap_32(&pUM->chipStarted, B_FALSE); in BnxeHwStopCore()
1794 BnxeLogDbg(pUM, "Disabling Interrupts"); in BnxeHwStopCore()
1796 BnxeIntrDisable(pUM); in BnxeHwStopCore()
1800 BnxeLogDbg(pUM, "Resetting BRCM Chip"); in BnxeHwStopCore()
1804 pUM->phyInitialized = B_FALSE; in BnxeHwStopCore()
1806 if (pUM->fmCapabilities && in BnxeHwStopCore()
1807 BnxeCheckAccHandle(pUM->pPciCfg) != DDI_FM_OK) in BnxeHwStopCore()
1809 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_DEGRADED); in BnxeHwStopCore()
1812 if (pUM->fmCapabilities && in BnxeHwStopCore()
1815 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_DEGRADED); in BnxeHwStopCore()
1820 while (!d_list_is_empty(&pUM->memBlockList)) in BnxeHwStopCore()
1822 pMemBlock = (BnxeMemBlock *)d_list_peek_head(&pUM->memBlockList); in BnxeHwStopCore()
1830 while (!d_list_is_empty(&pUM->memDmaList)) in BnxeHwStopCore()
1832 pMemDma = (BnxeMemDma *)d_list_peek_head(&pUM->memDmaList); in BnxeHwStopCore()
1844 BNXE_LOCK_ENTER_MEM(pUM); in BnxeHwStopCore()
1846 pTmp = (BnxeMemDma *)d_list_peek_head(&pUM->memDmaList); in BnxeHwStopCore()
1857 d_list_add_head(&pUM->memDmaListSaved, &pUM->memDmaList); in BnxeHwStopCore()
1858 d_list_clear(&pUM->memDmaList); in BnxeHwStopCore()
1860 BNXE_LOCK_EXIT_MEM(pUM); in BnxeHwStopCore()
1862 BnxeVerifySavedDmaList(pUM); in BnxeHwStopCore()
1866 atomic_swap_32(&pUM->hwInitDone, B_FALSE); in BnxeHwStopCore()
1868 BnxeLogInfo(pUM, "BnxeHwStopCore: Hardware stopped (clients %s)", in BnxeHwStopCore()
1869 BnxeClientsHw(pUM)); in BnxeHwStopCore()
1873 int BnxeHwResume(um_device_t * pUM) in BnxeHwResume() argument
1875 lm_device_t * pLM = &pUM->lm_dev; in BnxeHwResume()
1878 BnxeLogDbg(pUM, "Setting Power State"); in BnxeHwResume()
1882 BnxeLogDbg(pUM, "Enabling PCI DMA"); in BnxeHwResume()
1885 if (pUM->fmCapabilities && in BnxeHwResume()
1888 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_LOST); in BnxeHwResume()
1892 if (!pUM->plumbed) in BnxeHwResume()
1898 if (BnxeHwStartCore(pUM)) in BnxeHwResume()
1903 atomic_swap_32(&pUM->plumbed, B_TRUE); in BnxeHwResume()
1910 int BnxeHwSuspend(um_device_t * pUM) in BnxeHwSuspend() argument
1912 lm_device_t * pLM = &pUM->lm_dev; in BnxeHwSuspend()
1919 if (pUM->plumbed) in BnxeHwSuspend()
1925 BnxeHwStopCore(pUM); in BnxeHwSuspend()
1926 atomic_swap_32(&pUM->plumbed, B_FALSE); in BnxeHwSuspend()
1932 if (pUM->fmCapabilities && in BnxeHwSuspend()
1933 BnxeCheckAccHandle(pUM->pPciCfg) != DDI_FM_OK) in BnxeHwSuspend()
1935 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_DEGRADED); in BnxeHwSuspend()
1939 if (pUM->fmCapabilities && in BnxeHwSuspend()
1942 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_DEGRADED); in BnxeHwSuspend()
1949 if (pUM->fmCapabilities && in BnxeHwSuspend()
1952 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_DEGRADED); in BnxeHwSuspend()
1957 BnxeLogDbg(pUM, "Disabling PCI DMA"); in BnxeHwSuspend()
1960 if (pUM->fmCapabilities && in BnxeHwSuspend()
1963 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_DEGRADED); in BnxeHwSuspend()
1977 int BnxeHwQuiesce(um_device_t * pUM) in BnxeHwQuiesce() argument
1979 lm_device_t * pLM = &pUM->lm_dev; in BnxeHwQuiesce()
1982 if (CLIENT_BOUND(pUM, LM_CLI_IDX_FCOE)) in BnxeHwQuiesce()
1984 BnxeLogWarn(pUM, "Unable to quiesce, FCoE is bound!"); in BnxeHwQuiesce()
1996 BnxeRxPktsAbort(pUM, LM_CLI_IDX_NDIS); in BnxeHwQuiesce()
1997 BnxeTxPktsAbort(pUM, LM_CLI_IDX_NDIS); in BnxeHwQuiesce()