Lines Matching refs:tnapi
208 #define TG3_TX_WAKEUP_THRESH(tnapi) ((tnapi)->tx_pending / 4) argument
1020 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_enable_ints() local
1022 tw32_mailbox_f(tnapi->int_mbox, tnapi->last_tag << 24); in tg3_enable_ints()
1024 tw32_mailbox_f(tnapi->int_mbox, tnapi->last_tag << 24); in tg3_enable_ints()
1026 tp->coal_now |= tnapi->coal_now; in tg3_enable_ints()
1039 static inline unsigned int tg3_has_work(struct tg3_napi *tnapi) in tg3_has_work() argument
1041 struct tg3 *tp = tnapi->tp; in tg3_has_work()
1042 struct tg3_hw_status *sblk = tnapi->hw_status; in tg3_has_work()
1052 if (sblk->idx[0].tx_consumer != tnapi->tx_cons) in tg3_has_work()
1056 if (tnapi->rx_rcb_prod_idx && in tg3_has_work()
1057 *(tnapi->rx_rcb_prod_idx) != tnapi->rx_rcb_ptr) in tg3_has_work()
1068 static void tg3_int_reenable(struct tg3_napi *tnapi) in tg3_int_reenable() argument
1070 struct tg3 *tp = tnapi->tp; in tg3_int_reenable()
1072 tw32_mailbox(tnapi->int_mbox, tnapi->last_tag << 24); in tg3_int_reenable()
1078 if (!tg3_flag(tp, TAGGED_STATUS) && tg3_has_work(tnapi)) in tg3_int_reenable()
1080 HOSTCC_MODE_ENABLE | tnapi->coal_now); in tg3_int_reenable()
6492 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_dump_state() local
6498 tnapi->hw_status->status, in tg3_dump_state()
6499 tnapi->hw_status->status_tag, in tg3_dump_state()
6500 tnapi->hw_status->rx_jumbo_consumer, in tg3_dump_state()
6501 tnapi->hw_status->rx_consumer, in tg3_dump_state()
6502 tnapi->hw_status->rx_mini_consumer, in tg3_dump_state()
6503 tnapi->hw_status->idx[0].rx_producer, in tg3_dump_state()
6504 tnapi->hw_status->idx[0].tx_consumer); in tg3_dump_state()
6509 tnapi->last_tag, tnapi->last_irq_tag, in tg3_dump_state()
6510 tnapi->tx_prod, tnapi->tx_cons, tnapi->tx_pending, in tg3_dump_state()
6511 tnapi->rx_rcb_ptr, in tg3_dump_state()
6512 tnapi->prodring.rx_std_prod_idx, in tg3_dump_state()
6513 tnapi->prodring.rx_std_cons_idx, in tg3_dump_state()
6514 tnapi->prodring.rx_jmb_prod_idx, in tg3_dump_state()
6515 tnapi->prodring.rx_jmb_cons_idx); in tg3_dump_state()
6539 static inline u32 tg3_tx_avail(struct tg3_napi *tnapi) in tg3_tx_avail() argument
6543 return tnapi->tx_pending - in tg3_tx_avail()
6544 ((tnapi->tx_prod - tnapi->tx_cons) & (TG3_TX_RING_SIZE - 1)); in tg3_tx_avail()
6551 static void tg3_tx(struct tg3_napi *tnapi) in tg3_tx() argument
6553 struct tg3 *tp = tnapi->tp; in tg3_tx()
6554 u32 hw_idx = tnapi->hw_status->idx[0].tx_consumer; in tg3_tx()
6555 u32 sw_idx = tnapi->tx_cons; in tg3_tx()
6557 int index = tnapi - tp->napi; in tg3_tx()
6566 struct tg3_tx_ring_info *ri = &tnapi->tx_buffers[sw_idx]; in tg3_tx()
6576 if (tnapi->tx_ring[sw_idx].len_flags & TXD_FLAG_HWTSTAMP) { in tg3_tx()
6599 ri = &tnapi->tx_buffers[sw_idx]; in tg3_tx()
6605 ri = &tnapi->tx_buffers[sw_idx]; in tg3_tx()
6617 ri = &tnapi->tx_buffers[sw_idx]; in tg3_tx()
6639 tnapi->tx_cons = sw_idx; in tg3_tx()
6649 (tg3_tx_avail(tnapi) > TG3_TX_WAKEUP_THRESH(tnapi)))) { in tg3_tx()
6652 (tg3_tx_avail(tnapi) > TG3_TX_WAKEUP_THRESH(tnapi))) in tg3_tx()
6759 static void tg3_recycle_rx(struct tg3_napi *tnapi, in tg3_recycle_rx() argument
6764 struct tg3 *tp = tnapi->tp; in tg3_recycle_rx()
6829 static int tg3_rx(struct tg3_napi *tnapi, int budget) in tg3_rx() argument
6831 struct tg3 *tp = tnapi->tp; in tg3_rx()
6834 u32 sw_idx = tnapi->rx_rcb_ptr; in tg3_rx()
6837 struct tg3_rx_prodring_set *tpr = &tnapi->prodring; in tg3_rx()
6839 hw_idx = *(tnapi->rx_rcb_prod_idx); in tg3_rx()
6851 struct tg3_rx_buffer_desc *desc = &tnapi->rx_rcb[sw_idx]; in tg3_rx()
6879 tg3_recycle_rx(tnapi, tpr, opaque_key, in tg3_rx()
6883 tnapi->rx_dropped++; in tg3_rx()
6928 tg3_recycle_rx(tnapi, tpr, opaque_key, in tg3_rx()
6973 napi_gro_receive(&tnapi->napi, skb); in tg3_rx()
6995 hw_idx = *(tnapi->rx_rcb_prod_idx); in tg3_rx()
7001 tnapi->rx_rcb_ptr = sw_idx; in tg3_rx()
7002 tw32_rx_mbox(tnapi->consmbox, sw_idx); in tg3_rx()
7030 if (tnapi != &tp->napi[1]) { in tg3_rx()
7189 static int tg3_poll_work(struct tg3_napi *tnapi, int work_done, int budget) in tg3_poll_work() argument
7191 struct tg3 *tp = tnapi->tp; in tg3_poll_work()
7194 if (tnapi->hw_status->idx[0].tx_consumer != tnapi->tx_cons) { in tg3_poll_work()
7195 tg3_tx(tnapi); in tg3_poll_work()
7200 if (!tnapi->rx_rcb_prod_idx) in tg3_poll_work()
7207 if (*(tnapi->rx_rcb_prod_idx) != tnapi->rx_rcb_ptr) in tg3_poll_work()
7208 work_done += tg3_rx(tnapi, budget - work_done); in tg3_poll_work()
7210 if (tg3_flag(tp, ENABLE_RSS) && tnapi == &tp->napi[1]) { in tg3_poll_work()
7253 struct tg3_napi *tnapi = container_of(napi, struct tg3_napi, napi); in tg3_poll_msix() local
7254 struct tg3 *tp = tnapi->tp; in tg3_poll_msix()
7256 struct tg3_hw_status *sblk = tnapi->hw_status; in tg3_poll_msix()
7259 work_done = tg3_poll_work(tnapi, work_done, budget); in tg3_poll_msix()
7271 tnapi->last_tag = sblk->status_tag; in tg3_poll_msix()
7272 tnapi->last_irq_tag = tnapi->last_tag; in tg3_poll_msix()
7276 if (likely(sblk->idx[0].tx_consumer == tnapi->tx_cons && in tg3_poll_msix()
7277 *(tnapi->rx_rcb_prod_idx) == tnapi->rx_rcb_ptr)) { in tg3_poll_msix()
7282 if (tnapi == &tp->napi[1] && tp->rx_refill) in tg3_poll_msix()
7287 tw32_mailbox(tnapi->int_mbox, tnapi->last_tag << 24); in tg3_poll_msix()
7292 if (unlikely(tnapi == &tp->napi[1] && tp->rx_refill)) { in tg3_poll_msix()
7295 tnapi->coal_now); in tg3_poll_msix()
7347 struct tg3_napi *tnapi = container_of(napi, struct tg3_napi, napi); in tg3_poll() local
7348 struct tg3 *tp = tnapi->tp; in tg3_poll()
7350 struct tg3_hw_status *sblk = tnapi->hw_status; in tg3_poll()
7358 work_done = tg3_poll_work(tnapi, work_done, budget); in tg3_poll()
7371 tnapi->last_tag = sblk->status_tag; in tg3_poll()
7372 tnapi->last_irq_tag = tnapi->last_tag; in tg3_poll()
7377 if (likely(!tg3_has_work(tnapi))) { in tg3_poll()
7379 tg3_int_reenable(tnapi); in tg3_poll()
7398 struct tg3_napi *tnapi; in tg3_napi_disable() local
7402 tnapi = &tp->napi[i]; in tg3_napi_disable()
7403 if (tnapi->tx_buffers) { in tg3_napi_disable()
7408 if (tnapi->rx_rcb) { in tg3_napi_disable()
7413 napi_disable(&tnapi->napi); in tg3_napi_disable()
7420 struct tg3_napi *tnapi; in tg3_napi_enable() local
7424 tnapi = &tp->napi[i]; in tg3_napi_enable()
7425 napi_enable_locked(&tnapi->napi); in tg3_napi_enable()
7426 if (tnapi->tx_buffers) { in tg3_napi_enable()
7429 &tnapi->napi); in tg3_napi_enable()
7432 if (tnapi->rx_rcb) { in tg3_napi_enable()
7435 &tnapi->napi); in tg3_napi_enable()
7529 struct tg3_napi *tnapi = dev_id; in tg3_msi_1shot() local
7530 struct tg3 *tp = tnapi->tp; in tg3_msi_1shot()
7532 prefetch(tnapi->hw_status); in tg3_msi_1shot()
7533 if (tnapi->rx_rcb) in tg3_msi_1shot()
7534 prefetch(&tnapi->rx_rcb[tnapi->rx_rcb_ptr]); in tg3_msi_1shot()
7537 napi_schedule(&tnapi->napi); in tg3_msi_1shot()
7548 struct tg3_napi *tnapi = dev_id; in tg3_msi() local
7549 struct tg3 *tp = tnapi->tp; in tg3_msi()
7551 prefetch(tnapi->hw_status); in tg3_msi()
7552 if (tnapi->rx_rcb) in tg3_msi()
7553 prefetch(&tnapi->rx_rcb[tnapi->rx_rcb_ptr]); in tg3_msi()
7561 tw32_mailbox(tnapi->int_mbox, 0x00000001); in tg3_msi()
7563 napi_schedule(&tnapi->napi); in tg3_msi()
7570 struct tg3_napi *tnapi = dev_id; in tg3_interrupt() local
7571 struct tg3 *tp = tnapi->tp; in tg3_interrupt()
7572 struct tg3_hw_status *sblk = tnapi->hw_status; in tg3_interrupt()
7603 if (likely(tg3_has_work(tnapi))) { in tg3_interrupt()
7604 prefetch(&tnapi->rx_rcb[tnapi->rx_rcb_ptr]); in tg3_interrupt()
7605 napi_schedule(&tnapi->napi); in tg3_interrupt()
7619 struct tg3_napi *tnapi = dev_id; in tg3_interrupt_tagged() local
7620 struct tg3 *tp = tnapi->tp; in tg3_interrupt_tagged()
7621 struct tg3_hw_status *sblk = tnapi->hw_status; in tg3_interrupt_tagged()
7629 if (unlikely(sblk->status_tag == tnapi->last_irq_tag)) { in tg3_interrupt_tagged()
7656 tnapi->last_irq_tag = sblk->status_tag; in tg3_interrupt_tagged()
7661 prefetch(&tnapi->rx_rcb[tnapi->rx_rcb_ptr]); in tg3_interrupt_tagged()
7663 napi_schedule(&tnapi->napi); in tg3_interrupt_tagged()
7672 struct tg3_napi *tnapi = dev_id; in tg3_test_isr() local
7673 struct tg3 *tp = tnapi->tp; in tg3_test_isr()
7674 struct tg3_hw_status *sblk = tnapi->hw_status; in tg3_test_isr()
7755 static bool tg3_tx_frag_set(struct tg3_napi *tnapi, u32 *entry, u32 *budget, in tg3_tx_frag_set() argument
7759 struct tg3 *tp = tnapi->tp; in tg3_tx_frag_set()
7787 tnapi->tx_buffers[*entry].fragmented = true; in tg3_tx_frag_set()
7789 tg3_tx_set_bd(&tnapi->tx_ring[*entry], map, in tg3_tx_frag_set()
7800 tg3_tx_set_bd(&tnapi->tx_ring[*entry], map, in tg3_tx_frag_set()
7806 tnapi->tx_buffers[prvidx].fragmented = false; in tg3_tx_frag_set()
7810 tg3_tx_set_bd(&tnapi->tx_ring[*entry], map, in tg3_tx_frag_set()
7818 static void tg3_tx_skb_unmap(struct tg3_napi *tnapi, u32 entry, int last) in tg3_tx_skb_unmap() argument
7822 struct tg3_tx_ring_info *txb = &tnapi->tx_buffers[entry]; in tg3_tx_skb_unmap()
7827 dma_unmap_single(&tnapi->tp->pdev->dev, dma_unmap_addr(txb, mapping), in tg3_tx_skb_unmap()
7833 txb = &tnapi->tx_buffers[entry]; in tg3_tx_skb_unmap()
7840 txb = &tnapi->tx_buffers[entry]; in tg3_tx_skb_unmap()
7842 dma_unmap_page(&tnapi->tp->pdev->dev, in tg3_tx_skb_unmap()
7849 txb = &tnapi->tx_buffers[entry]; in tg3_tx_skb_unmap()
7855 static int tigon3_dma_hwbug_workaround(struct tg3_napi *tnapi, in tigon3_dma_hwbug_workaround() argument
7860 struct tg3 *tp = tnapi->tp; in tigon3_dma_hwbug_workaround()
7890 tnapi->tx_buffers[*entry].skb = new_skb; in tigon3_dma_hwbug_workaround()
7891 dma_unmap_addr_set(&tnapi->tx_buffers[*entry], in tigon3_dma_hwbug_workaround()
7894 if (tg3_tx_frag_set(tnapi, entry, budget, new_addr, in tigon3_dma_hwbug_workaround()
7897 tg3_tx_skb_unmap(tnapi, save_entry, -1); in tigon3_dma_hwbug_workaround()
7909 static bool tg3_tso_bug_gso_check(struct tg3_napi *tnapi, struct sk_buff *skb) in tg3_tso_bug_gso_check() argument
7914 return skb_shinfo(skb)->gso_segs < tnapi->tx_pending / 3; in tg3_tso_bug_gso_check()
7922 static int tg3_tso_bug(struct tg3 *tp, struct tg3_napi *tnapi, in tg3_tso_bug() argument
7929 if (unlikely(tg3_tx_avail(tnapi) <= frag_cnt_est)) { in tg3_tso_bug()
7938 if (tg3_tx_avail(tnapi) <= frag_cnt_est) in tg3_tso_bug()
7947 tnapi->tx_dropped++; in tg3_tso_bug()
7970 struct tg3_napi *tnapi; in __tg3_start_xmit() local
7979 tnapi = &tp->napi[skb_get_queue_mapping(skb)]; in __tg3_start_xmit()
7981 tnapi++; in __tg3_start_xmit()
7983 budget = tg3_tx_avail(tnapi); in __tg3_start_xmit()
8001 entry = tnapi->tx_prod; in __tg3_start_xmit()
8021 if (tg3_tso_bug_gso_check(tnapi, skb)) in __tg3_start_xmit()
8022 return tg3_tso_bug(tp, tnapi, txq, skb); in __tg3_start_xmit()
8029 if (tg3_tso_bug_gso_check(tnapi, skb)) in __tg3_start_xmit()
8030 return tg3_tso_bug(tp, tnapi, txq, skb); in __tg3_start_xmit()
8119 tnapi->tx_buffers[entry].skb = skb; in __tg3_start_xmit()
8120 dma_unmap_addr_set(&tnapi->tx_buffers[entry], mapping, mapping); in __tg3_start_xmit()
8127 if (tg3_tx_frag_set(tnapi, &entry, &budget, mapping, len, base_flags | in __tg3_start_xmit()
8150 tnapi->tx_buffers[entry].skb = NULL; in __tg3_start_xmit()
8151 dma_unmap_addr_set(&tnapi->tx_buffers[entry], mapping, in __tg3_start_xmit()
8157 tg3_tx_frag_set(tnapi, &entry, &budget, mapping, in __tg3_start_xmit()
8168 tg3_tx_skb_unmap(tnapi, tnapi->tx_prod, i); in __tg3_start_xmit()
8170 if (mss && tg3_tso_bug_gso_check(tnapi, skb)) { in __tg3_start_xmit()
8179 return tg3_tso_bug(tp, tnapi, txq, skb); in __tg3_start_xmit()
8185 entry = tnapi->tx_prod; in __tg3_start_xmit()
8186 budget = tg3_tx_avail(tnapi); in __tg3_start_xmit()
8187 if (tigon3_dma_hwbug_workaround(tnapi, &skb, &entry, &budget, in __tg3_start_xmit()
8198 tnapi->tx_prod = entry; in __tg3_start_xmit()
8199 if (unlikely(tg3_tx_avail(tnapi) <= (MAX_SKB_FRAGS + 1))) { in __tg3_start_xmit()
8208 if (tg3_tx_avail(tnapi) > TG3_TX_WAKEUP_THRESH(tnapi)) in __tg3_start_xmit()
8215 tg3_tx_skb_unmap(tnapi, tnapi->tx_prod, --i); in __tg3_start_xmit()
8216 tnapi->tx_buffers[tnapi->tx_prod].skb = NULL; in __tg3_start_xmit()
8220 tnapi->tx_dropped++; in __tg3_start_xmit()
8245 struct tg3_napi *tnapi; in tg3_start_xmit() local
8249 tnapi = &tp->napi[skb_queue_mapping]; in tg3_start_xmit()
8252 tnapi++; in tg3_start_xmit()
8254 tw32_tx_mbox(tnapi->prodmbox, tnapi->tx_prod); in tg3_start_xmit()
8638 struct tg3_napi *tnapi = &tp->napi[j]; in tg3_free_rings() local
8640 tg3_rx_prodring_free(tp, &tnapi->prodring); in tg3_free_rings()
8642 if (!tnapi->tx_buffers) in tg3_free_rings()
8646 struct sk_buff *skb = tnapi->tx_buffers[i].skb; in tg3_free_rings()
8651 tg3_tx_skb_unmap(tnapi, i, in tg3_free_rings()
8675 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_init_rings() local
8677 tnapi->last_tag = 0; in tg3_init_rings()
8678 tnapi->last_irq_tag = 0; in tg3_init_rings()
8679 tnapi->hw_status->status = 0; in tg3_init_rings()
8680 tnapi->hw_status->status_tag = 0; in tg3_init_rings()
8681 memset(tnapi->hw_status, 0, TG3_HW_STATUS_SIZE); in tg3_init_rings()
8683 tnapi->tx_prod = 0; in tg3_init_rings()
8684 tnapi->tx_cons = 0; in tg3_init_rings()
8685 if (tnapi->tx_ring) in tg3_init_rings()
8686 memset(tnapi->tx_ring, 0, TG3_TX_RING_BYTES); in tg3_init_rings()
8688 tnapi->rx_rcb_ptr = 0; in tg3_init_rings()
8689 if (tnapi->rx_rcb) in tg3_init_rings()
8690 memset(tnapi->rx_rcb, 0, TG3_RX_RCB_RING_BYTES(tp)); in tg3_init_rings()
8692 if (tnapi->prodring.rx_std && in tg3_init_rings()
8693 tg3_rx_prodring_alloc(tp, &tnapi->prodring)) { in tg3_init_rings()
8707 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_mem_tx_release() local
8709 if (tnapi->tx_ring) { in tg3_mem_tx_release()
8711 tnapi->tx_ring, tnapi->tx_desc_mapping); in tg3_mem_tx_release()
8712 tnapi->tx_ring = NULL; in tg3_mem_tx_release()
8715 kfree(tnapi->tx_buffers); in tg3_mem_tx_release()
8716 tnapi->tx_buffers = NULL; in tg3_mem_tx_release()
8723 struct tg3_napi *tnapi = &tp->napi[0]; in tg3_mem_tx_acquire() local
8729 tnapi++; in tg3_mem_tx_acquire()
8731 for (i = 0; i < tp->txq_cnt; i++, tnapi++) { in tg3_mem_tx_acquire()
8732 tnapi->tx_buffers = kzalloc_objs(struct tg3_tx_ring_info, in tg3_mem_tx_acquire()
8734 if (!tnapi->tx_buffers) in tg3_mem_tx_acquire()
8737 tnapi->tx_ring = dma_alloc_coherent(&tp->pdev->dev, in tg3_mem_tx_acquire()
8739 &tnapi->tx_desc_mapping, in tg3_mem_tx_acquire()
8741 if (!tnapi->tx_ring) in tg3_mem_tx_acquire()
8757 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_mem_rx_release() local
8759 tg3_rx_prodring_fini(tp, &tnapi->prodring); in tg3_mem_rx_release()
8761 if (!tnapi->rx_rcb) in tg3_mem_rx_release()
8766 tnapi->rx_rcb, in tg3_mem_rx_release()
8767 tnapi->rx_rcb_mapping); in tg3_mem_rx_release()
8768 tnapi->rx_rcb = NULL; in tg3_mem_rx_release()
8785 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_mem_rx_acquire() local
8787 if (tg3_rx_prodring_init(tp, &tnapi->prodring)) in tg3_mem_rx_acquire()
8797 tnapi->rx_rcb = dma_alloc_coherent(&tp->pdev->dev, in tg3_mem_rx_acquire()
8799 &tnapi->rx_rcb_mapping, in tg3_mem_rx_acquire()
8801 if (!tnapi->rx_rcb) in tg3_mem_rx_acquire()
8821 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_free_consistent() local
8823 if (tnapi->hw_status) { in tg3_free_consistent()
8825 tnapi->hw_status, in tg3_free_consistent()
8826 tnapi->status_mapping); in tg3_free_consistent()
8827 tnapi->hw_status = NULL; in tg3_free_consistent()
8860 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_alloc_consistent() local
8863 tnapi->hw_status = dma_alloc_coherent(&tp->pdev->dev, in tg3_alloc_consistent()
8865 &tnapi->status_mapping, in tg3_alloc_consistent()
8867 if (!tnapi->hw_status) in tg3_alloc_consistent()
8870 sblk = tnapi->hw_status; in tg3_alloc_consistent()
8895 tnapi->rx_rcb_prod_idx = prodptr; in tg3_alloc_consistent()
8897 tnapi->rx_rcb_prod_idx = &sblk->idx[0].rx_producer; in tg3_alloc_consistent()
9031 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_abort_hw() local
9032 if (tnapi->hw_status) in tg3_abort_hw()
9033 memset(tnapi->hw_status, 0, TG3_HW_STATUS_SIZE); in tg3_abort_hw()
9198 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_chip_reset() local
9199 if (tnapi->hw_status) { in tg3_chip_reset()
9200 tnapi->hw_status->status = 0; in tg3_chip_reset()
9201 tnapi->hw_status->status_tag = 0; in tg3_chip_reset()
9203 tnapi->last_tag = 0; in tg3_chip_reset()
9204 tnapi->last_irq_tag = 0; in tg3_chip_reset()
9457 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_halt() local
9459 tnapi->rx_dropped = 0; in tg3_halt()
9460 tnapi->tx_dropped = 0; in tg3_halt()
9641 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_tx_rcbs_init() local
9643 if (!tnapi->tx_ring) in tg3_tx_rcbs_init()
9646 tg3_set_bdinfo(tp, txrcb, tnapi->tx_desc_mapping, in tg3_tx_rcbs_init()
9685 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_rx_ret_rcbs_init() local
9687 if (!tnapi->rx_rcb) in tg3_rx_ret_rcbs_init()
9690 tg3_set_bdinfo(tp, rxrcb, tnapi->rx_rcb_mapping, in tg3_rx_ret_rcbs_init()
9701 struct tg3_napi *tnapi = &tp->napi[0]; in tg3_rings_reset() local
9743 memset(tnapi->hw_status, 0, TG3_HW_STATUS_SIZE); in tg3_rings_reset()
9747 ((u64) tnapi->status_mapping >> 32)); in tg3_rings_reset()
9749 ((u64) tnapi->status_mapping & 0xffffffff)); in tg3_rings_reset()
9753 for (i = 1, tnapi++; i < tp->irq_cnt; i++, tnapi++) { in tg3_rings_reset()
9754 u64 mapping = (u64)tnapi->status_mapping; in tg3_rings_reset()
9760 memset(tnapi->hw_status, 0, TG3_HW_STATUS_SIZE); in tg3_rings_reset()
11041 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_chk_missed_msi() local
11043 if (tg3_has_work(tnapi)) { in tg3_chk_missed_msi()
11044 if (tnapi->last_rx_cons == tnapi->rx_rcb_ptr && in tg3_chk_missed_msi()
11045 tnapi->last_tx_cons == tnapi->tx_cons) { in tg3_chk_missed_msi()
11046 if (tnapi->chk_msi_cnt < 1) { in tg3_chk_missed_msi()
11047 tnapi->chk_msi_cnt++; in tg3_chk_missed_msi()
11050 tg3_msi(0, tnapi); in tg3_chk_missed_msi()
11053 tnapi->chk_msi_cnt = 0; in tg3_chk_missed_msi()
11054 tnapi->last_rx_cons = tnapi->rx_rcb_ptr; in tg3_chk_missed_msi()
11055 tnapi->last_tx_cons = tnapi->tx_cons; in tg3_chk_missed_msi()
11324 struct tg3_napi *tnapi = &tp->napi[irq_num]; in tg3_request_irq() local
11329 name = &tnapi->irq_lbl[0]; in tg3_request_irq()
11330 if (tnapi->tx_buffers && tnapi->rx_rcb) in tg3_request_irq()
11331 snprintf(name, sizeof(tnapi->irq_lbl), in tg3_request_irq()
11333 else if (tnapi->tx_buffers) in tg3_request_irq()
11334 snprintf(name, sizeof(tnapi->irq_lbl), in tg3_request_irq()
11336 else if (tnapi->rx_rcb) in tg3_request_irq()
11337 snprintf(name, sizeof(tnapi->irq_lbl), in tg3_request_irq()
11340 snprintf(name, sizeof(tnapi->irq_lbl), in tg3_request_irq()
11356 return request_irq(tnapi->irq_vec, fn, flags, name, tnapi); in tg3_request_irq()
11361 struct tg3_napi *tnapi = &tp->napi[0]; in tg3_test_interrupt() local
11371 free_irq(tnapi->irq_vec, tnapi); in tg3_test_interrupt()
11382 err = request_irq(tnapi->irq_vec, tg3_test_isr, in tg3_test_interrupt()
11383 IRQF_SHARED, dev->name, tnapi); in tg3_test_interrupt()
11387 tnapi->hw_status->status &= ~SD_STATUS_UPDATED; in tg3_test_interrupt()
11391 tnapi->coal_now); in tg3_test_interrupt()
11396 int_mbox = tr32_mailbox(tnapi->int_mbox); in tg3_test_interrupt()
11406 tnapi->hw_status->status_tag != tnapi->last_tag) in tg3_test_interrupt()
11407 tw32_mailbox_f(tnapi->int_mbox, tnapi->last_tag << 24); in tg3_test_interrupt()
11414 free_irq(tnapi->irq_vec, tnapi); in tg3_test_interrupt()
11682 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_start() local
11684 free_irq(tnapi->irq_vec, tnapi); in tg3_start()
11753 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_start() local
11754 free_irq(tnapi->irq_vec, tnapi); in tg3_start()
11792 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_stop() local
11793 free_irq(tnapi->irq_vec, tnapi); in tg3_stop()
12062 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_get_nstats() local
12064 rx_dropped += tnapi->rx_dropped; in tg3_get_nstats()
12065 tx_dropped += tnapi->tx_dropped; in tg3_get_nstats()
13504 struct tg3_napi *tnapi, *rnapi; in tg3_run_loopback() local
13507 tnapi = &tp->napi[0]; in tg3_run_loopback()
13513 tnapi = &tp->napi[1]; in tg3_run_loopback()
13515 coal_now = tnapi->coal_now | rnapi->coal_now; in tg3_run_loopback()
13592 val = tnapi->tx_prod; in tg3_run_loopback()
13593 tnapi->tx_buffers[val].skb = skb; in tg3_run_loopback()
13594 dma_unmap_addr_set(&tnapi->tx_buffers[val], mapping, map); in tg3_run_loopback()
13603 budget = tg3_tx_avail(tnapi); in tg3_run_loopback()
13604 if (tg3_tx_frag_set(tnapi, &val, &budget, map, tx_len, in tg3_run_loopback()
13606 tnapi->tx_buffers[val].skb = NULL; in tg3_run_loopback()
13611 tnapi->tx_prod++; in tg3_run_loopback()
13616 tw32_tx_mbox(tnapi->prodmbox, tnapi->tx_prod); in tg3_run_loopback()
13617 tr32_mailbox(tnapi->prodmbox); in tg3_run_loopback()
13628 tx_idx = tnapi->hw_status->idx[0].tx_consumer; in tg3_run_loopback()
13630 if ((tx_idx == tnapi->tx_prod) && in tg3_run_loopback()
13635 tg3_tx_skb_unmap(tnapi, tnapi->tx_prod - 1, -1); in tg3_run_loopback()
13638 if (tx_idx != tnapi->tx_prod) in tg3_run_loopback()
17928 struct tg3_napi *tnapi = &tp->napi[i]; in tg3_init_one() local
17930 tnapi->tp = tp; in tg3_init_one()
17931 tnapi->tx_pending = TG3_DEF_TX_RING_PENDING; in tg3_init_one()
17933 tnapi->int_mbox = intmbx; in tg3_init_one()
17936 tnapi->consmbox = rcvmbx; in tg3_init_one()
17937 tnapi->prodmbox = sndmbx; in tg3_init_one()
17940 tnapi->coal_now = HOSTCC_MODE_COAL_VEC1_NOW << (i - 1); in tg3_init_one()
17942 tnapi->coal_now = HOSTCC_MODE_NOW; in tg3_init_one()