Lines Matching refs:pi

78 static int alloc_iq_fl(struct port_info *pi, struct sge_iq *iq,
80 static int free_iq_fl(struct port_info *pi, struct sge_iq *iq,
87 static int alloc_rxq(struct port_info *pi, struct sge_rxq *rxq, int intr_idx,
89 static int free_rxq(struct port_info *pi, struct sge_rxq *rxq);
91 static int alloc_ofld_rxq(struct port_info *pi, struct sge_ofld_rxq *ofld_rxq,
93 static int free_ofld_rxq(struct port_info *pi, struct sge_ofld_rxq *ofld_rxq);
96 static int eth_eq_alloc(struct adapter *sc, struct port_info *pi,
99 static int ofld_eq_alloc(struct adapter *sc, struct port_info *pi,
102 static int alloc_eq(struct adapter *sc, struct port_info *pi,
106 static int alloc_wrq(struct adapter *sc, struct port_info *pi,
110 static int alloc_txq(struct port_info *pi, struct sge_txq *txq, int idx);
111 static int free_txq(struct port_info *pi, struct sge_txq *txq);
145 static int write_txpkt_wr(struct port_info *pi, struct sge_txq *txq, mblk_t *m,
147 static inline void write_ulp_cpl_sgl(struct port_info *pi, struct sge_txq *txq,
157 static kstat_t *setup_port_config_kstats(struct port_info *pi);
158 static kstat_t *setup_port_info_kstats(struct port_info *pi);
159 static kstat_t *setup_rxq_kstats(struct port_info *pi, struct sge_rxq *rxq,
163 static kstat_t *setup_txq_kstats(struct port_info *pi, struct sge_txq *txq,
380 first_vector(struct port_info *pi) in first_vector() argument
382 struct adapter *sc = pi->adapter; in first_vector()
391 if (i == pi->port_id) in first_vector()
418 port_intr_iq(struct port_info *pi, int idx) in port_intr_iq() argument
420 struct adapter *sc = pi->adapter; in port_intr_iq()
429 idx %= pi->nrxq + pi->nofldrxq; in port_intr_iq()
431 if (idx >= pi->nrxq) { in port_intr_iq()
432 idx -= pi->nrxq; in port_intr_iq()
433 iq = &s->ofld_rxq[pi->first_ofld_rxq + idx].iq; in port_intr_iq()
435 iq = &s->rxq[pi->first_rxq + idx].iq; in port_intr_iq()
438 idx %= max(pi->nrxq, pi->nofldrxq); in port_intr_iq()
440 if (pi->nrxq >= pi->nofldrxq) in port_intr_iq()
441 iq = &s->rxq[pi->first_rxq + idx].iq; in port_intr_iq()
443 iq = &s->ofld_rxq[pi->first_ofld_rxq + idx].iq; in port_intr_iq()
452 idx %= pi->nrxq; in port_intr_iq()
453 iq = &s->rxq[pi->first_rxq + idx].iq; in port_intr_iq()
460 t4_setup_port_queues(struct port_info *pi) in t4_setup_port_queues() argument
471 struct adapter *sc = pi->adapter; in t4_setup_port_queues()
474 pi->ksp_config = setup_port_config_kstats(pi); in t4_setup_port_queues()
475 pi->ksp_info = setup_port_info_kstats(pi); in t4_setup_port_queues()
478 intr_idx = first_vector(pi); in t4_setup_port_queues()
486 for_each_rxq(pi, i, rxq) { in t4_setup_port_queues()
488 init_iq(&rxq->iq, sc, pi->tmr_idx, pi->pktc_idx, p->qsize_rxq, in t4_setup_port_queues()
495 || (sc->intr_count > 1 && pi->nrxq >= pi->nofldrxq) in t4_setup_port_queues()
497 || (sc->intr_count > 1 && pi->nrxq) in t4_setup_port_queues()
501 rc = alloc_rxq(pi, rxq, intr_idx, i); in t4_setup_port_queues()
510 for_each_ofld_rxq(pi, i, ofld_rxq) { in t4_setup_port_queues()
512 init_iq(&ofld_rxq->iq, sc, pi->tmr_idx, pi->pktc_idx, in t4_setup_port_queues()
518 (sc->intr_count > 1 && pi->nofldrxq > pi->nrxq)) { in t4_setup_port_queues()
520 rc = alloc_ofld_rxq(pi, ofld_rxq, intr_idx); in t4_setup_port_queues()
534 for_each_rxq(pi, i, rxq) { in t4_setup_port_queues()
538 intr_idx = port_intr_iq(pi, j)->abs_id; in t4_setup_port_queues()
540 rc = alloc_rxq(pi, rxq, intr_idx, i); in t4_setup_port_queues()
547 for_each_ofld_rxq(pi, i, ofld_rxq) { in t4_setup_port_queues()
551 intr_idx = port_intr_iq(pi, j)->abs_id; in t4_setup_port_queues()
552 rc = alloc_ofld_rxq(pi, ofld_rxq, intr_idx); in t4_setup_port_queues()
562 for_each_txq(pi, i, txq) { in t4_setup_port_queues()
565 iqid = port_intr_iq(pi, j)->cntxt_id; in t4_setup_port_queues()
566 init_eq(sc, &txq->eq, EQ_ETH, p->qsize_txq, pi->tx_chan, iqid); in t4_setup_port_queues()
567 rc = alloc_txq(pi, txq, i); in t4_setup_port_queues()
573 for_each_ofld_txq(pi, i, ofld_txq) { in t4_setup_port_queues()
576 iqid = port_intr_iq(pi, j)->cntxt_id; in t4_setup_port_queues()
577 init_eq(sc, &ofld_txq->eq, EQ_OFLD, p->qsize_txq, pi->tx_chan, in t4_setup_port_queues()
579 rc = alloc_wrq(sc, pi, ofld_txq, i); in t4_setup_port_queues()
587 ctrlq = &sc->sge.ctrlq[pi->port_id]; in t4_setup_port_queues()
588 iqid = port_intr_iq(pi, 0)->cntxt_id; in t4_setup_port_queues()
589 init_eq(sc, &ctrlq->eq, EQ_CTRL, CTRL_EQ_QSIZE, pi->tx_chan, iqid); in t4_setup_port_queues()
590 rc = alloc_wrq(sc, pi, ctrlq, 0); in t4_setup_port_queues()
595 (void) t4_teardown_port_queues(pi); in t4_setup_port_queues()
604 t4_teardown_port_queues(struct port_info *pi) in t4_teardown_port_queues() argument
610 struct adapter *sc = pi->adapter; in t4_teardown_port_queues()
615 if (pi->ksp_config != NULL) { in t4_teardown_port_queues()
616 kstat_delete(pi->ksp_config); in t4_teardown_port_queues()
617 pi->ksp_config = NULL; in t4_teardown_port_queues()
619 if (pi->ksp_info != NULL) { in t4_teardown_port_queues()
620 kstat_delete(pi->ksp_info); in t4_teardown_port_queues()
621 pi->ksp_info = NULL; in t4_teardown_port_queues()
625 (void) free_wrq(sc, &sc->sge.ctrlq[pi->port_id]); in t4_teardown_port_queues()
628 for_each_txq(pi, i, txq) { in t4_teardown_port_queues()
629 (void) free_txq(pi, txq); in t4_teardown_port_queues()
633 for_each_ofld_txq(pi, i, ofld_txq) { in t4_teardown_port_queues()
637 for_each_ofld_rxq(pi, i, ofld_rxq) { in t4_teardown_port_queues()
639 (void) free_ofld_rxq(pi, ofld_rxq); in t4_teardown_port_queues()
643 for_each_rxq(pi, i, rxq) { in t4_teardown_port_queues()
645 (void) free_rxq(pi, rxq); in t4_teardown_port_queues()
652 for_each_rxq(pi, i, rxq) { in t4_teardown_port_queues()
654 (void) free_rxq(pi, rxq); in t4_teardown_port_queues()
658 for_each_ofld_rxq(pi, i, ofld_rxq) { in t4_teardown_port_queues()
660 (void) free_ofld_rxq(pi, ofld_rxq); in t4_teardown_port_queues()
1128 struct port_info *pi = txq->port; in t4_eth_tx() local
1129 struct adapter *sc = pi->adapter; in t4_eth_tx()
1177 write_ulp_cpl_sgl(pi, txq, &txpkts, &txinfo); in t4_eth_tx()
1194 rc = write_txpkt_wr(pi, txq, frame, &txinfo); in t4_eth_tx()
1310 alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl, in alloc_iq_fl() argument
1345 V_FW_IQ_CMD_VIID(pi->viid) | in alloc_iq_fl()
1347 c.iqdroprss_to_iqesize = cpu_to_be16(V_FW_IQ_CMD_IQPCIECH(pi->tx_chan) | in alloc_iq_fl()
1487 free_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl) in free_iq_fl() argument
1495 dip = pi ? pi->dip : sc->dip; in free_iq_fl()
1591 alloc_rxq(struct port_info *pi, struct sge_rxq *rxq, int intr_idx, int i) in alloc_rxq() argument
1595 rxq->port = pi; in alloc_rxq()
1596 rc = alloc_iq_fl(pi, &rxq->iq, &rxq->fl, intr_idx, in alloc_rxq()
1597 t4_get_tp_ch_map(pi->adapter, pi->tx_chan)); in alloc_rxq()
1601 rxq->ksp = setup_rxq_kstats(pi, rxq, i); in alloc_rxq()
1607 free_rxq(struct port_info *pi, struct sge_rxq *rxq) in free_rxq() argument
1616 rc = free_iq_fl(pi, &rxq->iq, &rxq->fl); in free_rxq()
1625 alloc_ofld_rxq(struct port_info *pi, struct sge_ofld_rxq *ofld_rxq, in alloc_ofld_rxq() argument
1630 rc = alloc_iq_fl(pi, &ofld_rxq->iq, &ofld_rxq->fl, intr_idx, in alloc_ofld_rxq()
1631 t4_get_tp_ch_map(pi->adapter, pi->tx_chan)); in alloc_ofld_rxq()
1639 free_ofld_rxq(struct port_info *pi, struct sge_ofld_rxq *ofld_rxq) in free_ofld_rxq() argument
1643 rc = free_iq_fl(pi, &ofld_rxq->iq, &ofld_rxq->fl); in free_ofld_rxq()
1697 eth_eq_alloc(struct adapter *sc, struct port_info *pi, struct sge_eq *eq) in eth_eq_alloc() argument
1710 F_FW_EQ_ETH_CMD_AUTOEQUEQE | V_FW_EQ_ETH_CMD_VIID(pi->viid)); in eth_eq_alloc()
1723 cxgb_printf(pi->dip, CE_WARN, in eth_eq_alloc()
1741 ofld_eq_alloc(struct adapter *sc, struct port_info *pi, struct sge_eq *eq) in ofld_eq_alloc() argument
1766 cxgb_printf(pi->dip, CE_WARN, in ofld_eq_alloc()
1784 alloc_eq(struct adapter *sc, struct port_info *pi, struct sge_eq *eq) in alloc_eq() argument
1810 rc = eth_eq_alloc(sc, pi, eq); in alloc_eq()
1815 rc = ofld_eq_alloc(sc, pi, eq); in alloc_eq()
1903 alloc_wrq(struct adapter *sc, struct port_info *pi, struct sge_wrq *wrq, in alloc_wrq() argument
1908 rc = alloc_eq(sc, pi, &wrq->eq); in alloc_wrq()
1939 alloc_txq(struct port_info *pi, struct sge_txq *txq, int idx) in alloc_txq() argument
1942 struct adapter *sc = pi->adapter; in alloc_txq()
1945 rc = alloc_eq(sc, pi, eq); in alloc_txq()
1949 txq->port = pi; in alloc_txq()
1980 txq->ksp = setup_txq_kstats(pi, txq, idx); in alloc_txq()
1986 free_txq(struct port_info *pi, struct sge_txq *txq) in free_txq() argument
1989 struct adapter *sc = pi->adapter; in free_txq()
2863 write_txpkt_wr(struct port_info *pi, struct sge_txq *txq, mblk_t *m, in write_txpkt_wr() argument
2941 if (is_t4(pi->adapter->params.chip)) in write_txpkt_wr()
2963 V_TXPKT_INTF(pi->tx_chan) | V_TXPKT_PF(pi->adapter->pf)); in write_txpkt_wr()
3015 write_ulp_cpl_sgl(struct port_info *pi, struct sge_txq *txq, in write_ulp_cpl_sgl() argument
3068 V_TXPKT_INTF(pi->tx_chan) | V_TXPKT_PF(pi->adapter->pf)); in write_ulp_cpl_sgl()
3511 setup_port_config_kstats(struct port_info *pi) in setup_port_config_kstats() argument
3516 dev_info_t *pdip = ddi_get_parent(pi->dip); in setup_port_config_kstats()
3517 uint8_t *ma = &pi->hw_addr[0]; in setup_port_config_kstats()
3522 ksp = kstat_create(T4_PORT_NAME, ddi_get_instance(pi->dip), "config", in setup_port_config_kstats()
3525 cxgb_printf(pi->dip, CE_WARN, "failed to initialize kstats."); in setup_port_config_kstats()
3539 KS_U_SET(idx, pi->port_id); in setup_port_config_kstats()
3540 KS_U_SET(nrxq, pi->nrxq); in setup_port_config_kstats()
3541 KS_U_SET(ntxq, pi->ntxq); in setup_port_config_kstats()
3542 KS_U_SET(first_rxq, pi->first_rxq); in setup_port_config_kstats()
3543 KS_U_SET(first_txq, pi->first_txq); in setup_port_config_kstats()
3552 ksp->ks_private = (void *)pi; in setup_port_config_kstats()
3559 setup_port_info_kstats(struct port_info *pi) in setup_port_info_kstats() argument
3567 ksp = kstat_create(T4_PORT_NAME, ddi_get_instance(pi->dip), "info", in setup_port_info_kstats()
3570 cxgb_printf(pi->dip, CE_WARN, "failed to initialize kstats."); in setup_port_info_kstats()
3590 ksp->ks_private = (void *)pi; in setup_port_info_kstats()
3601 struct port_info *pi = ksp->ks_private; in update_port_info_kstats() local
3609 if (pi->mod_type == FW_PORT_MOD_TYPE_NONE) in update_port_info_kstats()
3611 else if (pi->mod_type == FW_PORT_MOD_TYPE_UNKNOWN) in update_port_info_kstats()
3613 else if (pi->mod_type == FW_PORT_MOD_TYPE_NOTSUPPORTED) in update_port_info_kstats()
3615 else if (pi->mod_type > 0 && pi->mod_type < ARRAY_SIZE(mod_str)) in update_port_info_kstats()
3616 KS_C_SET(transceiver, "%s", mod_str[pi->mod_type]); in update_port_info_kstats()
3618 KS_C_SET(transceiver, "type %d", pi->mod_type); in update_port_info_kstats()
3620 #define GET_STAT(name) t4_read_reg64(pi->adapter, \ in update_port_info_kstats()
3621 PORT_REG(pi->port_id, A_MPS_PORT_STAT_##name##_L)) in update_port_info_kstats()
3622 #define GET_STAT_COM(name) t4_read_reg64(pi->adapter, \ in update_port_info_kstats()
3625 bgmap = G_NUMPORTS(t4_read_reg(pi->adapter, A_MPS_CMN_CTL)); in update_port_info_kstats()
3627 bgmap = (pi->port_id == 0) ? 0xf : 0; in update_port_info_kstats()
3629 bgmap = (pi->port_id < 2) ? (3 << (2 * pi->port_id)) : 0; in update_port_info_kstats()
3668 setup_rxq_kstats(struct port_info *pi, struct sge_rxq *rxq, int idx) in setup_rxq_kstats() argument
3678 ksp = kstat_create(T4_PORT_NAME, ddi_get_instance(pi->dip), str, "rxq", in setup_rxq_kstats()
3681 cxgb_printf(pi->dip, CE_WARN, in setup_rxq_kstats()
3742 setup_txq_kstats(struct port_info *pi, struct sge_txq *txq, int idx) in setup_txq_kstats() argument
3752 ksp = kstat_create(T4_PORT_NAME, ddi_get_instance(pi->dip), str, "txq", in setup_txq_kstats()
3755 cxgb_printf(pi->dip, CE_WARN, in setup_txq_kstats()