Merge commit 'c1e140bf79d817d4a7aa9932eb98b0359c87af33' from mac80211-next
[cascardo/linux.git] / drivers / net / wireless / ti / wlcore / main.c
index e90fb78..0a9d9a1 100644 (file)
@@ -2552,6 +2552,7 @@ static int wl1271_op_add_interface(struct ieee80211_hw *hw,
        }
 
        vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER |
+                            IEEE80211_VIF_SUPPORTS_UAPSD |
                             IEEE80211_VIF_SUPPORTS_CQM_RSSI;
 
        wl1271_debug(DEBUG_MAC80211, "mac80211 add interface type %d mac %pM",
@@ -5661,14 +5662,15 @@ static void wlcore_op_sta_rc_update(struct ieee80211_hw *hw,
        ieee80211_queue_work(hw, &wlvif->rc_update_work);
 }
 
-static int wlcore_op_get_rssi(struct ieee80211_hw *hw,
-                              struct ieee80211_vif *vif,
-                              struct ieee80211_sta *sta,
-                              s8 *rssi_dbm)
+static void wlcore_op_sta_statistics(struct ieee80211_hw *hw,
+                                    struct ieee80211_vif *vif,
+                                    struct ieee80211_sta *sta,
+                                    struct station_info *sinfo)
 {
        struct wl1271 *wl = hw->priv;
        struct wl12xx_vif *wlvif = wl12xx_vif_to_data(vif);
-       int ret = 0;
+       s8 rssi_dbm;
+       int ret;
 
        wl1271_debug(DEBUG_MAC80211, "mac80211 get_rssi");
 
@@ -5681,17 +5683,18 @@ static int wlcore_op_get_rssi(struct ieee80211_hw *hw,
        if (ret < 0)
                goto out_sleep;
 
-       ret = wlcore_acx_average_rssi(wl, wlvif, rssi_dbm);
+       ret = wlcore_acx_average_rssi(wl, wlvif, &rssi_dbm);
        if (ret < 0)
                goto out_sleep;
 
+       sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
+       sinfo->signal = rssi_dbm;
+
 out_sleep:
        wl1271_ps_elp_sleep(wl);
 
 out:
        mutex_unlock(&wl->mutex);
-
-       return ret;
 }
 
 static bool wl1271_tx_frames_pending(struct ieee80211_hw *hw)
@@ -5893,7 +5896,7 @@ static const struct ieee80211_ops wl1271_ops = {
        .unassign_vif_chanctx = wlcore_op_unassign_vif_chanctx,
        .switch_vif_chanctx = wlcore_op_switch_vif_chanctx,
        .sta_rc_update = wlcore_op_sta_rc_update,
-       .get_rssi = wlcore_op_get_rssi,
+       .sta_statistics = wlcore_op_sta_statistics,
        CFG80211_TESTMODE_CMD(wl1271_tm_cmd)
 };
 
@@ -6064,7 +6067,6 @@ static int wl1271_init_ieee80211(struct wl1271 *wl)
        wl->hw->flags = IEEE80211_HW_SIGNAL_DBM |
                IEEE80211_HW_SUPPORTS_PS |
                IEEE80211_HW_SUPPORTS_DYNAMIC_PS |
-               IEEE80211_HW_SUPPORTS_UAPSD |
                IEEE80211_HW_HAS_RATE_CONTROL |
                IEEE80211_HW_CONNECTION_MONITOR |
                IEEE80211_HW_REPORTS_TX_ACK_STATUS |