wl1271: modify wl1271_acx_tid_cfg() to use function parameters
authorKalle Valo <kalle.valo@nokia.com>
Thu, 18 Feb 2010 11:25:40 +0000 (13:25 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 19 Feb 2010 20:52:43 +0000 (15:52 -0500)
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: Kalle Valo <kalle.valo@nokia.com>
Reviewed-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/wl12xx/wl1271_acx.c
drivers/net/wireless/wl12xx/wl1271_acx.h
drivers/net/wireless/wl12xx/wl1271_init.c

index 4b052eedbd4bd68e9faf7f7c3be0feccf6791b91..60f10dce48000f7a54dbaa7bd7b91ce10a9af636 100644 (file)
@@ -863,10 +863,12 @@ out:
        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;
-       int i, ret = 0;
+       int ret = 0;
 
        wl1271_debug(DEBUG_ACX, "acx tid config");
 
@@ -877,21 +879,18 @@ int wl1271_acx_tid_cfg(struct wl1271 *wl)
                goto out;
        }
 
-       for (i = 0; i < wl->conf.tx.tid_conf_count; i++) {
-               struct conf_tx_tid *c = &(wl->conf.tx.tid_conf[i]);
-               acx->queue_id = c->queue_id;
-               acx->channel_type = c->channel_type;
-               acx->tsid = c->tsid;
-               acx->ps_scheme = c->ps_scheme;
-               acx->ack_policy = c->ack_policy;
-               acx->apsd_conf[0] = cpu_to_le32(c->apsd_conf[0]);
-               acx->apsd_conf[1] = cpu_to_le32(c->apsd_conf[1]);
+       acx->queue_id = queue_id;
+       acx->channel_type = channel_type;
+       acx->tsid = tsid;
+       acx->ps_scheme = ps_scheme;
+       acx->ack_policy = ack_policy;
+       acx->apsd_conf[0] = cpu_to_le32(apsd_conf0);
+       acx->apsd_conf[1] = cpu_to_le32(apsd_conf1);
 
-               ret = wl1271_cmd_configure(wl, ACX_TID_CFG, acx, sizeof(*acx));
-               if (ret < 0) {
-                       wl1271_warning("Setting of tid config failed: %d", ret);
-                       goto out;
-               }
+       ret = wl1271_cmd_configure(wl, ACX_TID_CFG, acx, sizeof(*acx));
+       if (ret < 0) {
+               wl1271_warning("Setting of tid config failed: %d", ret);
+               goto out;
        }
 
 out:
index e5f5cbd7f0ea321342d8a8ca4d34c19a93fc483e..ac94a13ea747a89712270f942f5ccc62b0f85391 100644 (file)
@@ -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_ac_cfg(struct wl1271 *wl, u8 ac, u8 cw_min, u16 cw_max,
                      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_tx_config_options(struct wl1271 *wl);
 int wl1271_acx_mem_cfg(struct wl1271 *wl);
index 2b56a9ecd7f2895de8c01846bd84345c94966496..78403daab9494eab030ac76bf2f17c76a0e49926 100644 (file)
@@ -196,6 +196,7 @@ static int wl1271_init_beacon_broadcast(struct wl1271 *wl)
 int wl1271_hw_init(struct wl1271 *wl)
 {
        struct conf_tx_ac_category *conf_ac;
+       struct conf_tx_tid *conf_tid;
        int ret, i;
 
        ret = wl1271_cmd_general_parms(wl);
@@ -275,9 +276,18 @@ int wl1271_hw_init(struct wl1271 *wl)
                goto out_free_memmap;
 
        /* Default TID configuration */
-       ret = wl1271_acx_tid_cfg(wl);
-       if (ret < 0)
-               goto out_free_memmap;
+       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)
+                       goto out_free_memmap;
+       }
 
        /* Default AC configuration */
        for (i = 0; i < wl->conf.tx.ac_conf_count; i++) {