Lines Matching refs:rrp

69     recv_ring_t *rrp);
73 bge_receive_packet(bge_t *bgep, bge_rbd_t *hw_rbd_p, recv_ring_t *rrp) in bge_receive_packet() argument
246 rrp->rx_pkts++; in bge_receive_packet()
247 rrp->rx_bytes += len; in bge_receive_packet()
278 static mblk_t *bge_receive_ring(bge_t *bgep, recv_ring_t *rrp);
284 bge_receive_ring(bge_t *bgep, recv_ring_t *rrp) in bge_receive_ring() argument
293 ASSERT(mutex_owned(rrp->rx_lock)); in bge_receive_ring()
299 DMA_SYNC(rrp->desc, DDI_DMA_SYNC_FORKERNEL); in bge_receive_ring()
300 if (*rrp->prod_index_p >= rrp->desc.nslots) { in bge_receive_ring()
305 if (bge_check_dma_handle(bgep, rrp->desc.dma_hdl) != DDI_FM_OK) { in bge_receive_ring()
306 rrp->rx_next = *rrp->prod_index_p; in bge_receive_ring()
307 bge_mbx_put(bgep, rrp->chip_mbx_reg, rrp->rx_next); in bge_receive_ring()
313 hw_rbd_p = DMA_VPTR(rrp->desc); in bge_receive_ring()
316 slot = rrp->rx_next; in bge_receive_ring()
318 while ((slot != *rrp->prod_index_p) && /* Note: volatile */ in bge_receive_ring()
320 if ((mp = bge_receive_packet(bgep, &hw_rbd_p[slot], rrp)) in bge_receive_ring()
326 rrp->rx_next = slot = NEXT(slot, rrp->desc.nslots); in bge_receive_ring()
329 bge_mbx_put(bgep, rrp->chip_mbx_reg, rrp->rx_next); in bge_receive_ring()
353 recv_ring_t *rrp = arg; in bge_poll_ring() local
354 bge_t *bgep = rrp->bgep; in bge_poll_ring()
362 mutex_enter(rrp->rx_lock); in bge_poll_ring()
368 DMA_SYNC(rrp->desc, DDI_DMA_SYNC_FORKERNEL); in bge_poll_ring()
369 if (*rrp->prod_index_p >= rrp->desc.nslots) { in bge_poll_ring()
372 mutex_exit(rrp->rx_lock); in bge_poll_ring()
375 if (bge_check_dma_handle(bgep, rrp->desc.dma_hdl) != DDI_FM_OK) { in bge_poll_ring()
376 rrp->rx_next = *rrp->prod_index_p; in bge_poll_ring()
377 bge_mbx_put(bgep, rrp->chip_mbx_reg, rrp->rx_next); in bge_poll_ring()
380 mutex_exit(rrp->rx_lock); in bge_poll_ring()
384 hw_rbd_p = DMA_VPTR(rrp->desc); in bge_poll_ring()
387 slot = rrp->rx_next; in bge_poll_ring()
390 while ((slot != *rrp->prod_index_p) && (sz <= bytes_to_pickup)) { in bge_poll_ring()
391 if ((mp = bge_receive_packet(bgep, &hw_rbd_p[slot], rrp)) in bge_poll_ring()
397 rrp->rx_next = slot = NEXT(slot, rrp->desc.nslots); in bge_poll_ring()
400 bge_mbx_put(bgep, rrp->chip_mbx_reg, rrp->rx_next); in bge_poll_ring()
403 mutex_exit(rrp->rx_lock); in bge_poll_ring()
416 recv_ring_t *rrp; in bge_receive() local
424 rrp = &bgep->recv[index]; in bge_receive()
431 ASSERT(rrp->prod_index_p == RECV_INDEX_P(bsp, index)); in bge_receive()
433 if (*rrp->prod_index_p == rrp->rx_next || rrp->poll_flag) in bge_receive()
435 if (mutex_tryenter(rrp->rx_lock) == 0) in bge_receive()
437 mp = bge_receive_ring(bgep, rrp); in bge_receive()
438 mutex_exit(rrp->rx_lock); in bge_receive()
441 mac_rx_ring(bgep->mh, rrp->ring_handle, mp, in bge_receive()
442 rrp->ring_gen_num); in bge_receive()