Skip to content

Commit

Permalink
wl1251: Add connection monitoring configuration
Browse files Browse the repository at this point in the history
Add configuration for connection monitor (number of allowed beacons, and
timeout after last received beacon.)

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Juuso Oikarinen authored and John W. Linville committed Nov 18, 2009
1 parent 1529538 commit 474c48c
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 0 deletions.
29 changes: 29 additions & 0 deletions drivers/net/wireless/wl12xx/wl1251_acx.c
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,35 @@ int wl1251_acx_beacon_filter_table(struct wl1251 *wl)
return ret;
}

int wl1251_acx_conn_monit_params(struct wl1251 *wl)
{
struct acx_conn_monit_params *acx;
int ret;

wl1251_debug(DEBUG_ACX, "acx connection monitor parameters");

acx = kzalloc(sizeof(*acx), GFP_KERNEL);
if (!acx) {
ret = -ENOMEM;
goto out;
}

acx->synch_fail_thold = SYNCH_FAIL_DEFAULT_THRESHOLD;
acx->bss_lose_timeout = NO_BEACON_DEFAULT_TIMEOUT;

ret = wl1251_cmd_configure(wl, ACX_CONN_MONIT_PARAMS,
acx, sizeof(*acx));
if (ret < 0) {
wl1251_warning("failed to set connection monitor "
"parameters: %d", ret);
goto out;
}

out:
kfree(acx);
return ret;
}

int wl1251_acx_sg_enable(struct wl1251 *wl)
{
struct acx_bt_wlan_coex *pta;
Expand Down
11 changes: 11 additions & 0 deletions drivers/net/wireless/wl12xx/wl1251_acx.h
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,16 @@ struct acx_beacon_filter_ie_table {
u8 pad[3];
} __attribute__ ((packed));

#define SYNCH_FAIL_DEFAULT_THRESHOLD 5 /* number of beacons */
#define NO_BEACON_DEFAULT_TIMEOUT (100) /* TU */

struct acx_conn_monit_params {
struct acx_header header;

u32 synch_fail_thold; /* number of beacons missed */
u32 bss_lose_timeout; /* number of TU's from synch fail */
};

enum {
SG_ENABLE = 0,
SG_DISABLE,
Expand Down Expand Up @@ -1275,6 +1285,7 @@ int wl1251_acx_service_period_timeout(struct wl1251 *wl);
int wl1251_acx_rts_threshold(struct wl1251 *wl, u16 rts_threshold);
int wl1251_acx_beacon_filter_opt(struct wl1251 *wl);
int wl1251_acx_beacon_filter_table(struct wl1251 *wl);
int wl1251_acx_conn_monit_params(struct wl1251 *wl);
int wl1251_acx_sg_enable(struct wl1251 *wl);
int wl1251_acx_sg_cfg(struct wl1251 *wl);
int wl1251_acx_cca_threshold(struct wl1251 *wl);
Expand Down
5 changes: 5 additions & 0 deletions drivers/net/wireless/wl12xx/wl1251_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,11 @@ int wl1251_hw_init(struct wl1251 *wl)
if (ret < 0)
goto out_free_data_path;

/* Initialize connection monitoring thresholds */
ret = wl1251_acx_conn_monit_params(wl);
if (ret < 0)
goto out_free_data_path;

/* Beacon filtering */
ret = wl1251_hw_init_beacon_filter(wl);
if (ret < 0)
Expand Down

0 comments on commit 474c48c

Please sign in to comment.