Lines Matching full:na

207 netmap_generic_irq(struct netmap_adapter *na, u_int q, u_int *work_done)  in netmap_generic_irq()  argument
209 if (unlikely(!nm_netmap_on(na))) in netmap_generic_irq()
212 netmap_common_irq(na, q, work_done); in netmap_generic_irq()
222 generic_netmap_unregister(struct netmap_adapter *na) in generic_netmap_unregister() argument
224 struct netmap_generic_adapter *gna = (struct netmap_generic_adapter *)na; in generic_netmap_unregister()
228 if (na->active_fds == 0) { in generic_netmap_unregister()
229 na->na_flags &= ~NAF_NETMAP_ON; in generic_netmap_unregister()
238 netmap_krings_mode_commit(na, /*onoff=*/0); in generic_netmap_unregister()
240 for_each_rx_kring(r, kring, na) { in generic_netmap_unregister()
252 for_each_tx_kring(r, kring, na) { in generic_netmap_unregister()
265 if (na->active_fds == 0) { in generic_netmap_unregister()
268 for_each_rx_kring(r, kring, na) { in generic_netmap_unregister()
272 for_each_tx_kring(r, kring, na) { in generic_netmap_unregister()
279 for (i=0; i<na->num_tx_desc; i++) { in generic_netmap_unregister()
296 nm_prinf("Emulated adapter for %s deactivated", na->name); in generic_netmap_unregister()
304 generic_netmap_register(struct netmap_adapter *na, int enable) in generic_netmap_register() argument
306 struct netmap_generic_adapter *gna = (struct netmap_generic_adapter *)na; in generic_netmap_register()
311 if (!na) { in generic_netmap_register()
317 return generic_netmap_unregister(na); in generic_netmap_register()
320 if (na->active_fds == 0) { in generic_netmap_register()
321 nm_prinf("Emulated adapter for %s activated", na->name); in generic_netmap_register()
322 /* Do all memory allocations when (na->active_fds == 0), to in generic_netmap_register()
326 gna->mit = nm_os_malloc(na->num_rx_rings * sizeof(struct nm_generic_mit)); in generic_netmap_register()
333 for_each_rx_kring(r, kring, na) { in generic_netmap_register()
335 nm_os_mitigation_init(&gna->mit[r], r, na); in generic_netmap_register()
348 for_each_tx_kring(r, kring, na) { in generic_netmap_register()
351 for_each_tx_kring(r, kring, na) { in generic_netmap_register()
353 nm_os_malloc(na->num_tx_desc * sizeof(struct mbuf *)); in generic_netmap_register()
367 netmap_krings_mode_commit(na, /*onoff=*/1); in generic_netmap_register()
369 for_each_tx_kring(r, kring, na) { in generic_netmap_register()
371 for (i=0; i<na->num_tx_desc; i++) { in generic_netmap_register()
378 if (na->active_fds == 0) { in generic_netmap_register()
393 na->na_flags |= NAF_NETMAP_ON; in generic_netmap_register()
410 /* Here (na->active_fds == 0) holds. */ in generic_netmap_register()
414 for_each_tx_kring(r, kring, na) { in generic_netmap_register()
422 for_each_rx_kring(r, kring, na) { in generic_netmap_register()
439 struct netmap_adapter *na = GEN_TX_MBUF_NA(m); in generic_mbuf_dtor() local
444 if (unlikely(!nm_netmap_on(na) || r >= na->num_tx_rings)) { in generic_mbuf_dtor()
461 kring = na->tx_rings[r]; in generic_mbuf_dtor()
489 if (++r == na->num_tx_rings) r = 0; in generic_mbuf_dtor()
506 netmap_generic_irq(na, r, NULL); in generic_mbuf_dtor()
608 netmap_generic_irq(kring->na, kring->ring_id, NULL); in generic_tx_callout()
655 SET_MBUF_DESTRUCTOR(m, generic_mbuf_dtor, kring->na); in generic_set_tx_event()
695 struct netmap_adapter *na = kring->na; in generic_netmap_txsync() local
696 struct netmap_generic_adapter *gna = (struct netmap_generic_adapter *)na; in generic_netmap_txsync()
697 if_t ifp = na->ifp; in generic_netmap_txsync()
738 void *addr = NMB(na, slot); in generic_netmap_txsync()
743 NM_CHECK_ADDR_LEN(na, addr, len); in generic_netmap_txsync()
750 nm_os_get_mbuf(ifp, NETMAP_BUF_SIZE(na)); in generic_netmap_txsync()
865 struct netmap_adapter *na = NA(ifp); in generic_rx_handler() local
866 struct netmap_generic_adapter *gna = (struct netmap_generic_adapter *)na; in generic_rx_handler()
871 if (r >= na->num_rx_rings) { in generic_rx_handler()
872 r = r % na->num_rx_rings; in generic_rx_handler()
875 kring = na->rx_rings[r]; in generic_rx_handler()
883 if (unlikely(!gna->rxsg && MBUF_LEN(m) > NETMAP_BUF_SIZE(na))) { in generic_rx_handler()
891 } else if (unlikely(mbq_len(&kring->rx_queue) > na->num_rx_desc)) { in generic_rx_handler()
900 netmap_generic_irq(na, r, &work_done); in generic_rx_handler()
909 netmap_generic_irq(na, r, &work_done); in generic_rx_handler()
928 struct netmap_adapter *na = kring->na; in generic_netmap_rxsync() local
936 u_int nm_buf_len = NETMAP_BUF_SIZE(na); in generic_netmap_rxsync()
1037 nmaddr = NMB(na, &ring->slot[nm_i]); in generic_netmap_rxsync()
1039 if (nmaddr == NETMAP_BUF_BASE(na)) { /* Bad buffer */ in generic_netmap_rxsync()
1068 generic_netmap_dtor(struct netmap_adapter *na) in generic_netmap_dtor() argument
1070 struct netmap_generic_adapter *gna = (struct netmap_generic_adapter*)na; in generic_netmap_dtor()
1076 if (nm_iszombie(na)) { in generic_netmap_dtor()
1086 na->ifp = NULL; in generic_netmap_dtor()
1087 nm_prinf("Emulated netmap adapter for %s destroyed", na->name); in generic_netmap_dtor()
1091 na_is_generic(struct netmap_adapter *na) in na_is_generic() argument
1093 return na->nm_register == generic_netmap_register; in na_is_generic()
1110 struct netmap_adapter *na; in generic_netmap_attach() local
1123 /* If NA(ifp) is not null but there is no valid netmap in generic_netmap_attach()
1144 na = (struct netmap_adapter *)gna; in generic_netmap_attach()
1145 strlcpy(na->name, if_name(ifp), sizeof(na->name)); in generic_netmap_attach()
1146 na->ifp = ifp; in generic_netmap_attach()
1147 na->num_tx_desc = num_tx_desc; in generic_netmap_attach()
1148 na->num_rx_desc = num_rx_desc; in generic_netmap_attach()
1149 na->rx_buf_maxsize = 32768; in generic_netmap_attach()
1150 na->nm_register = &generic_netmap_register; in generic_netmap_attach()
1151 na->nm_txsync = &generic_netmap_txsync; in generic_netmap_attach()
1152 na->nm_rxsync = &generic_netmap_rxsync; in generic_netmap_attach()
1153 na->nm_dtor = &generic_netmap_dtor; in generic_netmap_attach()
1157 na->na_flags = NAF_SKIP_INTR | NAF_HOST_RINGS; in generic_netmap_attach()
1165 nm_os_generic_find_num_queues(ifp, &na->num_tx_rings, &na->num_rx_rings); in generic_netmap_attach()
1167 retval = netmap_attach_common(na); in generic_netmap_attach()
1174 gna->prev = NA(ifp); /* save old na */ in generic_netmap_attach()
1177 NM_ATTACH_NA(ifp, na); in generic_netmap_attach()
1181 nm_prinf("Emulated adapter for %s created (prev was %s)", na->name, in generic_netmap_attach()