Lines Matching refs:pUM
59 static void BnxeRxPostBuffers(um_device_t * pUM, in BnxeRxPostBuffers() argument
63 lm_rx_chain_t * pLmRxChain = &LM_RXQ(&pUM->lm_dev, idx); in BnxeRxPostBuffers()
75 BNXE_LOCK_ENTER_RX(pUM, idx); in BnxeRxPostBuffers()
77 if (pUM->rxq[idx].rxLowWater > s_list_entry_cnt(&pLmRxChain->active_descq)) in BnxeRxPostBuffers()
79 pUM->rxq[idx].rxLowWater = s_list_entry_cnt(&pLmRxChain->active_descq); in BnxeRxPostBuffers()
82 lm_return_packet_bytes(&pUM->lm_dev, idx, returnedBytes); in BnxeRxPostBuffers()
94 BNXE_LOCK_EXIT_RX(pUM, idx); in BnxeRxPostBuffers()
103 BNXE_LOCK_EXIT_RX(pUM, idx); in BnxeRxPostBuffers()
108 lm_post_buffers(&pUM->lm_dev, idx, NULL, 0); in BnxeRxPostBuffers()
110 BNXE_LOCK_EXIT_RX(pUM, idx); in BnxeRxPostBuffers()
114 static u32_t BnxeRxPktDescrSize(um_device_t * pUM) in BnxeRxPktDescrSize() argument
118 (void)pUM; in BnxeRxPktDescrSize()
126 static void BnxeRxPktDescrFree(um_device_t * pUM, in BnxeRxPktDescrFree() argument
132 BnxeDbgBreakIfFastPath(pUM, SIG(pRxPkt) != L2PACKET_RX_SIG); in BnxeRxPktDescrFree()
134 descSize = BnxeRxPktDescrSize(pUM); in BnxeRxPktDescrFree()
144 um_device_t * pUM = (um_device_t *)pRxPkt->pUM; in BnxeRxPktFree() local
148 if (pUM->magic != BNXE_MAGIC) in BnxeRxPktFree()
159 if (pUM->rxBufSignature[LM_CHAIN_IDX_CLI(&pUM->lm_dev, idx)] != in BnxeRxPktFree()
174 BnxeRxPktDescrFree(pUM, pRxPkt); in BnxeRxPktFree()
180 BNXE_LOCK_ENTER_DONERX(pUM, idx); in BnxeRxPktFree()
182 s_list_push_tail(&pUM->rxq[idx].doneRxQ, in BnxeRxPktFree()
186 if (s_list_entry_cnt(&pUM->rxq[idx].doneRxQ) >= pUM->devParams.maxRxFree) in BnxeRxPktFree()
188 doneRxQ = pUM->rxq[idx].doneRxQ; in BnxeRxPktFree()
189 s_list_clear(&pUM->rxq[idx].doneRxQ); in BnxeRxPktFree()
192 BNXE_LOCK_EXIT_DONERX(pUM, idx); in BnxeRxPktFree()
196 BnxeRxPostBuffers(pUM, idx, &doneRxQ); in BnxeRxPktFree()
200 atomic_dec_32(&pUM->rxq[idx].rxBufUpInStack); in BnxeRxPktFree()
204 boolean_t BnxeWaitForPacketsFromClient(um_device_t * pUM, in BnxeWaitForPacketsFromClient() argument
215 if ((cnt = pUM->rxq[FCOE_CID(&pUM->lm_dev)].rxBufUpInStack) == 0) in BnxeWaitForPacketsFromClient()
226 BnxeLogWarn(pUM, "%d packets still held by FCoE (chain %d)!", in BnxeWaitForPacketsFromClient()
227 cnt, FCOE_CID(&pUM->lm_dev)); in BnxeWaitForPacketsFromClient()
237 LM_FOREACH_RSS_IDX(&pUM->lm_dev, idx) in BnxeWaitForPacketsFromClient()
241 if ((cnt = pUM->rxq[idx].rxBufUpInStack) == 0) in BnxeWaitForPacketsFromClient()
255 BnxeLogWarn(pUM, "%d packets still held by the stack (chain %d)!", in BnxeWaitForPacketsFromClient()
264 BnxeLogWarn(pUM, "ERROR: Invalid cliIdx for BnxeWaitForPacketsFromClient (%d)", cliIdx); in BnxeWaitForPacketsFromClient()
273 mblk_t * BnxeRxRingProcess(um_device_t * pUM, in BnxeRxRingProcess() argument
298 pRxQ = &pUM->rxq[idx]; in BnxeRxRingProcess()
303 BNXE_LOCK_ENTER_RX(pUM, idx); in BnxeRxRingProcess()
305 pktsRxed = lm_get_packets_rcvd(&pUM->lm_dev, idx, &tmpList, &sp_cqes); in BnxeRxRingProcess()
314 BNXE_LOCK_EXIT_RX(pUM, idx); in BnxeRxRingProcess()
317 lm_complete_ramrods(&pUM->lm_dev, &sp_cqes); in BnxeRxRingProcess()
327 pLmRxChain = &LM_RXQ(&pUM->lm_dev, idx); in BnxeRxRingProcess()
332 (pUM->lm_dev.params.l2_rx_desc_cnt[LM_CHAIN_IDX_CLI(&pUM->lm_dev, idx)] >> 3)); in BnxeRxRingProcess()
375 if (pUM->fmCapabilities && in BnxeRxRingProcess()
378 ddi_fm_service_impact(pUM->pDev, DDI_SERVICE_DEGRADED); in BnxeRxRingProcess()
384 (pUM->devParams.rxCopyThreshold && in BnxeRxRingProcess()
385 (pktLen < pUM->devParams.rxCopyThreshold))) in BnxeRxRingProcess()
435 pRxPkt->pUM = (void *)pUM; in BnxeRxRingProcess()
458 if ((pUM->devParams.enabled_oflds & LM_OFFLOAD_RX_IP_CKSUM) && in BnxeRxRingProcess()
464 if (((pUM->devParams.enabled_oflds & LM_OFFLOAD_RX_TCP_CKSUM) && in BnxeRxRingProcess()
466 ((pUM->devParams.enabled_oflds & LM_OFFLOAD_RX_UDP_CKSUM) && in BnxeRxRingProcess()
505 BnxeDumpPkt(pUM, in BnxeRxRingProcess()
506 (BNXE_FCOE(pUM) && (idx == FCOE_CID(&pUM->lm_dev))) ? in BnxeRxRingProcess()
517 atomic_add_32(&pUM->rxq[idx].rxBufUpInStack, notCopiedCount); in BnxeRxRingProcess()
526 if (BNXE_FCOE(pUM) && (idx == FCOE_CID(&pUM->lm_dev))) in BnxeRxRingProcess()
529 if (pUM->fcoe.pDev && pUM->fcoe.bind.cliIndicateRx) in BnxeRxRingProcess()
531 pUM->fcoe.bind.cliIndicateRx(pUM->fcoe.pDev, head); in BnxeRxRingProcess()
543 mac_rx_ring(pUM->pMac, in BnxeRxRingProcess()
544 pUM->rxq[idx].ringHandle, in BnxeRxRingProcess()
546 pUM->rxq[idx].genNumber); in BnxeRxRingProcess()
548 mac_rx(pUM->pMac, in BnxeRxRingProcess()
549 pUM->macRxResourceHandles[idx], in BnxeRxRingProcess()
559 BNXE_LOCK_ENTER_RX(pUM, idx); in BnxeRxRingProcess()
561 BNXE_LOCK_EXIT_RX(pUM, idx); in BnxeRxRingProcess()
566 BnxeRxPostBuffers(pUM, idx, &reclaimList); in BnxeRxRingProcess()
577 static void BnxeRxRingDump(um_device_t * pUM, in BnxeRxRingDump() argument
582 BNXE_LOCK_ENTER_RX(pUM, idx); in BnxeRxRingDump()
584 tmpList = pUM->rxq[idx].waitRxQ; in BnxeRxRingDump()
585 s_list_clear(&pUM->rxq[idx].waitRxQ); in BnxeRxRingDump()
587 s_list_add_tail(&LM_RXQ(&pUM->lm_dev, idx).common.free_descq, &tmpList); in BnxeRxRingDump()
589 BNXE_LOCK_EXIT_RX(pUM, idx); in BnxeRxRingDump()
597 static void BnxeRxPktsAbortIdx(um_device_t * pUM, in BnxeRxPktsAbortIdx() argument
600 BnxeRxRingDump(pUM, idx); in BnxeRxPktsAbortIdx()
602 BNXE_LOCK_ENTER_RX(pUM, idx); in BnxeRxPktsAbortIdx()
603 lm_abort(&pUM->lm_dev, ABORT_OP_RX_CHAIN, idx); in BnxeRxPktsAbortIdx()
604 BNXE_LOCK_EXIT_RX(pUM, idx); in BnxeRxPktsAbortIdx()
608 void BnxeRxPktsAbort(um_device_t * pUM, in BnxeRxPktsAbort() argument
617 BnxeRxPktsAbortIdx(pUM, FCOE_CID(&pUM->lm_dev)); in BnxeRxPktsAbort()
622 LM_FOREACH_RSS_IDX(&pUM->lm_dev, idx) in BnxeRxPktsAbort()
624 BnxeRxPktsAbortIdx(pUM, idx); in BnxeRxPktsAbort()
631 BnxeLogWarn(pUM, "ERROR: Invalid cliIdx for BnxeRxPktsAbort (%d)", cliIdx); in BnxeRxPktsAbort()
637 static int BnxeRxBufAlloc(um_device_t * pUM, in BnxeRxBufAlloc() argument
646 if ((rc = ddi_dma_alloc_handle(pUM->pDev, in BnxeRxBufAlloc()
652 BnxeLogWarn(pUM, "Failed to alloc DMA handle for rx buffer"); in BnxeRxBufAlloc()
656 pRxPkt->rx_info.mem_size = MAX_L2_CLI_BUFFER_SIZE(&pUM->lm_dev, idx); in BnxeRxBufAlloc()
668 BnxeLogWarn(pUM, "Failed to alloc DMA memory for rx buffer"); in BnxeRxBufAlloc()
683 BnxeLogWarn(pUM, "Failed to bind DMA address for rx buffer"); in BnxeRxBufAlloc()
695 static int BnxeRxPktsInitPostBuffersIdx(um_device_t * pUM, in BnxeRxPktsInitPostBuffersIdx() argument
698 BNXE_LOCK_ENTER_RX(pUM, idx); in BnxeRxPktsInitPostBuffersIdx()
699 lm_post_buffers(&pUM->lm_dev, idx, NULL, 0); in BnxeRxPktsInitPostBuffersIdx()
700 BNXE_LOCK_EXIT_RX(pUM, idx); in BnxeRxPktsInitPostBuffersIdx()
706 int BnxeRxPktsInitPostBuffers(um_device_t * pUM, in BnxeRxPktsInitPostBuffers() argument
715 BnxeRxPktsInitPostBuffersIdx(pUM, FCOE_CID(&pUM->lm_dev)); in BnxeRxPktsInitPostBuffers()
720 LM_FOREACH_RSS_IDX(&pUM->lm_dev, idx) in BnxeRxPktsInitPostBuffers()
722 BnxeRxPktsInitPostBuffersIdx(pUM, idx); in BnxeRxPktsInitPostBuffers()
729 BnxeLogWarn(pUM, "ERROR: Invalid cliIdx for BnxeRxPktsInit (%d)", cliIdx); in BnxeRxPktsInitPostBuffers()
737 static int BnxeRxPktsInitIdx(um_device_t * pUM, in BnxeRxPktsInitIdx() argument
740 lm_device_t * pLM = &pUM->lm_dev; in BnxeRxPktsInitIdx()
747 BNXE_LOCK_ENTER_RX(pUM, idx); in BnxeRxPktsInitIdx()
751 s_list_clear(&pUM->rxq[idx].doneRxQ); in BnxeRxPktsInitIdx()
752 pUM->rxq[idx].rxLowWater = pLM->params.l2_rx_desc_cnt[LM_CHAIN_IDX_CLI(pLM, idx)]; in BnxeRxPktsInitIdx()
753 pUM->rxq[idx].rxDiscards = 0; in BnxeRxPktsInitIdx()
754 pUM->rxq[idx].rxCopied = 0; in BnxeRxPktsInitIdx()
756 s_list_clear(&pUM->rxq[idx].waitRxQ); in BnxeRxPktsInitIdx()
763 if ((pTmp = kmem_zalloc(BnxeRxPktDescrSize(pUM), in BnxeRxPktsInitIdx()
766 BnxeLogWarn(pUM, "Failed to alloc an rx packet descriptor!!!"); in BnxeRxPktsInitIdx()
772 pRxPkt->signature = pUM->rxBufSignature[LM_CHAIN_IDX_CLI(pLM, idx)]; in BnxeRxPktsInitIdx()
778 if (BnxeRxBufAlloc(pUM, idx, pRxPkt) != 0) in BnxeRxPktsInitIdx()
780 BnxeRxPktDescrFree(pUM, pRxPkt); in BnxeRxPktsInitIdx()
791 BnxeLogWarn(pUM, "%d rx buffers requested and only %d allocated!!!", in BnxeRxPktsInitIdx()
796 BNXE_LOCK_EXIT_RX(pUM, idx); in BnxeRxPktsInitIdx()
802 int BnxeRxPktsInit(um_device_t * pUM, in BnxeRxPktsInit() argument
808 atomic_swap_32(&pUM->rxBufSignature[cliIdx], (u32_t)ddi_get_time()); in BnxeRxPktsInit()
814 BnxeRxPktsInitIdx(pUM, FCOE_CID(&pUM->lm_dev)); in BnxeRxPktsInit()
819 LM_FOREACH_RSS_IDX(&pUM->lm_dev, idx) in BnxeRxPktsInit()
821 BnxeRxPktsInitIdx(pUM, idx); in BnxeRxPktsInit()
828 BnxeLogWarn(pUM, "ERROR: Invalid cliIdx for BnxeRxPktsInit (%d)", cliIdx); in BnxeRxPktsInit()
836 static void BnxeRxPktsFiniIdx(um_device_t * pUM, in BnxeRxPktsFiniIdx() argument
843 pLmRxChain = &LM_RXQ(&pUM->lm_dev, idx); in BnxeRxPktsFiniIdx()
847 BNXE_LOCK_ENTER_RX(pUM, idx); in BnxeRxPktsFiniIdx()
850 BNXE_LOCK_EXIT_RX(pUM, idx); in BnxeRxPktsFiniIdx()
852 BNXE_LOCK_ENTER_DONERX(pUM, idx); in BnxeRxPktsFiniIdx()
853 s_list_add_tail(&tmpList, &pUM->rxq[idx].doneRxQ); in BnxeRxPktsFiniIdx()
854 s_list_clear(&pUM->rxq[idx].doneRxQ); in BnxeRxPktsFiniIdx()
855 BNXE_LOCK_EXIT_DONERX(pUM, idx); in BnxeRxPktsFiniIdx()
858 pUM->lm_dev.params.l2_rx_desc_cnt[LM_CHAIN_IDX_CLI(&pUM->lm_dev, idx)]) in BnxeRxPktsFiniIdx()
860 BnxeLogWarn(pUM, "WARNING Missing RX packets (idx:%d) (%lu / %d - %u in stack)", in BnxeRxPktsFiniIdx()
862 pUM->lm_dev.params.l2_rx_desc_cnt[LM_CHAIN_IDX_CLI(&pUM->lm_dev, idx)], in BnxeRxPktsFiniIdx()
863 pUM->rxq[idx].rxBufUpInStack); in BnxeRxPktsFiniIdx()
886 BnxeRxPktDescrFree(pUM, pRxPkt); in BnxeRxPktsFiniIdx()
891 void BnxeRxPktsFini(um_device_t * pUM, in BnxeRxPktsFini() argument
897 atomic_swap_32(&pUM->rxBufSignature[cliIdx], 0); in BnxeRxPktsFini()
903 BnxeRxPktsFiniIdx(pUM, FCOE_CID(&pUM->lm_dev)); in BnxeRxPktsFini()
908 LM_FOREACH_RSS_IDX(&pUM->lm_dev, idx) in BnxeRxPktsFini()
910 BnxeRxPktsFiniIdx(pUM, idx); in BnxeRxPktsFini()
917 BnxeLogWarn(pUM, "ERROR: Invalid cliIdx for BnxeRxPktsFini (%d)", cliIdx); in BnxeRxPktsFini()