wl1271: mask aid bits 14 and 15 in ps-poll template
authorJuuso Oikarinen <juuso.oikarinen@nokia.com>
Thu, 8 Oct 2009 18:56:22 +0000 (21:56 +0300)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 27 Oct 2009 20:47:49 +0000 (16:47 -0400)
In ps-poll template aid bits 14 and 15 were not masked as required by
the standard. Mask them so that aid is sent in correct format.

This patch is a direct port of the respective patch for the wl1251
driver by Kalle Valo.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Reviewed-by: Vidhya Govindan <vidhya.govindan@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/wl12xx/wl1271_cmd.c

index 1ee1b2b4dfa2002300e808f53b4ccde58c3cb716..bd65b38eb1d9b6c952deb02f7730af294d01dee4 100644 (file)
@@ -682,7 +682,10 @@ int wl1271_cmd_build_ps_poll(struct wl1271 *wl, u16 aid)
 
        memcpy(template.bssid, wl->bssid, ETH_ALEN);
        memcpy(template.ta, wl->mac_addr, ETH_ALEN);
 
        memcpy(template.bssid, wl->bssid, ETH_ALEN);
        memcpy(template.ta, wl->mac_addr, ETH_ALEN);
-       template.aid = aid;
+
+       /* aid in PS-Poll has its two MSBs each set to 1 */
+       template.aid = cpu_to_le16(1 << 15 | 1 << 14 | aid);
+
        template.fc = cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_PSPOLL);
 
        return wl1271_cmd_template_set(wl, CMD_TEMPL_PS_POLL, &template,
        template.fc = cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_PSPOLL);
 
        return wl1271_cmd_template_set(wl, CMD_TEMPL_PS_POLL, &template,