On Thu, Apr 21, 2022 at 10:31:46PM +0200, Stefan Sperling wrote: > On Thu, Apr 21, 2022 at 09:15:57PM +0200, Stefan Sperling wrote: > > On Thu, Apr 21, 2022 at 08:58:48PM +0200, Sven Wolf wrote: > > > But when I build a new kernel with the sources from 2022-03-15 everything > > > is > > > fine. > > > > > > Maybe this commit causes this behaviour/bug > > > https://marc.info/?l=openbsd-cvs&m=164777772610775&w=2 > > > > Looks like a bug in ral(4) (uninitialized variable) which has been > > exposed by the above commit. Does the patch below help? > > > > If it does then I will do a sweep of all wifi drivers for similar problems. > > Sorry for not catching this earlier. This could have been caught had it > > occurred to me to check for any uninitialized use of this struct when > > I added a new field... > > I did take a look already just in case, and it's not looking good... > This fixes the places I've found so far:
Sorry, the previous diff missed the ral(4) fix I sent earlier. A better version of this fix is included here (thanks to miod for off-list feedback). diff b3dff8d102fea35ec827f7e82565722dc4185589 d5aaa0e75d191916f6c8da91b842079511d38fd3 blob - 9c70f4dc5e96467bb4100e022ba59e918797e85f blob + c0c96f2f5614858df29f49680d8349832af8d55a --- sys/dev/ic/acx.c +++ sys/dev/ic/acx.c @@ -1354,7 +1354,7 @@ acx_rxeof(struct acx_softc *sc) sc->chip_rxbuf_exhdr); wh = mtod(m, struct ieee80211_frame *); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); if ((wh->i_fc[1] & IEEE80211_FC1_WEP) && sc->chip_hw_crypt) { /* Short circuit software WEP */ blob - 6208492c94c2af3d15e158e8329f881565efd232 blob + 28db8e32130a83eeb9e057cfaed6eb9d8d625428 --- sys/dev/ic/an.c +++ sys/dev/ic/an.c @@ -462,7 +462,7 @@ an_rxeof(struct an_softc *sc) #endif /* NBPFILTER > 0 */ wh = mtod(m, struct ieee80211_frame *); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); if (wh->i_fc[1] & IEEE80211_FC1_WEP) { /* * WEP is decrypted by hardware. Clear WEP bit blob - e9ff551127c7e937b52f99577ade8bc5dde91763 blob + aafd14161600420dfd90ff3f2ecc093e11f5c33f --- sys/dev/ic/ar5008.c +++ sys/dev/ic/ar5008.c @@ -1039,7 +1039,7 @@ ar5008_rx_process(struct athn_softc *sc, struct mbuf_l m_adj(m, -IEEE80211_CRC_LEN); /* Send the frame to the 802.11 layer. */ - rxi.rxi_flags = 0; /* XXX */ + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = MS(ds->ds_status4, AR_RXS4_RSSI_COMBINED); rxi.rxi_rssi += AR_DEFAULT_NOISE_FLOOR; rxi.rxi_tstamp = ds->ds_status2; blob - 5aa99be1508ee4b893a50adf89f8c83eaad9e94b blob + e45a4441a62255fb4ef4a386112a477a2f5b58ed --- sys/dev/ic/ar9003.c +++ sys/dev/ic/ar9003.c @@ -1026,7 +1026,7 @@ ar9003_rx_process(struct athn_softc *sc, int qid, stru m_adj(m, -IEEE80211_CRC_LEN); /* Send the frame to the 802.11 layer. */ - rxi.rxi_flags = 0; /* XXX */ + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = MS(ds->ds_status5, AR_RXS5_RSSI_COMBINED); rxi.rxi_tstamp = ds->ds_status3; ieee80211_inputm(ifp, m, ni, &rxi, ml); blob - 9a640630ecdd5e55125bae10cbd31665bf7ce9e6 blob + a43ad3f9706addf3886a8ce74c63adb50c58589a --- sys/dev/ic/ath.c +++ sys/dev/ic/ath.c @@ -1936,7 +1936,7 @@ ath_rx_proc(void *arg, int npending) #endif m_adj(m, -IEEE80211_CRC_LEN); wh = mtod(m, struct ieee80211_frame *); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); if (!ath_softcrypto && (wh->i_fc[1] & IEEE80211_FC1_WEP)) { /* * WEP is decrypted by hardware. Clear WEP bit blob - 49b4089c69fe17b0215d514d0b3b1215a87b69b8 blob + 04b4f0d393e7eb142d707c76090668df556bf845 --- sys/dev/ic/atw.c +++ sys/dev/ic/atw.c @@ -3175,7 +3175,7 @@ atw_rxintr(struct atw_softc *sc) wh = mtod(m, struct ieee80211_frame *); ni = ieee80211_find_rxnode(ic, wh); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); #if 0 if (atw_hw_decrypted(sc, wh)) { wh->i_fc[1] &= ~IEEE80211_FC1_WEP; @@ -3183,7 +3183,6 @@ atw_rxintr(struct atw_softc *sc) } #endif rxi.rxi_rssi = (int)rssi; - rxi.rxi_tstamp = 0; ieee80211_inputm(ifp, m, ni, &rxi, &ml); /* * The frame may have caused the node to be marked for blob - c245bcdac6953e6e88059fb1fccdc319b412ccfa blob + d4db3d9384097401f7b48072949c432ead0a4ceb --- sys/dev/ic/bwfm.c +++ sys/dev/ic/bwfm.c @@ -2439,9 +2439,7 @@ bwfm_rx_auth_ind(struct bwfm_softc *sc, struct bwfm_ev /* Finalize mbuf. */ m->m_pkthdr.len = m->m_len = pktlen; - rxi.rxi_flags = 0; - rxi.rxi_rssi = 0; - rxi.rxi_tstamp = 0; + memset(&rxi, 0, sizeof(rxi)); ieee80211_input(ifp, m, ic->ic_bss, &rxi); } @@ -2495,9 +2493,7 @@ bwfm_rx_assoc_ind(struct bwfm_softc *sc, struct bwfm_e m_freem(m); return; } - rxi.rxi_flags = 0; - rxi.rxi_rssi = 0; - rxi.rxi_tstamp = 0; + memset(&rxi, 0, sizeof(rxi)); ieee80211_input(ifp, m, ni, &rxi); } @@ -2550,9 +2546,7 @@ bwfm_rx_leave_ind(struct bwfm_softc *sc, struct bwfm_e m_freem(m); return; } - rxi.rxi_flags = 0; - rxi.rxi_rssi = 0; - rxi.rxi_tstamp = 0; + memset(&rxi, 0, sizeof(rxi)); ieee80211_input(ifp, m, ni, &rxi); } #endif @@ -2740,9 +2734,8 @@ bwfm_scan_node(struct bwfm_softc *sc, struct bwfm_bss_ /* Channel mask equals IEEE80211_CHAN_MAX */ chanidx = bwfm_spec2chan(sc, letoh32(bss->chanspec)); /* Supply RSSI */ - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = (int16_t)letoh16(bss->rssi); - rxi.rxi_tstamp = 0; rxi.rxi_chan = chanidx; ieee80211_input(ifp, m, ni, &rxi); /* Node is no longer needed. */ blob - 56fd355377e5293f5a59214cc539465f5b711ecf blob + 139dc7234e3d838d27c80f2b92e9d7db60a40ff0 --- sys/dev/ic/bwi.c +++ sys/dev/ic/bwi.c @@ -8454,6 +8454,7 @@ bwi_rxeof(struct bwi_softc *sc, int end_idx) ni = ieee80211_find_rxnode(ic, wh); type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = hdr->rxh_rssi; rxi.rxi_tstamp = letoh16(hdr->rxh_tsf); ieee80211_inputm(ifp, m, ni, &rxi, &ml); blob - 6e7efb3f1cc435798fb5c0b7637eef46e30dd218 blob + bea8d6a5199dd0a5871481862f67636c8c2266a9 --- sys/dev/ic/malo.c +++ sys/dev/ic/malo.c @@ -1709,9 +1709,8 @@ malo_rx_intr(struct malo_softc *sc) ni = ieee80211_find_rxnode(ic, wh); /* send the frame to the 802.11 layer */ - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = desc->rssi; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_inputm(ifp, m, ni, &rxi, &ml); /* node is no longer needed */ blob - e5c8495569fe5a13d0a547403cc96d660c3e6e10 blob + 70632dc21bb2d8bfcb8b52b1c461a8f3bdca2750 --- sys/dev/ic/pgt.c +++ sys/dev/ic/pgt.c @@ -1019,7 +1019,7 @@ input: bpf_mtap(sc->sc_drvbpf, &mb, BPF_DIRECTION_IN); } #endif - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); ni->ni_rssi = rxi.rxi_rssi = rssi; ni->ni_rstamp = rxi.rxi_tstamp = rstamp; ieee80211_inputm(ifp, m, ni, &rxi, &ml); blob - 08771b87b5bb3b050065b601384a8fcc58a23c02 blob + cb9118ada30bd70de74ab12f6682d02c3a5d5f41 --- sys/dev/ic/rt2560.c +++ sys/dev/ic/rt2560.c @@ -1196,7 +1196,7 @@ rt2560_decryption_intr(struct rt2560_softc *sc) ni = ieee80211_find_rxnode(ic, wh); /* send the frame to the 802.11 layer */ - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = desc->rssi; rxi.rxi_tstamp = 0; /* unused */ ieee80211_inputm(ifp, m, ni, &rxi, &ml); blob - bdb7f15e5dbcfffd45e2df47a6f457a9030eb820 blob + de303e475f7ac8318b436d9f70bfdc65a6ec3ff1 --- sys/dev/ic/rt2661.c +++ sys/dev/ic/rt2661.c @@ -1271,9 +1271,8 @@ rt2661_rx_intr(struct rt2661_softc *sc) ni = ieee80211_find_rxnode(ic, wh); /* send the frame to the 802.11 layer */ - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = desc->rssi; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_inputm(ifp, m, ni, &rxi, &ml); /*- blob - 3178226c0b633534b065088e426e80b5a26853c9 blob + cdd351370f01df055c1c2a354aac4456899d4ded --- sys/dev/ic/rt2860.c +++ sys/dev/ic/rt2860.c @@ -1349,7 +1349,7 @@ rt2860_rx_intr(struct rt2860_softc *sc) m->m_pkthdr.len = m->m_len = letoh16(rxwi->len) & 0xfff; wh = mtod(m, struct ieee80211_frame *); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { /* frame is decrypted by hardware */ wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; @@ -1413,7 +1413,6 @@ skipbpf: /* send the frame to the 802.11 layer */ rxi.rxi_rssi = rssi; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_inputm(ifp, m, ni, &rxi, &ml); /* node is no longer needed */ blob - 43bc271ba13666dc36e2f119d3805f5897a229c1 blob + 807af1100286f9fa649fb4b1aab73f20cd29855f --- sys/dev/ic/rtw.c +++ sys/dev/ic/rtw.c @@ -1287,7 +1287,7 @@ rtw_intr_rx(struct rtw_softc *sc, u_int16_t isr) } #endif /* NBPFILTER > 0 */ - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = rssi; rxi.rxi_tstamp = htsftl; ieee80211_inputm(&sc->sc_if, m, ni, &rxi, &ml); blob - 99c00d56d60256d289a6b5ad646c8caa634b927e blob + 3b19899c80f63f43fa865043f95558223ddeefd4 --- sys/dev/pci/if_ipw.c +++ sys/dev/pci/if_ipw.c @@ -907,9 +907,8 @@ ipw_data_intr(struct ipw_softc *sc, struct ipw_status ni = ieee80211_find_rxnode(ic, wh); /* send the frame to the upper layer */ - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = status->rssi; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_inputm(ifp, m, ni, &rxi, ml); ieee80211_release_node(ic, ni); blob - d7e3f163d855603ab1a23acb86217b7b0b7f43c1 blob + ddf69c227de10b521ae318dc9b2bdc4ed002120f --- sys/dev/pci/if_iwi.c +++ sys/dev/pci/if_iwi.c @@ -960,9 +960,8 @@ iwi_frame_intr(struct iwi_softc *sc, struct iwi_rx_dat ni = ieee80211_find_rxnode(ic, wh); /* send the frame to the upper layer */ - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = frame->rssi_dbm; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_inputm(ifp, m, ni, &rxi, ml); /* node is no longer needed */ blob - e940010efa04b96ae8f68d1bf8bfff3153ffc797 blob + b4fe97d0bfb32f354cdc43ac93950dd07352a219 --- sys/dev/pci/if_iwn.c +++ sys/dev/pci/if_iwn.c @@ -2131,7 +2131,7 @@ iwn_rx_done(struct iwn_softc *sc, struct iwn_rx_desc * } ni = ieee80211_find_rxnode(ic, wh); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); if (((wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) != IEEE80211_FC0_TYPE_CTL) && (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) && !IEEE80211_IS_MULTICAST(wh->i_addr1) && @@ -2218,7 +2218,6 @@ iwn_rx_done(struct iwn_softc *sc, struct iwn_rx_desc * /* Send the frame to the 802.11 layer. */ rxi.rxi_rssi = rssi; - rxi.rxi_tstamp = 0; /* unused */ rxi.rxi_chan = chan; ieee80211_inputm(ifp, m, ni, &rxi, ml); blob - ffd1dbe539f50e0c7df21f312751b0889d8f6674 blob + 5646d88e480aaefc501bf11bffb2ea2520024679 --- sys/dev/pci/if_rtwn.c +++ sys/dev/pci/if_rtwn.c @@ -972,9 +972,8 @@ rtwn_rx_frame(struct rtwn_pci_softc *sc, struct r92c_r #endif ni = ieee80211_find_rxnode(ic, wh); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = rssi; - rxi.rxi_tstamp = 0; /* Unused. */ ieee80211_inputm(ifp, m, ni, &rxi, ml); /* Node is no longer needed. */ ieee80211_release_node(ic, ni); blob - 16ebb12527ec9137ea4053f8cfbaa15b03c66454 blob + f233b050c0e56f8c0003037faecfafc616f28e0b --- sys/dev/pci/if_wpi.c +++ sys/dev/pci/if_wpi.c @@ -1262,7 +1262,7 @@ wpi_rx_done(struct wpi_softc *sc, struct wpi_rx_desc * wh = mtod(m, struct ieee80211_frame *); ni = ieee80211_find_rxnode(ic, wh); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); if ((wh->i_fc[1] & IEEE80211_FC1_PROTECTED) && !IEEE80211_IS_MULTICAST(wh->i_addr1) && (ni->ni_flags & IEEE80211_NODE_RXPROT) && @@ -1333,7 +1333,6 @@ wpi_rx_done(struct wpi_softc *sc, struct wpi_rx_desc * /* Send the frame to the 802.11 layer. */ rxi.rxi_rssi = stat->rssi; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_inputm(ifp, m, ni, &rxi, ml); /* Node is no longer needed. */ blob - fb0e72a1288b9d76f37a59fd0d51779a56c32e5f blob + 757baa9acc498b8f20e7e00610ef1c0668abe1e2 --- sys/dev/usb/if_athn_usb.c +++ sys/dev/usb/if_athn_usb.c @@ -2087,7 +2087,7 @@ athn_usb_rx_frame(struct athn_usb_softc *usc, struct m m_adj(m, -IEEE80211_CRC_LEN); /* Send the frame to the 802.11 layer. */ - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = rs->rs_rssi + AR_USB_DEFAULT_NF; rxi.rxi_tstamp = betoh64(rs->rs_tstamp); if (!(wh->i_fc[0] & IEEE80211_FC0_TYPE_CTL) && blob - 38246930c43a2c32a5ca859a92a80b94682634b0 blob + 71877f8c647c4d093660cfe1e3849b92ff7c266b --- sys/dev/usb/if_atu.c +++ sys/dev/usb/if_atu.c @@ -1728,7 +1728,7 @@ atu_rxeof(struct usbd_xfer *xfer, void *priv, usbd_sta } #endif /* NBPFILTER > 0 */ - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); if (wh->i_fc[1] & IEEE80211_FC1_WEP) { /* * WEP is decrypted by hardware. Clear WEP bit blob - 3ecc7a033c1624da63c8f7243005fa258601c682 blob + 832fec9c52492ca0ad0241fb5df0271916d3791b --- sys/dev/usb/if_mtw.c +++ sys/dev/usb/if_mtw.c @@ -2046,7 +2046,7 @@ mtw_rx_frame(struct mtw_softc *sc, uint8_t *buf, int d } wh = (struct ieee80211_frame *)(buf + rxwisize); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; rxi.rxi_flags |= IEEE80211_RXI_HWDEC; @@ -2129,7 +2129,6 @@ mtw_rx_frame(struct mtw_softc *sc, uint8_t *buf, int d s = splnet(); ni = ieee80211_find_rxnode(ic, wh); rxi.rxi_rssi = rssi; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_inputm(ifp, m, ni, &rxi, ml); /* node is no longer needed */ blob - dbe3a9cadde3638f4942c91879f073f41e62b8d3 blob + 8ccfc906ebaf1ecfb616deee1032f86efc3d2c5e --- sys/dev/usb/if_otus.c +++ sys/dev/usb/if_otus.c @@ -1192,9 +1192,8 @@ otus_sub_rxeof(struct otus_softc *sc, uint8_t *buf, in s = splnet(); ni = ieee80211_find_rxnode(ic, wh); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = tail->rssi; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_inputm(ifp, m, ni, &rxi, ml); /* Node is no longer needed. */ blob - fc000d55ad2eb93b96c0c7eaf5e81547c7ab05b1 blob + d53462a9c3ba6dbd4e7d59c23f8c625b50a93e36 --- sys/dev/usb/if_ral.c +++ sys/dev/usb/if_ral.c @@ -774,9 +774,8 @@ ural_rxeof(struct usbd_xfer *xfer, void *priv, usbd_st ni = ieee80211_find_rxnode(ic, wh); /* send the frame to the 802.11 layer */ - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = desc->rssi; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_input(ifp, m, ni, &rxi); /* node is no longer needed */ blob - 5f5f6d498c1cda4cfe19f6e2b47a5cdf860edb9e blob + b2e1b7fd5211230da7b6c786062ed391d3960f4c --- sys/dev/usb/if_rsu.c +++ sys/dev/usb/if_rsu.c @@ -1131,9 +1131,8 @@ rsu_event_survey(struct rsu_softc *sc, uint8_t *buf, i m->m_pkthdr.len = m->m_len = pktlen; ni = ieee80211_find_rxnode(ic, wh); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = letoh32(bss->rssi); - rxi.rxi_tstamp = 0; ieee80211_input(ifp, m, ni, &rxi); /* Node is no longer needed. */ ieee80211_release_node(ic, ni); @@ -1384,9 +1383,8 @@ rsu_rx_frame(struct rsu_softc *sc, uint8_t *buf, int p #endif ni = ieee80211_find_rxnode(ic, wh); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = rssi; - rxi.rxi_tstamp = 0; /* Unused. */ ieee80211_inputm(ifp, m, ni, &rxi, ml); /* Node is no longer needed. */ ieee80211_release_node(ic, ni); blob - 1a0152a80f1abde39c21a992042e8c1a6006a0f7 blob + 4e69906c58677f4501191ada58ff1233de612376 --- sys/dev/usb/if_rum.c +++ sys/dev/usb/if_rum.c @@ -843,9 +843,8 @@ rum_rxeof(struct usbd_xfer *xfer, void *priv, usbd_sta ni = ieee80211_find_rxnode(ic, wh); /* send the frame to the 802.11 layer */ - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = desc->rssi; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_input(ifp, m, ni, &rxi); /* node is no longer needed */ blob - 8d58b4170d4d038d584135de5076ddcb364cf545 blob + 05a3fc5653c8e4f853ea66d7fbb8bc01b0b247fc --- sys/dev/usb/if_run.c +++ sys/dev/usb/if_run.c @@ -2227,7 +2227,7 @@ run_rx_frame(struct run_softc *sc, uint8_t *buf, int d } wh = (struct ieee80211_frame *)(buf + rxwisize); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; rxi.rxi_flags |= IEEE80211_RXI_HWDEC; @@ -2310,7 +2310,6 @@ run_rx_frame(struct run_softc *sc, uint8_t *buf, int d s = splnet(); ni = ieee80211_find_rxnode(ic, wh); rxi.rxi_rssi = rssi; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_inputm(ifp, m, ni, &rxi, ml); /* node is no longer needed */ blob - ae8ccb49c7643f41fba320d50c9750647388ed95 blob + c0c9dab4fe4fad1291f677e104c422dfc0ce06c8 --- sys/dev/usb/if_uath.c +++ sys/dev/usb/if_uath.c @@ -1221,7 +1221,7 @@ uath_data_rxeof(struct usbd_xfer *xfer, void *priv, data->buf = mtod(data->m, uint8_t *); wh = mtod(m, struct ieee80211_frame *); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); if ((wh->i_fc[1] & IEEE80211_FC1_WEP) && ic->ic_opmode != IEEE80211_M_MONITOR) { /* @@ -1263,7 +1263,6 @@ uath_data_rxeof(struct usbd_xfer *xfer, void *priv, s = splnet(); ni = ieee80211_find_rxnode(ic, wh); rxi.rxi_rssi = (int)betoh32(desc->rssi); - rxi.rxi_tstamp = 0; /* unused */ ieee80211_input(ifp, m, ni, &rxi); /* node is no longer needed */ blob - dc1362d04276ff85f99fde157cdb7e1cfe6f11b1 blob + 6d3cfc2d6567f1a9fde4874a781bf6f10741d700 --- sys/dev/usb/if_upgt.c +++ sys/dev/usb/if_upgt.c @@ -1741,9 +1741,9 @@ upgt_rx(struct upgt_softc *sc, uint8_t *data, int pkgl ni = ieee80211_find_rxnode(ic, wh); /* push the frame up to the 802.11 stack */ + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_flags = 0; rxi.rxi_rssi = rxdesc->rssi; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_input(ifp, m, ni, &rxi); /* node is no longer needed */ blob - cd85d9e008ee74aade1252aa7faa7ce93ffb42fe blob + 3da9b4a5c7b144e3692a8425fc69c9c1dabada03 --- sys/dev/usb/if_urtw.c +++ sys/dev/usb/if_urtw.c @@ -3157,9 +3157,8 @@ urtw_rxeof(struct usbd_xfer *xfer, void *priv, usbd_st nf = quality; /* send the frame to the 802.11 layer */ - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = rssi; - rxi.rxi_tstamp = 0; ieee80211_input(ifp, m, ni, &rxi); /* node is no longer needed */ blob - 8601bf45e727196ded133369fb12d3cf13c3ea17 blob + 5179210146b02c84945416a8d32346ee9c9b0d8c --- sys/dev/usb/if_urtwn.c +++ sys/dev/usb/if_urtwn.c @@ -1265,9 +1265,8 @@ urtwn_rx_frame(struct urtwn_softc *sc, uint8_t *buf, i #endif ni = ieee80211_find_rxnode(ic, wh); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = rssi; - rxi.rxi_tstamp = 0; /* Unused. */ /* Handle hardware decryption. */ if (((wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) != IEEE80211_FC0_TYPE_CTL) blob - 7b2ee73c6ca33a0a642496a246a437916433eaf1 blob + 4df0f79827fa1e5a1a7519731f61bf3b6fb33598 --- sys/dev/usb/if_zyd.c +++ sys/dev/usb/if_zyd.c @@ -1979,9 +1979,8 @@ zyd_rx_data(struct zyd_softc *sc, const uint8_t *buf, s = splnet(); wh = mtod(m, struct ieee80211_frame *); ni = ieee80211_find_rxnode(ic, wh); - rxi.rxi_flags = 0; + memset(&rxi, 0, sizeof(rxi)); rxi.rxi_rssi = stat->rssi; - rxi.rxi_tstamp = 0; /* unused */ ieee80211_inputm(ifp, m, ni, &rxi, ml); /* node is no longer needed */