Lines Matching defs:nt

222 static void ntb_transport_init_queue(struct ntb_netdev *nt,
244 static int ntb_set_mw(struct ntb_netdev *nt, int num_mw, unsigned int size);
245 static void ntb_transport_setup_qp_mw(struct ntb_netdev *nt,
248 static void ntb_transport_link_cleanup(struct ntb_netdev *nt);
371 struct ntb_netdev *nt = ifp->if_softc;
378 if (ifr->ifr_mtu > ntb_transport_max_size(nt->qp) -
400 struct ntb_netdev *nt = ifp->if_softc;
403 mtx_lock(&nt->tx_lock);
409 rc = ntb_transport_tx_enqueue(nt->qp, m_head, m_head,
418 callout_reset(&nt->qp->queue_full, hz / 1000,
425 mtx_unlock(&nt->tx_lock);
460 struct ntb_netdev *nt = &net_softc;
463 nt->max_qps = max_num_clients;
464 ntb_register_transport(ntb, nt);
465 mtx_init(&nt->tx_lock, "ntb transport tx", NULL, MTX_DEF);
466 mtx_init(&nt->rx_lock, "ntb transport rx", NULL, MTX_DEF);
468 nt->qps = malloc(nt->max_qps * sizeof(struct ntb_transport_qp),
471 nt->qp_bitmap = ((uint64_t) 1 << nt->max_qps) - 1;
473 for (i = 0; i < nt->max_qps; i++)
474 ntb_transport_init_queue(nt, i);
476 callout_init(&nt->link_work, 0);
486 callout_reset(&nt->link_work, 0, ntb_transport_link_work, nt);
492 free(nt->qps, M_NTB_IF);
500 struct ntb_netdev *nt = transport;
501 struct ntb_softc *ntb = nt->ntb;
504 nt->transport_link = NTB_LINK_DOWN;
506 callout_drain(&nt->link_work);
509 for (i = 0; i < nt->max_qps; i++)
510 if (!test_bit(i, &nt->qp_bitmap))
511 ntb_transport_free_queue(&nt->qps[i]);
517 if (nt->mw[i].virt_addr != NULL)
518 contigfree(nt->mw[i].virt_addr, nt->mw[i].size,
521 free(nt->qps, M_NTB_IF);
526 ntb_transport_init_queue(struct ntb_netdev *nt, unsigned int qp_num)
532 qp = &nt->qps[qp_num];
534 qp->transport = nt;
535 qp->ntb = nt->ntb;
540 if (nt->max_qps % NTB_NUM_MW && mw_num < nt->max_qps % NTB_NUM_MW)
541 num_qps_mw = nt->max_qps / NTB_NUM_MW + 1;
543 num_qps_mw = nt->max_qps / NTB_NUM_MW;
615 struct ntb_netdev *nt;
619 nt = ntb_find_transport(pdev);
620 if (nt == NULL)
623 free_queue = ffs(nt->qp_bitmap);
630 clear_bit(free_queue, &nt->qp_bitmap);
632 qp = &nt->qps[free_queue];
641 entry->cb_data = nt->ifp;
665 set_bit(free_queue, &nt->qp_bitmap);
997 struct ntb_netdev *nt = data;
1002 device_printf(ntb_get_device(nt->ntb), "HW link up\n");
1003 callout_reset(&nt->link_work, 0, ntb_transport_link_work, nt);
1007 device_printf(ntb_get_device(nt->ntb), "HW link down\n");
1008 ntb_transport_link_cleanup(nt);
1019 struct ntb_netdev *nt = arg;
1020 struct ntb_softc *ntb = nt->ntb;
1038 rc = ntb_write_remote_spad(ntb, IF_NTB_NUM_QPS, nt->max_qps);
1062 if (val != nt->max_qps)
1072 rc = ntb_set_mw(nt, 0, val);
1083 rc = ntb_set_mw(nt, 1, val);
1087 nt->transport_link = NTB_LINK_UP;
1091 for (i = 0; i < nt->max_qps; i++) {
1092 qp = &nt->qps[i];
1094 ntb_transport_setup_qp_mw(nt, i);
1104 callout_reset(&nt->link_work,
1105 NTB_LINK_DOWN_TIMEOUT * hz / 1000, ntb_transport_link_work, nt);
1109 ntb_set_mw(struct ntb_netdev *nt, int num_mw, unsigned int size)
1111 struct ntb_transport_mw *mw = &nt->mw[num_mw];
1127 ntb_set_mw_addr(nt->ntb, num_mw, mw->dma_addr);
1133 ntb_transport_setup_qp_mw(struct ntb_netdev *nt, unsigned int qp_num)
1135 struct ntb_transport_qp *qp = &nt->qps[qp_num];
1141 if (nt->max_qps % NTB_NUM_MW && mw_num < nt->max_qps % NTB_NUM_MW)
1142 num_qps_mw = nt->max_qps / NTB_NUM_MW + 1;
1144 num_qps_mw = nt->max_qps / NTB_NUM_MW;
1146 rx_size = (unsigned int) nt->mw[mw_num].size / num_qps_mw;
1147 qp->remote_rx_info = (void *)((uint8_t *)nt->mw[mw_num].virt_addr +
1177 struct ntb_netdev *nt = qp->transport;
1197 } else if (nt->transport_link == NTB_LINK_UP) {
1205 ntb_transport_link_cleanup(struct ntb_netdev *nt)
1209 if (nt->transport_link == NTB_LINK_DOWN)
1210 callout_drain(&nt->link_work);
1212 nt->transport_link = NTB_LINK_DOWN;
1215 for (i = 0; i < nt->max_qps; i++)
1216 if (!test_bit(i, &nt->qp_bitmap))
1217 ntb_qp_link_down(&nt->qps[i]);
1225 ntb_write_local_spad(nt->ntb, i, 0);
1239 struct ntb_netdev *nt = qp->transport;
1251 if (nt->transport_link == NTB_LINK_UP)