Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Possible fix for wpa_supplicant(8) WPA re-key lossage



On Tuesday 22 April 2008 22:25:44 Juan RP wrote:

> I use a PCI ral(4) based card and works without any problem with WEP.
> Yesterday I tried WPA PSK-TKIP again and after visiting some
> websites, the connection to the AP was lost.
>
> So I switched back to WEP again... the WPA issue has been there
> forever (and probably will be there for long time :-)

Can you try again after applying the attached patch to 
sys/dev/ic/rt2661.c?

Cheers, Steve
Index: rt2661.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/rt2661.c,v
retrieving revision 1.23
diff -u -p -r1.23 rt2661.c
--- rt2661.c    8 Apr 2008 12:07:27 -0000       1.23
+++ rt2661.c    22 Apr 2008 21:40:51 -0000
@@ -1919,11 +1919,17 @@ rt2661_start(struct ifnet *ifp)
                                break;
 
                } else {
-                       if (ic->ic_state != IEEE80211_S_RUN)
+                       IF_POLL(&ifp->if_snd, m0);
+                       if (m0 == NULL || ic->ic_state != IEEE80211_S_RUN)
                                break;
-                       IFQ_DEQUEUE(&ifp->if_snd, m0);
-                       if (m0 == NULL)
+
+                       if (sc->txq[0].queued >= RT2661_TX_RING_COUNT - 1) {
+                               /* there is no place left in this ring */
+                               ifp->if_flags |= IFF_OACTIVE;
                                break;
+                       }
+
+                       IFQ_DEQUEUE(&ifp->if_snd, m0);
 
                        if (m0->m_len < sizeof (struct ether_header) &&
                            !(m0 = m_pullup(m0, sizeof (struct ether_header))))
@@ -1937,7 +1943,6 @@ rt2661_start(struct ifnet *ifp)
                                continue;
                        }
 
-
                        /* classify mbuf so we can find which tx ring to use */
                        if (ieee80211_classify(ic, m0, ni) != 0) {
                                m_freem(m0);
@@ -1950,11 +1955,6 @@ rt2661_start(struct ifnet *ifp)
                        ac = (eh->ether_type != htons(ETHERTYPE_PAE)) ?
                            M_WME_GETAC(m0) : WME_AC_BE;
 
-                       if (sc->txq[0].queued >= RT2661_TX_RING_COUNT - 1) {
-                               /* there is no place left in this ring */
-                               ifp->if_flags |= IFF_OACTIVE;
-                               break;
-                       }
 #if NBPFILTER > 0
                        if (ifp->if_bpf != NULL)
                                bpf_mtap(ifp->if_bpf, m0);


Home | Main Index | Thread Index | Old Index