return -EINVAL;
 
        if (tbl->column != RS_COLUMN_INVALID) {
-               lq_sta->tx_stats[tbl->column][scale_index].total += attempts;
-               lq_sta->tx_stats[tbl->column][scale_index].success += successes;
+               struct lq_sta_pers *pers = &lq_sta->pers;
+
+               pers->tx_stats[tbl->column][scale_index].total += attempts;
+               pers->tx_stats[tbl->column][scale_index].success += successes;
        }
 
        /* Select window for current tx bit rate */
                                 "%s,", column_name[col]);
 
                for (rate = 0; rate < IWL_RATE_COUNT; rate++) {
-                       stats = &(lq_sta->tx_stats[col][rate]);
+                       stats = &(lq_sta->pers.tx_stats[col][rate]);
                        pos += scnprintf(pos, endpos - pos,
                                         "%llu/%llu,",
                                         stats->success,
                                               size_t count, loff_t *ppos)
 {
        struct iwl_lq_sta *lq_sta = file->private_data;
-       memset(lq_sta->tx_stats, 0, sizeof(lq_sta->tx_stats));
+       memset(lq_sta->pers.tx_stats, 0, sizeof(lq_sta->pers.tx_stats));
 
        return count;
 }
 
        bool ldpc;              /* LDPC Rx is supported by the STA */
        enum ieee80211_band band;
 
-       struct rs_rate_stats tx_stats[RS_COLUMN_COUNT][IWL_RATE_COUNT];
-
        /* The following are bitmaps of rates; IWL_RATE_6M_MASK, etc. */
        unsigned long active_legacy_rate;
        unsigned long active_siso_rate;
        int tpc_reduce;
 
        /* persistent fields - initialized only once - keep last! */
-       struct {
+       struct lq_sta_pers {
 #ifdef CONFIG_MAC80211_DEBUGFS
                u32 dbg_fixed_rate;
                u8 dbg_fixed_txp_reduction;
 #endif
+               u8 chains;
+               s8 chain_signal[IEEE80211_MAX_CHAINS];
+               struct rs_rate_stats tx_stats[RS_COLUMN_COUNT][IWL_RATE_COUNT];
                struct iwl_mvm *drv;
        } pers;
 };