added some glue to register correctly rate control modules

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41247 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2011-04-13 18:27:36 +00:00
parent 73f559a4c7
commit 2c31ec7222
6 changed files with 57 additions and 13 deletions
@@ -59,7 +59,6 @@ KernelStaticLibrary libfreebsd_wlan.a :
# 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
@@ -293,6 +293,9 @@ ieee80211_ifattach(struct ieee80211com *ic,
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_ifdetach(struct ieee80211com *ic)
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);
@@ -64,9 +64,9 @@ extern "C" {
#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
@@ -326,17 +326,20 @@ void ieee80211_scan_sta_uninit(void);
*/
#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 *,
@@ -49,6 +49,31 @@ static const char *ratectl_modnames[IEEE80211_RATECTL_MAX] = {
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)
{
@@ -60,6 +60,17 @@ void ieee80211_ratectl_unregister(int);
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