DF-3427 / wna_shim.c
/* DF-3426 rig shim: side table backing WNA(ifp). See wna_shim.h. */ #include <sys/types.h> #include <net/if_var.h> #include "wna_shim.h" #define WNA_TBL 16 static struct ifnet *wna_key[WNA_TBL]; static struct netmap_adapter *wna_val[WNA_TBL]; struct netmap_adapter ** netmap_wna_slot(struct ifnet *ifp) { int i, free_i = -1; for (i = 0; i < WNA_TBL; i++) { if (wna_key[i] == ifp) return (&wna_val[i]); if (wna_key[i] == NULL && free_i < 0) free_i = i; } if (free_i < 0) return (NULL); /* rig uses <= 2 interfaces; unreachable */ wna_key[free_i] = ifp; wna_val[free_i] = NULL; return (&wna_val[free_i]); } |