Lines Matching refs:rspq
1571 struct adapter *adapter = rxq->rspq.adapter; in do_gro()
1576 skb = napi_get_frags(&rxq->rspq.napi); in do_gro()
1588 skb_record_rx_queue(skb, rxq->rspq.idx); in do_gro()
1595 ret = napi_gro_frags(&rxq->rspq.napi); in do_gro()
1613 int t4vf_ethrx_handler(struct sge_rspq *rspq, const __be64 *rsp, in t4vf_ethrx_handler() argument
1619 (rspq->netdev->features & NETIF_F_RXCSUM); in t4vf_ethrx_handler()
1620 struct sge_eth_rxq *rxq = container_of(rspq, struct sge_eth_rxq, rspq); in t4vf_ethrx_handler()
1621 struct adapter *adapter = rspq->adapter; in t4vf_ethrx_handler()
1629 (rspq->netdev->features & NETIF_F_GRO) && csum_ok && in t4vf_ethrx_handler()
1645 skb->protocol = eth_type_trans(skb, rspq->netdev); in t4vf_ethrx_handler()
1646 skb_record_rx_queue(skb, rspq->idx); in t4vf_ethrx_handler()
1681 const struct sge_rspq *rspq) in is_new_response() argument
1683 return ((rc->type_gen >> RSPD_GEN_S) & 0x1) == rspq->gen; in is_new_response()
1729 static inline void rspq_next(struct sge_rspq *rspq) in rspq_next() argument
1731 rspq->cur_desc = (void *)rspq->cur_desc + rspq->iqe_len; in rspq_next()
1732 if (unlikely(++rspq->cidx == rspq->size)) { in rspq_next()
1733 rspq->cidx = 0; in rspq_next()
1734 rspq->gen ^= 1; in rspq_next()
1735 rspq->cur_desc = rspq->desc; in rspq_next()
1752 static int process_responses(struct sge_rspq *rspq, int budget) in process_responses() argument
1754 struct sge_eth_rxq *rxq = container_of(rspq, struct sge_eth_rxq, rspq); in process_responses()
1755 struct adapter *adapter = rspq->adapter; in process_responses()
1763 rc = (void *)rspq->cur_desc + (rspq->iqe_len - sizeof(*rc)); in process_responses()
1764 if (!is_new_response(rc, rspq)) in process_responses()
1790 if (likely(rspq->offset > 0)) { in process_responses()
1791 free_rx_bufs(rspq->adapter, &rxq->fl, in process_responses()
1793 rspq->offset = 0; in process_responses()
1808 fp->offset = rspq->offset; in process_responses()
1813 unmap_rx_buf(rspq->adapter, &rxq->fl); in process_responses()
1822 dma_sync_single_for_cpu(rspq->adapter->pdev_dev, in process_responses()
1833 ret = rspq->handler(rspq, rspq->cur_desc, &gl); in process_responses()
1835 rspq->offset += ALIGN(fp->size, s->fl_align); in process_responses()
1839 ret = rspq->handler(rspq, rspq->cur_desc, NULL); in process_responses()
1852 rspq->next_intr_params = in process_responses()
1857 rspq_next(rspq); in process_responses()
1866 if (rspq->offset >= 0 && in process_responses()
1868 __refill_fl(rspq->adapter, &rxq->fl); in process_responses()
1886 struct sge_rspq *rspq = container_of(napi, struct sge_rspq, napi); in napi_rx_handler() local
1887 int work_done = process_responses(rspq, budget); in napi_rx_handler()
1892 intr_params = rspq->next_intr_params; in napi_rx_handler()
1893 rspq->next_intr_params = rspq->intr_params; in napi_rx_handler()
1898 rspq->unhandled_irqs++; in napi_rx_handler()
1904 if (unlikely(!rspq->bar2_addr)) { in napi_rx_handler()
1905 t4_write_reg(rspq->adapter, in napi_rx_handler()
1907 val | INGRESSQID_V((u32)rspq->cntxt_id)); in napi_rx_handler()
1909 writel(val | INGRESSQID_V(rspq->bar2_qid), in napi_rx_handler()
1910 rspq->bar2_addr + SGE_UDB_GTS); in napi_rx_handler()
1922 struct sge_rspq *rspq = cookie; in t4vf_sge_intr_msix() local
1924 napi_schedule(&rspq->napi); in t4vf_sge_intr_msix()
1943 struct sge_rspq *rspq; in process_intrq() local
1981 rspq = s->ingr_map[iq_idx]; in process_intrq()
1982 if (unlikely(rspq == NULL)) { in process_intrq()
1987 if (unlikely(rspq->abs_id != qid)) { in process_intrq()
1990 qid, rspq->abs_id); in process_intrq()
1999 napi_schedule(&rspq->napi); in process_intrq()
2094 if (napi_reschedule(&rxq->rspq.napi)) in sge_rx_timer_cb()
2198 int t4vf_sge_alloc_rxq(struct adapter *adapter, struct sge_rspq *rspq, in t4vf_sge_alloc_rxq() argument
2215 if ((adapter->flags & USING_MSI) && rspq != &adapter->sge.intrq) { in t4vf_sge_alloc_rxq()
2227 rspq->size = roundup(rspq->size, 16); in t4vf_sge_alloc_rxq()
2228 rspq->desc = alloc_ring(adapter->pdev_dev, rspq->size, rspq->iqe_len, in t4vf_sge_alloc_rxq()
2229 0, &rspq->phys_addr, NULL, 0); in t4vf_sge_alloc_rxq()
2230 if (!rspq->desc) in t4vf_sge_alloc_rxq()
2259 FW_IQ_CMD_IQINTCNTTHRESH_V(rspq->pktcnt_idx) | in t4vf_sge_alloc_rxq()
2260 FW_IQ_CMD_IQESIZE_V(ilog2(rspq->iqe_len) - 4)); in t4vf_sge_alloc_rxq()
2261 cmd.iqsize = cpu_to_be16(rspq->size); in t4vf_sge_alloc_rxq()
2262 cmd.iqaddr = cpu_to_be64(rspq->phys_addr); in t4vf_sge_alloc_rxq()
2321 netif_napi_add(dev, &rspq->napi, napi_rx_handler, 64); in t4vf_sge_alloc_rxq()
2322 rspq->cur_desc = rspq->desc; in t4vf_sge_alloc_rxq()
2323 rspq->cidx = 0; in t4vf_sge_alloc_rxq()
2324 rspq->gen = 1; in t4vf_sge_alloc_rxq()
2325 rspq->next_intr_params = rspq->intr_params; in t4vf_sge_alloc_rxq()
2326 rspq->cntxt_id = be16_to_cpu(rpl.iqid); in t4vf_sge_alloc_rxq()
2327 rspq->bar2_addr = bar2_address(adapter, in t4vf_sge_alloc_rxq()
2328 rspq->cntxt_id, in t4vf_sge_alloc_rxq()
2330 &rspq->bar2_qid); in t4vf_sge_alloc_rxq()
2331 rspq->abs_id = be16_to_cpu(rpl.physiqid); in t4vf_sge_alloc_rxq()
2332 rspq->size--; /* subtract status entry */ in t4vf_sge_alloc_rxq()
2333 rspq->adapter = adapter; in t4vf_sge_alloc_rxq()
2334 rspq->netdev = dev; in t4vf_sge_alloc_rxq()
2335 rspq->handler = hnd; in t4vf_sge_alloc_rxq()
2338 rspq->offset = fl ? 0 : -1; in t4vf_sge_alloc_rxq()
2368 if (rspq->desc) { in t4vf_sge_alloc_rxq()
2369 dma_free_coherent(adapter->pdev_dev, rspq->size * rspq->iqe_len, in t4vf_sge_alloc_rxq()
2370 rspq->desc, rspq->phys_addr); in t4vf_sge_alloc_rxq()
2371 rspq->desc = NULL; in t4vf_sge_alloc_rxq()
2505 static void free_rspq_fl(struct adapter *adapter, struct sge_rspq *rspq, in free_rspq_fl() argument
2512 rspq->cntxt_id, flid, 0xffff); in free_rspq_fl()
2513 dma_free_coherent(adapter->pdev_dev, (rspq->size + 1) * rspq->iqe_len, in free_rspq_fl()
2514 rspq->desc, rspq->phys_addr); in free_rspq_fl()
2515 netif_napi_del(&rspq->napi); in free_rspq_fl()
2516 rspq->netdev = NULL; in free_rspq_fl()
2517 rspq->cntxt_id = 0; in free_rspq_fl()
2518 rspq->abs_id = 0; in free_rspq_fl()
2519 rspq->desc = NULL; in free_rspq_fl()
2549 if (rxq->rspq.desc) in t4vf_free_sge_resources()
2550 free_rspq_fl(adapter, &rxq->rspq, &rxq->fl); in t4vf_free_sge_resources()