Lines Matching full:cpr
886 struct bnxt_cp_ring_info *cpr, in bnxt_get_agg() argument
893 &cpr->cp_desc_ring[CP_RING(cp_cons)][CP_IDX(cp_cons)]; in bnxt_get_agg()
906 static void bnxt_reuse_rx_agg_bufs(struct bnxt_cp_ring_info *cpr, u16 idx, in bnxt_reuse_rx_agg_bufs() argument
909 struct bnxt_napi *bnapi = cpr->bnapi; in bnxt_reuse_rx_agg_bufs()
930 agg = bnxt_get_agg(bp, cpr, idx, start + i); in bnxt_reuse_rx_agg_bufs()
1040 struct bnxt_cp_ring_info *cpr, in bnxt_rx_pages() argument
1044 struct bnxt_napi *bnapi = cpr->bnapi; in bnxt_rx_pages()
1064 agg = bnxt_get_agg(bp, cpr, idx, i); in bnxt_rx_pages()
1098 bnxt_reuse_rx_agg_bufs(cpr, idx, i, agg_bufs - i, tpa); in bnxt_rx_pages()
1116 static int bnxt_agg_bufs_valid(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, in bnxt_agg_bufs_valid() argument
1125 &cpr->cp_desc_ring[CP_RING(last)][CP_IDX(last)]; in bnxt_agg_bufs_valid()
1154 static int bnxt_discard_rx(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, in bnxt_discard_rx() argument
1177 if (!bnxt_agg_bufs_valid(bp, cpr, agg_bufs, &tmp_raw_cons)) in bnxt_discard_rx()
1325 static void bnxt_abort_tpa(struct bnxt_cp_ring_info *cpr, u16 idx, u32 agg_bufs) in bnxt_abort_tpa() argument
1328 bnxt_reuse_rx_agg_bufs(cpr, idx, 0, agg_bufs, true); in bnxt_abort_tpa()
1539 struct bnxt_cp_ring_info *cpr, in bnxt_tpa_end() argument
1545 struct bnxt_napi *bnapi = cpr->bnapi; in bnxt_tpa_end()
1557 int rc = bnxt_discard_rx(bp, cpr, raw_cons, tpa_end); in bnxt_tpa_end()
1585 if (!bnxt_agg_bufs_valid(bp, cpr, agg_bufs, raw_cons)) in bnxt_tpa_end()
1600 bnxt_abort_tpa(cpr, idx, agg_bufs); in bnxt_tpa_end()
1610 bnxt_abort_tpa(cpr, idx, agg_bufs); in bnxt_tpa_end()
1619 bnxt_abort_tpa(cpr, idx, agg_bufs); in bnxt_tpa_end()
1634 bnxt_abort_tpa(cpr, idx, agg_bufs); in bnxt_tpa_end()
1642 skb = bnxt_rx_pages(bp, cpr, skb, idx, agg_bufs, true); in bnxt_tpa_end()
1713 static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, in bnxt_rx_pkt() argument
1716 struct bnxt_napi *bnapi = cpr->bnapi; in bnxt_rx_pkt()
1733 &cpr->cp_desc_ring[CP_RING(cp_cons)][CP_IDX(cp_cons)]; in bnxt_rx_pkt()
1745 &cpr->cp_desc_ring[CP_RING(cp_cons)][CP_IDX(cp_cons)]; in bnxt_rx_pkt()
1764 skb = bnxt_tpa_end(bp, cpr, &tmp_raw_cons, in bnxt_rx_pkt()
1782 int rc1 = bnxt_discard_rx(bp, cpr, &tmp_raw_cons, rxcmp); in bnxt_rx_pkt()
1802 if (!bnxt_agg_bufs_valid(bp, cpr, agg_bufs, &tmp_raw_cons)) in bnxt_rx_pkt()
1816 bnxt_reuse_rx_agg_bufs(cpr, cp_cons, 0, agg_bufs, in bnxt_rx_pkt()
1845 bnxt_reuse_rx_agg_bufs(cpr, cp_cons, 0, in bnxt_rx_pkt()
1866 skb = bnxt_rx_pages(bp, cpr, skb, cp_cons, agg_bufs, false); in bnxt_rx_pkt()
1919 cpr->rx_packets += 1; in bnxt_rx_pkt()
1920 cpr->rx_bytes += len; in bnxt_rx_pkt()
1936 struct bnxt_cp_ring_info *cpr, in bnxt_force_rx_discard() argument
1947 &cpr->cp_desc_ring[CP_RING(cp_cons)][CP_IDX(cp_cons)]; in bnxt_force_rx_discard()
1952 &cpr->cp_desc_ring[CP_RING(cp_cons)][CP_IDX(cp_cons)]; in bnxt_force_rx_discard()
1972 return bnxt_rx_pkt(bp, cpr, raw_cons, event); in bnxt_force_rx_discard()
2226 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_msix() local
2227 u32 cons = RING_CMP(cpr->cp_raw_cons); in bnxt_msix()
2229 cpr->event_ctr++; in bnxt_msix()
2230 prefetch(&cpr->cp_desc_ring[CP_RING(cons)][CP_IDX(cons)]); in bnxt_msix()
2235 static inline int bnxt_has_work(struct bnxt *bp, struct bnxt_cp_ring_info *cpr) in bnxt_has_work() argument
2237 u32 raw_cons = cpr->cp_raw_cons; in bnxt_has_work()
2241 txcmp = &cpr->cp_desc_ring[CP_RING(cons)][CP_IDX(cons)]; in bnxt_has_work()
2250 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_inta() local
2251 u32 cons = RING_CMP(cpr->cp_raw_cons); in bnxt_inta()
2254 prefetch(&cpr->cp_desc_ring[CP_RING(cons)][CP_IDX(cons)]); in bnxt_inta()
2256 if (!bnxt_has_work(bp, cpr)) { in bnxt_inta()
2259 if (!(int_status & (0x10000 << cpr->cp_ring_struct.fw_ring_id))) in bnxt_inta()
2264 BNXT_CP_DB_IRQ_DIS(cpr->cp_db.doorbell); in bnxt_inta()
2274 static int __bnxt_poll_work(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, in __bnxt_poll_work() argument
2277 struct bnxt_napi *bnapi = cpr->bnapi; in __bnxt_poll_work()
2278 u32 raw_cons = cpr->cp_raw_cons; in __bnxt_poll_work()
2285 cpr->has_more_work = 0; in __bnxt_poll_work()
2286 cpr->had_work_done = 1; in __bnxt_poll_work()
2291 txcmp = &cpr->cp_desc_ring[CP_RING(cons)][CP_IDX(cons)]; in __bnxt_poll_work()
2307 cpr->has_more_work = 1; in __bnxt_poll_work()
2312 rc = bnxt_rx_pkt(bp, cpr, &raw_cons, &event); in __bnxt_poll_work()
2314 rc = bnxt_force_rx_discard(bp, cpr, &raw_cons, in __bnxt_poll_work()
2338 cpr->has_more_work = 1; in __bnxt_poll_work()
2356 cpr->cp_raw_cons = raw_cons; in __bnxt_poll_work()
2379 static int bnxt_poll_work(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, in bnxt_poll_work() argument
2382 struct bnxt_napi *bnapi = cpr->bnapi; in bnxt_poll_work()
2385 rx_pkts = __bnxt_poll_work(bp, cpr, budget); in bnxt_poll_work()
2391 bnxt_db_cq(bp, &cpr->cp_db, cpr->cp_raw_cons); in bnxt_poll_work()
2401 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_poll_nitroa0() local
2406 u32 raw_cons = cpr->cp_raw_cons; in bnxt_poll_nitroa0()
2415 txcmp = &cpr->cp_desc_ring[CP_RING(cp_cons)][CP_IDX(cp_cons)]; in bnxt_poll_nitroa0()
2428 &cpr->cp_desc_ring[CP_RING(cp_cons)][CP_IDX(cp_cons)]; in bnxt_poll_nitroa0()
2437 rc = bnxt_rx_pkt(bp, cpr, &raw_cons, &event); in bnxt_poll_nitroa0()
2457 cpr->cp_raw_cons = raw_cons; in bnxt_poll_nitroa0()
2458 BNXT_DB_CQ(&cpr->cp_db, cpr->cp_raw_cons); in bnxt_poll_nitroa0()
2466 if (!bnxt_has_work(bp, cpr) && rx_pkts < budget) { in bnxt_poll_nitroa0()
2468 BNXT_DB_CQ_ARM(&cpr->cp_db, cpr->cp_raw_cons); in bnxt_poll_nitroa0()
2477 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_poll() local
2481 work_done += bnxt_poll_work(bp, cpr, budget - work_done); in bnxt_poll()
2485 BNXT_DB_CQ_ARM(&cpr->cp_db, cpr->cp_raw_cons); in bnxt_poll()
2489 if (!bnxt_has_work(bp, cpr)) { in bnxt_poll()
2491 BNXT_DB_CQ_ARM(&cpr->cp_db, cpr->cp_raw_cons); in bnxt_poll()
2498 dim_update_sample(cpr->event_ctr, in bnxt_poll()
2499 cpr->rx_packets, in bnxt_poll()
2500 cpr->rx_bytes, in bnxt_poll()
2502 net_dim(&cpr->dim, dim_sample); in bnxt_poll()
2509 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in __bnxt_poll_cqs() local
2513 struct bnxt_cp_ring_info *cpr2 = cpr->cp_ring_arr[i]; in __bnxt_poll_cqs()
2518 cpr->has_more_work |= cpr2->has_more_work; in __bnxt_poll_cqs()
2527 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in __bnxt_poll_cqs_done() local
2531 struct bnxt_cp_ring_info *cpr2 = cpr->cp_ring_arr[i]; in __bnxt_poll_cqs_done()
2547 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_poll_p5() local
2548 u32 raw_cons = cpr->cp_raw_cons; in bnxt_poll_p5()
2554 if (cpr->has_more_work) { in bnxt_poll_p5()
2555 cpr->has_more_work = 0; in bnxt_poll_p5()
2560 nqcmp = &cpr->nq_desc_ring[CP_RING(cons)][CP_IDX(cons)]; in bnxt_poll_p5()
2563 if (cpr->has_more_work) in bnxt_poll_p5()
2567 cpr->cp_raw_cons = raw_cons; in bnxt_poll_p5()
2569 BNXT_DB_NQ_ARM_P5(&cpr->cp_db, in bnxt_poll_p5()
2570 cpr->cp_raw_cons); in bnxt_poll_p5()
2587 cpr2 = cpr->cp_ring_arr[idx]; in bnxt_poll_p5()
2590 cpr->has_more_work |= cpr2->has_more_work; in bnxt_poll_p5()
2597 if (raw_cons != cpr->cp_raw_cons) { in bnxt_poll_p5()
2598 cpr->cp_raw_cons = raw_cons; in bnxt_poll_p5()
2599 BNXT_DB_NQ_P5(&cpr->cp_db, raw_cons); in bnxt_poll_p5()
3119 struct bnxt_cp_ring_info *cpr; in bnxt_free_cp_rings() local
3126 cpr = &bnapi->cp_ring; in bnxt_free_cp_rings()
3127 ring = &cpr->cp_ring_struct; in bnxt_free_cp_rings()
3132 struct bnxt_cp_ring_info *cpr2 = cpr->cp_ring_arr[j]; in bnxt_free_cp_rings()
3138 cpr->cp_ring_arr[j] = NULL; in bnxt_free_cp_rings()
3148 struct bnxt_cp_ring_info *cpr; in bnxt_alloc_cp_sub_ring() local
3151 cpr = kzalloc(sizeof(*cpr), GFP_KERNEL); in bnxt_alloc_cp_sub_ring()
3152 if (!cpr) in bnxt_alloc_cp_sub_ring()
3155 ring = &cpr->cp_ring_struct; in bnxt_alloc_cp_sub_ring()
3159 rmem->pg_arr = (void **)cpr->cp_desc_ring; in bnxt_alloc_cp_sub_ring()
3160 rmem->dma_arr = cpr->cp_desc_mapping; in bnxt_alloc_cp_sub_ring()
3165 kfree(cpr); in bnxt_alloc_cp_sub_ring()
3166 cpr = NULL; in bnxt_alloc_cp_sub_ring()
3168 return cpr; in bnxt_alloc_cp_sub_ring()
3180 struct bnxt_cp_ring_info *cpr; in bnxt_alloc_cp_rings() local
3186 cpr = &bnapi->cp_ring; in bnxt_alloc_cp_rings()
3187 cpr->bnapi = bnapi; in bnxt_alloc_cp_rings()
3188 ring = &cpr->cp_ring_struct; in bnxt_alloc_cp_rings()
3206 cpr->cp_ring_arr[BNXT_RX_HDL] = cpr2; in bnxt_alloc_cp_rings()
3216 cpr->cp_ring_arr[BNXT_TX_HDL] = cpr2; in bnxt_alloc_cp_rings()
3232 struct bnxt_cp_ring_info *cpr; in bnxt_init_ring_struct() local
3240 cpr = &bnapi->cp_ring; in bnxt_init_ring_struct()
3241 ring = &cpr->cp_ring_struct; in bnxt_init_ring_struct()
3245 rmem->pg_arr = (void **)cpr->cp_desc_ring; in bnxt_init_ring_struct()
3246 rmem->dma_arr = cpr->cp_desc_mapping; in bnxt_init_ring_struct()
3398 struct bnxt_cp_ring_info *cpr = &bp->bnapi[i]->cp_ring; in bnxt_init_cp_rings() local
3399 struct bnxt_ring_struct *ring = &cpr->cp_ring_struct; in bnxt_init_cp_rings()
3402 cpr->rx_ring_coal.coal_ticks = bp->rx_coal.coal_ticks; in bnxt_init_cp_rings()
3403 cpr->rx_ring_coal.coal_bufs = bp->rx_coal.coal_bufs; in bnxt_init_cp_rings()
3405 struct bnxt_cp_ring_info *cpr2 = cpr->cp_ring_arr[j]; in bnxt_init_cp_rings()
3951 struct bnxt_cp_ring_info *cpr; in bnxt_init_stats() local
3959 cpr = &bnapi->cp_ring; in bnxt_init_stats()
3960 stats = &cpr->stats; in bnxt_init_stats()
4038 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_free_ring_stats() local
4040 bnxt_free_stats_mem(bp, &cpr->stats); in bnxt_free_ring_stats()
4053 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_alloc_stats() local
4055 cpr->stats.len = size; in bnxt_alloc_stats()
4056 rc = bnxt_alloc_stats_mem(bp, &cpr->stats, !i); in bnxt_alloc_stats()
4060 cpr->hw_stats_ctx_id = INVALID_STATS_CTX_ID; in bnxt_alloc_stats()
4116 struct bnxt_cp_ring_info *cpr; in bnxt_clear_ring_indices() local
4123 cpr = &bnapi->cp_ring; in bnxt_clear_ring_indices()
4124 cpr->cp_raw_cons = 0; in bnxt_clear_ring_indices()
4244 struct bnxt_cp_ring_info *cpr = in bnxt_alloc_mem() local
4247 cpr->cp_ring_struct.ring_mem.flags = in bnxt_alloc_mem()
4355 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_disable_int() local
4356 struct bnxt_ring_struct *ring = &cpr->cp_ring_struct; in bnxt_disable_int()
4359 bnxt_db_nq(bp, &cpr->cp_db, cpr->cp_raw_cons); in bnxt_disable_int()
4366 struct bnxt_cp_ring_info *cpr; in bnxt_cp_num_to_irq_num() local
4368 cpr = &bnapi->cp_ring; in bnxt_cp_num_to_irq_num()
4369 return cpr->cp_ring_struct.map_idx; in bnxt_cp_num_to_irq_num()
4393 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_enable_int() local
4395 bnxt_db_nq_arm(bp, &cpr->cp_db, cpr->cp_raw_cons); in bnxt_enable_int()
5080 struct bnxt_cp_ring_info *cpr; in bnxt_cp_ring_for_rx() local
5082 cpr = bnapi->cp_ring.cp_ring_arr[BNXT_RX_HDL]; in bnxt_cp_ring_for_rx()
5083 return cpr->cp_ring_struct.fw_ring_id; in bnxt_cp_ring_for_rx()
5093 struct bnxt_cp_ring_info *cpr; in bnxt_cp_ring_for_tx() local
5095 cpr = bnapi->cp_ring.cp_ring_arr[BNXT_TX_HDL]; in bnxt_cp_ring_for_tx()
5096 return cpr->cp_ring_struct.fw_ring_id; in bnxt_cp_ring_for_tx()
5759 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_hwrm_ring_alloc() local
5760 struct bnxt_ring_struct *ring = &cpr->cp_ring_struct; in bnxt_hwrm_ring_alloc()
5771 bnxt_set_db(bp, &cpr->cp_db, type, map_idx, ring->fw_ring_id); in bnxt_hwrm_ring_alloc()
5772 bnxt_db_nq(bp, &cpr->cp_db, cpr->cp_raw_cons); in bnxt_hwrm_ring_alloc()
5791 struct bnxt_cp_ring_info *cpr, *cpr2; in bnxt_hwrm_ring_alloc() local
5794 cpr = &bnapi->cp_ring; in bnxt_hwrm_ring_alloc()
5795 cpr2 = cpr->cp_ring_arr[BNXT_TX_HDL]; in bnxt_hwrm_ring_alloc()
5830 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_hwrm_ring_alloc() local
5834 cpr2 = cpr->cp_ring_arr[BNXT_RX_HDL]; in bnxt_hwrm_ring_alloc()
5973 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_hwrm_ring_free() local
5978 struct bnxt_cp_ring_info *cpr2 = cpr->cp_ring_arr[j]; in bnxt_hwrm_ring_free()
5990 ring = &cpr->cp_ring_struct; in bnxt_hwrm_ring_free()
6586 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in __bnxt_hwrm_set_coal_nq() local
6596 req.ring_id = cpu_to_le16(cpr->cp_ring_struct.fw_ring_id); in __bnxt_hwrm_set_coal_nq()
6610 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_hwrm_set_ring_coal() local
6618 coal.coal_ticks = cpr->rx_ring_coal.coal_ticks; in bnxt_hwrm_set_ring_coal()
6619 coal.coal_bufs = cpr->rx_ring_coal.coal_bufs; in bnxt_hwrm_set_ring_coal()
6709 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_hwrm_stat_ctx_free() local
6711 if (cpr->hw_stats_ctx_id != INVALID_STATS_CTX_ID) { in bnxt_hwrm_stat_ctx_free()
6712 req.stat_ctx_id = cpu_to_le32(cpr->hw_stats_ctx_id); in bnxt_hwrm_stat_ctx_free()
6721 cpr->hw_stats_ctx_id = INVALID_STATS_CTX_ID; in bnxt_hwrm_stat_ctx_free()
6744 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_hwrm_stat_ctx_alloc() local
6746 req.stats_dma_addr = cpu_to_le64(cpr->stats.hw_stats_map); in bnxt_hwrm_stat_ctx_alloc()
6753 cpr->hw_stats_ctx_id = le32_to_cpu(resp->stat_ctx_id); in bnxt_hwrm_stat_ctx_alloc()
6755 bp->grp_info[i].fw_stats_ctx = cpr->hw_stats_ctx_id; in bnxt_hwrm_stat_ctx_alloc()
7904 struct bnxt_cp_ring_info *cpr; in bnxt_accumulate_all_stats() local
7907 cpr = &bnapi->cp_ring; in bnxt_accumulate_all_stats()
7908 stats = &cpr->stats; in bnxt_accumulate_all_stats()
8927 struct bnxt_cp_ring_info *cpr = &bp->bnapi[i]->cp_ring; in bnxt_disable_napi() local
8931 cancel_work_sync(&cpr->dim.work); in bnxt_disable_napi()
8941 struct bnxt_cp_ring_info *cpr; in bnxt_enable_napi() local
8943 cpr = &bnapi->cp_ring; in bnxt_enable_napi()
8945 cpr->sw_stats.rx.rx_resets++; in bnxt_enable_napi()
8949 INIT_WORK(&cpr->dim.work, bnxt_dim_work); in bnxt_enable_napi()
8950 cpr->dim.mode = DIM_CQ_PERIOD_MODE_START_FROM_EQE; in bnxt_enable_napi()
10180 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_get_ring_stats() local
10181 u64 *sw = cpr->stats.sw_stats; in bnxt_get_ring_stats()
10691 struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring; in bnxt_dump_cp_sw_state() local
10695 i, cpr->cp_ring_struct.fw_ring_id, cpr->cp_raw_cons); in bnxt_dump_cp_sw_state()
10718 struct bnxt_cp_ring_info *cpr; in bnxt_hwrm_rx_ring_reset() local
10721 cpr = &bnapi->cp_ring; in bnxt_hwrm_rx_ring_reset()
10722 cp_ring_id = cpr->cp_ring_struct.fw_ring_id; in bnxt_hwrm_rx_ring_reset()
10882 struct bnxt_cp_ring_info *cpr; in bnxt_rx_ring_reset() local
10905 cpr = &rxr->bnapi->cp_ring; in bnxt_rx_ring_reset()
10906 cpr->sw_stats.rx.rx_resets++; in bnxt_rx_ring_reset()
11065 struct bnxt_cp_ring_info *cpr; in bnxt_chk_missed_irq() local
11072 cpr = &bnapi->cp_ring; in bnxt_chk_missed_irq()
11074 struct bnxt_cp_ring_info *cpr2 = cpr->cp_ring_arr[j]; in bnxt_chk_missed_irq()
11089 cpr->sw_stats.cmn.missed_irqs++; in bnxt_chk_missed_irq()