Lines Matching defs:rxr

1437 	struct rx_ring	*rxr = adapter->rx_rings;
1459 em_rxeof(rxr, count, &rx_done);
1530 struct rx_ring *rxr = adapter->rx_rings;
1534 bool more = em_rxeof(rxr, adapter->rx_process_limit, NULL);
1593 struct rx_ring *rxr = arg;
1594 struct adapter *adapter = rxr->adapter;
1597 ++rxr->rx_irq;
1600 more = em_rxeof(rxr, adapter->rx_process_limit, NULL);
1602 taskqueue_enqueue(rxr->tq, &rxr->rx_task);
1605 E1000_WRITE_REG(&adapter->hw, E1000_IMS, rxr->ims);
1635 struct rx_ring *rxr = context;
1636 struct adapter *adapter = rxr->adapter;
1639 more = em_rxeof(rxr, adapter->rx_process_limit, NULL);
1641 taskqueue_enqueue(rxr->tq, &rxr->rx_task);
1644 E1000_WRITE_REG(&adapter->hw, E1000_IMS, rxr->ims);
2272 struct rx_ring *rxr = adapter->rx_rings;
2287 trigger = rxr->ims;
2570 struct rx_ring *rxr = adapter->rx_rings;
2578 for (int i = 0; i < adapter->num_queues; i++, txr++, rxr++) {
2583 rxr->res = bus_alloc_resource_any(dev,
2585 if (rxr->res == NULL) {
2591 if ((error = bus_setup_intr(dev, rxr->res,
2593 rxr, &rxr->tag)) != 0) {
2598 bus_describe_intr(dev, rxr->res, rxr->tag, "rx %d", i);
2600 rxr->msix = vector++; /* NOTE increment vector for TX */
2601 TASK_INIT(&rxr->rx_task, 0, em_handle_rx, rxr);
2602 rxr->tq = taskqueue_create_fast("em_rxq", M_NOWAIT,
2603 taskqueue_thread_enqueue, &rxr->tq);
2604 taskqueue_start_threads(&rxr->tq, 1, PI_NET, "%s rxq",
2612 rxr->ims = 1 << (20 + i);
2613 adapter->ivars |= (8 | rxr->msix) << (i * 4);
2684 struct rx_ring *rxr;
2693 rxr = &adapter->rx_rings[i];
2695 if ((txr == NULL) || (rxr == NULL))
2705 rid = rxr->msix +1;
2706 if (rxr->tag != NULL) {
2707 bus_teardown_intr(dev, rxr->res, rxr->tag);
2708 rxr->tag = NULL;
2710 if (rxr->res != NULL)
2712 rid, rxr->res);
3172 struct rx_ring *rxr = NULL;
3242 rxr = &adapter->rx_rings[i];
3243 rxr->adapter = adapter;
3244 rxr->me = i;
3247 snprintf(rxr->mtx_name, sizeof(rxr->mtx_name), "%s:rx(%d)",
3249 mtx_init(&rxr->rx_mtx, rxr->mtx_name, NULL, MTX_DEF);
3252 &rxr->rxdma, BUS_DMA_NOWAIT)) {
3258 rxr->rx_base = (struct e1000_rx_desc *)rxr->rxdma.dma_vaddr;
3259 bzero((void *)rxr->rx_base, rsize);
3262 if (em_allocate_receive_buffers(rxr)) {
3273 for (rxr = adapter->rx_rings; rxconf > 0; rxr++, rxconf--)
3274 em_dma_free(adapter, &rxr->rxdma);
3951 em_refresh_mbufs(struct rx_ring *rxr, int limit)
3953 struct adapter *adapter = rxr->adapter;
3960 i = j = rxr->next_to_refresh;
3970 rxbuf = &rxr->rx_buffers[i];
3990 error = bus_dmamap_load_mbuf_sg(rxr->rxtag, rxbuf->map,
4000 bus_dmamap_sync(rxr->rxtag,
4002 rxr->rx_base[i].buffer_addr = htole64(segs[0].ds_addr);
4006 rxr->next_to_refresh = i;
4018 E1000_RDT(rxr->me), rxr->next_to_refresh);
4033 em_allocate_receive_buffers(struct rx_ring *rxr)
4035 struct adapter *adapter = rxr->adapter;
4040 rxr->rx_buffers = malloc(sizeof(struct em_buffer) *
4042 if (rxr->rx_buffers == NULL) {
4058 &rxr->rxtag);
4065 rxbuf = rxr->rx_buffers;
4067 rxbuf = &rxr->rx_buffers[i];
4068 error = bus_dmamap_create(rxr->rxtag, 0, &rxbuf->map);
4090 em_setup_receive_ring(struct rx_ring *rxr)
4092 struct adapter *adapter = rxr->adapter;
4103 EM_RX_LOCK(rxr);
4106 bzero((void *)rxr->rx_base, rsize);
4115 rxbuf = &rxr->rx_buffers[i];
4117 bus_dmamap_sync(rxr->rxtag, rxbuf->map,
4119 bus_dmamap_unload(rxr->rxtag, rxbuf->map);
4127 rxbuf = &rxr->rx_buffers[j];
4130 int si = netmap_idx_n2k(&na->rx_rings[rxr->me], j);
4135 netmap_load_map(na, rxr->rxtag, rxbuf->map, addr);
4137 rxr->rx_base[j].buffer_addr = htole64(paddr);
4152 error = bus_dmamap_load_mbuf_sg(rxr->rxtag,
4160 bus_dmamap_sync(rxr->rxtag,
4164 rxr->rx_base[j].buffer_addr = htole64(seg[0].ds_addr);
4166 rxr->next_to_check = 0;
4167 rxr->next_to_refresh = 0;
4168 bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,
4172 EM_RX_UNLOCK(rxr);
4184 struct rx_ring *rxr = adapter->rx_rings;
4187 for (q = 0; q < adapter->num_queues; q++, rxr++)
4188 if (em_setup_receive_ring(rxr))
4199 rxr = &adapter->rx_rings[i];
4202 rxbuf = &rxr->rx_buffers[n];
4204 bus_dmamap_sync(rxr->rxtag, rxbuf->map,
4206 bus_dmamap_unload(rxr->rxtag, rxbuf->map);
4211 rxr->next_to_check = 0;
4212 rxr->next_to_refresh = 0;
4226 struct rx_ring *rxr = adapter->rx_rings;
4228 for (int i = 0; i < adapter->num_queues; i++, rxr++) {
4229 em_free_receive_buffers(rxr);
4231 em_dma_free(adapter, &rxr->rxdma);
4232 EM_RX_LOCK_DESTROY(rxr);
4245 em_free_receive_buffers(struct rx_ring *rxr)
4247 struct adapter *adapter = rxr->adapter;
4252 if (rxr->rx_buffers != NULL) {
4254 rxbuf = &rxr->rx_buffers[i];
4256 bus_dmamap_sync(rxr->rxtag, rxbuf->map,
4258 bus_dmamap_unload(rxr->rxtag, rxbuf->map);
4259 bus_dmamap_destroy(rxr->rxtag, rxbuf->map);
4266 free(rxr->rx_buffers, M_DEVBUF);
4267 rxr->rx_buffers = NULL;
4268 rxr->next_to_check = 0;
4269 rxr->next_to_refresh = 0;
4272 if (rxr->rxtag != NULL) {
4273 bus_dma_tag_destroy(rxr->rxtag);
4274 rxr->rxtag = NULL;
4290 struct rx_ring *rxr = adapter->rx_rings;
4344 for (int i = 0; i < adapter->num_queues; i++, rxr++) {
4348 bus_addr = rxr->rxdma.dma_paddr;
4426 em_rxeof(struct rx_ring *rxr, int count, int *done)
4428 struct adapter *adapter = rxr->adapter;
4437 EM_RX_LOCK(rxr);
4440 if (netmap_rx_irq(ifp, rxr->me, &processed)) {
4441 EM_RX_UNLOCK(rxr);
4446 for (i = rxr->next_to_check, processed = 0; count != 0;) {
4451 bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,
4454 cur = &rxr->rx_base[i];
4465 (rxr->discard == TRUE)) {
4467 ++rxr->rx_discarded;
4469 rxr->discard = TRUE;
4471 rxr->discard = FALSE;
4472 em_rx_discard(rxr, i);
4475 bus_dmamap_unload(rxr->rxtag, rxr->rx_buffers[i].map);
4478 mp = rxr->rx_buffers[i].m_head;
4482 rxr->rx_buffers[i].m_head = NULL;
4485 if (rxr->fmp == NULL) {
4487 rxr->fmp = rxr->lmp = mp;
4491 rxr->lmp->m_next = mp;
4492 rxr->lmp = mp;
4493 rxr->fmp->m_pkthdr.len += len;
4498 sendmp = rxr->fmp;
4505 em_fixup_rx(rxr) != 0)
4516 rxr->fmp = rxr->lmp = NULL;
4530 rxr->next_to_check = i;
4531 EM_RX_UNLOCK(rxr);
4533 EM_RX_LOCK(rxr);
4534 i = rxr->next_to_check;
4539 em_refresh_mbufs(rxr, i);
4545 if (e1000_rx_unrefreshed(rxr))
4546 em_refresh_mbufs(rxr, i);
4548 rxr->next_to_check = i;
4551 EM_RX_UNLOCK(rxr);
4557 em_rx_discard(struct rx_ring *rxr, int i)
4561 rbuf = &rxr->rx_buffers[i];
4562 bus_dmamap_unload(rxr->rxtag, rbuf->map);
4565 if (rxr->fmp != NULL) {
4566 rxr->fmp->m_flags |= M_PKTHDR;
4567 m_freem(rxr->fmp);
4568 rxr->fmp = NULL;
4569 rxr->lmp = NULL;
4598 em_fixup_rx(struct rx_ring *rxr)
4600 struct adapter *adapter = rxr->adapter;
4605 m = rxr->fmp;
4618 rxr->fmp = n;
4621 m_freem(rxr->fmp);
4622 rxr->fmp = NULL;
5285 struct rx_ring *rxr = adapter->rx_rings;
5336 for (int i = 0; i < adapter->num_queues; i++, rxr++, txr++) {
5361 E1000_RDH(rxr->me),
5366 E1000_RDT(rxr->me),
5370 CTLFLAG_RD, &rxr->rx_irq,
5780 struct rx_ring *rxr = adapter->rx_rings;
5804 rxr->rx_discarded);
5805 device_printf(dev, "RX Next to Check = %d\n", rxr->next_to_check);
5806 device_printf(dev, "RX Next to Refresh = %d\n", rxr->next_to_refresh);