Hi Riccardo,
Any feedback regarding the proposed patch below?
Thanks,
Stefan
On Wed, Mar 17, 2021 at 04:09:32PM +0100, Stefan Sperling wrote:
> On Mon, Mar 15, 2021 at 02:11:39PM +0100, Riccardo Mottola wrote:
> > Stefan Sperling wrote:
> > > > That means there is another bug. I will try to find it.
> > > Could you show what 'netstat -W ipw0' looks like after an unsuccesful
> > > attempt of connecting to a WEP access point?
> >
> > ipw0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
> > lladdr 00:0c:f1:1f:b2:a0
> > index 1 priority 4 llprio 3
> > groups: wlan
> > media: IEEE802.11 autoselect (DS11 mode 11b)
> > status: active
> > ieee80211: nwid westernesse chan 2 bssid 94:0c:6d:f7:a4:9c -61dBm
> > nwkey
> >
> >
> > then I run dhclient
> >
> > ieee80211 on ipw0:
> > 0 input packets with bad version
> > 0 input packets too short
> > 0 input packets from wrong bssid
> > 0 input packet duplicates discarded
> > 0 input packets with wrong direction
> > 0 input multicast echo packets discarded
> > 0 input packets from unassociated station discarded
> > 0 input encrypted packets without wep/wpa config discarded
> > 0 input unencrypted packets with wep/wpa config discarded
> > 0 input wep/wpa packets processing failed
> > 0 input packet decapsulations failed
> > 2 input management packets discarded
> > 0 input control packets discarded
> > 0 input packets with truncated rate set
> > 0 input packets with missing elements
> > 0 input packets with elements too big
> > 0 input packets with elements too small
> > 0 input packets with invalid channel
> > 3 input packets with mismatched channel
> > 0 node allocations failed
> > 0 input packets with mismatched ssid
> > 0 input packets with unsupported auth algorithm
> > 0 input authentications failed
> > 0 input associations from wrong bssid
> > 0 input associations without authentication
> > 0 input associations with mismatched capabilities
> > 0 input associations without matching rates
> > 0 input associations with bad rsn ie
> > 0 input deauthentication packets
> > 0 input disassociation packets
> > 0 input packets with unknown subtype
> > 0 input packets failed for lack of mbufs
> > 0 input decryptions failed on crc
> > 0 input ahdemo management packets discarded
> > 0 input packets with bad auth request
> > 0 input eapol-key packets
> > 0 input eapol-key packets with bad mic
> > 0 input eapol-key packets replayed
> > 0 input packets with bad tkip mic
> > 0 input tkip mic failure notifications
> > 0 input packets on unauthenticated port
> > 0 output packets failed for lack of mbufs
> > 0 output packets failed for no nodes
> > 0 output packets of unknown management type
> > 0 output packets on unauthenticated port
> > 1 active scan started
> > 0 passive scans started
> > 0 nodes timed out
> > 0 failures with no memory for crypto ctx
> > 0 ccmp decryption errors
> > 0 ccmp replayed frames
> > 0 cmac icv errors
> > 0 cmac replayed frames
> > 0 tkip icv errors
> > 0 tkip replays
> > 0 pbac errors
> > 0 HT negotiation failures because peer does not support MCS 0-7
> > 0 HT negotiation failures because we do not support basic MCS set
> > 0 HT negotiation failures because peer uses bad crypto
> > 0 HT protection changes
> > 0 new input block ack agreements
> > 0 new output block ack agreements
> > 0 input frames below block ack window start
> > 0 input frames above block ack window end
> > 0 input block ack window slides
> > 0 input block ack window jumps
> > 0 duplicate input block ack frames
> > 0 expected input block ack frames never arrived
> > 0 input block ack window gaps timed out
> > 0 input block ack agreements timed out
> > 0 output block ack agreements timed out
> >
> >
> > The two "suspect" values im my humble opinion are:
> > 2 input management packets discarded
> > 3 input packets with mismatched channel
> >
> > Riccardo
> >
>
> My best guess is that because ipw doesn't bother with calling into
> the net80211 newstate function, the interface's link state is never
> updated and packets cannot flow. With WPA, link state gets updated
> as a side-effect of a successful WPA handshake.
>
> Does this fix it?
>
> diff 1ff4cf56fdff3473d72fc4b29d69428c688d47c6 /usr/src
> blob - ab16cd51ba6a2efdf89ac588801a1ae2bc714ed5
> file + sys/dev/pci/if_ipw.c
> --- sys/dev/pci/if_ipw.c
> +++ sys/dev/pci/if_ipw.c
> @@ -679,7 +679,11 @@ int
> ipw_newstate(struct ieee80211com *ic, enum ieee80211_state nstate, int arg)
> {
> struct ipw_softc *sc = ic->ic_softc;
> + struct ifnet *ifp = &ic->ic_if;
>
> + if (LINK_STATE_IS_UP(ifp->if_link_state))
> + ieee80211_set_link_state(ic, LINK_STATE_DOWN);
> +
> switch (nstate) {
> case IEEE80211_S_SCAN:
> task_add(systq, &sc->sc_scantask);
> @@ -690,6 +694,14 @@ ipw_newstate(struct ieee80211com *ic, enum ieee80211_s
> break;
>
> case IEEE80211_S_RUN:
> + if (!(ic->ic_flags & IEEE80211_F_RSNON)) {
> + /*
> + * NB: When RSN is enabled, we defer setting
> + * the link up until the port is valid.
> + */
> + ieee80211_set_link_state(ic, LINK_STATE_UP);
> + }
> + break;
> case IEEE80211_S_INIT:
> case IEEE80211_S_ASSOC:
> /* nothing to do */
>
>
No comments:
Post a Comment