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