Author: korli Date: 2011-04-13 20:27:36 +0200 (Wed, 13 Apr 2011) New Revision: 41247 Changeset: https://dev.haiku-os.org/changeset/41247 Modified: haiku/trunk/src/libs/compat/freebsd_wlan/net80211/Jamfile haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211.c haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.cpp haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.h haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_ratectl.c haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_ratectl.h Log: added some glue to register correctly rate control modules Modified: haiku/trunk/src/libs/compat/freebsd_wlan/net80211/Jamfile =================================================================== --- haiku/trunk/src/libs/compat/freebsd_wlan/net80211/Jamfile 2011-04-13 08:22:03 UTC (rev 41246) +++ haiku/trunk/src/libs/compat/freebsd_wlan/net80211/Jamfile 2011-04-13 18:27:36 UTC (rev 41247) @@ -59,7 +59,6 @@ # NOT SUPPORTED YET ieee80211_ddb.c # NOT SUPPORTED YET ieee80211_hwmp.c # NOT SUPPORTED YET ieee80211_mesh.c - # NOT SUPPORTED YET ieee80211_rssadapt.c # NOT SUPPORTED YET ieee80211_superg.c # NOT SUPPORTED YET ieee80211_tdma.c ieee80211_xauth.c Modified: haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211.c =================================================================== --- haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211.c 2011-04-13 08:22:03 UTC (rev 41246) +++ haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211.c 2011-04-13 18:27:36 UTC (rev 41247) @@ -293,6 +293,9 @@ ieee80211_scan_attach(ic); ieee80211_regdomain_attach(ic); ieee80211_dfs_attach(ic); +#if defined(__HAIKU__) + ieee80211_ratectl_attach(ic); +#endif ieee80211_sysctl_attach(ic); @@ -337,6 +340,9 @@ ieee80211_waitfor_parent(ic); ieee80211_sysctl_detach(ic); +#if defined(__HAIKU__) + ieee80211_ratectl_detach(ic); +#endif ieee80211_dfs_detach(ic); ieee80211_regdomain_detach(ic); ieee80211_scan_detach(ic); Modified: haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.cpp =================================================================== --- haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.cpp 2011-04-13 08:22:03 UTC (rev 41246) +++ haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.cpp 2011-04-13 18:27:36 UTC (rev 41247) @@ -64,9 +64,9 @@ #define TRACE_WLAN #ifdef TRACE_WLAN -# define TRACE(x, ...) dprintf(x, __VA_ARGS__); +# define TRACE(x...) dprintf(x); #else -# define TRACE(x, ...) ; +# define TRACE(x...) ; #endif Modified: haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.h =================================================================== --- haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.h 2011-04-13 08:22:03 UTC (rev 41246) +++ haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.h 2011-04-13 18:27:36 UTC (rev 41247) @@ -326,17 +326,20 @@ */ #define IEEE80211_RATECTL_MODULE(alg, version) \ _IEEE80211_POLICY_MODULE(ratectl, alg, version); \ + +#define IEEE80211_RATECTL_ALG(name, alg, v) \ + void \ + ieee80211_ratectl_##name##_load() { \ + ieee80211_ratectl_register(alg, &v); \ + } \ +\ +\ + void \ + ieee80211_ratectl_##name##_unload() \ + { \ + ieee80211_ratectl_unregister(alg); \ + } -#define IEEE80211_RATECTL_ALG(name, alg, v) \ -static void \ -alg##_modevent(int type) \ -{ \ - if (type == MOD_LOAD) \ - ieee80211_ratectl_register(alg, &v); \ - else \ - ieee80211_ratectl_unregister(alg); \ -} \ -TEXT_SET(ratectl##_set, alg##_modevent) struct ieee80211req; typedef int ieee80211_ioctl_getfunc(struct ieee80211vap *, Modified: haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_ratectl.c =================================================================== --- haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_ratectl.c 2011-04-13 08:22:03 UTC (rev 41246) +++ haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_ratectl.c 2011-04-13 18:27:36 UTC (rev 41247) @@ -49,7 +49,32 @@ MALLOC_DEFINE(M_80211_RATECTL, "80211ratectl", "802.11 rate control"); + +#if defined(__HAIKU__) +/* + * Setup ratectl support for a device/shared instance. + */ void +ieee80211_ratectl_attach(struct ieee80211com *ic) +{ + ieee80211_ratectl_none_load(); + ieee80211_ratectl_amrr_load(); + ieee80211_ratectl_rssadapt_load(); +} + +/* + * Teardown ratectl support. + */ +void +ieee80211_ratectl_detach(struct ieee80211com *ic) +{ + ieee80211_ratectl_none_unload(); + ieee80211_ratectl_amrr_unload(); + ieee80211_ratectl_rssadapt_unload(); +} +#endif + +void ieee80211_ratectl_register(int type, const struct ieee80211_ratectl *ratectl) { if (type >= IEEE80211_RATECTL_MAX) Modified: haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_ratectl.h =================================================================== --- haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_ratectl.h 2011-04-13 08:22:03 UTC (rev 41246) +++ haiku/trunk/src/libs/compat/freebsd_wlan/net80211/ieee80211_ratectl.h 2011-04-13 18:27:36 UTC (rev 41247) @@ -60,6 +60,17 @@ void ieee80211_ratectl_init(struct ieee80211vap *); void ieee80211_ratectl_set(struct ieee80211vap *, int); +#if defined (__HAIKU__) +void ieee80211_ratectl_attach(struct ieee80211com *ic); +void ieee80211_ratectl_detach(struct ieee80211com *ic); +void ieee80211_ratectl_none_load(void); +void ieee80211_ratectl_none_unload(void); +void ieee80211_ratectl_amrr_load(void); +void ieee80211_ratectl_amrr_unload(void); +void ieee80211_ratectl_rssadapt_load(void); +void ieee80211_ratectl_rssadapt_unload(void); +#endif + MALLOC_DECLARE(M_80211_RATECTL); static void __inline