|
@@ -234,35 +234,6 @@ static struct conf_drv_settings default_conf = {
|
|
.broadcast_timeout = 20000,
|
|
.broadcast_timeout = 20000,
|
|
.rx_broadcast_in_ps = 1,
|
|
.rx_broadcast_in_ps = 1,
|
|
.ps_poll_threshold = 20,
|
|
.ps_poll_threshold = 20,
|
|
- .sig_trigger_count = 2,
|
|
|
|
- .sig_trigger = {
|
|
|
|
- [0] = {
|
|
|
|
- .threshold = -75,
|
|
|
|
- .pacing = 500,
|
|
|
|
- .metric = CONF_TRIG_METRIC_RSSI_BEACON,
|
|
|
|
- .type = CONF_TRIG_EVENT_TYPE_EDGE,
|
|
|
|
- .direction = CONF_TRIG_EVENT_DIR_LOW,
|
|
|
|
- .hysteresis = 2,
|
|
|
|
- .index = 0,
|
|
|
|
- .enable = 1
|
|
|
|
- },
|
|
|
|
- [1] = {
|
|
|
|
- .threshold = -75,
|
|
|
|
- .pacing = 500,
|
|
|
|
- .metric = CONF_TRIG_METRIC_RSSI_BEACON,
|
|
|
|
- .type = CONF_TRIG_EVENT_TYPE_EDGE,
|
|
|
|
- .direction = CONF_TRIG_EVENT_DIR_HIGH,
|
|
|
|
- .hysteresis = 2,
|
|
|
|
- .index = 1,
|
|
|
|
- .enable = 1
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- .sig_weights = {
|
|
|
|
- .rssi_bcn_avg_weight = 10,
|
|
|
|
- .rssi_pkt_avg_weight = 10,
|
|
|
|
- .snr_bcn_avg_weight = 10,
|
|
|
|
- .snr_pkt_avg_weight = 10
|
|
|
|
- },
|
|
|
|
.bet_enable = CONF_BET_MODE_ENABLE,
|
|
.bet_enable = CONF_BET_MODE_ENABLE,
|
|
.bet_max_consecutive = 10,
|
|
.bet_max_consecutive = 10,
|
|
.psm_entry_retries = 3,
|
|
.psm_entry_retries = 3,
|
|
@@ -281,6 +252,14 @@ static struct conf_drv_settings default_conf = {
|
|
.pm_config = {
|
|
.pm_config = {
|
|
.host_clk_settling_time = 5000,
|
|
.host_clk_settling_time = 5000,
|
|
.host_fast_wakeup_support = false
|
|
.host_fast_wakeup_support = false
|
|
|
|
+ },
|
|
|
|
+ .roam_trigger = {
|
|
|
|
+ /* FIXME: due to firmware bug, must use value 1 for now */
|
|
|
|
+ .trigger_pacing = 1,
|
|
|
|
+ .avg_weight_rssi_beacon = 20,
|
|
|
|
+ .avg_weight_rssi_data = 10,
|
|
|
|
+ .avg_weight_snr_beacon = 20,
|
|
|
|
+ .avg_weight_snr_data = 10
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
@@ -1703,6 +1682,18 @@ static void wl1271_op_bss_info_changed(struct ieee80211_hw *hw,
|
|
do_join = true;
|
|
do_join = true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (changed & BSS_CHANGED_CQM) {
|
|
|
|
+ bool enable = false;
|
|
|
|
+ if (bss_conf->cqm_rssi_thold)
|
|
|
|
+ enable = true;
|
|
|
|
+ ret = wl1271_acx_rssi_snr_trigger(wl, enable,
|
|
|
|
+ bss_conf->cqm_rssi_thold,
|
|
|
|
+ bss_conf->cqm_rssi_hyst);
|
|
|
|
+ if (ret < 0)
|
|
|
|
+ goto out;
|
|
|
|
+ wl->rssi_thold = bss_conf->cqm_rssi_thold;
|
|
|
|
+ }
|
|
|
|
+
|
|
if ((changed & BSS_CHANGED_BSSID) &&
|
|
if ((changed & BSS_CHANGED_BSSID) &&
|
|
/*
|
|
/*
|
|
* Now we know the correct bssid, so we send a new join command
|
|
* Now we know the correct bssid, so we send a new join command
|
|
@@ -2283,7 +2274,8 @@ int wl1271_init_ieee80211(struct wl1271 *wl)
|
|
IEEE80211_HW_SUPPORTS_PS |
|
|
IEEE80211_HW_SUPPORTS_PS |
|
|
IEEE80211_HW_SUPPORTS_UAPSD |
|
|
IEEE80211_HW_SUPPORTS_UAPSD |
|
|
IEEE80211_HW_HAS_RATE_CONTROL |
|
|
IEEE80211_HW_HAS_RATE_CONTROL |
|
|
- IEEE80211_HW_CONNECTION_MONITOR;
|
|
|
|
|
|
+ IEEE80211_HW_CONNECTION_MONITOR |
|
|
|
|
+ IEEE80211_HW_SUPPORTS_CQM_RSSI;
|
|
|
|
|
|
wl->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) |
|
|
wl->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) |
|
|
BIT(NL80211_IFTYPE_ADHOC);
|
|
BIT(NL80211_IFTYPE_ADHOC);
|