Lines Matching defs:ft

145 /* NM_FT_NULL terminates a list of slots in the ft */
379 struct nm_bdg_fwd *ft;
383 ft = malloc(l, M_DEVBUF, M_NOWAIT | M_ZERO);
384 if (!ft) {
388 dstq = (struct nm_bdg_q *)(ft + NM_BDG_BATCH_MAX);
393 kring[i].nkr_ft = ft;
1025 nm_bdg_flush(struct nm_bdg_fwd *ft, u_int n,
1031 * Grab packets from a kring, move them into the ft structure
1042 struct nm_bdg_fwd *ft;
1059 ft = kring->nkr_ft;
1065 ft[ft_i].ft_len = slot->len;
1066 ft[ft_i].ft_flags = slot->flags;
1070 ft[ft_i].ft_next = NM_FT_NULL;
1071 buf = ft[ft_i].ft_buf = (slot->flags & NS_INDIRECT) ?
1076 kring->name, j, ft[ft_i].ft_len);
1077 buf = ft[ft_i].ft_buf = NETMAP_BUF_BASE(&na->up);
1078 ft[ft_i].ft_len = 0;
1079 ft[ft_i].ft_flags = 0;
1089 ft[ft_i - frags].ft_frags = frags;
1092 ft_i = nm_bdg_flush(ft, ft_i, na, ring_nr);
1096 // ft_i > 0, ft[ft_i-1].flags has NS_MOREFRAG
1097 ft[ft_i - 1].ft_frags &= ~NS_MOREFRAG;
1098 ft[ft_i - frags].ft_frags = frags - 1;
1101 ft_i = nm_bdg_flush(ft, ft_i, na, ring_nr);
1182 netmap_bdg_learning(struct nm_bdg_fwd *ft, uint8_t *dst_ring,
1185 uint8_t *buf = ft->ft_buf;
1186 u_int buf_len = ft->ft_len;
1197 } else if (buf_len == na->virt_hdr_len && ft->ft_flags & NS_MOREFRAG) {
1199 ft++;
1200 buf = ft->ft_buf;
1201 buf_len = ft->ft_len;
1314 nm_bdg_flush(struct nm_bdg_fwd *ft, u_int n, struct netmap_vp_adapter *na,
1323 * The work area (pointed by ft) is followed by an array of
1328 dst_ents = (struct nm_bdg_q *)(ft + NM_BDG_BATCH_MAX);
1332 for (i = 0; likely(i < n); i += ft[i].ft_frags) {
1337 ND("slot %d frags %d", i, ft[i].ft_frags);
1340 if (unlikely(na->virt_hdr_len > ft[i].ft_len))
1342 dst_port = b->bdg_ops.lookup(&ft[i], &dst_ring, na);
1366 ft[d->bq_tail].ft_next = i;
1369 d->bq_len += ft[i].ft_frags;
1517 ft_p = ft + next;
1520 ft_p = ft + brd_next;