Date: Sun, 4 May 2008 18:41:45 GMT From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 141149 for review Message-ID: <200805041841.m44IfjtP065741@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=141149 Change 141149 by sam@sam_ebb on 2008/05/04 18:41:34 Cleanup opmode handling a bit: o add sta mode capability flag now we have free bits o mark all drivers as sta mode capable o move IEEE80211_C_OPMODE to ieee80211_var.h so it's more clear it needs to be kept consistent with the set of opmode capabilities o add ieee80211_opcap array to map an opmode to the corresponding capability bit for use internal to net80211 o update ddb capability bit decoding Affected files ... .. //depot/projects/vap/sys/dev/ath/if_ath.c#71 edit .. //depot/projects/vap/sys/dev/bwi/if_bwi.c#18 edit .. //depot/projects/vap/sys/dev/if_ndis/if_ndis.c#19 edit .. //depot/projects/vap/sys/dev/ipw/if_ipw.c#18 edit .. //depot/projects/vap/sys/dev/iwi/if_iwi.c#31 edit .. //depot/projects/vap/sys/dev/iwn/if_iwn.c#19 edit .. //depot/projects/vap/sys/dev/malo/if_malo.c#9 edit .. //depot/projects/vap/sys/dev/mwl/if_mwl.c#9 edit .. //depot/projects/vap/sys/dev/ral/rt2560.c#34 edit .. //depot/projects/vap/sys/dev/ral/rt2661.c#32 edit .. //depot/projects/vap/sys/dev/usb/if_rum.c#23 edit .. //depot/projects/vap/sys/dev/usb/if_ural.c#21 edit .. //depot/projects/vap/sys/dev/usb/if_zyd.c#22 edit .. //depot/projects/vap/sys/dev/wi/if_wi.c#31 edit .. //depot/projects/vap/sys/dev/wpi/if_wpi.c#24 edit .. //depot/projects/vap/sys/net80211/ieee80211.c#44 edit .. //depot/projects/vap/sys/net80211/ieee80211_ddb.c#14 edit .. //depot/projects/vap/sys/net80211/ieee80211_proto.h#21 edit .. //depot/projects/vap/sys/net80211/ieee80211_var.h#41 edit Differences ... ==== //depot/projects/vap/sys/dev/ath/if_ath.c#71 (text+ko) ==== @@ -515,7 +515,8 @@ ic->ic_phytype = IEEE80211_T_OFDM; ic->ic_opmode = IEEE80211_M_STA; ic->ic_caps = - IEEE80211_C_IBSS /* ibss, nee adhoc, mode */ + IEEE80211_C_STA /* station mode */ + | IEEE80211_C_IBSS /* ibss, nee adhoc, mode */ | IEEE80211_C_HOSTAP /* hostap mode */ | IEEE80211_C_MONITOR /* monitor mode */ | IEEE80211_C_AHDEMO /* adhoc demo mode */ ==== //depot/projects/vap/sys/dev/bwi/if_bwi.c#18 (text+ko) ==== @@ -506,7 +506,8 @@ ieee80211_init_channels(ic, NULL, &bands); ic->ic_ifp = ifp; - ic->ic_caps = IEEE80211_C_SHSLOT | + ic->ic_caps = IEEE80211_C_STA | + IEEE80211_C_SHSLOT | IEEE80211_C_SHPREAMBLE | IEEE80211_C_WPA | IEEE80211_C_MONITOR; ==== //depot/projects/vap/sys/dev/if_ndis/if_ndis.c#19 (text+ko) ==== @@ -719,7 +719,7 @@ ic->ic_ifp = ifp; ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_DS; - ic->ic_caps = IEEE80211_C_IBSS; + ic->ic_caps = IEEE80211_C_STA | IEEE80211_C_IBSS; setbit(ic->ic_modecaps, IEEE80211_MODE_AUTO); len = 0; r = ndis_get_info(sc, OID_802_11_NETWORK_TYPES_SUPPORTED, ==== //depot/projects/vap/sys/dev/ipw/if_ipw.c#18 (text+ko) ==== @@ -305,7 +305,9 @@ ic->ic_phytype = IEEE80211_T_DS; /* set device capabilities */ - ic->ic_caps = IEEE80211_C_IBSS /* IBSS mode supported */ + ic->ic_caps = + IEEE80211_C_STA /* station mode supported */ + | IEEE80211_C_IBSS /* IBSS mode supported */ | IEEE80211_C_MONITOR /* monitor mode supported */ | IEEE80211_C_PMGT /* power save supported */ | IEEE80211_C_SHPREAMBLE /* short preamble supported */ ==== //depot/projects/vap/sys/dev/iwi/if_iwi.c#31 (text+ko) ==== @@ -388,7 +388,8 @@ /* set device capabilities */ ic->ic_caps = - IEEE80211_C_IBSS /* IBSS mode supported */ + IEEE80211_C_STA /* station mode supported */ + | IEEE80211_C_IBSS /* IBSS mode supported */ | IEEE80211_C_MONITOR /* monitor mode supported */ | IEEE80211_C_PMGT /* power save supported */ | IEEE80211_C_SHPREAMBLE /* short preamble supported */ ==== //depot/projects/vap/sys/dev/iwn/if_iwn.c#19 (text+kox) ==== @@ -379,7 +379,8 @@ /* set device capabilities */ ic->ic_caps = - IEEE80211_C_MONITOR /* monitor mode supported */ + IEEE80211_C_STA /* station mode supported */ + | IEEE80211_C_MONITOR /* monitor mode supported */ | IEEE80211_C_TXPMGT /* tx power management */ | IEEE80211_C_SHSLOT /* short slot time supported */ | IEEE80211_C_WPA ==== //depot/projects/vap/sys/dev/malo/if_malo.c#9 (text+ko) ==== @@ -301,7 +301,8 @@ ic->ic_phytype = IEEE80211_T_OFDM; ic->ic_opmode = IEEE80211_M_STA; ic->ic_caps = - IEEE80211_C_BGSCAN /* capable of bg scanning */ + IEEE80211_C_STA /* station mode supported */ + | IEEE80211_C_BGSCAN /* capable of bg scanning */ | IEEE80211_C_MONITOR /* monitor mode */ | IEEE80211_C_SHPREAMBLE /* short preamble supported */ | IEEE80211_C_SHSLOT /* short slot time supported */ ==== //depot/projects/vap/sys/dev/mwl/if_mwl.c#9 (text+ko) ==== @@ -427,7 +427,8 @@ ic->ic_phytype = IEEE80211_T_OFDM; ic->ic_opmode = IEEE80211_M_STA; ic->ic_caps = - IEEE80211_C_HOSTAP /* hostap mode */ + IEEE80211_C_STA /* station mode supported */ + | IEEE80211_C_HOSTAP /* hostap mode */ | IEEE80211_C_MONITOR /* monitor mode */ #if 0 | IEEE80211_C_IBSS /* ibss, nee adhoc, mode */ ==== //depot/projects/vap/sys/dev/ral/rt2560.c#34 (text) ==== @@ -278,7 +278,8 @@ /* set device capabilities */ ic->ic_caps = - IEEE80211_C_IBSS /* ibss, nee adhoc, mode */ + IEEE80211_C_STA /* station mode supported */ + | IEEE80211_C_IBSS /* ibss, nee adhoc, mode */ | IEEE80211_C_HOSTAP /* hostap mode */ | IEEE80211_C_MONITOR /* monitor mode */ | IEEE80211_C_AHDEMO /* adhoc demo mode */ ==== //depot/projects/vap/sys/dev/ral/rt2661.c#32 (text) ==== @@ -280,7 +280,8 @@ /* set device capabilities */ ic->ic_caps = - IEEE80211_C_IBSS /* ibss, nee adhoc, mode */ + IEEE80211_C_STA /* station mode supported */ + | IEEE80211_C_IBSS /* ibss, nee adhoc, mode */ | IEEE80211_C_HOSTAP /* hostap mode */ | IEEE80211_C_MONITOR /* monitor mode */ | IEEE80211_C_AHDEMO /* adhoc demo mode */ ==== //depot/projects/vap/sys/dev/usb/if_rum.c#23 (text+ko) ==== @@ -490,7 +490,8 @@ /* set device capabilities */ ic->ic_caps = - IEEE80211_C_IBSS /* IBSS mode supported */ + IEEE80211_C_STA /* station mode supported */ + | IEEE80211_C_IBSS /* IBSS mode supported */ | IEEE80211_C_MONITOR /* monitor mode supported */ | IEEE80211_C_HOSTAP /* HostAp mode supported */ | IEEE80211_C_TXPMGT /* tx power management */ ==== //depot/projects/vap/sys/dev/usb/if_ural.c#21 (text+ko) ==== @@ -479,7 +479,8 @@ /* set device capabilities */ ic->ic_caps = - IEEE80211_C_IBSS /* IBSS mode supported */ + IEEE80211_C_STA /* station mode supported */ + | IEEE80211_C_IBSS /* IBSS mode supported */ | IEEE80211_C_MONITOR /* monitor mode supported */ | IEEE80211_C_HOSTAP /* HostAp mode supported */ | IEEE80211_C_TXPMGT /* tx power management */ ==== //depot/projects/vap/sys/dev/usb/if_zyd.c#22 (text+ko) ==== @@ -390,7 +390,8 @@ /* set device capabilities */ ic->ic_caps = - IEEE80211_C_MONITOR /* monitor mode */ + IEEE80211_C_STA /* station mode supported */ + | IEEE80211_C_MONITOR /* monitor mode */ | IEEE80211_C_SHPREAMBLE /* short preamble supported */ | IEEE80211_C_SHSLOT /* short slot time supported */ | IEEE80211_C_BGSCAN /* capable of bg scanning */ ==== //depot/projects/vap/sys/dev/wi/if_wi.c#31 (text+ko) ==== @@ -331,8 +331,9 @@ ic->ic_ifp = ifp; ic->ic_phytype = IEEE80211_T_DS; ic->ic_opmode = IEEE80211_M_STA; - ic->ic_caps = IEEE80211_C_PMGT + ic->ic_caps = IEEE80211_C_STA | IEEE80211_C_MONITOR + | IEEE80211_C_PMGT ; /* ==== //depot/projects/vap/sys/dev/wpi/if_wpi.c#24 (text+ko) ==== @@ -623,7 +623,8 @@ /* set device capabilities */ ic->ic_caps = - IEEE80211_C_MONITOR /* monitor mode supported */ + IEEE80211_C_STA /* station mode supported */ + | IEEE80211_C_MONITOR /* monitor mode supported */ | IEEE80211_C_TXPMGT /* tx power management */ | IEEE80211_C_SHSLOT /* short slot time supported */ | IEEE80211_C_SHPREAMBLE /* short preamble supported */ ==== //depot/projects/vap/sys/net80211/ieee80211.c#44 (text+ko) ==== @@ -49,18 +49,28 @@ #include <net/bpf.h> -const char *ieee80211_phymode_name[] = { - "auto", /* IEEE80211_MODE_AUTO */ - "11a", /* IEEE80211_MODE_11A */ - "11b", /* IEEE80211_MODE_11B */ - "11g", /* IEEE80211_MODE_11G */ - "FH", /* IEEE80211_MODE_FH */ - "turboA", /* IEEE80211_MODE_TURBO_A */ - "turboG", /* IEEE80211_MODE_TURBO_G */ - "sturboA", /* IEEE80211_MODE_STURBO_A */ - "11na", /* IEEE80211_MODE_11NA */ - "11ng", /* IEEE80211_MODE_11NG */ +const char *ieee80211_phymode_name[IEEE80211_MODE_MAX] = { + [IEEE80211_MODE_AUTO] = "auto", + [IEEE80211_MODE_11A] = "11a", + [IEEE80211_MODE_11B] = "11b", + [IEEE80211_MODE_11G] = "11g", + [IEEE80211_MODE_FH] = "FH", + [IEEE80211_MODE_TURBO_A] = "turboA", + [IEEE80211_MODE_TURBO_G] = "turboG", + [IEEE80211_MODE_STURBO_A] = "sturboA", + [IEEE80211_MODE_11NA] = "11na", + [IEEE80211_MODE_11NG] = "11ng", +}; +/* map ieee80211_opmode to the corresponding capability bit */ +const int ieee80211_opcap[IEEE80211_OPMODE_MAX] = { + [IEEE80211_M_IBSS] = IEEE80211_C_IBSS, + [IEEE80211_M_WDS] = IEEE80211_C_WDS, + [IEEE80211_M_STA] = IEEE80211_C_STA, + [IEEE80211_M_AHDEMO] = IEEE80211_C_AHDEMO, + [IEEE80211_M_HOSTAP] = IEEE80211_C_HOSTAP, + [IEEE80211_M_MONITOR] = IEEE80211_C_MONITOR, }; + static const uint8_t ieee80211broadcastaddr[IEEE80211_ADDR_LEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; @@ -310,9 +320,6 @@ const uint8_t bssid[IEEE80211_ADDR_LEN], const uint8_t macaddr[IEEE80211_ADDR_LEN]) { -#define IEEE80211_C_OPMODE \ - (IEEE80211_C_IBSS | IEEE80211_C_HOSTAP | IEEE80211_C_AHDEMO | \ - IEEE80211_C_MONITOR | IEEE80211_C_WDS) struct ifnet *ifp; ifp = if_alloc(IFT_ETHER); @@ -341,26 +348,14 @@ vap->iv_caps = ic->ic_caps &~ IEEE80211_C_OPMODE; vap->iv_htcaps = ic->ic_htcaps; vap->iv_opmode = opmode; + vap->iv_caps |= ieee80211_opcap[opmode]; switch (opmode) { case IEEE80211_M_STA: /* auto-enable s/w beacon miss support */ if (flags & IEEE80211_CLONE_NOBEACONS) vap->iv_flags_ext |= IEEE80211_FEXT_SWBMISS; break; - case IEEE80211_M_IBSS: - vap->iv_caps |= IEEE80211_C_IBSS; - break; - case IEEE80211_M_AHDEMO: - vap->iv_caps |= IEEE80211_C_AHDEMO; - break; - case IEEE80211_M_HOSTAP: - vap->iv_caps |= IEEE80211_C_HOSTAP; - break; - case IEEE80211_M_MONITOR: - vap->iv_caps |= IEEE80211_C_MONITOR; - break; case IEEE80211_M_WDS: - vap->iv_caps |= IEEE80211_C_WDS; /* * WDS links must specify the bssid of the far end. * For legacy operation this is a static relationship. @@ -417,7 +412,6 @@ ieee80211_regdomain_vattach(vap); return 0; -#undef IEEE80211_C_OPMODE } /* ==== //depot/projects/vap/sys/net80211/ieee80211_ddb.c#14 (text+ko) ==== @@ -71,7 +71,7 @@ #define IEEE80211_FVEN_BITS "\20" #define IEEE80211_C_BITS \ - "\20\7FF\10TURBOP\11IBSS\12PMGT" \ + "\20\1STA\7FF\10TURBOP\11IBSS\12PMGT" \ "\13HOSTAP\14AHDEMO\15SWRETRY\16TXPMGT\17SHSLOT\20SHPREAMBLE" \ "\21MONITOR\30WPA1\31WPA2\32BURST\33WME\34WDS\36BGSCAN" \ "\37TXFRAG" ==== //depot/projects/vap/sys/net80211/ieee80211_proto.h#21 (text+ko) ==== @@ -48,7 +48,8 @@ ((*(_ni)->ni_ic->ic_send_mgmt)(_ni, _type, _arg)) extern const char *ieee80211_mgt_subtype_name[]; -extern const char *ieee80211_phymode_name[]; +extern const char *ieee80211_phymode_name[IEEE80211_MODE_MAX]; +extern const int ieee80211_opcap[IEEE80211_OPMODE_MAX]; void ieee80211_proto_attach(struct ieee80211com *); void ieee80211_proto_detach(struct ieee80211com *); ==== //depot/projects/vap/sys/net80211/ieee80211_var.h#41 (text+ko) ==== @@ -493,6 +493,7 @@ /* ic_caps/iv_caps: device driver capabilities */ /* 0x2f available */ +#define IEEE80211_C_STA 0x00000001 /* CAPABILITY: STA available */ #define IEEE80211_C_FF 0x00000040 /* CAPABILITY: ATH FF avail */ #define IEEE80211_C_TURBOP 0x00000080 /* CAPABILITY: ATH Turbo avail*/ #define IEEE80211_C_IBSS 0x00000100 /* CAPABILITY: IBSS available */ @@ -516,6 +517,10 @@ #define IEEE80211_C_TXFRAG 0x40000000 /* CAPABILITY: tx fragments */ /* XXX protection/barker? */ +#define IEEE80211_C_OPMODE \ + (IEEE80211_C_STA | IEEE80211_C_IBSS | IEEE80211_C_HOSTAP | \ + IEEE80211_C_AHDEMO | IEEE80211_C_MONITOR | IEEE80211_C_WDS) + /* * ic_htcaps/iv_htcaps: HT-specific device/driver capabilities *
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200805041841.m44IfjtP065741>