From owner-p4-projects@FreeBSD.ORG Sat May 3 21:02:23 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3BBBD1065675; Sat, 3 May 2008 21:02:23 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F1D7B106564A for ; Sat, 3 May 2008 21:02:22 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CC74F8FC16 for ; Sat, 3 May 2008 21:02:22 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m43L2MP0039276 for ; Sat, 3 May 2008 21:02:22 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m43L2Mk5039274 for perforce@freebsd.org; Sat, 3 May 2008 21:02:22 GMT (envelope-from sam@freebsd.org) Date: Sat, 3 May 2008 21:02:22 GMT Message-Id: <200805032102.m43L2Mk5039274@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 141107 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 May 2008 21:02:23 -0000 http://perforce.freebsd.org/chv.cgi?CH=141107 Change 141107 by sam@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) {