Lines Matching refs:vi

125 alloc_nm_rxq(struct vi_info *vi, struct sge_nm_rxq *nm_rxq, int intr_idx,  in alloc_nm_rxq()  argument
134 struct adapter *sc = vi->adapter; in alloc_nm_rxq()
135 struct netmap_adapter *na = NA(vi->ifp); in alloc_nm_rxq()
139 len = vi->qsize_rxq * IQ_ESIZE; in alloc_nm_rxq()
151 nm_rxq->vi = vi; in alloc_nm_rxq()
154 nm_rxq->iq_sidx = vi->qsize_rxq - sc->params.sge.spg_len / IQ_ESIZE; in alloc_nm_rxq()
162 ctx = &vi->ctx; in alloc_nm_rxq()
163 children = SYSCTL_CHILDREN(vi->nm_rxq_oid); in alloc_nm_rxq()
193 free_nm_rxq(struct vi_info *vi, struct sge_nm_rxq *nm_rxq) in free_nm_rxq() argument
195 struct adapter *sc = vi->adapter; in free_nm_rxq()
197 if (!(vi->flags & VI_INIT_DONE)) in free_nm_rxq()
201 free_nm_rxq_hwq(vi, nm_rxq); in free_nm_rxq()
213 alloc_nm_txq(struct vi_info *vi, struct sge_nm_txq *nm_txq, int iqidx, int idx) in alloc_nm_txq() argument
217 struct port_info *pi = vi->pi; in alloc_nm_txq()
219 struct netmap_adapter *na = NA(vi->ifp); in alloc_nm_txq()
222 struct sysctl_oid_list *children = SYSCTL_CHILDREN(vi->nm_txq_oid); in alloc_nm_txq()
236 V_TXPKT_VF(vi->vin) | V_TXPKT_VF_VLD(vi->vfvld)); in alloc_nm_txq()
244 oid = SYSCTL_ADD_NODE(&vi->ctx, children, OID_AUTO, name, in alloc_nm_txq()
248 SYSCTL_ADD_UINT(&vi->ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD, in alloc_nm_txq()
250 SYSCTL_ADD_U16(&vi->ctx, children, OID_AUTO, "cidx", CTLFLAG_RD, in alloc_nm_txq()
252 SYSCTL_ADD_U16(&vi->ctx, children, OID_AUTO, "pidx", CTLFLAG_RD, in alloc_nm_txq()
259 free_nm_txq(struct vi_info *vi, struct sge_nm_txq *nm_txq) in free_nm_txq() argument
261 struct adapter *sc = vi->adapter; in free_nm_txq()
263 if (!(vi->flags & VI_INIT_DONE)) in free_nm_txq()
267 free_nm_txq_hwq(vi, nm_txq); in free_nm_txq()
277 alloc_nm_rxq_hwq(struct vi_info *vi, struct sge_nm_rxq *nm_rxq) in alloc_nm_rxq_hwq() argument
281 struct adapter *sc = vi->adapter; in alloc_nm_rxq_hwq()
282 struct port_info *pi = vi->pi; in alloc_nm_rxq_hwq()
284 struct netmap_adapter *na = NA(vi->ifp); in alloc_nm_rxq_hwq()
292 bzero(nm_rxq->iq_desc, vi->qsize_rxq * IQ_ESIZE); in alloc_nm_rxq_hwq()
314 V_FW_IQ_CMD_VIID(vi->viid) | in alloc_nm_rxq_hwq()
320 c.iqsize = htobe16(vi->qsize_rxq); in alloc_nm_rxq_hwq()
353 MPASS(nm_rxq->iq_sidx == vi->qsize_rxq - sp->spg_len / IQ_ESIZE); in alloc_nm_rxq_hwq()
393 free_nm_rxq_hwq(struct vi_info *vi, struct sge_nm_rxq *nm_rxq) in free_nm_rxq_hwq() argument
395 struct adapter *sc = vi->adapter; in free_nm_rxq_hwq()
408 alloc_nm_txq_hwq(struct vi_info *vi, struct sge_nm_txq *nm_txq) in alloc_nm_txq_hwq() argument
412 struct adapter *sc = vi->adapter; in alloc_nm_txq_hwq()
413 struct netmap_adapter *na = NA(vi->ifp); in alloc_nm_txq_hwq()
436 F_FW_EQ_ETH_CMD_AUTOEQUEQE | V_FW_EQ_ETH_CMD_VIID(vi->viid)); in alloc_nm_txq_hwq()
439 V_FW_EQ_ETH_CMD_PCIECHN(vi->pi->hw_port) | F_FW_EQ_ETH_CMD_FETCHRO | in alloc_nm_txq_hwq()
450 device_printf(vi->dev, in alloc_nm_txq_hwq()
495 device_printf(vi->dev, in alloc_nm_txq_hwq()
506 free_nm_txq_hwq(struct vi_info *vi, struct sge_nm_txq *nm_txq) in free_nm_txq_hwq() argument
508 struct adapter *sc = vi->adapter; in free_nm_txq_hwq()
520 cxgbe_netmap_simple_rss(struct adapter *sc, struct vi_info *vi, in cxgbe_netmap_simple_rss() argument
533 for_each_nm_rxq(vi, j, nm_rxq) { in cxgbe_netmap_simple_rss()
548 rss = vi->rss; in cxgbe_netmap_simple_rss()
549 defq = vi->rss[0]; in cxgbe_netmap_simple_rss()
551 for (i = 0; i < vi->rss_size;) { in cxgbe_netmap_simple_rss()
552 for_each_nm_rxq(vi, j, nm_rxq) { in cxgbe_netmap_simple_rss()
561 vi->nm_rss[i++] = nm_rxq->iq_abs_id; in cxgbe_netmap_simple_rss()
562 if (i == vi->rss_size) in cxgbe_netmap_simple_rss()
567 rss = vi->nm_rss; in cxgbe_netmap_simple_rss()
570 rc = -t4_config_rss_range(sc, sc->mbox, vi->viid, 0, vi->rss_size, rss, in cxgbe_netmap_simple_rss()
571 vi->rss_size); in cxgbe_netmap_simple_rss()
575 rc = -t4_config_vi_rss(sc, sc->mbox, vi->viid, vi->hashen, defq, 0, 0); in cxgbe_netmap_simple_rss()
588 cxgbe_netmap_split_rss(struct adapter *sc, struct vi_info *vi, in cxgbe_netmap_split_rss() argument
599 MPASS(vi->nnmrxq > 1); in cxgbe_netmap_split_rss()
601 for_each_nm_rxq(vi, i, nm_rxq) { in cxgbe_netmap_split_rss()
602 j = i / ((vi->nnmrxq + 1) / 2); in cxgbe_netmap_split_rss()
615 return (cxgbe_netmap_simple_rss(sc, vi, ifp, na)); in cxgbe_netmap_split_rss()
630 nm_rxq = &sc->sge.nm_rxq[vi->first_nm_rxq]; in cxgbe_netmap_split_rss()
631 while (i < vi->rss_size / 2) { in cxgbe_netmap_split_rss()
632 for (j = 0; j < (vi->nnmrxq + 1) / 2; j++) { in cxgbe_netmap_split_rss()
644 vi->nm_rss[i++] = nm_rxq[j].iq_abs_id; in cxgbe_netmap_split_rss()
645 if (i == vi->rss_size / 2) in cxgbe_netmap_split_rss()
649 while (i < vi->rss_size) { in cxgbe_netmap_split_rss()
650 for (j = (vi->nnmrxq + 1) / 2; j < vi->nnmrxq; j++) { in cxgbe_netmap_split_rss()
662 vi->nm_rss[i++] = nm_rxq[j].iq_abs_id; in cxgbe_netmap_split_rss()
663 if (i == vi->rss_size) in cxgbe_netmap_split_rss()
668 rc = -t4_config_rss_range(sc, sc->mbox, vi->viid, 0, vi->rss_size, in cxgbe_netmap_split_rss()
669 vi->nm_rss, vi->rss_size); in cxgbe_netmap_split_rss()
673 rc = -t4_config_vi_rss(sc, sc->mbox, vi->viid, vi->hashen, defq, 0, 0); in cxgbe_netmap_split_rss()
681 cxgbe_netmap_rss(struct adapter *sc, struct vi_info *vi, if_t ifp, in cxgbe_netmap_rss() argument
685 if (nm_split_rss == 0 || vi->nnmrxq == 1) in cxgbe_netmap_rss()
686 return (cxgbe_netmap_simple_rss(sc, vi, ifp, na)); in cxgbe_netmap_rss()
688 return (cxgbe_netmap_split_rss(sc, vi, ifp, na)); in cxgbe_netmap_rss()
692 cxgbe_netmap_on(struct adapter *sc, struct vi_info *vi, if_t ifp, in cxgbe_netmap_on() argument
703 MPASS(vi->nnmrxq > 0); in cxgbe_netmap_on()
704 MPASS(vi->nnmtxq > 0); in cxgbe_netmap_on()
706 if ((vi->flags & VI_INIT_DONE) == 0 || in cxgbe_netmap_on()
733 for_each_nm_rxq(vi, i, nm_rxq) { in cxgbe_netmap_on()
738 alloc_nm_rxq_hwq(vi, nm_rxq); in cxgbe_netmap_on()
763 for_each_nm_txq(vi, i, nm_txq) { in cxgbe_netmap_on()
768 alloc_nm_txq_hwq(vi, nm_txq); in cxgbe_netmap_on()
773 if (vi->nm_rss == NULL) { in cxgbe_netmap_on()
774 vi->nm_rss = malloc(vi->rss_size * sizeof(uint16_t), M_CXGBE, in cxgbe_netmap_on()
778 return (cxgbe_netmap_rss(sc, vi, ifp, na)); in cxgbe_netmap_on()
782 cxgbe_netmap_off(struct adapter *sc, struct vi_info *vi, if_t ifp, in cxgbe_netmap_off() argument
791 MPASS(vi->nnmrxq > 0); in cxgbe_netmap_off()
792 MPASS(vi->nnmtxq > 0); in cxgbe_netmap_off()
797 if ((vi->flags & VI_INIT_DONE) == 0) in cxgbe_netmap_off()
801 rc = cxgbe_netmap_rss(sc, vi, ifp, na); in cxgbe_netmap_off()
805 for_each_nm_txq(vi, i, nm_txq) { in cxgbe_netmap_off()
813 device_printf(vi->dev, in cxgbe_netmap_off()
823 for_each_nm_rxq(vi, i, nm_rxq) { in cxgbe_netmap_off()
836 device_printf(vi->dev, in cxgbe_netmap_off()
859 struct vi_info *vi = if_getsoftc(ifp); in cxgbe_netmap_reg() local
860 struct adapter *sc = vi->adapter; in cxgbe_netmap_reg()
863 rc = begin_synchronized_op(sc, vi, SLEEP_OK | INTR_OK, "t4nmreg"); in cxgbe_netmap_reg()
867 rc = cxgbe_netmap_on(sc, vi, ifp, na); in cxgbe_netmap_reg()
869 rc = cxgbe_netmap_off(sc, vi, ifp, na); in cxgbe_netmap_reg()
1113 struct vi_info *vi = if_getsoftc(ifp); in cxgbe_netmap_txsync() local
1114 struct adapter *sc = vi->adapter; in cxgbe_netmap_txsync()
1115 struct sge_nm_txq *nm_txq = &sc->sge.nm_txq[vi->first_nm_txq + kring->ring_id]; in cxgbe_netmap_txsync()
1177 struct vi_info *vi = if_getsoftc(ifp); in cxgbe_netmap_rxsync() local
1178 struct adapter *sc = vi->adapter; in cxgbe_netmap_rxsync()
1179 struct sge_nm_rxq *nm_rxq = &sc->sge.nm_rxq[vi->first_nm_rxq + kring->ring_id]; in cxgbe_netmap_rxsync()
1261 cxgbe_nm_attach(struct vi_info *vi) in cxgbe_nm_attach() argument
1267 MPASS(vi->nnmrxq > 0); in cxgbe_nm_attach()
1268 MPASS(vi->ifp != NULL); in cxgbe_nm_attach()
1270 pi = vi->pi; in cxgbe_nm_attach()
1275 na.ifp = vi->ifp; in cxgbe_nm_attach()
1279 na.num_tx_desc = vi->qsize_txq - sc->params.sge.spg_len / EQ_ESIZE; in cxgbe_nm_attach()
1287 na.num_rx_desc = rounddown(vi->qsize_rxq, 8); in cxgbe_nm_attach()
1291 na.num_tx_rings = vi->nnmtxq; in cxgbe_nm_attach()
1292 na.num_rx_rings = vi->nnmrxq; in cxgbe_nm_attach()
1298 cxgbe_nm_detach(struct vi_info *vi) in cxgbe_nm_detach() argument
1301 MPASS(vi->nnmrxq > 0); in cxgbe_nm_detach()
1302 MPASS(vi->ifp != NULL); in cxgbe_nm_detach()
1304 netmap_detach(vi->ifp); in cxgbe_nm_detach()
1334 struct vi_info *vi = nm_rxq->vi; in service_nm_rxq() local
1335 struct adapter *sc = vi->adapter; in service_nm_rxq()
1336 if_t ifp = vi->ifp; in service_nm_rxq()