Lines Matching refs:rq
561 vmxnet3_rq_alloc_rx_buf(struct vmxnet3_rx_queue *rq, u32 ring_idx, in vmxnet3_rq_alloc_rx_buf() argument
565 struct vmxnet3_rx_buf_info *rbi_base = rq->buf_info[ring_idx]; in vmxnet3_rq_alloc_rx_buf()
566 struct vmxnet3_cmd_ring *ring = &rq->rx_ring[ring_idx]; in vmxnet3_rq_alloc_rx_buf()
582 rq->stats.rx_buf_alloc_failure++; in vmxnet3_rq_alloc_rx_buf()
601 rq->stats.rx_buf_alloc_failure++; in vmxnet3_rq_alloc_rx_buf()
1137 vmxnet3_rx_error(struct vmxnet3_rx_queue *rq, struct Vmxnet3_RxCompDesc *rcd, in vmxnet3_rx_error() argument
1140 rq->stats.drop_err++; in vmxnet3_rx_error()
1142 rq->stats.drop_fcs++; in vmxnet3_rx_error()
1144 rq->stats.drop_total++; in vmxnet3_rx_error()
1164 vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, in vmxnet3_rq_rx_complete() argument
1173 struct vmxnet3_rx_ctx *ctx = &rq->rx_ctx; in vmxnet3_rq_rx_complete()
1178 vmxnet3_getRxComp(rcd, &rq->comp_ring.base[rq->comp_ring.next2proc].rcd, in vmxnet3_rq_rx_complete()
1180 while (rcd->gen == rq->comp_ring.gen) { in vmxnet3_rq_rx_complete()
1195 BUG_ON(rcd->rqID != rq->qid && rcd->rqID != rq->qid2); in vmxnet3_rq_rx_complete()
1198 ring = rq->rx_ring + ring_idx; in vmxnet3_rq_rx_complete()
1199 vmxnet3_getRxDesc(rxd, &rq->rx_ring[ring_idx].base[idx].rxd, in vmxnet3_rq_rx_complete()
1201 rbi = rq->buf_info[ring_idx] + idx; in vmxnet3_rq_rx_complete()
1207 vmxnet3_rx_error(rq, rcd, ctx, adapter); in vmxnet3_rq_rx_complete()
1213 rcd->rqID != rq->qid); in vmxnet3_rq_rx_complete()
1235 rq->stats.rx_buf_alloc_failure++; in vmxnet3_rq_rx_complete()
1237 rq->stats.drop_total++; in vmxnet3_rq_rx_complete()
1283 rq->stats.rx_buf_alloc_failure++; in vmxnet3_rq_rx_complete()
1323 napi_gro_receive(&rq->napi, skb); in vmxnet3_rq_rx_complete()
1332 ring = rq->rx_ring + ring_idx; in vmxnet3_rq_rx_complete()
1345 if (unlikely(rq->shared->updateRxProd)) { in vmxnet3_rq_rx_complete()
1347 rxprod_reg[ring_idx] + rq->qid * 8, in vmxnet3_rq_rx_complete()
1351 vmxnet3_comp_ring_adv_next2proc(&rq->comp_ring); in vmxnet3_rq_rx_complete()
1353 &rq->comp_ring.base[rq->comp_ring.next2proc].rcd, &rxComp); in vmxnet3_rq_rx_complete()
1361 vmxnet3_rq_cleanup(struct vmxnet3_rx_queue *rq, in vmxnet3_rq_cleanup() argument
1368 for (i = 0; i < rq->rx_ring[ring_idx].size; i++) { in vmxnet3_rq_cleanup()
1373 &rq->rx_ring[ring_idx].base[i].rxd, &rxDesc); in vmxnet3_rq_cleanup()
1376 rq->buf_info[ring_idx][i].skb) { in vmxnet3_rq_cleanup()
1379 dev_kfree_skb(rq->buf_info[ring_idx][i].skb); in vmxnet3_rq_cleanup()
1380 rq->buf_info[ring_idx][i].skb = NULL; in vmxnet3_rq_cleanup()
1382 rq->buf_info[ring_idx][i].page) { in vmxnet3_rq_cleanup()
1385 put_page(rq->buf_info[ring_idx][i].page); in vmxnet3_rq_cleanup()
1386 rq->buf_info[ring_idx][i].page = NULL; in vmxnet3_rq_cleanup()
1390 rq->rx_ring[ring_idx].gen = VMXNET3_INIT_GEN; in vmxnet3_rq_cleanup()
1391 rq->rx_ring[ring_idx].next2fill = in vmxnet3_rq_cleanup()
1392 rq->rx_ring[ring_idx].next2comp = 0; in vmxnet3_rq_cleanup()
1395 rq->comp_ring.gen = VMXNET3_INIT_GEN; in vmxnet3_rq_cleanup()
1396 rq->comp_ring.next2proc = 0; in vmxnet3_rq_cleanup()
1410 static void vmxnet3_rq_destroy(struct vmxnet3_rx_queue *rq, in vmxnet3_rq_destroy() argument
1418 if (rq->buf_info[i]) { in vmxnet3_rq_destroy()
1419 for (j = 0; j < rq->rx_ring[i].size; j++) in vmxnet3_rq_destroy()
1420 BUG_ON(rq->buf_info[i][j].page != NULL); in vmxnet3_rq_destroy()
1426 if (rq->rx_ring[i].base) { in vmxnet3_rq_destroy()
1428 rq->rx_ring[i].size in vmxnet3_rq_destroy()
1430 rq->rx_ring[i].base, in vmxnet3_rq_destroy()
1431 rq->rx_ring[i].basePA); in vmxnet3_rq_destroy()
1432 rq->rx_ring[i].base = NULL; in vmxnet3_rq_destroy()
1434 rq->buf_info[i] = NULL; in vmxnet3_rq_destroy()
1437 if (rq->comp_ring.base) { in vmxnet3_rq_destroy()
1438 dma_free_coherent(&adapter->pdev->dev, rq->comp_ring.size in vmxnet3_rq_destroy()
1440 rq->comp_ring.base, rq->comp_ring.basePA); in vmxnet3_rq_destroy()
1441 rq->comp_ring.base = NULL; in vmxnet3_rq_destroy()
1444 if (rq->buf_info[0]) { in vmxnet3_rq_destroy()
1446 (rq->rx_ring[0].size + rq->rx_ring[1].size); in vmxnet3_rq_destroy()
1447 dma_free_coherent(&adapter->pdev->dev, sz, rq->buf_info[0], in vmxnet3_rq_destroy()
1448 rq->buf_info_pa); in vmxnet3_rq_destroy()
1454 vmxnet3_rq_init(struct vmxnet3_rx_queue *rq, in vmxnet3_rq_init() argument
1460 for (i = 0; i < rq->rx_ring[0].size; i++) { in vmxnet3_rq_init()
1464 rq->buf_info[0][i].buf_type = VMXNET3_RX_BUF_SKB; in vmxnet3_rq_init()
1465 rq->buf_info[0][i].len = adapter->skb_buf_size; in vmxnet3_rq_init()
1467 rq->buf_info[0][i].buf_type = VMXNET3_RX_BUF_PAGE; in vmxnet3_rq_init()
1468 rq->buf_info[0][i].len = PAGE_SIZE; in vmxnet3_rq_init()
1471 for (i = 0; i < rq->rx_ring[1].size; i++) { in vmxnet3_rq_init()
1472 rq->buf_info[1][i].buf_type = VMXNET3_RX_BUF_PAGE; in vmxnet3_rq_init()
1473 rq->buf_info[1][i].len = PAGE_SIZE; in vmxnet3_rq_init()
1478 rq->rx_ring[i].next2fill = rq->rx_ring[i].next2comp = 0; in vmxnet3_rq_init()
1480 memset(rq->rx_ring[i].base, 0, rq->rx_ring[i].size * in vmxnet3_rq_init()
1482 rq->rx_ring[i].gen = VMXNET3_INIT_GEN; in vmxnet3_rq_init()
1484 if (vmxnet3_rq_alloc_rx_buf(rq, 0, rq->rx_ring[0].size - 1, in vmxnet3_rq_init()
1489 vmxnet3_rq_alloc_rx_buf(rq, 1, rq->rx_ring[1].size - 1, adapter); in vmxnet3_rq_init()
1492 rq->comp_ring.next2proc = 0; in vmxnet3_rq_init()
1493 memset(rq->comp_ring.base, 0, rq->comp_ring.size * in vmxnet3_rq_init()
1495 rq->comp_ring.gen = VMXNET3_INIT_GEN; in vmxnet3_rq_init()
1498 rq->rx_ctx.skb = NULL; in vmxnet3_rq_init()
1525 vmxnet3_rq_create(struct vmxnet3_rx_queue *rq, struct vmxnet3_adapter *adapter) in vmxnet3_rq_create() argument
1533 sz = rq->rx_ring[i].size * sizeof(struct Vmxnet3_RxDesc); in vmxnet3_rq_create()
1534 rq->rx_ring[i].base = dma_alloc_coherent( in vmxnet3_rq_create()
1536 &rq->rx_ring[i].basePA, in vmxnet3_rq_create()
1538 if (!rq->rx_ring[i].base) { in vmxnet3_rq_create()
1545 sz = rq->comp_ring.size * sizeof(struct Vmxnet3_RxCompDesc); in vmxnet3_rq_create()
1546 rq->comp_ring.base = dma_alloc_coherent(&adapter->pdev->dev, sz, in vmxnet3_rq_create()
1547 &rq->comp_ring.basePA, in vmxnet3_rq_create()
1549 if (!rq->comp_ring.base) { in vmxnet3_rq_create()
1554 sz = sizeof(struct vmxnet3_rx_buf_info) * (rq->rx_ring[0].size + in vmxnet3_rq_create()
1555 rq->rx_ring[1].size); in vmxnet3_rq_create()
1556 bi = dma_zalloc_coherent(&adapter->pdev->dev, sz, &rq->buf_info_pa, in vmxnet3_rq_create()
1561 rq->buf_info[0] = bi; in vmxnet3_rq_create()
1562 rq->buf_info[1] = bi + rq->rx_ring[0].size; in vmxnet3_rq_create()
1567 vmxnet3_rq_destroy(rq, adapter); in vmxnet3_rq_create()
1635 struct vmxnet3_rx_queue *rq = container_of(napi, in vmxnet3_poll_rx_only() local
1637 struct vmxnet3_adapter *adapter = rq->adapter; in vmxnet3_poll_rx_only()
1645 &adapter->tx_queue[rq - adapter->rx_queue]; in vmxnet3_poll_rx_only()
1649 rxd_done = vmxnet3_rq_rx_complete(rq, adapter, budget); in vmxnet3_poll_rx_only()
1653 vmxnet3_enable_intr(adapter, rq->comp_ring.intr_idx); in vmxnet3_poll_rx_only()
1699 struct vmxnet3_rx_queue *rq = data; in vmxnet3_msix_rx() local
1700 struct vmxnet3_adapter *adapter = rq->adapter; in vmxnet3_msix_rx()
1704 vmxnet3_disable_intr(adapter, rq->comp_ring.intr_idx); in vmxnet3_msix_rx()
1705 napi_schedule(&rq->napi); in vmxnet3_msix_rx()
1890 struct vmxnet3_rx_queue *rq = &adapter->rx_queue[i]; in vmxnet3_request_irqs() local
1891 rq->qid = i; in vmxnet3_request_irqs()
1892 rq->qid2 = i + adapter->num_rx_queues; in vmxnet3_request_irqs()
2192 struct vmxnet3_rx_queue *rq = &adapter->rx_queue[i]; in vmxnet3_setup_driver_shared() local
2194 rqc->rxRingBasePA[0] = cpu_to_le64(rq->rx_ring[0].basePA); in vmxnet3_setup_driver_shared()
2195 rqc->rxRingBasePA[1] = cpu_to_le64(rq->rx_ring[1].basePA); in vmxnet3_setup_driver_shared()
2196 rqc->compRingBasePA = cpu_to_le64(rq->comp_ring.basePA); in vmxnet3_setup_driver_shared()
2197 rqc->ddPA = cpu_to_le64(rq->buf_info_pa); in vmxnet3_setup_driver_shared()
2198 rqc->rxRingSize[0] = cpu_to_le32(rq->rx_ring[0].size); in vmxnet3_setup_driver_shared()
2199 rqc->rxRingSize[1] = cpu_to_le32(rq->rx_ring[1].size); in vmxnet3_setup_driver_shared()
2200 rqc->compRingSize = cpu_to_le32(rq->comp_ring.size); in vmxnet3_setup_driver_shared()
2205 rqc->intrIdx = rq->comp_ring.intr_idx; in vmxnet3_setup_driver_shared()
2491 struct vmxnet3_rx_queue *rq = &adapter->rx_queue[0]; in vmxnet3_adjust_rx_ring_size() local
2525 rq = &adapter->rx_queue[i]; in vmxnet3_adjust_rx_ring_size()
2526 rq->rx_ring[0].size = ring0_size; in vmxnet3_adjust_rx_ring_size()
2527 rq->rx_ring[1].size = ring1_size; in vmxnet3_adjust_rx_ring_size()
2528 rq->comp_ring.size = comp_size; in vmxnet3_adjust_rx_ring_size()
2561 struct vmxnet3_rx_queue *rq = &adapter->rx_queue[i]; in vmxnet3_create_queues() local
2564 rq->shared = &adapter->rqd_start[i].ctrl; in vmxnet3_create_queues()
2565 rq->adapter = adapter; in vmxnet3_create_queues()
2566 err = vmxnet3_rq_create(rq, adapter); in vmxnet3_create_queues()