PERFORCE change 141107 for review
Sam Leffler
sam at FreeBSD.org
Sat May 3 21:02:23 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=141107
Change 141107 by sam at sam_ebb on 2008/05/03 21:01:46
o fix handling of TKIP tx-only keys for chips that have room
for only one MIC key / keycache entry; must pass the MIC key
to the hal in kv_mic, not kv_txmic (the hal api was left
unchanged for backwards compatibility)
o yank compat support for hal's older than 0.9.20.3; leave a
CTASSERT in place just in case
Affected files ...
.. //depot/projects/vap/sys/dev/ath/if_ath.c#69 edit
Differences ...
==== //depot/projects/vap/sys/dev/ath/if_ath.c#69 (text+ko) ====
@@ -85,6 +85,11 @@
#endif
/*
+ * We require a HAL w/ the changes for split tx/rx MIC.
+ */
+CTASSERT(HAL_ABI_VERSION > 0x06052200);
+
+/*
* ATH_BCBUF determines the number of vap's that can transmit
* beacons and also (currently) the number of vap's that can
* have unique mac addresses/bssid. When staggering beacons
@@ -2067,13 +2072,11 @@
printf(" %s ", sc->sc_splitmic ? "mic" : "rxmic");
for (i = 0; i < sizeof(hk->kv_mic); i++)
printf("%02x", hk->kv_mic[i]);
-#if HAL_ABI_VERSION > 0x06052200
if (!sc->sc_splitmic) {
printf(" txmic ");
for (i = 0; i < sizeof(hk->kv_txmic); i++)
printf("%02x", hk->kv_txmic[i]);
}
-#endif
}
printf("\n");
}
@@ -2116,18 +2119,19 @@
* will handle the rest.
*/
memcpy(hk->kv_mic, k->wk_rxmic, sizeof(hk->kv_mic));
-#if HAL_ABI_VERSION > 0x06052200
memcpy(hk->kv_txmic, k->wk_txmic, sizeof(hk->kv_txmic));
-#endif
KEYPRINTF(sc, k->wk_keyix, hk, mac);
return ath_hal_keyset(ah, k->wk_keyix, hk, mac);
}
} else if (k->wk_flags & IEEE80211_KEY_XMIT) {
-#if HAL_ABI_VERSION > 0x06052200
- memcpy(hk->kv_txmic, k->wk_txmic, sizeof(hk->kv_txmic));
-#else
- memcpy(hk->kv_mic, k->wk_mic, sizeof(hk->kv_mic));
-#endif
+ if (sc->sc_splitmic) {
+ /*
+ * NB: must pass MIC key in expected location when
+ * the keycache only holds one MIC key per entry.
+ */
+ memcpy(hk->kv_mic, k->wk_txmic, sizeof(hk->kv_txmic));
+ } else
+ memcpy(hk->kv_txmic, k->wk_txmic, sizeof(hk->kv_txmic));
KEYPRINTF(sc, k->wk_keyix, hk, mac);
return ath_hal_keyset(ah, k->wk_keyix, hk, mac);
} else if (k->wk_flags & IEEE80211_KEY_RECV) {
More information about the p4-projects
mailing list