Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 183580
b: refs/heads/master
c: f7f7057
h: refs/heads/master
v: v3
  • Loading branch information
Kalle Valo authored and John W. Linville committed Jan 12, 2010
1 parent 43de223 commit c8e6509
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 43 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d8cd189e9b1e050629f545e76b21a321f62c29bf
refs/heads/master: f7f70579340dba1e551c0e52349fde0370592174
58 changes: 16 additions & 42 deletions trunk/drivers/net/wireless/wl12xx/wl1251_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -563,45 +563,6 @@ static void wl1251_op_remove_interface(struct ieee80211_hw *hw,
mutex_unlock(&wl->mutex);
}

static int wl1251_build_null_data(struct wl1251 *wl)
{
struct wl12xx_null_data_template template;

if (!is_zero_ether_addr(wl->bssid)) {
memcpy(template.header.da, wl->bssid, ETH_ALEN);
memcpy(template.header.bssid, wl->bssid, ETH_ALEN);
} else {
memset(template.header.da, 0xff, ETH_ALEN);
memset(template.header.bssid, 0xff, ETH_ALEN);
}

memcpy(template.header.sa, wl->mac_addr, ETH_ALEN);
template.header.frame_ctl = cpu_to_le16(IEEE80211_FTYPE_DATA |
IEEE80211_STYPE_NULLFUNC |
IEEE80211_FCTL_TODS);

return wl1251_cmd_template_set(wl, CMD_NULL_DATA, &template,
sizeof(template));

}

static int wl1251_build_ps_poll(struct wl1251 *wl, u16 aid)
{
struct wl12xx_ps_poll_template template;

memcpy(template.bssid, wl->bssid, ETH_ALEN);
memcpy(template.ta, wl->mac_addr, ETH_ALEN);

/* 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 wl1251_cmd_template_set(wl, CMD_PS_POLL, &template,
sizeof(template));

}

static int wl1251_op_config(struct ieee80211_hw *hw, u32 changed)
{
struct wl1251 *wl = hw->priv;
Expand Down Expand Up @@ -1101,7 +1062,7 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
{
enum wl1251_cmd_ps_mode mode;
struct wl1251 *wl = hw->priv;
struct sk_buff *beacon;
struct sk_buff *beacon, *skb;
int ret;

wl1251_debug(DEBUG_MAC80211, "mac80211 bss info changed");
Expand All @@ -1115,7 +1076,13 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
if (changed & BSS_CHANGED_BSSID) {
memcpy(wl->bssid, bss_conf->bssid, ETH_ALEN);

ret = wl1251_build_null_data(wl);
skb = ieee80211_nullfunc_get(wl->hw, wl->vif);
if (!skb)
goto out_sleep;

ret = wl1251_cmd_template_set(wl, CMD_NULL_DATA,
skb->data, skb->len);
dev_kfree_skb(skb);
if (ret < 0)
goto out;

Expand All @@ -1136,7 +1103,14 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
wl->dtim_period);
wl->aid = bss_conf->aid;

ret = wl1251_build_ps_poll(wl, wl->aid);
skb = ieee80211_pspoll_get(wl->hw, wl->vif);
if (!skb)
goto out_sleep;

ret = wl1251_cmd_template_set(wl, CMD_PS_POLL,
skb->data,
skb->len);
dev_kfree_skb(skb);
if (ret < 0)
goto out_sleep;

Expand Down

0 comments on commit c8e6509

Please sign in to comment.