Lines Matching refs:na

90 nm_pipe_alloc(struct netmap_adapter *na, u_int npipes)
95 if (npipes <= na->na_max_pipes)
99 if (npipes < na->na_next_pipe || npipes > NM_MAXPIPES)
102 old_len = sizeof(struct netmap_pipe_adapter *)*na->na_max_pipes;
104 npa = nm_os_realloc(na->na_pipes, len, old_len);
108 na->na_pipes = npa;
109 na->na_max_pipes = npipes;
116 netmap_pipe_dealloc(struct netmap_adapter *na)
118 if (na->na_pipes) {
119 if (na->na_next_pipe > 0) {
121 na->name, na->na_next_pipe);
123 nm_os_free(na->na_pipes);
124 na->na_pipes = NULL;
125 na->na_max_pipes = 0;
126 na->na_next_pipe = 0;
135 struct netmap_pipe_adapter *na;
139 na = parent->na_pipes[i];
140 na_pipe_id = strrchr(na->up.name,
141 na->role == NM_PIPE_ROLE_MASTER ? '{' : '}');
145 return na;
153 netmap_pipe_add(struct netmap_adapter *parent, struct netmap_pipe_adapter *na)
162 parent->na_pipes[parent->na_next_pipe] = na;
163 na->parent_slot = parent->na_next_pipe;
170 netmap_pipe_remove(struct netmap_adapter *parent, struct netmap_pipe_adapter *na)
174 if (n != na->parent_slot) {
176 &parent->na_pipes[na->parent_slot];
178 (*p)->parent_slot = na->parent_slot;
318 int netmap_pipe_krings_create_both(struct netmap_adapter *na,
326 nm_prdis("%p: case 1, create both ends", na);
327 error = netmap_krings_create(na, 0);
339 for (i = 0; i < nma_get_nrings(na, t); i++) {
340 struct netmap_kring *k1 = NMR(na, t)[i],
355 netmap_krings_delete(na);
378 netmap_pipe_krings_create(struct netmap_adapter *na)
381 (struct netmap_pipe_adapter *)na;
385 return netmap_pipe_krings_create_both(na, ona);
391 netmap_pipe_reg_both(struct netmap_adapter *na, struct netmap_adapter *ona)
397 for (i = 0; i < nma_get_nrings(na, t); i++) {
398 struct netmap_kring *kring = NMR(na, t)[i];
417 for (i = 0; i < nma_get_nrings(na, t); i++) {
418 struct netmap_kring *kring = NMR(na, t)[i];
493 netmap_pipe_reg(struct netmap_adapter *na, int onoff)
496 (struct netmap_pipe_adapter *)na;
500 nm_prdis("%p: onoff %d", na, onoff);
502 error = netmap_pipe_reg_both(na, ona);
506 if (na->active_fds == 0)
507 na->na_flags |= NAF_NETMAP_ON;
509 if (na->active_fds == 0)
510 na->na_flags &= ~NAF_NETMAP_ON;
511 netmap_krings_mode_commit(na, onoff);
514 if (na->active_fds) {
515 nm_prdis("active_fds %d", na->active_fds);
520 nm_prdis("%p: case 1.a or 2.a, nothing to do", na);
524 nm_prdis("%p: case 1.b, drop peer", na);
526 netmap_adapter_put(na);
528 nm_prdis("%p: case 2.b, grab peer", na);
529 netmap_adapter_get(na);
536 netmap_pipe_krings_delete_both(struct netmap_adapter *na,
544 nm_prdis("%p: case 1, deleting everything", na);
552 sna = na;
585 netmap_mem_rings_delete(na);
586 netmap_krings_delete(na); /* also zeroes tx_rings etc. */
618 netmap_pipe_krings_delete(struct netmap_adapter *na)
621 (struct netmap_pipe_adapter *)na;
622 struct netmap_adapter *ona; /* na of the other end */
625 nm_prdis("%p: case 2, kept alive by peer", na);
629 netmap_pipe_krings_delete_both(na, ona);
634 netmap_pipe_dtor(struct netmap_adapter *na)
637 (struct netmap_pipe_adapter *)na;
638 nm_prdis("%p %p", na, pna->parent_ifp);
640 nm_prdis("%p: clean up peer", na);
653 netmap_get_pipe_na(struct nmreq_header *hdr, struct netmap_adapter **na,
842 *na = &reqna->up;
843 netmap_adapter_get(*na);