wl1251: implement WMM
authorKalle Valo <kalle.valo@nokia.com>
Mon, 30 Nov 2009 08:18:33 +0000 (10:18 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 21 Dec 2009 23:55:59 +0000 (18:55 -0500)
Now that necessary commands for WMM are implemented, implement queue handling
for WMM. But WMM is not enabled yet, only one queue is used.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Reviewed-by: Janne Ylalehto <janne.ylalehto@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/wl12xx/wl1251_main.c
drivers/net/wireless/wl12xx/wl1251_tx.c

index 74770ad..563c84f 100644 (file)
@@ -1306,7 +1306,7 @@ static int wl1251_op_conf_tx(struct ieee80211_hw *hw, u16 queue,
                goto out_sleep;
 
        ret = wl1251_acx_tid_cfg(wl, wl1251_tx_get_queue(queue),
-                                CHANNEL_TYPE_DCF,
+                                CHANNEL_TYPE_EDCF,
                                 wl1251_tx_get_queue(queue),
                                 WL1251_ACX_PS_SCHEME_LEGACY,
                                 WL1251_ACX_ACK_POLICY_LEGACY);
index f859706..faa23ef 100644 (file)
@@ -167,8 +167,7 @@ static int wl1251_tx_fill_hdr(struct wl1251 *wl, struct sk_buff *skb,
        tx_hdr->expiry_time = cpu_to_le32(1 << 16);
        tx_hdr->id = id;
 
-       /* FIXME: how to get the correct queue id? */
-       tx_hdr->xmit_queue = 0;
+       tx_hdr->xmit_queue = wl1251_tx_get_queue(skb_get_queue_mapping(skb));
 
        wl1251_tx_control(tx_hdr, control, fc);
        wl1251_tx_frag_block_num(tx_hdr);
@@ -237,8 +236,9 @@ static int wl1251_tx_send_packet(struct wl1251 *wl, struct sk_buff *skb,
 
        wl1251_mem_write(wl, addr, skb->data, len);
 
-       wl1251_debug(DEBUG_TX, "tx id %u skb 0x%p payload %u rate 0x%x",
-                    tx_hdr->id, skb, tx_hdr->length, tx_hdr->rate);
+       wl1251_debug(DEBUG_TX, "tx id %u skb 0x%p payload %u rate 0x%x "
+                    "queue %d", tx_hdr->id, skb, tx_hdr->length,
+                    tx_hdr->rate, tx_hdr->xmit_queue);
 
        return 0;
 }