/* * this command is basically the same as wl1271_acx_ht_capabilities, * with the addition of supported rates. they should be unified in * the next fw api change
*/ int wl18xx_acx_set_peer_cap(struct wl1271 *wl, struct ieee80211_sta_ht_cap *ht_cap, bool allow_ht_operation,
u32 rate_set, u8 hlid)
{ struct wlcore_acx_peer_cap *acx; int ret = 0;
u32 ht_capabilites = 0;
wl1271_debug(DEBUG_ACX, "acx set cap ht_supp: %d ht_cap: %d rates: 0x%x",
ht_cap->ht_supported, ht_cap->cap, rate_set);
acx = kzalloc(sizeof(*acx), GFP_KERNEL); if (!acx) {
ret = -ENOMEM; goto out;
}
if (allow_ht_operation && ht_cap->ht_supported) { /* no need to translate capabilities - use the spec values */
ht_capabilites = ht_cap->cap;
/* * this bit is not employed by the spec but only by FW to * indicate peer HT support
*/
ht_capabilites |= WL12XX_HT_CAP_HT_OPERATION;
/* get data from A-MPDU parameters field */
acx->ampdu_max_length = ht_cap->ampdu_factor;
acx->ampdu_min_spacing = ht_cap->ampdu_density;
}
/* * When the host is suspended, we don't want to get any fast-link/PSM * notifications
*/ int wl18xx_acx_interrupt_notify_config(struct wl1271 *wl, bool action)
{ struct wl18xx_acx_interrupt_notify *acx; int ret = 0;
acx = kzalloc(sizeof(*acx), GFP_KERNEL); if (!acx) {
ret = -ENOMEM; goto out;
}
/* * When the host is suspended, we can configure the FW to disable RX BA * notifications.
*/ int wl18xx_acx_rx_ba_filter(struct wl1271 *wl, bool action)
{ struct wl18xx_acx_rx_ba_filter *acx; int ret = 0;
acx = kzalloc(sizeof(*acx), GFP_KERNEL); if (!acx) {
ret = -ENOMEM; goto out;
}
acx->enable = (u32)action;
ret = wl1271_cmd_configure(wl, ACX_RX_BA_FILTER, acx, sizeof(*acx)); if (ret < 0) {
wl1271_warning("acx rx ba activity filter setting failed: %d",
ret); goto out;
}
out:
kfree(acx); return ret;
}
int wl18xx_acx_ap_sleep(struct wl1271 *wl)
{ struct wl18xx_priv *priv = wl->priv; struct acx_ap_sleep_cfg *acx; struct conf_ap_sleep_settings *conf = &priv->conf.ap_sleep; int ret;
wl1271_debug(DEBUG_ACX, "acx config ap sleep");
acx = kzalloc(sizeof(*acx), GFP_KERNEL); if (!acx) {
ret = -ENOMEM; goto out;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.