Commit f2054df5 authored by Kalle Valo's avatar Kalle Valo Committed by John W. Linville

wl1271: modify wl1271_acx_tid_cfg() to use function parameters

For WMM we need to configure each tid separately so modify
wl1271_acx_tid_cfg() to take the configuration from function parameters
instead.
Signed-off-by: default avatarKalle Valo <kalle.valo@nokia.com>
Reviewed-by: default avatarJuuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: default avatarJuuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 243eeb51
...@@ -863,10 +863,12 @@ int wl1271_acx_ac_cfg(struct wl1271 *wl, u8 ac, u8 cw_min, u16 cw_max, ...@@ -863,10 +863,12 @@ int wl1271_acx_ac_cfg(struct wl1271 *wl, u8 ac, u8 cw_min, u16 cw_max,
return ret; return ret;
} }
int wl1271_acx_tid_cfg(struct wl1271 *wl) int wl1271_acx_tid_cfg(struct wl1271 *wl, u8 queue_id, u8 channel_type,
u8 tsid, u8 ps_scheme, u8 ack_policy,
u32 apsd_conf0, u32 apsd_conf1)
{ {
struct acx_tid_config *acx; struct acx_tid_config *acx;
int i, ret = 0; int ret = 0;
wl1271_debug(DEBUG_ACX, "acx tid config"); wl1271_debug(DEBUG_ACX, "acx tid config");
...@@ -877,22 +879,19 @@ int wl1271_acx_tid_cfg(struct wl1271 *wl) ...@@ -877,22 +879,19 @@ int wl1271_acx_tid_cfg(struct wl1271 *wl)
goto out; goto out;
} }
for (i = 0; i < wl->conf.tx.tid_conf_count; i++) { acx->queue_id = queue_id;
struct conf_tx_tid *c = &(wl->conf.tx.tid_conf[i]); acx->channel_type = channel_type;
acx->queue_id = c->queue_id; acx->tsid = tsid;
acx->channel_type = c->channel_type; acx->ps_scheme = ps_scheme;
acx->tsid = c->tsid; acx->ack_policy = ack_policy;
acx->ps_scheme = c->ps_scheme; acx->apsd_conf[0] = cpu_to_le32(apsd_conf0);
acx->ack_policy = c->ack_policy; acx->apsd_conf[1] = cpu_to_le32(apsd_conf1);
acx->apsd_conf[0] = cpu_to_le32(c->apsd_conf[0]);
acx->apsd_conf[1] = cpu_to_le32(c->apsd_conf[1]);
ret = wl1271_cmd_configure(wl, ACX_TID_CFG, acx, sizeof(*acx)); ret = wl1271_cmd_configure(wl, ACX_TID_CFG, acx, sizeof(*acx));
if (ret < 0) { if (ret < 0) {
wl1271_warning("Setting of tid config failed: %d", ret); wl1271_warning("Setting of tid config failed: %d", ret);
goto out; goto out;
} }
}
out: out:
kfree(acx); kfree(acx);
......
...@@ -1072,7 +1072,9 @@ int wl1271_acx_statistics(struct wl1271 *wl, struct acx_statistics *stats); ...@@ -1072,7 +1072,9 @@ int wl1271_acx_statistics(struct wl1271 *wl, struct acx_statistics *stats);
int wl1271_acx_rate_policies(struct wl1271 *wl); int wl1271_acx_rate_policies(struct wl1271 *wl);
int wl1271_acx_ac_cfg(struct wl1271 *wl, u8 ac, u8 cw_min, u16 cw_max, int wl1271_acx_ac_cfg(struct wl1271 *wl, u8 ac, u8 cw_min, u16 cw_max,
u8 aifsn, u16 txop); u8 aifsn, u16 txop);
int wl1271_acx_tid_cfg(struct wl1271 *wl); int wl1271_acx_tid_cfg(struct wl1271 *wl, u8 queue_id, u8 channel_type,
u8 tsid, u8 ps_scheme, u8 ack_policy,
u32 apsd_conf0, u32 apsd_conf1);
int wl1271_acx_frag_threshold(struct wl1271 *wl); int wl1271_acx_frag_threshold(struct wl1271 *wl);
int wl1271_acx_tx_config_options(struct wl1271 *wl); int wl1271_acx_tx_config_options(struct wl1271 *wl);
int wl1271_acx_mem_cfg(struct wl1271 *wl); int wl1271_acx_mem_cfg(struct wl1271 *wl);
......
...@@ -196,6 +196,7 @@ static int wl1271_init_beacon_broadcast(struct wl1271 *wl) ...@@ -196,6 +196,7 @@ static int wl1271_init_beacon_broadcast(struct wl1271 *wl)
int wl1271_hw_init(struct wl1271 *wl) int wl1271_hw_init(struct wl1271 *wl)
{ {
struct conf_tx_ac_category *conf_ac; struct conf_tx_ac_category *conf_ac;
struct conf_tx_tid *conf_tid;
int ret, i; int ret, i;
ret = wl1271_cmd_general_parms(wl); ret = wl1271_cmd_general_parms(wl);
...@@ -275,9 +276,18 @@ int wl1271_hw_init(struct wl1271 *wl) ...@@ -275,9 +276,18 @@ int wl1271_hw_init(struct wl1271 *wl)
goto out_free_memmap; goto out_free_memmap;
/* Default TID configuration */ /* Default TID configuration */
ret = wl1271_acx_tid_cfg(wl); for (i = 0; i < wl->conf.tx.tid_conf_count; i++) {
conf_tid = &wl->conf.tx.tid_conf[i];
ret = wl1271_acx_tid_cfg(wl, conf_tid->queue_id,
conf_tid->channel_type,
conf_tid->tsid,
conf_tid->ps_scheme,
conf_tid->ack_policy,
conf_tid->apsd_conf[0],
conf_tid->apsd_conf[1]);
if (ret < 0) if (ret < 0)
goto out_free_memmap; goto out_free_memmap;
}
/* Default AC configuration */ /* Default AC configuration */
for (i = 0; i < wl->conf.tx.ac_conf_count; i++) { for (i = 0; i < wl->conf.tx.ac_conf_count; i++) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment