summaryrefslogtreecommitdiff
path: root/drivers/staging/cw1200/ap.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/cw1200/ap.c')
-rwxr-xr-xdrivers/staging/cw1200/ap.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/drivers/staging/cw1200/ap.c b/drivers/staging/cw1200/ap.c
index 2a6d27f212f..39c11172544 100755
--- a/drivers/staging/cw1200/ap.c
+++ b/drivers/staging/cw1200/ap.c
@@ -115,34 +115,38 @@ void cw1200_sta_notify(struct ieee80211_hw *dev, struct ieee80211_vif *vif,
static int cw1200_set_tim_impl(struct cw1200_common *priv, bool aid0_bit_set)
{
- struct wsm_template_frame frame = {
- .frame_type = WSM_FRAME_TYPE_BEACON,
+ struct sk_buff *skb;
+ struct wsm_update_ie update_ie = {
+ .what = WSM_UPDATE_IE_BEACON,
+ .count = 1,
};
u16 tim_offset, tim_length;
ap_printk(KERN_DEBUG "[AP] %s mcast: %s.\n",
__func__, aid0_bit_set ? "ena" : "dis");
- frame.skb = ieee80211_beacon_get_tim(priv->hw, priv->vif,
+ skb = ieee80211_beacon_get_tim(priv->hw, priv->vif,
&tim_offset, &tim_length);
- if (WARN_ON(!frame.skb))
+ if (WARN_ON(!skb))
return -ENOMEM;
if (tim_offset && tim_length >= 6) {
/* Ignore DTIM count from mac80211:
* firmware handles DTIM internally. */
- frame.skb->data[tim_offset + 2] = 0;
+ skb->data[tim_offset + 2] = 0;
/* Set/reset aid0 bit */
if (aid0_bit_set)
- frame.skb->data[tim_offset + 4] |= 1;
+ skb->data[tim_offset + 4] |= 1;
else
- frame.skb->data[tim_offset + 4] &= ~1;
+ skb->data[tim_offset + 4] &= ~1;
}
- WARN_ON(wsm_set_template_frame(priv, &frame));
+ update_ie.ies = &skb->data[tim_offset];
+ update_ie.length = tim_length;
+ WARN_ON(wsm_update_ie(priv, &update_ie));
- dev_kfree_skb(frame.skb);
+ dev_kfree_skb(skb);
return 0;
}
@@ -661,7 +665,7 @@ static int cw1200_start_ap(struct cw1200_common *priv)
ret = WARN_ON(cw1200_upload_keys(priv));
if (!ret) {
WARN_ON(wsm_set_block_ack_policy(priv,
- priv->ba_tid_mask, priv->ba_tid_mask));
+ 0, 0));
priv->join_status = CW1200_JOIN_STATUS_AP;
cw1200_update_filtering(priv);
}