int wl1271_init_phy_config(struct wl1271 *wl) { int ret; ret = wl1271_acx_pd_threshold(wl); if (ret < 0) return ret; ret = wl1271_acx_slot(wl, DEFAULT_SLOT_TIME); if (ret < 0) return ret; ret = wl1271_acx_group_address_tbl(wl, true, NULL, 0); if (ret < 0) return ret; ret = wl1271_acx_service_period_timeout(wl); if (ret < 0) return ret; ret = wl1271_acx_rts_threshold(wl, wl->conf.rx.rts_threshold); if (ret < 0) return ret; return 0; }
static int wl1271_init_phy_config(struct wl1271 *wl) { int ret; ret = wl1271_acx_pd_threshold(wl); if (ret < 0) return ret; ret = wl1271_acx_slot(wl, DEFAULT_SLOT_TIME); if (ret < 0) return ret; ret = wl1271_acx_group_address_tbl(wl); if (ret < 0) return ret; ret = wl1271_acx_service_period_timeout(wl); if (ret < 0) return ret; ret = wl1271_acx_rts_threshold(wl, RTS_THRESHOLD_DEF); if (ret < 0) return ret; return 0; }
static int wl12xx_init_phy_vif_config(struct wl1271 *wl, struct wl12xx_vif *wlvif) { int ret; ret = wl1271_acx_slot(wl, wlvif, DEFAULT_SLOT_TIME); if (ret < 0) return ret; ret = wl1271_acx_service_period_timeout(wl, wlvif); if (ret < 0) return ret; ret = wl1271_acx_rts_threshold(wl, wlvif, wl->hw->wiphy->rts_threshold); if (ret < 0) return ret; return 0; }
int wl1271_init_phy_config(struct wl1271 *wl) { int ret; ret = wl1271_acx_pd_threshold(wl); if (ret < 0) return ret; ret = wl1271_acx_slot(wl, DEFAULT_SLOT_TIME); if (ret < 0) return ret; ret = wl1271_acx_service_period_timeout(wl); if (ret < 0) return ret; ret = wl1271_acx_rts_threshold(wl, wl->hw->wiphy->rts_threshold); if (ret < 0) return ret; return 0; }
static void wl1271_op_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_bss_conf *bss_conf, u32 changed) { enum wl1271_cmd_ps_mode mode; struct wl1271 *wl = hw->priv; int ret; wl1271_debug(DEBUG_MAC80211, "mac80211 bss info changed"); mutex_lock(&wl->mutex); ret = wl1271_ps_elp_wakeup(wl, false); if (ret < 0) goto out; if (changed & BSS_CHANGED_ASSOC) { if (bss_conf->assoc) { wl->aid = bss_conf->aid; ret = wl1271_cmd_build_ps_poll(wl, wl->aid); if (ret < 0) goto out_sleep; ret = wl1271_acx_aid(wl, wl->aid); if (ret < 0) goto out_sleep; if (wl->psm_requested && !wl->psm) { mode = STATION_POWER_SAVE_MODE; ret = wl1271_ps_set_mode(wl, mode); if (ret < 0) goto out_sleep; } } } if (changed & BSS_CHANGED_ERP_SLOT) { if (bss_conf->use_short_slot) ret = wl1271_acx_slot(wl, SLOT_TIME_SHORT); else ret = wl1271_acx_slot(wl, SLOT_TIME_LONG); if (ret < 0) { wl1271_warning("Set slot time failed %d", ret); goto out_sleep; } } if (changed & BSS_CHANGED_ERP_PREAMBLE) { if (bss_conf->use_short_preamble) wl1271_acx_set_preamble(wl, ACX_PREAMBLE_SHORT); else wl1271_acx_set_preamble(wl, ACX_PREAMBLE_LONG); } if (changed & BSS_CHANGED_ERP_CTS_PROT) { if (bss_conf->use_cts_prot) ret = wl1271_acx_cts_protect(wl, CTSPROTECT_ENABLE); else ret = wl1271_acx_cts_protect(wl, CTSPROTECT_DISABLE); if (ret < 0) { wl1271_warning("Set ctsprotect failed %d", ret); goto out_sleep; } } out_sleep: wl1271_ps_elp_sleep(wl); out: mutex_unlock(&wl->mutex); }