Lines Matching defs:bnapi
351 struct bnx2_napi *bnapi = &bp->bnx2_napi[0];
356 bnapi->cnic_present = 0;
361 bnapi->cnic_tag = bnapi->last_status_idx;
362 bnapi->cnic_present = 1;
369 ((unsigned long) bnapi->status_blk.msi +
404 struct bnx2_napi *bnapi = &bp->bnx2_napi[0];
409 bnapi->cnic_present = 0;
462 struct bnx2_napi *bnapi = &bp->bnx2_napi[0];
464 bnapi->cnic_tag = bnapi->last_status_idx;
596 struct bnx2_napi *bnapi;
599 bnapi = &bp->bnx2_napi[i];
600 BNX2_WR(bp, BNX2_PCICFG_INT_ACK_CMD, bnapi->int_num |
610 struct bnx2_napi *bnapi;
613 bnapi = &bp->bnx2_napi[i];
615 BNX2_WR(bp, BNX2_PCICFG_INT_ACK_CMD, bnapi->int_num |
618 bnapi->last_status_idx);
620 BNX2_WR(bp, BNX2_PCICFG_INT_ACK_CMD, bnapi->int_num |
622 bnapi->last_status_idx);
696 struct bnx2_napi *bnapi = &bp->bnx2_napi[i];
697 struct bnx2_tx_ring_info *txr = &bnapi->tx_ring;
716 struct bnx2_napi *bnapi = &bp->bnx2_napi[i];
717 struct bnx2_rx_ring_info *rxr = &bnapi->rx_ring;
748 struct bnx2_napi *bnapi = &bp->bnx2_napi[i];
749 struct bnx2_tx_ring_info *txr = &bnapi->tx_ring;
770 struct bnx2_napi *bnapi = &bp->bnx2_napi[i];
771 struct bnx2_rx_ring_info *rxr = &bnapi->rx_ring;
857 struct bnx2_napi *bnapi = &bp->bnx2_napi[0];
871 if (bnapi->status_blk.msi)
872 bnapi->status_blk.msi = NULL;
879 struct bnx2_napi *bnapi;
881 bnapi = &bp->bnx2_napi[0];
882 bnapi->status_blk.msi = bp->status_blk;
883 bnapi->hw_tx_cons_ptr =
884 &bnapi->status_blk.msi->status_tx_quick_consumer_index0;
885 bnapi->hw_rx_cons_ptr =
886 &bnapi->status_blk.msi->status_rx_quick_consumer_index0;
891 bnapi = &bp->bnx2_napi[i];
894 bnapi->status_blk.msix = sblk;
895 bnapi->hw_tx_cons_ptr =
897 bnapi->hw_rx_cons_ptr =
899 bnapi->int_num = i << 24;
2796 bnx2_phy_event_is_set(struct bnx2 *bp, struct bnx2_napi *bnapi, u32 event)
2798 struct status_block *sblk = bnapi->status_blk.msi;
2816 bnx2_phy_int(struct bnx2 *bp, struct bnx2_napi *bnapi)
2820 if (bnx2_phy_event_is_set(bp, bnapi, STATUS_ATTN_BITS_LINK_STATE))
2822 if (bnx2_phy_event_is_set(bp, bnapi, STATUS_ATTN_BITS_TIMER_ABORT))
2830 bnx2_get_hw_tx_cons(struct bnx2_napi *bnapi)
2834 cons = READ_ONCE(*bnapi->hw_tx_cons_ptr);
2842 bnx2_tx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget)
2844 struct bnx2_tx_ring_info *txr = &bnapi->tx_ring;
2850 index = (bnapi - bp->bnx2_napi);
2853 hw_cons = bnx2_get_hw_tx_cons(bnapi);
2910 hw_cons = bnx2_get_hw_tx_cons(bnapi);
3130 bnx2_get_hw_rx_cons(struct bnx2_napi *bnapi)
3134 cons = READ_ONCE(*bnapi->hw_rx_cons_ptr);
3142 bnx2_rx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget)
3144 struct bnx2_rx_ring_info *rxr = &bnapi->rx_ring;
3152 hw_cons = bnx2_get_hw_rx_cons(bnapi);
3275 skb_record_rx_queue(skb, bnapi - &bp->bnx2_napi[0]);
3276 napi_gro_receive(&bnapi->napi, skb);
3288 hw_cons = bnx2_get_hw_rx_cons(bnapi);
3312 struct bnx2_napi *bnapi = dev_instance;
3313 struct bnx2 *bp = bnapi->bp;
3315 prefetch(bnapi->status_blk.msi);
3324 napi_schedule(&bnapi->napi);
3332 struct bnx2_napi *bnapi = dev_instance;
3333 struct bnx2 *bp = bnapi->bp;
3335 prefetch(bnapi->status_blk.msi);
3341 napi_schedule(&bnapi->napi);
3349 struct bnx2_napi *bnapi = dev_instance;
3350 struct bnx2 *bp = bnapi->bp;
3351 struct status_block *sblk = bnapi->status_blk.msi;
3359 if ((sblk->status_idx == bnapi->last_status_idx) &&
3377 if (napi_schedule_prep(&bnapi->napi)) {
3378 bnapi->last_status_idx = sblk->status_idx;
3379 __napi_schedule(&bnapi->napi);
3386 bnx2_has_fast_work(struct bnx2_napi *bnapi)
3388 struct bnx2_tx_ring_info *txr = &bnapi->tx_ring;
3389 struct bnx2_rx_ring_info *rxr = &bnapi->rx_ring;
3391 if ((bnx2_get_hw_rx_cons(bnapi) != rxr->rx_cons) ||
3392 (bnx2_get_hw_tx_cons(bnapi) != txr->hw_tx_cons))
3401 bnx2_has_work(struct bnx2_napi *bnapi)
3403 struct status_block *sblk = bnapi->status_blk.msi;
3405 if (bnx2_has_fast_work(bnapi))
3409 if (bnapi->cnic_present && (bnapi->cnic_tag != sblk->status_idx))
3423 struct bnx2_napi *bnapi = &bp->bnx2_napi[0];
3426 if (bnx2_has_work(bnapi)) {
3431 if (bnapi->last_status_idx == bp->idle_chk_status_idx) {
3435 bnx2_msi(bp->irq_tbl[0].vector, bnapi);
3439 bp->idle_chk_status_idx = bnapi->last_status_idx;
3443 static void bnx2_poll_cnic(struct bnx2 *bp, struct bnx2_napi *bnapi)
3447 if (!bnapi->cnic_present)
3453 bnapi->cnic_tag = c_ops->cnic_handler(bp->cnic_data,
3454 bnapi->status_blk.msi);
3459 static void bnx2_poll_link(struct bnx2 *bp, struct bnx2_napi *bnapi)
3461 struct status_block *sblk = bnapi->status_blk.msi;
3468 bnx2_phy_int(bp, bnapi);
3479 static int bnx2_poll_work(struct bnx2 *bp, struct bnx2_napi *bnapi,
3482 struct bnx2_tx_ring_info *txr = &bnapi->tx_ring;
3483 struct bnx2_rx_ring_info *rxr = &bnapi->rx_ring;
3485 if (bnx2_get_hw_tx_cons(bnapi) != txr->hw_tx_cons)
3486 bnx2_tx_int(bp, bnapi, 0);
3488 if (bnx2_get_hw_rx_cons(bnapi) != rxr->rx_cons)
3489 work_done += bnx2_rx_int(bp, bnapi, budget - work_done);
3496 struct bnx2_napi *bnapi = container_of(napi, struct bnx2_napi, napi);
3497 struct bnx2 *bp = bnapi->bp;
3499 struct status_block_msix *sblk = bnapi->status_blk.msix;
3502 work_done = bnx2_poll_work(bp, bnapi, work_done, budget);
3506 bnapi->last_status_idx = sblk->status_idx;
3509 if (likely(!bnx2_has_fast_work(bnapi))) {
3512 BNX2_WR(bp, BNX2_PCICFG_INT_ACK_CMD, bnapi->int_num |
3514 bnapi->last_status_idx);
3523 struct bnx2_napi *bnapi = container_of(napi, struct bnx2_napi, napi);
3524 struct bnx2 *bp = bnapi->bp;
3526 struct status_block *sblk = bnapi->status_blk.msi;
3529 bnx2_poll_link(bp, bnapi);
3531 work_done = bnx2_poll_work(bp, bnapi, work_done, budget);
3534 bnx2_poll_cnic(bp, bnapi);
3537 /* bnapi->last_status_idx is used below to tell the hw how
3541 bnapi->last_status_idx = sblk->status_idx;
3547 if (likely(!bnx2_has_work(bnapi))) {
3552 bnapi->last_status_idx);
3558 bnapi->last_status_idx);
3562 bnapi->last_status_idx);
5127 struct bnx2_napi *bnapi;
5133 bnapi = &bp->bnx2_napi[i];
5134 txr = &bnapi->tx_ring;
5135 rxr = &bnapi->rx_ring;
5182 struct bnx2_napi *bnapi;
5185 bnapi = &bp->bnx2_napi[ring_num];
5186 txr = &bnapi->tx_ring;
5239 struct bnx2_napi *bnapi = &bp->bnx2_napi[ring_num];
5240 struct bnx2_rx_ring_info *rxr = &bnapi->rx_ring;
5432 struct bnx2_napi *bnapi = &bp->bnx2_napi[i];
5433 struct bnx2_tx_ring_info *txr = &bnapi->tx_ring;
5477 struct bnx2_napi *bnapi = &bp->bnx2_napi[i];
5478 struct bnx2_rx_ring_info *rxr = &bnapi->rx_ring;
5813 struct bnx2_napi *bnapi = &bp->bnx2_napi[0], *tx_napi;
5817 tx_napi = bnapi;
5820 rxr = &bnapi->rx_ring;
5858 rx_start_idx = bnx2_get_hw_rx_cons(bnapi);
5891 rx_idx = bnx2_get_hw_rx_cons(bnapi);
6598 struct bnx2_napi *bnapi;
6604 bnapi = &bp->bnx2_napi[i];
6605 txr = &bnapi->tx_ring;
8530 struct bnx2_napi *bnapi = &bp->bnx2_napi[i];
8539 bnapi->bp = bp;