static void ntb_free_callbacks(struct ntb_softc *ntb) { int i; for (i = 0; i < ntb->limits.max_db_bits; i++) ntb_unregister_db_callback(ntb, i); free(ntb->db_cb, M_NTB); }
static void ntb_free_callbacks(struct ntb_softc *ntb) { uint8_t i; for (i = 0; i < ntb->max_cbs; i++) ntb_unregister_db_callback(ntb, i); free(ntb->db_cb, M_NTB); ntb->max_cbs = 0; }
/** * ntb_unregister_transport() - Unregister the transport with the NTB HW driver * @ndev - ntb_device of the transport to be freed * * This function unregisters the transport from the HW driver and performs any * necessary cleanups. */ void ntb_unregister_transport(struct ntb_device *ndev) { int i; if (!ndev->ntb_transport) return; for (i = 0; i < ndev->max_cbs; i++) ntb_unregister_db_callback(ndev, i); ntb_unregister_event_callback(ndev); ndev->ntb_transport = NULL; }
static void ntb_transport_free_queue(struct ntb_transport_qp *qp) { struct ntb_queue_entry *entry; if (qp == NULL) return; callout_drain(&qp->link_work); ntb_unregister_db_callback(qp->ntb, qp->qp_num); while ((entry = ntb_list_rm(&qp->ntb_rx_free_q_lock, &qp->rx_free_q))) free(entry, M_NTB_IF); while ((entry = ntb_list_rm(&qp->ntb_rx_pend_q_lock, &qp->rx_pend_q))) free(entry, M_NTB_IF); while ((entry = ntb_list_rm(&qp->ntb_tx_free_q_lock, &qp->tx_free_q))) free(entry, M_NTB_IF); set_bit(qp->qp_num, &qp->transport->qp_bitmap); }