Lines Matching refs:txq

701 	struct vmxnet3_txqueue *txq;
712 txq = &sc->vmx_txq[i];
714 vmxnet3_txq_intr, txq, &intr->vmxi_handler);
719 txq->vxtxq_intr_idx = intr->vmxi_rid - 1;
766 struct vmxnet3_txqueue *txq;
775 txq = &sc->vmx_txq[i];
776 txs = txq->vxtxq_ts;
777 txs->intr_idx = txq->vxtxq_intr_idx;
936 struct vmxnet3_txqueue *txq;
941 txq = &sc->vmx_txq[i];
942 taskqueue_drain(sc->vmx_tq, &txq->vxtxq_defrtask);
991 struct vmxnet3_txqueue *txq;
994 txq = &sc->vmx_txq[q];
995 txr = &txq->vxtxq_cmd_ring;
997 snprintf(txq->vxtxq_name, sizeof(txq->vxtxq_name), "%s-tx%d",
999 mtx_init(&txq->vxtxq_mtx, txq->vxtxq_name, NULL, MTX_DEF);
1001 txq->vxtxq_sc = sc;
1002 txq->vxtxq_id = q;
1010 txq->vxtxq_comp_ring.vxcr_ndesc = sc->vmx_ntxdescs;
1013 TASK_INIT(&txq->vxtxq_defrtask, 0, vmxnet3_txq_tq_deferred, txq);
1015 txq->vxtxq_br = buf_ring_alloc(VMXNET3_DEF_BUFRING_SIZE, M_DEVBUF,
1016 M_NOWAIT, &txq->vxtxq_mtx);
1017 if (txq->vxtxq_br == NULL)
1086 vmxnet3_destroy_txq(struct vmxnet3_txqueue *txq)
1090 txr = &txq->vxtxq_cmd_ring;
1092 txq->vxtxq_sc = NULL;
1093 txq->vxtxq_id = -1;
1096 if (txq->vxtxq_br != NULL) {
1097 buf_ring_free(txq->vxtxq_br, M_DEVBUF);
1098 txq->vxtxq_br = NULL;
1107 if (mtx_initialized(&txq->vxtxq_mtx) != 0)
1108 mtx_destroy(&txq->vxtxq_mtx);
1206 struct vmxnet3_txqueue *txq;
1215 txq = &sc->vmx_txq[q];
1216 txr = &txq->vxtxq_cmd_ring;
1217 txc = &txq->vxtxq_comp_ring;
1275 struct vmxnet3_txqueue *txq;
1284 txq = &sc->vmx_txq[q];
1285 txr = &txq->vxtxq_cmd_ring;
1286 txc = &txq->vxtxq_comp_ring;
1519 struct vmxnet3_txqueue *txq;
1574 txq = &sc->vmx_txq[i];
1575 txs = txq->vxtxq_ts;
1577 txs->cmd_ring = txq->vxtxq_cmd_ring.vxtxr_dma.dma_paddr;
1578 txs->cmd_ring_len = txq->vxtxq_cmd_ring.vxtxr_ndesc;
1579 txs->comp_ring = txq->vxtxq_comp_ring.vxcr_dma.dma_paddr;
1580 txs->comp_ring_len = txq->vxtxq_comp_ring.vxcr_ndesc;
1581 txs->driver_data = vtophys(txq);
1848 vmxnet3_txq_eof(struct vmxnet3_txqueue *txq)
1859 sc = txq->vxtxq_sc;
1861 txr = &txq->vxtxq_cmd_ring;
1862 txc = &txq->vxtxq_comp_ring;
1865 if (netmap_tx_irq(sc->vmx_ifp, txq - sc->vmx_txq) != NM_IRQ_PASS)
1869 VMXNET3_TXQ_LOCK_ASSERT(txq);
1890 txq->vxtxq_stats.vmtxs_opackets++;
1891 txq->vxtxq_stats.vmtxs_obytes += m->m_pkthdr.len;
1893 txq->vxtxq_stats.vmtxs_omcasts++;
1903 txq->vxtxq_watchdog = 0;
2289 struct vmxnet3_txqueue *txq;
2293 txq = &sc->vmx_txq[0];
2309 VMXNET3_TXQ_LOCK(txq);
2310 vmxnet3_txq_eof(txq);
2311 vmxnet3_txq_start(txq);
2312 VMXNET3_TXQ_UNLOCK(txq);
2321 struct vmxnet3_txqueue *txq;
2323 txq = xtxq;
2324 sc = txq->vxtxq_sc;
2327 vmxnet3_disable_intr(sc, txq->vxtxq_intr_idx);
2329 VMXNET3_TXQ_LOCK(txq);
2330 vmxnet3_txq_eof(txq);
2331 vmxnet3_txq_start(txq);
2332 VMXNET3_TXQ_UNLOCK(txq);
2334 vmxnet3_enable_intr(sc, txq->vxtxq_intr_idx);
2373 vmxnet3_txstop(struct vmxnet3_softc *sc, struct vmxnet3_txqueue *txq)
2379 txr = &txq->vxtxq_cmd_ring;
2430 struct vmxnet3_txqueue *txq;
2444 txq = &sc->vmx_txq[i];
2445 VMXNET3_TXQ_LOCK(txq);
2446 VMXNET3_TXQ_UNLOCK(txq);
2478 vmxnet3_txinit(struct vmxnet3_softc *sc, struct vmxnet3_txqueue *txq)
2483 txr = &txq->vxtxq_cmd_ring;
2491 vmxnet3_netmap_txq_init(sc, txq);
2494 txc = &txq->vxtxq_comp_ring;
2707 vmxnet3_txq_offload_ctx(struct vmxnet3_txqueue *txq, struct mbuf *m,
2774 txq->vxtxq_stats.vmtxs_tso++;
2810 txq->vxtxq_stats.vmtxs_csum++;
2816 vmxnet3_txq_load_mbuf(struct vmxnet3_txqueue *txq, struct mbuf **m0,
2824 txr = &txq->vxtxq_cmd_ring;
2842 txq->vxtxq_sc->vmx_stats.vmst_defrag_failed++;
2844 txq->vxtxq_sc->vmx_stats.vmst_defragged++;
2850 vmxnet3_txq_unload_mbuf(struct vmxnet3_txqueue *txq, bus_dmamap_t dmap)
2854 txr = &txq->vxtxq_cmd_ring;
2859 vmxnet3_txq_encap(struct vmxnet3_txqueue *txq, struct mbuf **m0)
2869 sc = txq->vxtxq_sc;
2872 txr = &txq->vxtxq_cmd_ring;
2875 error = vmxnet3_txq_load_mbuf(txq, m0, dmap, segs, &nsegs);
2885 txq->vxtxq_stats.vmtxs_full++;
2886 vmxnet3_txq_unload_mbuf(txq, dmap);
2889 error = vmxnet3_txq_offload_ctx(txq, m, &etype, &proto, &start);
2891 txq->vxtxq_stats.vmtxs_offload_failed++;
2892 vmxnet3_txq_unload_mbuf(txq, dmap);
2947 txq->vxtxq_ts->npending += nsegs;
2948 if (txq->vxtxq_ts->npending >= txq->vxtxq_ts->intr_threshold) {
2949 txq->vxtxq_ts->npending = 0;
2950 vmxnet3_write_bar0(sc, VMXNET3_BAR0_TXH(txq->vxtxq_id),
2963 struct vmxnet3_txqueue *txq;
2969 txq = &sc->vmx_txq[0];
2970 txr = &txq->vxtxq_cmd_ring;
2973 VMXNET3_TXQ_LOCK_ASSERT(txq);
2993 if (vmxnet3_txq_encap(txq, &m_head) != 0) {
3004 txq->vxtxq_watchdog = VMXNET3_WATCHDOG_TIMEOUT;
3011 struct vmxnet3_txqueue *txq;
3014 txq = &sc->vmx_txq[0];
3016 VMXNET3_TXQ_LOCK(txq);
3018 VMXNET3_TXQ_UNLOCK(txq);
3024 vmxnet3_txq_mq_start_locked(struct vmxnet3_txqueue *txq, struct mbuf *m)
3032 sc = txq->vxtxq_sc;
3033 br = txq->vxtxq_br;
3035 txr = &txq->vxtxq_cmd_ring;
3039 VMXNET3_TXQ_LOCK_ASSERT(txq);
3065 if (vmxnet3_txq_encap(txq, &m) != 0) {
3079 txq->vxtxq_watchdog = VMXNET3_WATCHDOG_TIMEOUT;
3088 struct vmxnet3_txqueue *txq;
3100 txq = &sc->vmx_txq[i];
3102 if (VMXNET3_TXQ_TRYLOCK(txq) != 0) {
3103 error = vmxnet3_txq_mq_start_locked(txq, m);
3104 VMXNET3_TXQ_UNLOCK(txq);
3106 error = drbr_enqueue(ifp, txq->vxtxq_br, m);
3107 taskqueue_enqueue(sc->vmx_tq, &txq->vxtxq_defrtask);
3117 struct vmxnet3_txqueue *txq;
3119 txq = xtxq;
3120 sc = txq->vxtxq_sc;
3122 VMXNET3_TXQ_LOCK(txq);
3123 if (!drbr_empty(sc->vmx_ifp, txq->vxtxq_br))
3124 vmxnet3_txq_mq_start_locked(txq, NULL);
3125 VMXNET3_TXQ_UNLOCK(txq);
3131 vmxnet3_txq_start(struct vmxnet3_txqueue *txq)
3136 sc = txq->vxtxq_sc;
3143 if (!drbr_empty(ifp, txq->vxtxq_br))
3144 vmxnet3_txq_mq_start_locked(txq, NULL);
3151 struct vmxnet3_txqueue *txq;
3157 txq = &sc->vmx_txq[i];
3159 VMXNET3_TXQ_LOCK(txq);
3160 vmxnet3_txq_start(txq);
3161 VMXNET3_TXQ_UNLOCK(txq);
3392 struct vmxnet3_txqueue *txq;
3399 txq = &sc->vmx_txq[i];
3401 VMXNET3_TXQ_LOCK(txq);
3402 while ((m = buf_ring_dequeue_sc(txq->vxtxq_br)) != NULL)
3404 VMXNET3_TXQ_UNLOCK(txq);
3412 vmxnet3_watchdog(struct vmxnet3_txqueue *txq)
3416 sc = txq->vxtxq_sc;
3418 VMXNET3_TXQ_LOCK(txq);
3419 if (txq->vxtxq_watchdog == 0 || --txq->vxtxq_watchdog) {
3420 VMXNET3_TXQ_UNLOCK(txq);
3423 VMXNET3_TXQ_UNLOCK(txq);
3426 txq->vxtxq_id);
3598 vmxnet3_setup_txq_sysctl(struct vmxnet3_txqueue *txq,
3607 stats = &txq->vxtxq_stats;
3608 txstats = &txq->vxtxq_ts->stats;
3610 snprintf(namebuf, sizeof(namebuf), "txq%d", txq->vxtxq_id);
3613 txq->vxtxq_sysctl = list = SYSCTL_CHILDREN(node);
3720 struct vmxnet3_txqueue *txq = &sc->vmx_txq[i];
3722 node = SYSCTL_ADD_NODE(ctx, txq->vxtxq_sysctl, OID_AUTO,
3727 &txq->vxtxq_cmd_ring.vxtxr_head, 0, "");
3729 &txq->vxtxq_cmd_ring.vxtxr_next, 0, "");
3731 &txq->vxtxq_cmd_ring.vxtxr_ndesc, 0, "");
3733 &txq->vxtxq_cmd_ring.vxtxr_gen, 0, "");
3735 &txq->vxtxq_comp_ring.vxcr_next, 0, "");
3737 &txq->vxtxq_comp_ring.vxcr_ndesc, 0,"");
3739 &txq->vxtxq_comp_ring.vxcr_gen, 0, "");