On Thu, Apr 21, 2022 at 10:34:22PM +0200, Stefan Sperling wrote:
> 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).
I applied the if_urtwn.c change and it seemed to help my urtwn(4) get a lease
much faster.
So ok krw@ fwiw.
.... Ken
>
> 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 */
>