From: "Roland Vossen" <rvossen@broadcom.com>
To: gregkh@suse.de
Cc: devel@linuxdriverproject.org, linux-wireless@vger.kernel.org
Subject: [PATCH 02/83] staging: brcm80211: removed iovar layer from softmac
Date: Wed, 1 Jun 2011 13:44:47 +0200 [thread overview]
Message-ID: <1306928768-7501-2-git-send-email-rvossen@broadcom.com> (raw)
In-Reply-To: <1306928768-7501-1-git-send-email-rvossen@broadcom.com>
Code cleanup. Softmac contained a redundant level of indirection, named
'iovar functionality'.
Signed-off-by: Roland Vossen <rvossen@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
---
drivers/staging/brcm80211/brcmsmac/wl_mac80211.c | 17 +-
drivers/staging/brcm80211/brcmsmac/wlc_main.c | 433 ++++------------------
drivers/staging/brcm80211/brcmsmac/wlc_main.h | 6 -
drivers/staging/brcm80211/brcmsmac/wlc_pub.h | 23 +-
4 files changed, 90 insertions(+), 389 deletions(-)
diff --git a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
index 6c6236c..3deb903 100644
--- a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
+++ b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
@@ -270,14 +270,14 @@ static int wl_ops_config(struct ieee80211_hw *hw, u32 changed)
WL_LOCK(wl);
if (changed & IEEE80211_CONF_CHANGE_LISTEN_INTERVAL) {
- if (wlc_iovar_setint
- (wl->wlc, "bcn_li_bcn", conf->listen_interval)) {
+ if (wlc_set_par(wl->wlc, IOV_BCN_LI_BCN, conf->listen_interval)
+ < 0) {
wiphy_err(wiphy, "%s: Error setting listen_interval\n",
__func__);
err = -EIO;
goto config_out;
}
- wlc_iovar_getint(wl->wlc, "bcn_li_bcn", &new_int);
+ wlc_get_par(wl->wlc, IOV_BCN_LI_BCN, &new_int);
}
if (changed & IEEE80211_CONF_CHANGE_MONITOR)
wiphy_err(wiphy, "%s: change monitor mode: %s (implement)\n",
@@ -289,14 +289,14 @@ static int wl_ops_config(struct ieee80211_hw *hw, u32 changed)
"true" : "false");
if (changed & IEEE80211_CONF_CHANGE_POWER) {
- if (wlc_iovar_setint
- (wl->wlc, "qtxpower", conf->power_level * 4)) {
+ if (wlc_set_par(wl->wlc, IOV_QTXPOWER, conf->power_level * 4)
+ < 0) {
wiphy_err(wiphy, "%s: Error setting power_level\n",
__func__);
err = -EIO;
goto config_out;
}
- wlc_iovar_getint(wl->wlc, "qtxpower", &new_int);
+ wlc_get_par(wl->wlc, IOV_QTXPOWER, &new_int);
if (new_int != (conf->power_level * 4))
wiphy_err(wiphy, "%s: Power level req != actual, %d %d"
"\n", __func__, conf->power_level * 4,
@@ -808,7 +808,7 @@ static struct wl_info *wl_attach(u16 vendor, u16 device, unsigned long regs,
wl->pub->ieee_hw = hw;
- if (wlc_iovar_setint(wl->wlc, "mpc", 0)) {
+ if (wlc_set_par(wl->wlc, IOV_MPC, 0) < 0) {
wiphy_err(wl->wiphy, "wl%d: Error setting MPC variable to 0\n",
unit);
}
@@ -821,8 +821,7 @@ static struct wl_info *wl_attach(u16 vendor, u16 device, unsigned long regs,
wl->irq = irq;
/* register module */
- wlc_module_register(wl->pub, NULL, "linux", wl, NULL, wl_linux_watchdog,
- NULL);
+ wlc_module_register(wl->pub, "linux", wl, wl_linux_watchdog, NULL);
if (ieee_hw_init(hw)) {
wiphy_err(wl->wiphy, "wl%d: %s: ieee_hw_init failed!\n", unit,
diff --git a/drivers/staging/brcm80211/brcmsmac/wlc_main.c b/drivers/staging/brcm80211/brcmsmac/wlc_main.c
index 2425fda..c078ea0 100644
--- a/drivers/staging/brcm80211/brcmsmac/wlc_main.c
+++ b/drivers/staging/brcm80211/brcmsmac/wlc_main.c
@@ -138,28 +138,6 @@ uint wl_msg_level =
static struct wlc_info *wlc_info_dbg = (struct wlc_info *) (NULL);
#endif
-/* IOVar table */
-
-/* Parameter IDs, for use only internally to wlc -- in the wlc_iovars
- * table and by the wlc_doiovar() function. No ordering is imposed:
- * the table is keyed by name, and the function uses a switch.
- */
-enum {
- IOV_MPC = 1,
- IOV_RTSTHRESH,
- IOV_QTXPOWER,
- IOV_BCN_LI_BCN, /* Beacon listen interval in # of beacons */
- IOV_LAST /* In case of a need to check max ID number */
-};
-
-const bcm_iovar_t wlc_iovars[] = {
- {"mpc", IOV_MPC, (0), IOVT_BOOL, 0},
- {"rtsthresh", IOV_RTSTHRESH, (IOVF_WHL), IOVT_UINT16, 0},
- {"qtxpower", IOV_QTXPOWER, (IOVF_WHL), IOVT_UINT32, 0},
- {"bcn_li_bcn", IOV_BCN_LI_BCN, (0), IOVT_UINT8, 0},
- {NULL, 0, 0, 0, 0}
-};
-
const u8 prio2fifo[NUMPRIO] = {
TX_AC_BE_FIFO, /* 0 BE AC_BE Best Effort */
TX_AC_BK_FIFO, /* 1 BK AC_BK Background */
@@ -255,8 +233,6 @@ static void wlc_watchdog(void *arg);
static void wlc_watchdog_by_timer(void *arg);
static u16 wlc_rate_shm_offset(struct wlc_info *wlc, u8 rate);
static int wlc_set_rateset(struct wlc_info *wlc, wlc_rateset_t *rs_arg);
-static int wlc_iovar_rangecheck(struct wlc_info *wlc, u32 val,
- const bcm_iovar_t *vi);
static u8 wlc_local_constraint_qdbm(struct wlc_info *wlc);
/* send and receive */
@@ -1401,10 +1377,6 @@ void *wlc_attach(struct wl_info *wl, u16 vendor, u16 device, uint unit,
/* 11n_disable nvram */
n_disabled = getintvar(pub->vars, "11n_disable");
- /* register a module (to handle iovars) */
- wlc_module_register(wlc->pub, wlc_iovars, "wlc_iovars", wlc,
- wlc_doiovar, NULL, NULL);
-
/*
* low level attach steps(all hw accesses go
* inside, no more in rest of the attach)
@@ -1774,9 +1746,6 @@ uint wlc_detach(struct wlc_info *wlc)
wlc->dumpcb_head = NULL;
}
- /* Detach from iovar manager */
- wlc_module_unregister(wlc->pub, "wlc_iovars", wlc);
-
while (wlc->tx_queues != NULL)
wlc_txq_free(wlc, wlc->tx_queues);
@@ -2819,48 +2788,11 @@ _wlc_ioctl(struct wlc_info *wlc, int cmd, void *arg, int len,
return bcmerror;
}
-/* Look up the given var name in the given table */
-static const bcm_iovar_t *wlc_iovar_lookup(const bcm_iovar_t *table,
- const char *name)
-{
- const bcm_iovar_t *vi;
- const char *lookup_name;
-
- /* skip any ':' delimited option prefixes */
- lookup_name = strrchr(name, ':');
- if (lookup_name != NULL)
- lookup_name++;
- else
- lookup_name = name;
-
- for (vi = table; vi->name; vi++) {
- if (!strcmp(vi->name, lookup_name))
- return vi;
- }
- /* ran to end of table */
-
- return NULL; /* var name not found */
-}
-
-int wlc_iovar_getint(struct wlc_info *wlc, const char *name, int *arg)
-{
- return wlc_iovar_op(wlc, name, NULL, 0, arg, sizeof(s32), IOV_GET,
- NULL);
-}
-
-int wlc_iovar_setint(struct wlc_info *wlc, const char *name, int arg)
-{
- return wlc_iovar_op(wlc, name, NULL, 0, (void *)&arg, sizeof(arg),
- IOV_SET, NULL);
-}
-
/*
- * register iovar table, watchdog and down handlers.
- * calling function must keep 'iovars' until wlc_module_unregister is called.
- * 'iovar' must have the last entry's name field being NULL as terminator.
+ * register watchdog and down handlers.
*/
-int wlc_module_register(struct wlc_pub *pub, const bcm_iovar_t *iovars,
- const char *name, void *hdl, iovar_fn_t i_fn,
+int wlc_module_register(struct wlc_pub *pub,
+ const char *name, void *hdl,
watchdog_fn_t w_fn, down_fn_t d_fn)
{
struct wlc_info *wlc = (struct wlc_info *) pub->wlc;
@@ -2871,9 +2803,7 @@ int wlc_module_register(struct wlc_pub *pub, const bcm_iovar_t *iovars,
if (wlc->modulecb[i].name[0] == '\0') {
strncpy(wlc->modulecb[i].name, name,
sizeof(wlc->modulecb[i].name) - 1);
- wlc->modulecb[i].iovars = iovars;
wlc->modulecb[i].hdl = hdl;
- wlc->modulecb[i].iovar_fn = i_fn;
wlc->modulecb[i].watchdog_fn = w_fn;
wlc->modulecb[i].down_fn = d_fn;
return 0;
@@ -2918,295 +2848,6 @@ static void wlc_wme_retries_write(struct wlc_info *wlc)
}
}
-/* Get or set an iovar. The params/p_len pair specifies any additional
- * qualifying parameters (e.g. an "element index") for a get, while the
- * arg/len pair is the buffer for the value to be set or retrieved.
- * Operation (get/set) is specified by the last argument.
- * interface context provided by wlcif
- *
- * All pointers may point into the same buffer.
- */
-int
-wlc_iovar_op(struct wlc_info *wlc, const char *name,
- void *params, int p_len, void *arg, int len,
- bool set, struct wlc_if *wlcif)
-{
- int err = 0;
- int val_size;
- const bcm_iovar_t *vi = NULL;
- u32 actionid;
- int i;
-
- if (!set && (len == sizeof(int)) &&
- !(IS_ALIGNED((unsigned long)(arg), (uint) sizeof(int)))) {
- wiphy_err(wlc->wiphy, "wl%d: %s unaligned get ptr for %s\n",
- wlc->pub->unit, __func__, name);
- return -ENOTSUPP;
- }
-
- /* find the given iovar name */
- for (i = 0; i < WLC_MAXMODULES; i++) {
- if (!wlc->modulecb[i].iovars)
- continue;
- vi = wlc_iovar_lookup(wlc->modulecb[i].iovars, name);
- if (vi)
- break;
- }
- /* iovar name not found */
- if (i >= WLC_MAXMODULES) {
- return -ENOTSUPP;
- }
-
- /* set up 'params' pointer in case this is a set command so that
- * the convenience int and bool code can be common to set and get
- */
- if (params == NULL) {
- params = arg;
- p_len = len;
- }
-
- if (vi->type == IOVT_VOID)
- val_size = 0;
- else if (vi->type == IOVT_BUFFER)
- val_size = len;
- else
- /* all other types are integer sized */
- val_size = sizeof(int);
-
- actionid = set ? IOV_SVAL(vi->varid) : IOV_GVAL(vi->varid);
-
- /* Do the actual parameter implementation */
- err = wlc->modulecb[i].iovar_fn(wlc->modulecb[i].hdl, vi, actionid,
- name, params, p_len, arg, len, val_size,
- wlcif);
- return err;
-}
-
-int
-wlc_iovar_check(struct wlc_pub *pub, const bcm_iovar_t *vi, void *arg, int len,
- bool set)
-{
- struct wlc_info *wlc = (struct wlc_info *) pub->wlc;
- int err = 0;
- s32 int_val = 0;
-
- /* check generic condition flags */
- if (set) {
- if (((vi->flags & IOVF_SET_DOWN) && wlc->pub->up) ||
- ((vi->flags & IOVF_SET_UP) && !wlc->pub->up)) {
- err = (wlc->pub->up ? -EISCONN : -ENOLINK);
- } else if ((vi->flags & IOVF_SET_BAND)
- && IS_MBAND_UNLOCKED(wlc)) {
- err = -ENOMEDIUM;
- } else if ((vi->flags & IOVF_SET_CLK) && !wlc->clk) {
- err = -EIO;
- }
- } else {
- if (((vi->flags & IOVF_GET_DOWN) && wlc->pub->up) ||
- ((vi->flags & IOVF_GET_UP) && !wlc->pub->up)) {
- err = (wlc->pub->up ? -EISCONN : -ENOLINK);
- } else if ((vi->flags & IOVF_GET_BAND)
- && IS_MBAND_UNLOCKED(wlc)) {
- err = -ENOMEDIUM;
- } else if ((vi->flags & IOVF_GET_CLK) && !wlc->clk) {
- err = -EIO;
- }
- }
-
- if (err)
- goto exit;
-
- /* length check on io buf */
- err = bcm_iovar_lencheck(vi, arg, len, set);
- if (err)
- goto exit;
-
- /* On set, check value ranges for integer types */
- if (set) {
- switch (vi->type) {
- case IOVT_BOOL:
- case IOVT_INT8:
- case IOVT_INT16:
- case IOVT_INT32:
- case IOVT_UINT8:
- case IOVT_UINT16:
- case IOVT_UINT32:
- memcpy(&int_val, arg, sizeof(int));
- err = wlc_iovar_rangecheck(wlc, int_val, vi);
- break;
- }
- }
- exit:
- return err;
-}
-
-/* handler for iovar table wlc_iovars */
-/*
- * IMPLEMENTATION NOTE: In order to avoid checking for get/set in each
- * iovar case, the switch statement maps the iovar id into separate get
- * and set values. If you add a new iovar to the switch you MUST use
- * IOV_GVAL and/or IOV_SVAL in the case labels to avoid conflict with
- * another case.
- * Please use params for additional qualifying parameters.
- */
-int
-wlc_doiovar(void *hdl, const bcm_iovar_t *vi, u32 actionid,
- const char *name, void *params, uint p_len, void *arg, int len,
- int val_size, struct wlc_if *wlcif)
-{
- struct wlc_info *wlc = hdl;
- struct wlc_bsscfg *bsscfg;
- int err = 0;
- s32 int_val = 0;
- s32 int_val2 = 0;
- s32 *ret_int_ptr;
- bool bool_val;
- bool bool_val2;
- wlc_bss_info_t *current_bss;
-
- BCMMSG(wlc->wiphy, "wl%d\n", wlc->pub->unit);
-
- bsscfg = NULL;
- current_bss = NULL;
-
- err = wlc_iovar_check(wlc->pub, vi, arg, len, IOV_ISSET(actionid));
- if (err != 0)
- return err;
-
- /* convenience int and bool vals for first 8 bytes of buffer */
- if (p_len >= (int)sizeof(int_val))
- memcpy(&int_val, params, sizeof(int_val));
-
- if (p_len >= (int)sizeof(int_val) * 2)
- memcpy(&int_val2,
- (void *)((unsigned long)params + sizeof(int_val)),
- sizeof(int_val));
-
- /* convenience int ptr for 4-byte gets (requires int aligned arg) */
- ret_int_ptr = (s32 *) arg;
-
- bool_val = (int_val != 0) ? true : false;
- bool_val2 = (int_val2 != 0) ? true : false;
-
- BCMMSG(wlc->wiphy, "wl%d: id %d\n", wlc->pub->unit, IOV_ID(actionid));
- /* Do the actual parameter implementation */
- switch (actionid) {
- case IOV_SVAL(IOV_RTSTHRESH):
- wlc->RTSThresh = int_val;
- break;
-
- case IOV_GVAL(IOV_QTXPOWER):{
- uint qdbm;
- bool override;
-
- err = wlc_phy_txpower_get(wlc->band->pi, &qdbm,
- &override);
- if (err != 0)
- return err;
-
- /* Return qdbm units */
- *ret_int_ptr =
- qdbm | (override ? WL_TXPWR_OVERRIDE : 0);
- break;
- }
-
- /* As long as override is false, this only sets the *user* targets.
- User can twiddle this all he wants with no harm.
- wlc_phy_txpower_set() explicitly sets override to false if
- not internal or test.
- */
- case IOV_SVAL(IOV_QTXPOWER):{
- u8 qdbm;
- bool override;
-
- /* Remove override bit and clip to max qdbm value */
- qdbm = (u8)min_t(u32, (int_val & ~WL_TXPWR_OVERRIDE), 0xff);
- /* Extract override setting */
- override = (int_val & WL_TXPWR_OVERRIDE) ? true : false;
- err =
- wlc_phy_txpower_set(wlc->band->pi, qdbm, override);
- break;
- }
-
- case IOV_GVAL(IOV_MPC):
- *ret_int_ptr = (s32) wlc->mpc;
- break;
-
- case IOV_SVAL(IOV_MPC):
- wlc->mpc = bool_val;
- wlc_radio_mpc_upd(wlc);
-
- break;
-
- case IOV_GVAL(IOV_BCN_LI_BCN):
- *ret_int_ptr = wlc->bcn_li_bcn;
- break;
-
- case IOV_SVAL(IOV_BCN_LI_BCN):
- wlc->bcn_li_bcn = (u8) int_val;
- if (wlc->pub->up)
- wlc_bcn_li_upd(wlc);
- break;
-
- default:
- wiphy_err(wlc->wiphy, "wl%d: %s: unsupported\n",
- wlc->pub->unit, __func__);
- err = -ENOTSUPP;
- break;
- }
-
- goto exit; /* avoid unused label warning */
-
- exit:
- return err;
-}
-
-static int
-wlc_iovar_rangecheck(struct wlc_info *wlc, u32 val, const bcm_iovar_t *vi)
-{
- int err = 0;
- u32 min_val = 0;
- u32 max_val = 0;
-
- /* Only ranged integers are checked */
- switch (vi->type) {
- case IOVT_INT32:
- max_val |= 0x7fffffff;
- /* fall through */
- case IOVT_INT16:
- max_val |= 0x00007fff;
- /* fall through */
- case IOVT_INT8:
- max_val |= 0x0000007f;
- min_val = ~max_val;
- if (vi->flags & IOVF_NTRL)
- min_val = 1;
- else if (vi->flags & IOVF_WHL)
- min_val = 0;
- /* Signed values are checked against max_val and min_val */
- if ((s32) val < (s32) min_val
- || (s32) val > (s32) max_val)
- err = -EINVAL;
- break;
-
- case IOVT_UINT32:
- max_val |= 0xffffffff;
- /* fall through */
- case IOVT_UINT16:
- max_val |= 0x0000ffff;
- /* fall through */
- case IOVT_UINT8:
- max_val |= 0x000000ff;
- if (vi->flags & IOVF_NTRL)
- min_val = 1;
- if ((val < min_val) || (val > max_val))
- err = -EINVAL;
- break;
- }
-
- return err;
-}
-
#ifdef BCMDBG
static const char *supr_reason[] = {
"None", "PMQ Entry", "Flush request",
@@ -6353,3 +5994,71 @@ void wlc_wait_for_tx_completion(struct wlc_info *wlc, bool drop)
wl_msleep(wlc->wl, 1);
}
}
+
+int wlc_set_par(struct wlc_info *wlc, enum wlc_par_id par_id, int int_val)
+{
+ int err = 0;
+
+ switch (par_id) {
+ case IOV_BCN_LI_BCN:
+ wlc->bcn_li_bcn = (u8) int_val;
+ if (wlc->pub->up)
+ wlc_bcn_li_upd(wlc);
+ break;
+ /* As long as override is false, this only sets the *user*
+ targets. User can twiddle this all he wants with no harm.
+ wlc_phy_txpower_set() explicitly sets override to false if
+ not internal or test.
+ */
+ case IOV_QTXPOWER:{
+ u8 qdbm;
+ bool override;
+
+ /* Remove override bit and clip to max qdbm value */
+ qdbm = (u8)min_t(u32, (int_val & ~WL_TXPWR_OVERRIDE), 0xff);
+ /* Extract override setting */
+ override = (int_val & WL_TXPWR_OVERRIDE) ? true : false;
+ err =
+ wlc_phy_txpower_set(wlc->band->pi, qdbm, override);
+ break;
+ }
+ case IOV_MPC:
+ wlc->mpc = (bool)int_val;
+ wlc_radio_mpc_upd(wlc);
+ break;
+ default:
+ err = -ENOTSUPP;
+ }
+ return err;
+}
+
+int wlc_get_par(struct wlc_info *wlc, enum wlc_par_id par_id, int *ret_int_ptr)
+{
+ int err = 0;
+
+ switch (par_id) {
+ case IOV_BCN_LI_BCN:
+ *ret_int_ptr = wlc->bcn_li_bcn;
+ break;
+ case IOV_QTXPOWER: {
+ uint qdbm;
+ bool override;
+
+ err = wlc_phy_txpower_get(wlc->band->pi, &qdbm,
+ &override);
+ if (err != 0)
+ return err;
+
+ /* Return qdbm units */
+ *ret_int_ptr =
+ qdbm | (override ? WL_TXPWR_OVERRIDE : 0);
+ break;
+ }
+ case IOV_MPC:
+ *ret_int_ptr = (s32) wlc->mpc;
+ break;
+ default:
+ err = -ENOTSUPP;
+ }
+ return err;
+}
diff --git a/drivers/staging/brcm80211/brcmsmac/wlc_main.h b/drivers/staging/brcm80211/brcmsmac/wlc_main.h
index 0bb3784..193f73a 100644
--- a/drivers/staging/brcm80211/brcmsmac/wlc_main.h
+++ b/drivers/staging/brcm80211/brcmsmac/wlc_main.h
@@ -898,12 +898,6 @@ extern void wlc_set_chanspec(struct wlc_info *wlc, chanspec_t chanspec);
extern bool wlc_timers_init(struct wlc_info *wlc, int unit);
-extern const bcm_iovar_t wlc_iovars[];
-
-extern int wlc_doiovar(void *hdl, const bcm_iovar_t *vi, u32 actionid,
- const char *name, void *params, uint p_len, void *arg,
- int len, int val_size, struct wlc_if *wlcif);
-
#if defined(BCMDBG)
extern void wlc_print_ies(struct wlc_info *wlc, u8 *ies, uint ies_len);
#endif
diff --git a/drivers/staging/brcm80211/brcmsmac/wlc_pub.h b/drivers/staging/brcm80211/brcmsmac/wlc_pub.h
index 88b0967..b3a79ab 100644
--- a/drivers/staging/brcm80211/brcmsmac/wlc_pub.h
+++ b/drivers/staging/brcm80211/brcmsmac/wlc_pub.h
@@ -370,6 +370,13 @@ typedef struct wl_rxsts {
#define WL_RXS_NFRM_AMSDU_FIRST 0x00000004 /* first MSDU in A-MSDU */
#define WL_RXS_NFRM_AMSDU_SUB 0x00000008 /* subsequent MSDU(s) in A-MSDU */
+enum wlc_par_id {
+ IOV_MPC = 1,
+ IOV_RTSTHRESH,
+ IOV_QTXPOWER,
+ IOV_BCN_LI_BCN /* Beacon listen interval in # of beacons */
+};
+
/* forward declare and use the struct notation so we don't have to
* have it defined if not necessary.
*/
@@ -492,8 +499,6 @@ extern uint wlc_down(struct wlc_info *wlc);
extern int wlc_set(struct wlc_info *wlc, int cmd, int arg);
extern int wlc_get(struct wlc_info *wlc, int cmd, int *arg);
-extern int wlc_iovar_getint(struct wlc_info *wlc, const char *name, int *arg);
-extern int wlc_iovar_setint(struct wlc_info *wlc, const char *name, int arg);
extern bool wlc_chipmatch(u16 vendor, u16 device);
extern void wlc_init(struct wlc_info *wlc);
extern void wlc_reset(struct wlc_info *wlc);
@@ -506,9 +511,6 @@ extern bool wlc_isr(struct wlc_info *wlc, bool *wantdpc);
extern bool wlc_dpc(struct wlc_info *wlc, bool bounded);
extern bool wlc_sendpkt_mac80211(struct wlc_info *wlc, struct sk_buff *sdu,
struct ieee80211_hw *hw);
-extern int wlc_iovar_op(struct wlc_info *wlc, const char *name, void *params,
- int p_len, void *arg, int len, bool set,
- struct wlc_if *wlcif);
extern int wlc_ioctl(struct wlc_info *wlc, int cmd, void *arg, int len,
struct wlc_if *wlcif);
extern bool wlc_aggregatable(struct wlc_info *wlc, u8 tid);
@@ -534,18 +536,15 @@ extern void wlc_default_rateset(struct wlc_info *wlc, wlc_rateset_t *rs);
struct ieee80211_sta;
extern void wlc_ampdu_flush(struct wlc_info *wlc, struct ieee80211_sta *sta,
u16 tid);
+int wlc_set_par(struct wlc_info *wlc, enum wlc_par_id par_id, int val);
+int wlc_get_par(struct wlc_info *wlc, enum wlc_par_id par_id, int *ret_int_ptr);
/* wlc_phy.c helper functions */
extern void wlc_set_ps_ctrl(struct wlc_info *wlc);
extern void wlc_mctrl(struct wlc_info *wlc, u32 mask, u32 val);
-/* ioctl */
-extern int wlc_iovar_check(struct wlc_pub *pub, const bcm_iovar_t *vi,
- void *arg,
- int len, bool set);
-
-extern int wlc_module_register(struct wlc_pub *pub, const bcm_iovar_t *iovars,
- const char *name, void *hdl, iovar_fn_t iovar_fn,
+extern int wlc_module_register(struct wlc_pub *pub,
+ const char *name, void *hdl,
watchdog_fn_t watchdog_fn, down_fn_t down_fn);
extern int wlc_module_unregister(struct wlc_pub *pub, const char *name,
void *hdl);
--
1.7.4.1
next prev parent reply other threads:[~2011-06-01 11:46 UTC|newest]
Thread overview: 115+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-01 11:44 [PATCH 01/83] staging: brcm80211: removed unused Broadcom specific ioctls codes Roland Vossen
2011-06-01 11:44 ` Roland Vossen [this message]
2011-06-01 11:44 ` [PATCH 03/83] staging: brcm80211: cleanup struct wl_info Roland Vossen
2011-06-01 11:44 ` [PATCH 04/83] staging: brcm80211: removed unused timeout fields in wlc_protection Roland Vossen
2011-06-01 11:44 ` [PATCH 05/83] staging: brcm80211: remove WLC_WATCHDOG_TBTT macro Roland Vossen
2011-06-01 11:44 ` [PATCH 06/83] staging: brcm80211: cleanup struct wlc_info definition Roland Vossen
2011-06-01 11:44 ` [PATCH 07/83] staging: brcm80211: fix compiler warning introduced Roland Vossen
2011-06-01 11:44 ` [PATCH 08/83] staging: brcm80211: replaced #ifdef __mips__ sections by W_REG_FLUSH Roland Vossen
2011-06-01 12:27 ` Jonas Gorski
2011-06-01 17:17 ` Roland Vossen
2011-06-01 11:44 ` [PATCH 09/83] staging: brcm80211: emptied wlioctl.h Roland Vossen
2011-06-01 11:44 ` [PATCH 10/83] staging: brcm80211: removed wlioctl.h and dhdioctl.h Roland Vossen
2011-06-01 11:44 ` [PATCH 11/83] staging: brcm80211: updated MAINTAINERS, README and TODO files Roland Vossen
2011-06-01 11:44 ` [PATCH 12/83] staging: brcm80211: remove iovars IOV_BLOCKMODE Roland Vossen
2011-06-01 11:44 ` [PATCH 13/83] staging: brcm80211: remove iovars IOV_DMA Roland Vossen
2011-06-01 11:44 ` [PATCH 14/83] staging: brcm80211: remove iovars IOV_NUMLOCALINTS Roland Vossen
2011-06-01 11:45 ` [PATCH 15/83] staging: brcm80211: remove iovars IOV_HOSTREG Roland Vossen
2011-06-01 11:45 ` [PATCH 16/83] staging: brcm80211: remove iovars IOV_DIVISOR Roland Vossen
2011-06-01 11:45 ` [PATCH 17/83] staging: brcm80211: remove iovars IOV_POWER Roland Vossen
2011-06-01 11:45 ` [PATCH 18/83] staging: brcm80211: remove iovars IOV_CLOCK Roland Vossen
2011-06-01 11:45 ` [PATCH 19/83] staging: brcm80211: remove iovars IOV_SDMODE Roland Vossen
2011-06-01 11:45 ` [PATCH 20/83] staging: brcm80211: remove iovars IOV_HISPEED Roland Vossen
2011-06-01 11:45 ` [PATCH 21/83] staging: brcm80211: added support for more bcm43224 based boards Roland Vossen
2011-06-01 11:45 ` [PATCH 22/83] staging: brcm80211: removed 'hnd' from filenames Roland Vossen
2011-06-01 11:45 ` [PATCH 23/83] staging: brcm80211: removed 'hnd' from everything but function names Roland Vossen
2011-06-01 11:45 ` [PATCH 24/83] staging: brcm80211: merged two header files into dhd_sdio.c Roland Vossen
2011-06-01 11:45 ` [PATCH 25/83] staging: brcm80211: removed unused stuff from proto/802.11.h Roland Vossen
2011-06-01 11:45 ` [PATCH 26/83] staging: brcm80211: emptied include/802.11.h Roland Vossen
2011-06-01 11:45 ` [PATCH 27/83] staging: brcm80211: removed 802.11.h Roland Vossen
2011-06-01 11:45 ` [PATCH 28/83] staging: brcm80211: cleaned bcmeth.h and bcmevent.h Roland Vossen
2011-06-01 11:45 ` [PATCH 29/83] staging: brcm80211: removed include/proto dir Roland Vossen
2011-06-01 11:45 ` [PATCH 30/83] staging: brcm80211: remove SDIO related definitions from nicpci.h Roland Vossen
2011-06-01 11:45 ` [PATCH 31/83] staging: brcm80211: remove usage of bcmsrom_tbl.h Roland Vossen
2011-06-01 11:45 ` [PATCH 32/83] staging: brcm80211: remove extern variable definitions in bcmsrom.c Roland Vossen
2011-06-01 11:45 ` [PATCH 33/83] staging: brcm80211: remove inclusion of bcmsrom_fmt.h Roland Vossen
2011-06-01 11:45 ` [PATCH 34/83] staging: brcm80211: cleaned sb* header files Roland Vossen
2011-06-01 11:45 ` [PATCH 35/83] staging: brcm80211: moved header files to more specific directory Roland Vossen
2011-06-02 0:08 ` Julian Calaby
2011-06-02 8:32 ` Arend van Spriel
2011-06-02 10:42 ` Julian Calaby
2011-06-01 11:45 ` [PATCH 36/83] staging: brcm80211: cleaned bcmdefs.h Roland Vossen
2011-06-01 11:45 ` [PATCH 37/83] staging: brcm80211: remove usage of pcicfg.h from brcmsmac driver Roland Vossen
2011-06-01 11:45 ` [PATCH 38/83] staging: brcm80211: move PCI related header files to appropriate driver folder Roland Vossen
2011-06-01 23:44 ` Julian Calaby
2011-06-01 11:45 ` [PATCH 39/83] staging: brcm80211: remove functions from nicpci.h Roland Vossen
2011-06-01 11:45 ` [PATCH 40/83] staging: brcm80211: remove unused functions from nicpci.c Roland Vossen
2011-06-01 11:45 ` [PATCH 41/83] staging: brcm80211: add braces to SI_INFO macro definition Roland Vossen
2011-06-01 11:45 ` [PATCH 42/83] staging: brcm80211: remove dependency on pci core difinitions from aiutils.c Roland Vossen
2011-06-01 23:18 ` Julian Calaby
2011-06-02 8:38 ` Arend van Spriel
2011-06-01 11:45 ` [PATCH 43/83] staging: brcm80211: remove pci core defintion files Roland Vossen
2011-06-01 11:45 ` [PATCH 44/83] staging: brcm80211: replaced typedef si_t with struct si_pub Roland Vossen
2011-06-01 23:58 ` Julian Calaby
2011-06-03 16:37 ` Roland Vossen
2011-06-04 0:51 ` Julian Calaby
2011-06-05 8:36 ` Roland Vossen
2011-06-05 9:20 ` Julian Calaby
2011-06-05 19:23 ` julie Sullivan
2011-06-06 1:34 ` Henry Ptasinski
2011-06-06 9:10 ` Roland Vossen
2011-06-06 7:31 ` Roland Vossen
2011-06-06 12:14 ` Julian Calaby
2011-06-08 12:20 ` Roland Vossen
2011-06-01 11:45 ` [PATCH 45/83] staging: brcm80211: deleted sbconfig.h, renamed sbcc.h Roland Vossen
2011-06-01 11:45 ` [PATCH 46/83] staging: brcm80211: moved sbdma.h into brcmsmac/bcmdma.h Roland Vossen
2011-06-01 11:45 ` [PATCH 47/83] staging: brcm80211: macro cleanup Roland Vossen
2011-06-01 11:45 ` [PATCH 48/83] staging: brcm80211: remove phy_version.h Roland Vossen
2011-06-01 11:45 ` [PATCH 49/83] staging: brcm80211: remove BCMEMBEDIMAGE related codes from fullmac Roland Vossen
2011-06-01 11:45 ` [PATCH 50/83] staging: brcm80211: absorb bcmcdc.h into dhd_cdc.c Roland Vossen
2011-06-01 23:37 ` Julian Calaby
2011-06-03 17:50 ` Franky Lin
2011-06-01 11:45 ` [PATCH 51/83] staging: brcm80211: clean up dhd.h in fullmac Roland Vossen
2011-06-01 11:45 ` [PATCH 52/83] staging: brcm80211: absorb bcmsdpcm.h " Roland Vossen
2011-06-01 11:45 ` [PATCH 53/83] staging: brcm80211: absorb msgtrace.h " Roland Vossen
2011-06-01 11:45 ` [PATCH 54/83] staging: brcm80211: combine sbsdpcmdev.h and sbsdio.h Roland Vossen
2011-06-01 23:22 ` Julian Calaby
2011-06-01 11:45 ` [PATCH 55/83] staging: brmc80211: remove sdio.h from fullmac Roland Vossen
2011-06-01 11:45 ` [PATCH 56/83] staging: brcm80211: remove sdioh.h " Roland Vossen
2011-06-01 11:45 ` [PATCH 57/83] staging: brcm80211: clean up wl_cfg80211.h in fullmac Roland Vossen
2011-06-01 11:45 ` [PATCH 58/83] staging: brcm80211: clean up wl_iw.h " Roland Vossen
2011-06-01 11:45 ` [PATCH 59/83] staging: brcm80211: removed wl_ (vendor specific acronym) Roland Vossen
2011-06-01 11:45 ` [PATCH 60/83] staging: brcm80211: renamed files to get rid of wl_ file name prefix Roland Vossen
2011-06-01 11:45 ` [PATCH 61/83] staging: brcm80211: removed wl_dbg.h Roland Vossen
2011-06-01 11:45 ` [PATCH 62/83] staging: brcm80211: removed wl_export.h Roland Vossen
2011-06-01 11:45 ` [PATCH 63/83] staging: brcm80211: removed unused code from bcmotp.c Roland Vossen
2011-06-01 11:45 ` [PATCH 64/83] staging: brcm80211: removed Broadcom specific acronym 'hnd' Roland Vossen
2011-06-01 11:45 ` [PATCH 65/83] staging: brcm80211: removed lmac remnants Roland Vossen
2011-06-01 11:45 ` [PATCH 66/83] staging: brcm80211: cleaned up prefix for utility functions Roland Vossen
2011-06-01 11:45 ` [PATCH 67/83] staging: brcm80211: renamed utility module related files Roland Vossen
2011-06-01 11:45 ` [PATCH 68/83] staging: brcm80211: remove nvram related source files Roland Vossen
2011-06-01 11:45 ` [PATCH 69/83] staging: brcm80211: removed OSL_WRITE_REG and OSL_READ_REG macros Roland Vossen
2011-06-01 11:45 ` [PATCH 70/83] staging: brcm80211: moved register read/write macro's Roland Vossen
2011-06-01 11:45 ` [PATCH 71/83] staging: brcm80211: further simplified register access macro's Roland Vossen
2011-06-02 2:45 ` Julian Calaby
2011-06-03 16:39 ` Roland Vossen
2011-06-01 11:45 ` [PATCH 72/83] staging: brcm80211: cleanup after R_REG/W_REG patches Roland Vossen
2011-06-01 11:45 ` [PATCH 73/83] staging: brcm80211: prepared header files for file rename Roland Vossen
2011-06-01 11:45 ` [PATCH 74/83] staging: brcm80211: renamed files in brcmsmac and include directories Roland Vossen
2011-06-01 11:46 ` [PATCH 75/83] staging: brcm80211: deleted header file include/aidmp.h Roland Vossen
2011-06-01 11:46 ` [PATCH 76/83] staging: brcm80211: cleaned include/brcm_hw_ids.h Roland Vossen
2011-06-01 11:46 ` [PATCH 77/83] staging: brcm80211: moved /include/sdio_host.h to /brcmfmac dir Roland Vossen
2011-06-01 11:46 ` [PATCH 78/83] staging: brcm80211: removed unused definitions from include/soc.h Roland Vossen
2011-06-01 11:46 ` [PATCH 79/83] staging: brcm80211: moved /include/srom.h into /brcmsmac dir Roland Vossen
2011-06-01 11:46 ` [PATCH 80/83] staging: brcm80211: deleted brcmsmac/cfg.h and brcmsmac/bsscfg.h Roland Vossen
2011-06-01 11:46 ` [PATCH 81/83] staging: brcm80211: removed keys.h Roland Vossen
2011-06-01 11:46 ` [PATCH 82/83] staging: brcm80211: renamed file Roland Vossen
2011-06-01 11:46 ` [PATCH 83/83] staging: brcm80211: updated TODO with current state of affairs Roland Vossen
2011-06-01 11:59 ` [PATCH 01/83] staging: brcm80211: removed unused Broadcom specific ioctls codes Rafał Miłecki
2011-06-01 16:23 ` Henry Ptasinski
2011-06-01 16:28 ` Rafał Miłecki
2011-06-02 3:06 ` Julian Calaby
2011-06-03 16:58 ` Roland Vossen
2011-06-04 0:54 ` Julian Calaby
2011-06-03 17:04 ` Henry Ptasinski
2011-06-04 1:00 ` Julian Calaby
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1306928768-7501-2-git-send-email-rvossen@broadcom.com \
--to=rvossen@broadcom.com \
--cc=devel@linuxdriverproject.org \
--cc=gregkh@suse.de \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).