PERFORCE change 112264 for review
Kip Macy
kmacy at FreeBSD.org
Fri Dec 29 04:15:59 PST 2006
http://perforce.freebsd.org/chv.cgi?CH=112264
Change 112264 by kmacy at kmacy_storage:kmacy_wifi on 2006/12/29 02:33:57
integrate by hand some channel handling changes so that we don't panic
while attaching in ath
Affected files ...
.. //depot/projects/kmacy_wifi/sys/net80211/ieee80211.c#6 edit
.. //depot/projects/kmacy_wifi/sys/net80211/ieee80211_proto.c#3 edit
.. //depot/projects/kmacy_wifi/sys/net80211/ieee80211_var.h#3 edit
Differences ...
==== //depot/projects/kmacy_wifi/sys/net80211/ieee80211.c#6 (text+ko) ====
@@ -159,7 +159,7 @@
("invalid number of channels specified: %u", ic->ic_nchans));
memset(ic->ic_chan_avail, 0, sizeof(ic->ic_chan_avail));
ic->ic_modecaps = 1<<IEEE80211_MODE_AUTO;
- for (i = 0; i < ic->ic_nchans; i++) {
+ for (i = 0; i <= IEEE80211_CHAN_MAX; i++) {
c = &ic->ic_channels[i];
if (c->ic_flags) {
/*
@@ -196,10 +196,11 @@
}
}
}
+#if 0
/* initialize candidate channels to all available */
memcpy(ic->ic_chan_active, ic->ic_chan_avail,
sizeof(ic->ic_chan_avail));
-
+#endif
/* fillin well-known rate sets if driver has not specified */
DEFAULTRATES(IEEE80211_MODE_11B, ieee80211_rateset_11b);
DEFAULTRATES(IEEE80211_MODE_11G, ieee80211_rateset_11g);
@@ -348,11 +349,18 @@
int
ieee80211_chan2ieee(struct ieee80211com *ic, const struct ieee80211_channel *c)
{
- if (c == NULL) {
+ if (ic->ic_channels <= c && c <= &ic->ic_channels[IEEE80211_CHAN_MAX])
+ return c - ic->ic_channels;
+ else if (c == IEEE80211_CHAN_ANYC)
+ return IEEE80211_CHAN_ANY;
+ else if (c != NULL) {
+ if_printf(ic->ic_ifp, "invalid channel freq %u flags %x\n",
+ c->ic_freq, c->ic_flags);
+ return 0; /* XXX */
+ } else {
if_printf(ic->ic_ifp, "invalid channel (NULL)\n");
return 0; /* XXX */
}
- return (c == IEEE80211_CHAN_ANYC ? IEEE80211_CHAN_ANY : c->ic_ieee);
}
/*
==== //depot/projects/kmacy_wifi/sys/net80211/ieee80211_proto.c#3 (text+ko) ====
@@ -631,7 +631,7 @@
* entering the RUN state with bsschan setup properly
* so state will eventually get set correctly
*/
- if (ic->ic_bsschan != IEEE80211_CHAN_ANYC)
+ if (ic->ic_bsschan != NULL)
mode = ieee80211_chan2mode(ic, ic->ic_bsschan);
else
mode = IEEE80211_MODE_AUTO;
==== //depot/projects/kmacy_wifi/sys/net80211/ieee80211_var.h#3 (text+ko) ====
More information about the p4-projects
mailing list