Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Mar 2012 23:14:21 +0100
From:      Bernhard Schmidt <bschmidt@freebsd.org>
To:        freebsd-current@freebsd.org
Cc:        freebsd-wireless@freebsd.org
Subject:   Re: patches for if_iwi and wlan for WEP mode
Message-ID:  <201203052314.22050.bschmidt@freebsd.org>
In-Reply-To: <20120306.024212.108736612.iwasaki@jp.FreeBSD.org>
References:  <20120306.024212.108736612.iwasaki@jp.FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 05 March 2012 18:42:12 Mitsuru IWASAKI wrote:
> Hi,
> 
> I've fixed iwi(4) so that Intel(R) PRO/Wireless 2915ABG work
> in WEP mode, which seems to be broken since 8.0-RELEASE.
> 
> The patches against HEAD at:
> http://people.freebsd.org/~iwasaki/iwi/iwi-20120305.diff
> 
> I'm not sure that changes on ieee80211 layer are right fixes,
> but all of mbufs were discarded in ieee80211_start() in WEP mode.
> 
> ----
> void
> ieee80211_start(struct ifnet *ifp)
> {
> [snip]
>                         if (ni->ni_associd == 0 &&
>                             (ni->ni_flags & IEEE80211_NODE_ASSOCID)) {
>                                 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_OUTPUT,
>                                     eh->ether_dhost, NULL,
>                                     "sta not associated (type 0x%04x)",
>                                     htons(eh->ether_type));
>                                 vap->iv_stats.is_tx_notassoc++;
>                                 ifp->if_oerrors++;
>                                 m_freem(m);
>                                 ieee80211_free_node(ni);
>                                 continue;
>                         }
> ----
> 
> My patches set IEEE80211_NODE_ASSOCID bit only if ni->ni_associd
> is set.  Any suggestions on this part are welcome.

Are you sure the net80211 part is correct? It looks to me as if you
are just masking the real issue. The IEEE80211_NODE_ASSOCID flag is
ment to be used to verify that an associd has actually been set, not
doing so will break other things I guess. iwi(4) is a bit tricky in
that regard, as it sets the associd itself, check iwi_checkforqos().
I'd verify that function is actually called and if so if the parameters
are correct. I fumbled around there once, might have wrong WEP..

> I'm going to commit the changes coming weekend.

What's the reason behing adding if_qflush()/if_transmit()?

-- 
Bernhard



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201203052314.22050.bschmidt>