Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 265809
b: refs/heads/master
c: 0b932ab
h: refs/heads/master
i:
  265807: 52f5ee2
v: v3
  • Loading branch information
Arik Nemtsov authored and Luciano Coelho committed Aug 22, 2011
1 parent a04b05e commit 64eeeb0
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 13 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: 227e81e18422851901b9de11c5955d292c4a47fc
refs/heads/master: 0b932ab9f156488a56577873b638ecb1e65fa8d7
10 changes: 6 additions & 4 deletions trunk/drivers/net/wireless/wl12xx/acx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1309,21 +1309,23 @@ int wl1271_acx_rssi_snr_avg_weights(struct wl1271 *wl)

int wl1271_acx_set_ht_capabilities(struct wl1271 *wl,
struct ieee80211_sta_ht_cap *ht_cap,
bool allow_ht_operation)
bool allow_ht_operation, u8 hlid)
{
struct wl1271_acx_ht_capabilities *acx;
int ret = 0;
u32 ht_capabilites = 0;

wl1271_debug(DEBUG_ACX, "acx ht capabilities setting");
wl1271_debug(DEBUG_ACX, "acx ht capabilities setting "
"sta supp: %d sta cap: %d", ht_cap->ht_supported,
ht_cap->cap);

acx = kzalloc(sizeof(*acx), GFP_KERNEL);
if (!acx) {
ret = -ENOMEM;
goto out;
}

if (allow_ht_operation) {
if (allow_ht_operation && ht_cap->ht_supported) {
/* no need to translate capabilities - use the spec values */
ht_capabilites = ht_cap->cap;

Expand All @@ -1338,7 +1340,7 @@ int wl1271_acx_set_ht_capabilities(struct wl1271 *wl,
acx->ampdu_min_spacing = ht_cap->ampdu_density;
}

acx->hlid = wl->sta_hlid;
acx->hlid = hlid;
acx->ht_capabilites = cpu_to_le32(ht_capabilites);

ret = wl1271_cmd_configure(wl, ACX_PEER_HT_CAP, acx, sizeof(*acx));
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/net/wireless/wl12xx/acx.h
Original file line number Diff line number Diff line change
Expand Up @@ -1268,7 +1268,7 @@ int wl1271_acx_rssi_snr_trigger(struct wl1271 *wl, bool enable,
int wl1271_acx_rssi_snr_avg_weights(struct wl1271 *wl);
int wl1271_acx_set_ht_capabilities(struct wl1271 *wl,
struct ieee80211_sta_ht_cap *ht_cap,
bool allow_ht_operation);
bool allow_ht_operation, u8 hlid);
int wl1271_acx_set_ht_information(struct wl1271 *wl,
u16 ht_operation_mode);
int wl12xx_acx_set_ba_initiator_policy(struct wl1271 *wl);
Expand Down
34 changes: 27 additions & 7 deletions trunk/drivers/net/wireless/wl12xx/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3124,6 +3124,18 @@ static void wl1271_bss_info_changed_ap(struct wl1271 *wl,
ret = wl1271_bss_erp_info_changed(wl, bss_conf, changed);
if (ret < 0)
goto out;

/* Handle HT information change */
if ((changed & BSS_CHANGED_HT) &&
(bss_conf->channel_type != NL80211_CHAN_NO_HT)) {
ret = wl1271_acx_set_ht_information(wl,
bss_conf->ht_operation_mode);
if (ret < 0) {
wl1271_warning("Set ht information failed %d", ret);
goto out;
}
}

out:
return;
}
Expand Down Expand Up @@ -3439,12 +3451,14 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
}
}

/* Handle new association with HT. Do this only after join. */
/* Handle new association with HT. Do this after join. */
if (sta_exists) {
if ((changed & BSS_CHANGED_HT) &&
(bss_conf->channel_type != NL80211_CHAN_NO_HT)) {
ret = wl1271_acx_set_ht_capabilities(wl, &sta_ht_cap,
true);
ret = wl1271_acx_set_ht_capabilities(wl,
&sta_ht_cap,
true,
wl->sta_hlid);
if (ret < 0) {
wl1271_warning("Set ht cap true failed %d",
ret);
Expand All @@ -3453,8 +3467,10 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
}
/* handle new association without HT and disassociation */
else if (changed & BSS_CHANGED_ASSOC) {
ret = wl1271_acx_set_ht_capabilities(wl, &sta_ht_cap,
false);
ret = wl1271_acx_set_ht_capabilities(wl,
&sta_ht_cap,
false,
wl->sta_hlid);
if (ret < 0) {
wl1271_warning("Set ht cap false failed %d",
ret);
Expand All @@ -3463,8 +3479,8 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
}
}

/* Handle HT information change. Only after join. */
if (sta_exists && (changed & BSS_CHANGED_HT) &&
/* Handle HT information change. Done after join. */
if ((changed & BSS_CHANGED_HT) &&
(bss_conf->channel_type != NL80211_CHAN_NO_HT)) {
ret = wl1271_acx_set_ht_information(wl,
bss_conf->ht_operation_mode);
Expand Down Expand Up @@ -3703,6 +3719,10 @@ static int wl1271_op_sta_add(struct ieee80211_hw *hw,
if (ret < 0)
goto out_sleep;

ret = wl1271_acx_set_ht_capabilities(wl, &sta->ht_cap, true, hlid);
if (ret < 0)
goto out_sleep;

out_sleep:
wl1271_ps_elp_sleep(wl);

Expand Down

0 comments on commit 64eeeb0

Please sign in to comment.