Lines Matching refs:pUM

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