From owner-p4-projects@FreeBSD.ORG Sun Jul 10 01:52:07 2005 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0E8C816A420; Sun, 10 Jul 2005 01:52:07 +0000 (GMT) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C0D0B16A41C for ; Sun, 10 Jul 2005 01:52:06 +0000 (GMT) (envelope-from scottl@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8107C43D45 for ; Sun, 10 Jul 2005 01:52:06 +0000 (GMT) (envelope-from scottl@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j6A1q66R013201 for ; Sun, 10 Jul 2005 01:52:06 GMT (envelope-from scottl@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j6A1q6vK013198 for perforce@freebsd.org; Sun, 10 Jul 2005 01:52:06 GMT (envelope-from scottl@freebsd.org) Date: Sun, 10 Jul 2005 01:52:06 GMT Message-Id: <200507100152.j6A1q6vK013198@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to scottl@freebsd.org using -f From: Scott Long To: Perforce Change Reviews Cc: Subject: PERFORCE change 79882 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: Sun, 10 Jul 2005 01:52:07 -0000 http://perforce.freebsd.org/chv.cgi?CH=79882 Change 79882 by scottl@scottl-junior on 2005/07/10 01:51:40 IFC Affected files ... .. //depot/projects/soc2005/ufsj/src/sys/dev/iwi/if_iwi.c#2 integrate .. //depot/projects/soc2005/ufsj/src/sys/dev/ral/if_ral.c#2 integrate .. //depot/projects/soc2005/ufsj/src/sys/dev/usb/if_ural.c#2 integrate .. //depot/projects/soc2005/ufsj/src/sys/net80211/ieee80211_crypto.c#2 integrate Differences ... ==== //depot/projects/soc2005/ufsj/src/sys/dev/iwi/if_iwi.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/iwi/if_iwi.c,v 1.7 2005/07/08 16:31:18 sam Exp $ */ +/* $FreeBSD: src/sys/dev/iwi/if_iwi.c,v 1.8 2005/07/10 00:17:04 sam Exp $ */ /*- * Copyright (c) 2004, 2005 @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/iwi/if_iwi.c,v 1.7 2005/07/08 16:31:18 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/iwi/if_iwi.c,v 1.8 2005/07/10 00:17:04 sam Exp $"); /*- * Intel(R) PRO/Wireless 2200BG/2225BG/2915ABG driver @@ -116,8 +116,6 @@ int); static void iwi_reset_rx_ring(struct iwi_softc *, struct iwi_rx_ring *); static void iwi_free_rx_ring(struct iwi_softc *, struct iwi_rx_ring *); -static int iwi_key_alloc(struct ieee80211com *, - const struct ieee80211_key *); static int iwi_media_change(struct ifnet *); static void iwi_media_status(struct ifnet *, struct ifmediareq *); static int iwi_newstate(struct ieee80211com *, enum ieee80211_state, int); @@ -365,7 +363,6 @@ /* override state transition machine */ sc->sc_newstate = ic->ic_newstate; ic->ic_newstate = iwi_newstate; - ic->ic_crypto.cs_key_alloc = iwi_key_alloc; ieee80211_media_init(ic, iwi_media_change, iwi_media_status); bpfattach2(ifp, DLT_IEEE802_11_RADIO, @@ -799,15 +796,6 @@ } static int -iwi_key_alloc(struct ieee80211com *ic, const struct ieee80211_key *k) -{ - if (k >= ic->ic_nw_keys && k < &ic->ic_nw_keys[IEEE80211_WEP_NKID]) - return k - ic->ic_nw_keys; - - return IEEE80211_KEYIX_NONE; -} - -static int iwi_media_change(struct ifnet *ifp) { struct iwi_softc *sc = ifp->if_softc; ==== //depot/projects/soc2005/ufsj/src/sys/dev/ral/if_ral.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/ral/if_ral.c,v 1.8 2005/07/08 19:33:42 damien Exp $ */ +/* $FreeBSD: src/sys/dev/ral/if_ral.c,v 1.9 2005/07/10 00:17:04 sam Exp $ */ /*- * Copyright (c) 2005 @@ -18,7 +18,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ral/if_ral.c,v 1.8 2005/07/08 19:33:42 damien Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ral/if_ral.c,v 1.9 2005/07/10 00:17:04 sam Exp $"); /*- * Ralink Technology RT2500 chipset driver @@ -91,8 +91,6 @@ struct ral_rx_ring *); static struct ieee80211_node *ral_node_alloc( struct ieee80211_node_table *); -static int ral_key_alloc(struct ieee80211com *, - const struct ieee80211_key *); static int ral_media_change(struct ifnet *); static void ral_next_scan(void *); static void ral_iter_func(void *, struct ieee80211_node *); @@ -463,7 +461,6 @@ /* override state transition machine */ sc->sc_newstate = ic->ic_newstate; ic->ic_newstate = ral_newstate; - ic->ic_crypto.cs_key_alloc = ral_key_alloc; ieee80211_media_init(ic, ral_media_change, ieee80211_media_status); bpfattach2(ifp, DLT_IEEE802_11_RADIO, @@ -910,15 +907,6 @@ } static int -ral_key_alloc(struct ieee80211com *ic, const struct ieee80211_key *k) -{ - if (k >= ic->ic_nw_keys && k < &ic->ic_nw_keys[IEEE80211_WEP_NKID]) - return k - ic->ic_nw_keys; - - return IEEE80211_KEYIX_NONE; -} - -static int ral_media_change(struct ifnet *ifp) { struct ral_softc *sc = ifp->if_softc; ==== //depot/projects/soc2005/ufsj/src/sys/dev/usb/if_ural.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb/if_ural.c,v 1.9 2005/07/08 19:19:06 damien Exp $ */ +/* $FreeBSD: src/sys/dev/usb/if_ural.c,v 1.10 2005/07/10 00:17:05 sam Exp $ */ /*- * Copyright (c) 2005 @@ -18,7 +18,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/usb/if_ural.c,v 1.9 2005/07/08 19:19:06 damien Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb/if_ural.c,v 1.10 2005/07/10 00:17:05 sam Exp $"); /*- * Ralink Technology RT2500USB chipset driver @@ -109,8 +109,6 @@ Static void ural_free_tx_list(struct ural_softc *); Static int ural_alloc_rx_list(struct ural_softc *); Static void ural_free_rx_list(struct ural_softc *); -Static int ural_key_alloc(struct ieee80211com *, - const struct ieee80211_key *); Static int ural_media_change(struct ifnet *); Static void ural_next_scan(void *); Static void ural_task(void *); @@ -493,7 +491,6 @@ /* override state transition machine */ sc->sc_newstate = ic->ic_newstate; ic->ic_newstate = ural_newstate; - ic->ic_crypto.cs_key_alloc = ural_key_alloc; ieee80211_media_init(ic, ural_media_change, ieee80211_media_status); bpfattach2(ifp, DLT_IEEE802_11_RADIO, @@ -667,15 +664,6 @@ } Static int -ural_key_alloc(struct ieee80211com *ic, const struct ieee80211_key *k) -{ - if (k >= ic->ic_nw_keys && k < &ic->ic_nw_keys[IEEE80211_WEP_NKID]) - return k - ic->ic_nw_keys; - - return IEEE80211_KEYIX_NONE; -} - -Static int ural_media_change(struct ifnet *ifp) { struct ural_softc *sc = ifp->if_softc; ==== //depot/projects/soc2005/ufsj/src/sys/net80211/ieee80211_crypto.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/net80211/ieee80211_crypto.c,v 1.9 2005/06/10 16:11:24 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/net80211/ieee80211_crypto.c,v 1.10 2005/07/09 23:15:30 sam Exp $"); /* * IEEE 802.11 generic crypto support. @@ -61,7 +61,24 @@ static int null_key_alloc(struct ieee80211com *ic, const struct ieee80211_key *k) { - return IEEE80211_KEYIX_NONE; + if (!(&ic->ic_nw_keys[0] <= k && + k < &ic->ic_nw_keys[IEEE80211_WEP_NKID])) { + /* + * Not in the global key table, the driver should handle this + * by allocating a slot in the h/w key table/cache. In + * lieu of that return key slot 0 for any unicast key + * request. We disallow the request if this is a group key. + * This default policy does the right thing for legacy hardware + * with a 4 key table. It also handles devices that pass + * packets through untouched when marked with the WEP bit + * and key index 0. + */ + if ((k->wk_flags & IEEE80211_KEY_GROUP) == 0) + return 0; /* NB: use key index 0 for ucast key */ + else + return IEEE80211_KEYIX_NONE; + } + return k - ic->ic_nw_keys; } static int null_key_delete(struct ieee80211com *ic, const struct ieee80211_key *k)