PERFORCE change 79882 for review
Scott Long
scottl at FreeBSD.org
Sun Jul 10 01:52:07 GMT 2005
http://perforce.freebsd.org/chv.cgi?CH=79882
Change 79882 by scottl at 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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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)
More information about the p4-projects
mailing list