I am using a Ralink RT2860 with OpenBSD 4.7 in a Soekris net4801 in
hostap mode as a wireless access point. After a group temporal key
(GTK) update broadcasts stop being received by the attached stations.
If the GTK update reuses the same RT2860 shared key slot then the
problem goes away:

Index: ieee80211_proto.c
===================================================================
RCS file: /cvs/src/sys/net80211/ieee80211_proto.c,v
retrieving revision 1.41
diff -u ieee80211_proto.c
--- ieee80211_proto.c   21 Nov 2009 18:09:31 -0000      1.41
+++ ieee80211_proto.c   5 Jun 2010 07:46:25 -0000
@@ -448,6 +448,7 @@

        /* Swap(GM, GN) */
        kid = (ic->ic_def_txkey == 1) ? 2 : 1;
+kid = ic->ic_def_txkey;
        k = &ic->ic_nw_keys[kid];
        memset(k, 0, sizeof(*k));
        k->k_id = kid;
@@ -482,6 +483,7 @@

        /* install GTK */
        kid = (ic->ic_def_txkey == 1) ? 2 : 1;
+kid = ic->ic_def_txkey;
        if ((*ic->ic_set_key)(ic, ic->ic_bss, &ic->ic_nw_keys[kid]) == 0)
                ic->ic_def_txkey = kid;

Note that I'm not suggesting this diff as a fix for the issue, it's
just something I found to work around the problem.

Without the diff above, the GTK is placed initially into the RT2860
shared key slot 1, and then on the first update the new GTK is placed
into slot 2. The old GTK in slot one is not removed and nothing seems
to instruct the RT2860 to switch to the new GTK in slot 2. It may be
that the RT2860 continues to use the old GTK instead of the newly
updated one. However, if that was the case on the next update when the
GTK is placed back in slot 1 broadcasts would start working again,
which is not what I observe.

I have tried to find a proper fix for the problem, but no luck so far.
Does anyone have any suggestions?

Nathanael

Reply via email to