--- a/sys/bus/u4b/wlan/if_mtw.c +++ b/sys/bus/u4b/wlan/if_mtw.c @@ -1934,11 +1934,13 @@ i = MTW_CMDQ_GET(&sc->cmdq_store); MTW_DPRINTF(sc, MTW_DEBUG_KEY, "cmdq_store=%d\n", i); - sc->cmdq[i].func = mtw_key_set_cb; sc->cmdq[i].arg0 = NULL; sc->cmdq[i].arg1 = vap; sc->cmdq[i].k = k; IEEE80211_ADDR_COPY(sc->cmdq[i].mac, k->wk_macaddr); + /* publish the entry only once it is fully populated */ + cpu_sfence(); + sc->cmdq[i].func = mtw_key_set_cb; ieee80211_runtask(ic, &sc->cmdq_task); /*