diff -u -r a/sys/dev/netif/ral/rt2860.c b/sys/dev/netif/ral/rt2860.c --- a/sys/dev/netif/ral/rt2860.c 2026-09-16 01:13:46.570414810 +0000 +++ b/sys/dev/netif/ral/rt2860.c 2026-09-16 01:14:31.985841721 +0000 @@ -102,6 +102,8 @@ static void rt2860_updatestats(struct rt2860_softc *); static void rt2860_newassoc(struct ieee80211_node *, int); static void rt2860_node_free(struct ieee80211_node *); +static struct ieee80211_node *rt2860_node_alloc(struct ieee80211vap *, + const uint8_t [IEEE80211_ADDR_LEN]); #ifdef IEEE80211_HT static int rt2860_ampdu_rx_start(struct ieee80211com *, struct ieee80211_node *, uint8_t); @@ -350,6 +352,7 @@ ic->ic_update_promisc = rt2860_update_promisc; ic->ic_raw_xmit = rt2860_raw_xmit; sc->sc_node_free = ic->ic_node_free; + ic->ic_node_alloc = rt2860_node_alloc; ic->ic_node_free = rt2860_node_free; ic->ic_newassoc = rt2860_newassoc; ic->ic_transmit = rt2860_transmit; @@ -884,6 +887,7 @@ wcid = IEEE80211_AID(ni->ni_associd); if (isnew && ni->ni_associd != 0) { + ((struct rt2860_node *)ni)->wcid = wcid; sc->wcid2ni[wcid] = ni; /* init WCID table entry */ @@ -894,6 +898,18 @@ isnew, ether_sprintf(ni->ni_macaddr), wcid)); } +static struct ieee80211_node * +rt2860_node_alloc(struct ieee80211vap *vap, + const uint8_t mac[IEEE80211_ADDR_LEN]) +{ + struct rt2860_node *rn; + + rn = kmalloc(sizeof(struct rt2860_node), M_80211_NODE, + M_INTWAIT | M_ZERO); + + return rn != NULL ? &rn->ni : NULL; +} + static void rt2860_node_free(struct ieee80211_node *ni) {