Lines Matching full:na

190 nm_free_bdgfwd(struct netmap_adapter *na)  in nm_free_bdgfwd()  argument
196 nrings = na->num_tx_rings; in nm_free_bdgfwd()
197 kring = na->tx_rings; in nm_free_bdgfwd()
211 nm_alloc_bdgfwd(struct netmap_adapter *na) in nm_alloc_bdgfwd() argument
223 nrings = netmap_real_rings(na, NR_TX); in nm_alloc_bdgfwd()
224 kring = na->tx_rings; in nm_alloc_bdgfwd()
232 nm_free_bdgfwd(na); in nm_alloc_bdgfwd()
398 netmap_vale_vp_dtor(struct netmap_adapter *na) in netmap_vale_vp_dtor() argument
400 struct netmap_vp_adapter *vpna = (struct netmap_vp_adapter*)na; in netmap_vale_vp_dtor()
403 nm_prdis("%s has %d references", na->name, na->na_refcount); in netmap_vale_vp_dtor()
409 if (na->ifp != NULL && !nm_iszombie(na)) { in netmap_vale_vp_dtor()
410 NM_DETACH_NA(na->ifp); in netmap_vale_vp_dtor()
412 nm_prdis("releasing %s", if_name(na->ifp)); in netmap_vale_vp_dtor()
414 nm_os_vi_detach(na->ifp); in netmap_vale_vp_dtor()
427 netmap_vale_vp_krings_create(struct netmap_adapter *na) in netmap_vale_vp_krings_create() argument
432 u_int nrx = netmap_real_rings(na, NR_RX); in netmap_vale_vp_krings_create()
437 tailroom = sizeof(uint32_t) * na->num_rx_desc * nrx; in netmap_vale_vp_krings_create()
439 error = netmap_krings_create(na, tailroom); in netmap_vale_vp_krings_create()
443 leases = na->tailroom; in netmap_vale_vp_krings_create()
446 na->rx_rings[i]->nkr_leases = leases; in netmap_vale_vp_krings_create()
447 leases += na->num_rx_desc; in netmap_vale_vp_krings_create()
450 error = nm_alloc_bdgfwd(na); in netmap_vale_vp_krings_create()
452 netmap_krings_delete(na); in netmap_vale_vp_krings_create()
462 netmap_vale_vp_krings_delete(struct netmap_adapter *na) in netmap_vale_vp_krings_delete() argument
464 nm_free_bdgfwd(na); in netmap_vale_vp_krings_delete()
465 netmap_krings_delete(na); in netmap_vale_vp_krings_delete()
471 struct netmap_vp_adapter *na, u_int ring_nr);
484 struct netmap_vp_adapter *na = in nm_vale_preflush() local
485 (struct netmap_vp_adapter*)kring->na; in nm_vale_preflush()
492 struct nm_bridge *b = na->na_bdg; in nm_vale_preflush()
499 if (na->up.na_flags & NAF_BDG_MAYSLEEP) in nm_vale_preflush()
523 slot->len > NETMAP_BUF_SIZE(&na->up) - nm_get_offset(kring, slot))) { in nm_vale_preflush()
527 buf = ft[ft_i].ft_buf = NETMAP_BUF_BASE(&na->up); in nm_vale_preflush()
542 ft_i = nm_vale_flush(ft, ft_i, na, ring_nr); in nm_vale_preflush()
553 ft_i = nm_vale_flush(ft, ft_i, na, ring_nr); in nm_vale_preflush()
609 struct netmap_vp_adapter *na, void *private_data) in netmap_vale_learning() argument
615 u_int dst, mysrc = na->bdg_port; in netmap_vale_learning()
638 if (((buf[6] & 1) == 0) && (na->last_smac != smac)) { /* valid src */ in netmap_vale_learning()
642 na->last_smac = ht[sh].mac = smac; /* XXX expire ? */ in netmap_vale_learning()
727 k->na->name, in nm_kr_lease()
741 nm_vale_flush(struct nm_bdg_fwd *ft, u_int n, struct netmap_vp_adapter *na, in nm_vale_flush() argument
746 struct nm_bridge *b = na->na_bdg; in nm_vale_flush()
747 u_int i, me = na->bdg_port; in nm_vale_flush()
767 if (na->up.virt_hdr_len < ft[i].ft_len) { in nm_vale_flush()
768 ft[i].ft_offset = na->up.virt_hdr_len; in nm_vale_flush()
770 } else if (na->up.virt_hdr_len == ft[i].ft_len && ft[i].ft_flags & NS_MOREFRAG) { in nm_vale_flush()
779 dst_port = b->bdg_ops.lookup(start_ft, &dst_ring, na, b->private_data); in nm_vale_flush()
853 * - when na is attached but not activated yet; in nm_vale_flush()
854 * - when na is being deactivated but is still attached. in nm_vale_flush()
873 if (unlikely(dst_na->up.virt_hdr_len != na->up.virt_hdr_len)) { in nm_vale_flush()
875 nm_prlim(3, "virt_hdr_mismatch, src %d dst %d", na->up.virt_hdr_len, in nm_vale_flush()
883 if (dst_na->mfs < na->mfs) { in nm_vale_flush()
888 * needed * na->mfs + x * H <= x * na->mfs in nm_vale_flush()
895 needed = (needed * na->mfs) / in nm_vale_flush()
897 nm_prdis(3, "srcmtu=%u, dstmtu=%u, x=%u", na->mfs, dst_na->mfs, needed); in nm_vale_flush()
970 bdg_mismatch_datapath(na, dst_na, ft_p, ring, &j, lim, &howmany); in nm_vale_flush()
1104 struct netmap_vp_adapter *na = in netmap_vale_vp_txsync() local
1105 (struct netmap_vp_adapter *)kring->na; in netmap_vale_vp_txsync()
1114 if (!na->na_bdg) { in netmap_vale_vp_txsync()
1131 nm_prinf("%s ring %d flags %d", na->up.name, kring->ring_id, flags); in netmap_vale_vp_txsync()
1145 struct netmap_adapter *na; in netmap_vale_vp_create() local
1158 na = &vpna->up; in netmap_vale_vp_create()
1160 na->ifp = ifp; in netmap_vale_vp_create()
1161 strlcpy(na->name, hdr->nr_name, sizeof(na->name)); in netmap_vale_vp_create()
1164 na->num_tx_rings = req->nr_tx_rings; in netmap_vale_vp_create()
1165 nm_bound_var(&na->num_tx_rings, 1, 1, NM_BDG_MAXRINGS, NULL); in netmap_vale_vp_create()
1166 req->nr_tx_rings = na->num_tx_rings; /* write back */ in netmap_vale_vp_create()
1167 na->num_rx_rings = req->nr_rx_rings; in netmap_vale_vp_create()
1168 nm_bound_var(&na->num_rx_rings, 1, 1, NM_BDG_MAXRINGS, NULL); in netmap_vale_vp_create()
1169 req->nr_rx_rings = na->num_rx_rings; /* write back */ in netmap_vale_vp_create()
1172 na->num_tx_desc = req->nr_tx_slots; in netmap_vale_vp_create()
1185 na->num_rx_desc = req->nr_rx_slots; in netmap_vale_vp_create()
1196 na->na_flags |= (NAF_BDG_MAYSLEEP | NAF_OFFSETS); in netmap_vale_vp_create()
1201 na->na_flags |= NAF_NATIVE; in netmap_vale_vp_create()
1202 na->nm_txsync = netmap_vale_vp_txsync; in netmap_vale_vp_create()
1203 na->nm_rxsync = netmap_vp_rxsync; /* use the one provided by bdg */ in netmap_vale_vp_create()
1204 na->nm_register = netmap_vp_reg; /* use the one provided by bdg */ in netmap_vale_vp_create()
1205 na->nm_krings_create = netmap_vale_vp_krings_create; in netmap_vale_vp_create()
1206 na->nm_krings_delete = netmap_vale_vp_krings_delete; in netmap_vale_vp_create()
1207 na->nm_dtor = netmap_vale_vp_dtor; in netmap_vale_vp_create()
1209 na->nm_mem = nmd ? in netmap_vale_vp_create()
1212 na->num_tx_rings, na->num_tx_desc, in netmap_vale_vp_create()
1213 na->num_rx_rings, na->num_rx_desc, in netmap_vale_vp_create()
1215 if (na->nm_mem == NULL) in netmap_vale_vp_create()
1217 na->nm_bdg_attach = netmap_vale_vp_bdg_attach; in netmap_vale_vp_create()
1219 error = netmap_attach_common(na); in netmap_vale_vp_create()
1226 if (na->nm_mem != NULL) in netmap_vale_vp_create()
1227 netmap_mem_put(na->nm_mem); in netmap_vale_vp_create()
1236 netmap_vale_vp_bdg_attach(const char *name, struct netmap_adapter *na, in netmap_vale_vp_bdg_attach() argument
1239 struct netmap_vp_adapter *vpna = (struct netmap_vp_adapter *)na; in netmap_vale_vp_bdg_attach()
1244 na->na_vp = vpna; in netmap_vale_vp_bdg_attach()
1245 strlcpy(na->name, name, sizeof(na->name)); in netmap_vale_vp_bdg_attach()
1246 na->na_hostvp = NULL; in netmap_vale_vp_bdg_attach()
1251 netmap_vale_bwrap_krings_create(struct netmap_adapter *na) in netmap_vale_bwrap_krings_create() argument
1256 error = netmap_vale_vp_krings_create(na); in netmap_vale_bwrap_krings_create()
1259 error = netmap_bwrap_krings_create_common(na); in netmap_vale_bwrap_krings_create()
1261 netmap_vale_vp_krings_delete(na); in netmap_vale_bwrap_krings_create()
1267 netmap_vale_bwrap_krings_delete(struct netmap_adapter *na) in netmap_vale_bwrap_krings_delete() argument
1269 netmap_bwrap_krings_delete_common(na); in netmap_vale_bwrap_krings_delete()
1270 netmap_vale_vp_krings_delete(na); in netmap_vale_bwrap_krings_delete()
1277 struct netmap_adapter *na = NULL; in netmap_vale_bwrap_attach() local
1285 na = &bna->up.up; in netmap_vale_bwrap_attach()
1286 strlcpy(na->name, nr_name, sizeof(na->name)); in netmap_vale_bwrap_attach()
1287 na->nm_register = netmap_bwrap_reg; in netmap_vale_bwrap_attach()
1288 na->nm_txsync = netmap_vale_vp_txsync; in netmap_vale_bwrap_attach()
1289 // na->nm_rxsync = netmap_bwrap_rxsync; in netmap_vale_bwrap_attach()
1290 na->nm_krings_create = netmap_vale_bwrap_krings_create; in netmap_vale_bwrap_attach()
1291 na->nm_krings_delete = netmap_vale_bwrap_krings_delete; in netmap_vale_bwrap_attach()
1292 na->nm_notify = netmap_bwrap_notify; in netmap_vale_bwrap_attach()
1304 error = netmap_bwrap_attach_common(na, hwna); in netmap_vale_bwrap_attach()
1312 netmap_get_vale_na(struct nmreq_header *hdr, struct netmap_adapter **na, in netmap_get_vale_na() argument
1315 return netmap_get_bdg_na(hdr, na, nmd, create, &vale_bdg_ops); in netmap_get_vale_na()
1362 if (!NM_NA_VALID(ifp) || NA(ifp)->nm_register != netmap_vp_reg) { in nm_vi_destroy()
1367 vpna = (struct netmap_vp_adapter *)NA(ifp); in nm_vi_destroy()
1401 nm_update_info(struct nmreq_register *req, struct netmap_adapter *na) in nm_update_info() argument
1403 req->nr_rx_rings = na->num_rx_rings; in nm_update_info()
1404 req->nr_tx_rings = na->num_tx_rings; in nm_update_info()
1405 req->nr_rx_slots = na->num_rx_desc; in nm_update_info()
1406 req->nr_tx_slots = na->num_tx_desc; in nm_update_info()
1407 return netmap_mem_get_info(na->nm_mem, &req->nr_memsize, NULL, in nm_update_info()
1440 int update_err = nm_update_info(req, NA(ifp)); in netmap_vi_create()