if (vif->target_stats.rx_byte) {
                sinfo->rx_bytes = vif->target_stats.rx_byte;
-               sinfo->filled |= STATION_INFO_RX_BYTES64;
+               sinfo->filled |= BIT(NL80211_STA_INFO_RX_BYTES64);
                sinfo->rx_packets = vif->target_stats.rx_pkt;
-               sinfo->filled |= STATION_INFO_RX_PACKETS;
+               sinfo->filled |= BIT(NL80211_STA_INFO_RX_PACKETS);
        }
 
        if (vif->target_stats.tx_byte) {
                sinfo->tx_bytes = vif->target_stats.tx_byte;
-               sinfo->filled |= STATION_INFO_TX_BYTES64;
+               sinfo->filled |= BIT(NL80211_STA_INFO_TX_BYTES64);
                sinfo->tx_packets = vif->target_stats.tx_pkt;
-               sinfo->filled |= STATION_INFO_TX_PACKETS;
+               sinfo->filled |= BIT(NL80211_STA_INFO_TX_PACKETS);
        }
 
        sinfo->signal = vif->target_stats.cs_rssi;
-       sinfo->filled |= STATION_INFO_SIGNAL;
+       sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
 
        rate = vif->target_stats.tx_ucast_rate;
 
                return 0;
        }
 
-       sinfo->filled |= STATION_INFO_TX_BITRATE;
+       sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
 
        if (test_bit(CONNECTED, &vif->flags) &&
            test_bit(DTIM_PERIOD_AVAIL, &vif->flags) &&
            vif->nw_type == INFRA_NETWORK) {
-               sinfo->filled |= STATION_INFO_BSS_PARAM;
+               sinfo->filled |= BIT(NL80211_STA_INFO_BSS_PARAM);
                sinfo->bss_param.flags = 0;
                sinfo->bss_param.dtim_period = vif->assoc_bss_dtim_period;
                sinfo->bss_param.beacon_interval = vif->assoc_bss_beacon_int;
 
 
        sinfo.assoc_req_ies = ies;
        sinfo.assoc_req_ies_len = ies_len;
-       sinfo.filled |= STATION_INFO_ASSOC_REQ_IES;
 
        cfg80211_new_sta(vif->ndev, mac_addr, &sinfo, GFP_KERNEL);
 
 
 
        sinfo->generation = wil->sinfo_gen;
 
-       sinfo->filled = STATION_INFO_RX_BYTES |
-                       STATION_INFO_TX_BYTES |
-                       STATION_INFO_RX_PACKETS |
-                       STATION_INFO_TX_PACKETS |
-                       STATION_INFO_RX_BITRATE |
-                       STATION_INFO_TX_BITRATE |
-                       STATION_INFO_RX_DROP_MISC |
-                       STATION_INFO_TX_FAILED;
+       sinfo->filled = BIT(NL80211_STA_INFO_RX_BYTES) |
+                       BIT(NL80211_STA_INFO_TX_BYTES) |
+                       BIT(NL80211_STA_INFO_RX_PACKETS) |
+                       BIT(NL80211_STA_INFO_TX_PACKETS) |
+                       BIT(NL80211_STA_INFO_RX_BITRATE) |
+                       BIT(NL80211_STA_INFO_TX_BITRATE) |
+                       BIT(NL80211_STA_INFO_RX_DROP_MISC) |
+                       BIT(NL80211_STA_INFO_TX_FAILED);
 
        sinfo->txrate.flags = RATE_INFO_FLAGS_MCS | RATE_INFO_FLAGS_60G;
        sinfo->txrate.mcs = le16_to_cpu(reply.evt.bf_mcs);
        sinfo->tx_failed = stats->tx_errors;
 
        if (test_bit(wil_status_fwconnected, &wil->status)) {
-               sinfo->filled |= STATION_INFO_SIGNAL;
+               sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
                sinfo->signal = reply.evt.sqi;
        }
 
 
                if (assoc_req_ie) {
                        sinfo.assoc_req_ies = assoc_req_ie;
                        sinfo.assoc_req_ies_len = assoc_req_ielen;
-                       sinfo.filled |= STATION_INFO_ASSOC_REQ_IES;
                }
 
                cfg80211_new_sta(ndev, evt->bssid, &sinfo, GFP_KERNEL);
 
                        brcmf_err("GET STA INFO failed, %d\n", err);
                        goto done;
                }
-               sinfo->filled = STATION_INFO_INACTIVE_TIME;
+               sinfo->filled = BIT(NL80211_STA_INFO_INACTIVE_TIME);
                sinfo->inactive_time = le32_to_cpu(sta_info_le.idle) * 1000;
                if (le32_to_cpu(sta_info_le.flags) & BRCMF_STA_ASSOC) {
-                       sinfo->filled |= STATION_INFO_CONNECTED_TIME;
+                       sinfo->filled |= BIT(NL80211_STA_INFO_CONNECTED_TIME);
                        sinfo->connected_time = le32_to_cpu(sta_info_le.in);
                }
                brcmf_dbg(TRACE, "STA idle time : %d ms, connected time :%d sec\n",
                        brcmf_err("Could not get rate (%d)\n", err);
                        goto done;
                } else {
-                       sinfo->filled |= STATION_INFO_TX_BITRATE;
+                       sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
                        sinfo->txrate.legacy = rate * 5;
                        brcmf_dbg(CONN, "Rate %d Mbps\n", rate / 2);
                }
                                goto done;
                        } else {
                                rssi = le32_to_cpu(scb_val.val);
-                               sinfo->filled |= STATION_INFO_SIGNAL;
+                               sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
                                sinfo->signal = rssi;
                                brcmf_dbg(CONN, "RSSI %d dBm\n", rssi);
                        }
                                brcmf_dbg(CONN, "DTIM peroid %d\n",
                                          dtim_period);
                        }
-                       sinfo->filled |= STATION_INFO_BSS_PARAM;
+                       sinfo->filled |= BIT(NL80211_STA_INFO_BSS_PARAM);
                }
        } else
                err = -EPERM;
        if (((event == BRCMF_E_ASSOC_IND) || (event == BRCMF_E_REASSOC_IND)) &&
            (reason == BRCMF_E_STATUS_SUCCESS)) {
                memset(&sinfo, 0, sizeof(sinfo));
-               sinfo.filled = STATION_INFO_ASSOC_REQ_IES;
                if (!data) {
                        brcmf_err("No IEs present in ASSOC/REASSOC_IND");
                        return -EINVAL;
 
 
        lbs_deb_enter(LBS_DEB_CFG80211);
 
-       sinfo->filled |= STATION_INFO_TX_BYTES |
-                        STATION_INFO_TX_PACKETS |
-                        STATION_INFO_RX_BYTES |
-                        STATION_INFO_RX_PACKETS;
+       sinfo->filled |= BIT(NL80211_STA_INFO_TX_BYTES) |
+                        BIT(NL80211_STA_INFO_TX_PACKETS) |
+                        BIT(NL80211_STA_INFO_RX_BYTES) |
+                        BIT(NL80211_STA_INFO_RX_PACKETS);
        sinfo->tx_bytes = priv->dev->stats.tx_bytes;
        sinfo->tx_packets = priv->dev->stats.tx_packets;
        sinfo->rx_bytes = priv->dev->stats.rx_bytes;
        ret = lbs_get_rssi(priv, &signal, &noise);
        if (ret == 0) {
                sinfo->signal = signal;
-               sinfo->filled |= STATION_INFO_SIGNAL;
+               sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
        }
 
        /* Convert priv->cur_rate from hw_value to NL80211 value */
        for (i = 0; i < ARRAY_SIZE(lbs_rates); i++) {
                if (priv->cur_rate == lbs_rates[i].hw_value) {
                        sinfo->txrate.legacy = lbs_rates[i].bitrate;
-                       sinfo->filled |= STATION_INFO_TX_BITRATE;
+                       sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
                        break;
                }
        }
 
 {
        u32 rate;
 
-       sinfo->filled = STATION_INFO_RX_BYTES | STATION_INFO_TX_BYTES |
-                       STATION_INFO_RX_PACKETS | STATION_INFO_TX_PACKETS |
-                       STATION_INFO_TX_BITRATE |
-                       STATION_INFO_SIGNAL | STATION_INFO_SIGNAL_AVG;
+       sinfo->filled = BIT(NL80211_STA_INFO_RX_BYTES) | BIT(NL80211_STA_INFO_TX_BYTES) |
+                       BIT(NL80211_STA_INFO_RX_PACKETS) | BIT(NL80211_STA_INFO_TX_PACKETS) |
+                       BIT(NL80211_STA_INFO_TX_BITRATE) |
+                       BIT(NL80211_STA_INFO_SIGNAL) | BIT(NL80211_STA_INFO_SIGNAL_AVG);
 
        /* Get signal information from the firmware */
        if (mwifiex_send_cmd(priv, HostCmd_CMD_RSSI_INFO,
        sinfo->txrate.legacy = rate * 5;
 
        if (priv->bss_mode == NL80211_IFTYPE_STATION) {
-               sinfo->filled |= STATION_INFO_BSS_PARAM;
+               sinfo->filled |= BIT(NL80211_STA_INFO_BSS_PARAM);
                sinfo->bss_param.flags = 0;
                if (priv->curr_bss_params.bss_descriptor.cap_info_bitmap &
                                                WLAN_CAPABILITY_SHORT_PREAMBLE)
 
                                len = ETH_ALEN;
 
                        if (len != -1) {
-                               sinfo.filled = STATION_INFO_ASSOC_REQ_IES;
                                sinfo.assoc_req_ies = &event->data[len];
                                len = (u8 *)sinfo.assoc_req_ies -
                                      (u8 *)&event->frame_control;
 
        ret = rndis_query_oid(usbdev, RNDIS_OID_GEN_LINK_SPEED, &linkspeed, &len);
        if (ret == 0) {
                sinfo->txrate.legacy = le32_to_cpu(linkspeed) / 1000;
-               sinfo->filled |= STATION_INFO_TX_BITRATE;
+               sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
        }
 
        len = sizeof(rssi);
                              &rssi, &len);
        if (ret == 0) {
                sinfo->signal = level_to_qual(le32_to_cpu(rssi));
-               sinfo->filled |= STATION_INFO_SIGNAL;
+               sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
        }
 }
 
 
        if (ret < 0)
                goto out_sleep;
 
-       sinfo->filled |= STATION_INFO_SIGNAL;
+       sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
        sinfo->signal = rssi_dbm;
 
 out_sleep:
 
                        goto exit;
                }
 
-               sinfo->filled |= STATION_INFO_SIGNAL;
+               sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
                sinfo->signal = translate_percentage_to_dbm(padapter->recvpriv.
                                                            signal_strength);
 
-               sinfo->filled |= STATION_INFO_TX_BITRATE;
+               sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
                sinfo->txrate.legacy = rtw_get_cur_max_rate(padapter);
 
-               sinfo->filled |= STATION_INFO_RX_PACKETS;
+               sinfo->filled |= BIT(NL80211_STA_INFO_RX_PACKETS);
                sinfo->rx_packets = sta_rx_data_pkts(psta);
 
-               sinfo->filled |= STATION_INFO_TX_PACKETS;
+               sinfo->filled |= BIT(NL80211_STA_INFO_TX_PACKETS);
                sinfo->tx_packets = psta->sta_stats.tx_pkts;
        }
 
                                             u.reassoc_req.variable);
 
                sinfo.filled = 0;
-               sinfo.filled = STATION_INFO_ASSOC_REQ_IES;
                sinfo.assoc_req_ies = pmgmt_frame + ie_offset;
                sinfo.assoc_req_ies_len = frame_len - ie_offset;
                cfg80211_new_sta(ndev, hdr->addr2, &sinfo, GFP_ATOMIC);
 
 
        if (result == 0) {
                sinfo->txrate.legacy = quality.txrate.data;
-               sinfo->filled |= STATION_INFO_TX_BITRATE;
+               sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
                sinfo->signal = quality.level.data;
-               sinfo->filled |= STATION_INFO_SIGNAL;
+               sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
        }
 
        return result;
 
                                  struct station_parameters *params,
                                  enum cfg80211_station_type statype);
 
-/**
- * enum station_info_flags - station information flags
- *
- * Used by the driver to indicate which info in &struct station_info
- * it has filled in during get_station() or dump_station().
- *
- * @STATION_INFO_INACTIVE_TIME: @inactive_time filled
- * @STATION_INFO_RX_BYTES: @rx_bytes filled
- * @STATION_INFO_TX_BYTES: @tx_bytes filled
- * @STATION_INFO_RX_BYTES64: @rx_bytes filled with 64-bit value
- * @STATION_INFO_TX_BYTES64: @tx_bytes filled with 64-bit value
- * @STATION_INFO_LLID: @llid filled
- * @STATION_INFO_PLID: @plid filled
- * @STATION_INFO_PLINK_STATE: @plink_state filled
- * @STATION_INFO_SIGNAL: @signal filled
- * @STATION_INFO_TX_BITRATE: @txrate fields are filled
- *     (tx_bitrate, tx_bitrate_flags and tx_bitrate_mcs)
- * @STATION_INFO_RX_PACKETS: @rx_packets filled with 32-bit value
- * @STATION_INFO_TX_PACKETS: @tx_packets filled with 32-bit value
- * @STATION_INFO_TX_RETRIES: @tx_retries filled
- * @STATION_INFO_TX_FAILED: @tx_failed filled
- * @STATION_INFO_RX_DROP_MISC: @rx_dropped_misc filled
- * @STATION_INFO_SIGNAL_AVG: @signal_avg filled
- * @STATION_INFO_RX_BITRATE: @rxrate fields are filled
- * @STATION_INFO_BSS_PARAM: @bss_param filled
- * @STATION_INFO_CONNECTED_TIME: @connected_time filled
- * @STATION_INFO_ASSOC_REQ_IES: @assoc_req_ies filled
- * @STATION_INFO_STA_FLAGS: @sta_flags filled
- * @STATION_INFO_BEACON_LOSS_COUNT: @beacon_loss_count filled
- * @STATION_INFO_T_OFFSET: @t_offset filled
- * @STATION_INFO_LOCAL_PM: @local_pm filled
- * @STATION_INFO_PEER_PM: @peer_pm filled
- * @STATION_INFO_NONPEER_PM: @nonpeer_pm filled
- * @STATION_INFO_CHAIN_SIGNAL: @chain_signal filled
- * @STATION_INFO_CHAIN_SIGNAL_AVG: @chain_signal_avg filled
- * @STATION_INFO_EXPECTED_THROUGHPUT: @expected_throughput filled
- */
-enum station_info_flags {
-       STATION_INFO_INACTIVE_TIME              = BIT(0),
-       STATION_INFO_RX_BYTES                   = BIT(1),
-       STATION_INFO_TX_BYTES                   = BIT(2),
-       STATION_INFO_LLID                       = BIT(3),
-       STATION_INFO_PLID                       = BIT(4),
-       STATION_INFO_PLINK_STATE                = BIT(5),
-       STATION_INFO_SIGNAL                     = BIT(6),
-       STATION_INFO_TX_BITRATE                 = BIT(7),
-       STATION_INFO_RX_PACKETS                 = BIT(8),
-       STATION_INFO_TX_PACKETS                 = BIT(9),
-       STATION_INFO_TX_RETRIES                 = BIT(10),
-       STATION_INFO_TX_FAILED                  = BIT(11),
-       STATION_INFO_RX_DROP_MISC               = BIT(12),
-       STATION_INFO_SIGNAL_AVG                 = BIT(13),
-       STATION_INFO_RX_BITRATE                 = BIT(14),
-       STATION_INFO_BSS_PARAM                  = BIT(15),
-       STATION_INFO_CONNECTED_TIME             = BIT(16),
-       STATION_INFO_ASSOC_REQ_IES              = BIT(17),
-       STATION_INFO_STA_FLAGS                  = BIT(18),
-       STATION_INFO_BEACON_LOSS_COUNT          = BIT(19),
-       STATION_INFO_T_OFFSET                   = BIT(20),
-       STATION_INFO_LOCAL_PM                   = BIT(21),
-       STATION_INFO_PEER_PM                    = BIT(22),
-       STATION_INFO_NONPEER_PM                 = BIT(23),
-       STATION_INFO_RX_BYTES64                 = BIT(24),
-       STATION_INFO_TX_BYTES64                 = BIT(25),
-       STATION_INFO_CHAIN_SIGNAL               = BIT(26),
-       STATION_INFO_CHAIN_SIGNAL_AVG           = BIT(27),
-       STATION_INFO_EXPECTED_THROUGHPUT        = BIT(28),
-};
-
 /**
  * enum station_info_rate_flags - bitrate info flags
  *
  *
  * Station information filled by driver for get_station() and dump_station.
  *
- * @filled: bitflag of flags from &enum station_info_flags
+ * @filled: bitflag of flags using the bits of &enum nl80211_sta_info to
+ *     indicate the relevant values in this struct for them
  * @connected_time: time(in secs) since a station is last connected
  * @inactive_time: time since last station activity (tx/rx) in milliseconds
  * @rx_bytes: bytes received from this station
        enum nl80211_mesh_power_mode nonpeer_pm;
 
        u32 expected_throughput;
-
-       /*
-        * Note: Add a new enum station_info_flags value for each new field and
-        * use it to check which fields are initialized.
-        */
 };
 
 /**
 
  *     Same format as NL80211_STA_INFO_CHAIN_SIGNAL.
  * @NL80211_STA_EXPECTED_THROUGHPUT: expected throughput considering also the
  *     802.11 header (u32, kbps)
+ * @NL80211_STA_INFO_RX_DROP_MISC: RX packets dropped for unspecified reasons
+ *     (u64)
  * @__NL80211_STA_INFO_AFTER_LAST: internal
  * @NL80211_STA_INFO_MAX: highest possible station info attribute
  */
        NL80211_STA_INFO_CHAIN_SIGNAL,
        NL80211_STA_INFO_CHAIN_SIGNAL_AVG,
        NL80211_STA_INFO_EXPECTED_THROUGHPUT,
+       NL80211_STA_INFO_RX_DROP_MISC,
 
        /* keep last */
        __NL80211_STA_INFO_AFTER_LAST,
 
                data[i++] = sta->sta_state;
 
 
-               if (sinfo.filled & STATION_INFO_TX_BITRATE)
+               if (sinfo.filled & BIT(NL80211_STA_INFO_TX_BITRATE))
                        data[i] = 100000 *
                                cfg80211_calculate_bitrate(&sinfo.txrate);
                i++;
-               if (sinfo.filled & STATION_INFO_RX_BITRATE)
+               if (sinfo.filled & BIT(NL80211_STA_INFO_RX_BITRATE))
                        data[i] = 100000 *
                                cfg80211_calculate_bitrate(&sinfo.rxrate);
                i++;
 
-               if (sinfo.filled & STATION_INFO_SIGNAL_AVG)
+               if (sinfo.filled & BIT(NL80211_STA_INFO_SIGNAL_AVG))
                        data[i] = (u8)sinfo.signal_avg;
                i++;
        } else {
 
 
        drv_sta_statistics(local, sdata, &sta->sta, sinfo);
 
-       sinfo->filled |= STATION_INFO_INACTIVE_TIME |
-                        STATION_INFO_STA_FLAGS |
-                        STATION_INFO_BSS_PARAM |
-                        STATION_INFO_CONNECTED_TIME |
-                        STATION_INFO_RX_DROP_MISC |
-                        STATION_INFO_BEACON_LOSS_COUNT;
+       sinfo->filled |= BIT(NL80211_STA_INFO_INACTIVE_TIME) |
+                        BIT(NL80211_STA_INFO_STA_FLAGS) |
+                        BIT(NL80211_STA_INFO_BSS_PARAM) |
+                        BIT(NL80211_STA_INFO_CONNECTED_TIME) |
+                        BIT(NL80211_STA_INFO_RX_DROP_MISC) |
+                        BIT(NL80211_STA_INFO_BEACON_LOSS);
 
        ktime_get_ts(&uptime);
        sinfo->connected_time = uptime.tv_sec - sta->last_connected;
        sinfo->inactive_time = jiffies_to_msecs(jiffies - sta->last_rx);
 
-       if (!(sinfo->filled & (STATION_INFO_TX_BYTES64 |
-                              STATION_INFO_TX_BYTES))) {
+       if (!(sinfo->filled & (BIT(NL80211_STA_INFO_TX_BYTES64) |
+                              BIT(NL80211_STA_INFO_TX_BYTES)))) {
                sinfo->tx_bytes = 0;
                for (ac = 0; ac < IEEE80211_NUM_ACS; ac++)
                        sinfo->tx_bytes += sta->tx_bytes[ac];
-               sinfo->filled |= STATION_INFO_TX_BYTES64;
+               sinfo->filled |= BIT(NL80211_STA_INFO_TX_BYTES64);
        }
 
-       if (!(sinfo->filled & STATION_INFO_TX_PACKETS)) {
+       if (!(sinfo->filled & BIT(NL80211_STA_INFO_TX_PACKETS))) {
                sinfo->tx_packets = 0;
                for (ac = 0; ac < IEEE80211_NUM_ACS; ac++)
                        sinfo->tx_packets += sta->tx_packets[ac];
-               sinfo->filled |= STATION_INFO_TX_PACKETS;
+               sinfo->filled |= BIT(NL80211_STA_INFO_TX_PACKETS);
        }
 
-       if (!(sinfo->filled & (STATION_INFO_RX_BYTES64 |
-                              STATION_INFO_RX_BYTES))) {
+       if (!(sinfo->filled & (BIT(NL80211_STA_INFO_RX_BYTES64) |
+                              BIT(NL80211_STA_INFO_RX_BYTES)))) {
                sinfo->rx_bytes = sta->rx_bytes;
-               sinfo->filled |= STATION_INFO_RX_BYTES64;
+               sinfo->filled |= BIT(NL80211_STA_INFO_RX_BYTES64);
        }
 
-       if (!(sinfo->filled & STATION_INFO_RX_PACKETS)) {
+       if (!(sinfo->filled & BIT(NL80211_STA_INFO_RX_PACKETS))) {
                sinfo->rx_packets = sta->rx_packets;
-               sinfo->filled |= STATION_INFO_RX_PACKETS;
+               sinfo->filled |= BIT(NL80211_STA_INFO_RX_PACKETS);
        }
 
-       if (!(sinfo->filled & STATION_INFO_TX_RETRIES)) {
+       if (!(sinfo->filled & BIT(NL80211_STA_INFO_TX_RETRIES))) {
                sinfo->tx_retries = sta->tx_retry_count;
-               sinfo->filled |= STATION_INFO_TX_RETRIES;
+               sinfo->filled |= BIT(NL80211_STA_INFO_TX_RETRIES);
        }
 
-       if (!(sinfo->filled & STATION_INFO_TX_FAILED)) {
+       if (!(sinfo->filled & BIT(NL80211_STA_INFO_TX_FAILED))) {
                sinfo->tx_failed = sta->tx_retry_failed;
-               sinfo->filled |= STATION_INFO_TX_FAILED;
+               sinfo->filled |= BIT(NL80211_STA_INFO_TX_FAILED);
        }
 
        sinfo->rx_dropped_misc = sta->rx_dropped;
 
        if ((sta->local->hw.flags & IEEE80211_HW_SIGNAL_DBM) ||
            (sta->local->hw.flags & IEEE80211_HW_SIGNAL_UNSPEC)) {
-               if (!(sinfo->filled & STATION_INFO_SIGNAL)) {
+               if (!(sinfo->filled & BIT(NL80211_STA_INFO_SIGNAL))) {
                        sinfo->signal = (s8)sta->last_signal;
-                       sinfo->filled |= STATION_INFO_SIGNAL;
+                       sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
                }
 
-               if (!(sinfo->filled & STATION_INFO_SIGNAL_AVG)) {
+               if (!(sinfo->filled & BIT(NL80211_STA_INFO_SIGNAL_AVG))) {
                        sinfo->signal_avg = (s8) -ewma_read(&sta->avg_signal);
-                       sinfo->filled |= STATION_INFO_SIGNAL_AVG;
+                       sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL_AVG);
                }
        }
 
        if (sta->chains &&
-           !(sinfo->filled & (STATION_INFO_CHAIN_SIGNAL |
-                              STATION_INFO_CHAIN_SIGNAL_AVG))) {
-               sinfo->filled |= STATION_INFO_CHAIN_SIGNAL |
-                                STATION_INFO_CHAIN_SIGNAL_AVG;
+           !(sinfo->filled & (BIT(NL80211_STA_INFO_CHAIN_SIGNAL) |
+                              BIT(NL80211_STA_INFO_CHAIN_SIGNAL_AVG)))) {
+               sinfo->filled |= BIT(NL80211_STA_INFO_CHAIN_SIGNAL) |
+                                BIT(NL80211_STA_INFO_CHAIN_SIGNAL_AVG);
 
                sinfo->chains = sta->chains;
                for (i = 0; i < ARRAY_SIZE(sinfo->chain_signal); i++) {
                }
        }
 
-       if (!(sinfo->filled & STATION_INFO_TX_BITRATE)) {
+       if (!(sinfo->filled & BIT(NL80211_STA_INFO_TX_BITRATE))) {
                sta_set_rate_info_tx(sta, &sta->last_tx_rate, &sinfo->txrate);
-               sinfo->filled |= STATION_INFO_TX_BITRATE;
+               sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
        }
 
-       if (!(sinfo->filled & STATION_INFO_RX_BITRATE)) {
+       if (!(sinfo->filled & BIT(NL80211_STA_INFO_RX_BITRATE))) {
                sta_set_rate_info_rx(sta, &sinfo->rxrate);
-               sinfo->filled |= STATION_INFO_RX_BITRATE;
+               sinfo->filled |= BIT(NL80211_STA_INFO_RX_BITRATE);
        }
 
        if (ieee80211_vif_is_mesh(&sdata->vif)) {
 #ifdef CONFIG_MAC80211_MESH
-               sinfo->filled |= STATION_INFO_LLID |
-                                STATION_INFO_PLID |
-                                STATION_INFO_PLINK_STATE |
-                                STATION_INFO_LOCAL_PM |
-                                STATION_INFO_PEER_PM |
-                                STATION_INFO_NONPEER_PM;
+               sinfo->filled |= BIT(NL80211_STA_INFO_LLID) |
+                                BIT(NL80211_STA_INFO_PLID) |
+                                BIT(NL80211_STA_INFO_PLINK_STATE) |
+                                BIT(NL80211_STA_INFO_LOCAL_PM) |
+                                BIT(NL80211_STA_INFO_PEER_PM) |
+                                BIT(NL80211_STA_INFO_NONPEER_PM);
 
                sinfo->llid = sta->llid;
                sinfo->plid = sta->plid;
                sinfo->plink_state = sta->plink_state;
                if (test_sta_flag(sta, WLAN_STA_TOFFSET_KNOWN)) {
-                       sinfo->filled |= STATION_INFO_T_OFFSET;
+                       sinfo->filled |= BIT(NL80211_STA_INFO_T_OFFSET);
                        sinfo->t_offset = sta->t_offset;
                }
                sinfo->local_pm = sta->local_pm;
                thr = drv_get_expected_throughput(local, &sta->sta);
 
        if (thr != 0) {
-               sinfo->filled |= STATION_INFO_EXPECTED_THROUGHPUT;
+               sinfo->filled |= BIT(NL80211_STA_INFO_EXPECTED_THROUGHPUT);
                sinfo->expected_throughput = thr;
        }
 }
 
        sinfoattr = nla_nest_start(msg, NL80211_ATTR_STA_INFO);
        if (!sinfoattr)
                goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_CONNECTED_TIME) &&
-           nla_put_u32(msg, NL80211_STA_INFO_CONNECTED_TIME,
-                       sinfo->connected_time))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_INACTIVE_TIME) &&
-           nla_put_u32(msg, NL80211_STA_INFO_INACTIVE_TIME,
-                       sinfo->inactive_time))
-               goto nla_put_failure;
-       if ((sinfo->filled & (STATION_INFO_RX_BYTES |
-                             STATION_INFO_RX_BYTES64)) &&
+
+#define PUT_SINFO(attr, memb, type) do {                               \
+       if (sinfo->filled & BIT(NL80211_STA_INFO_ ## attr) &&           \
+           nla_put_ ## type(msg, NL80211_STA_INFO_ ## attr,            \
+                            sinfo->memb))                              \
+               goto nla_put_failure;                                   \
+       } while (0)
+
+       PUT_SINFO(CONNECTED_TIME, connected_time, u32);
+       PUT_SINFO(INACTIVE_TIME, inactive_time, u32);
+
+       if (sinfo->filled & (BIT(NL80211_STA_INFO_RX_BYTES) |
+                            BIT(NL80211_STA_INFO_RX_BYTES64)) &&
            nla_put_u32(msg, NL80211_STA_INFO_RX_BYTES,
                        (u32)sinfo->rx_bytes))
                goto nla_put_failure;
-       if ((sinfo->filled & (STATION_INFO_TX_BYTES |
-                             STATION_INFO_TX_BYTES64)) &&
+
+       if (sinfo->filled & (BIT(NL80211_STA_INFO_TX_BYTES) |
+                            BIT(NL80211_STA_INFO_TX_BYTES64)) &&
            nla_put_u32(msg, NL80211_STA_INFO_TX_BYTES,
                        (u32)sinfo->tx_bytes))
                goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_RX_BYTES64) &&
-           nla_put_u64(msg, NL80211_STA_INFO_RX_BYTES64,
-                       sinfo->rx_bytes))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_TX_BYTES64) &&
-           nla_put_u64(msg, NL80211_STA_INFO_TX_BYTES64,
-                       sinfo->tx_bytes))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_LLID) &&
-           nla_put_u16(msg, NL80211_STA_INFO_LLID, sinfo->llid))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_PLID) &&
-           nla_put_u16(msg, NL80211_STA_INFO_PLID, sinfo->plid))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_PLINK_STATE) &&
-           nla_put_u8(msg, NL80211_STA_INFO_PLINK_STATE,
-                      sinfo->plink_state))
-               goto nla_put_failure;
+
+       PUT_SINFO(RX_BYTES64, rx_bytes, u64);
+       PUT_SINFO(TX_BYTES64, tx_bytes, u64);
+       PUT_SINFO(LLID, llid, u16);
+       PUT_SINFO(PLID, plid, u16);
+       PUT_SINFO(PLINK_STATE, plink_state, u8);
+
        switch (rdev->wiphy.signal_type) {
        case CFG80211_SIGNAL_TYPE_MBM:
-               if ((sinfo->filled & STATION_INFO_SIGNAL) &&
-                   nla_put_u8(msg, NL80211_STA_INFO_SIGNAL,
-                              sinfo->signal))
-                       goto nla_put_failure;
-               if ((sinfo->filled & STATION_INFO_SIGNAL_AVG) &&
-                   nla_put_u8(msg, NL80211_STA_INFO_SIGNAL_AVG,
-                              sinfo->signal_avg))
-                       goto nla_put_failure;
+               PUT_SINFO(SIGNAL, signal, u8);
+               PUT_SINFO(SIGNAL_AVG, signal_avg, u8);
                break;
        default:
                break;
        }
-       if (sinfo->filled & STATION_INFO_CHAIN_SIGNAL) {
+       if (sinfo->filled & BIT(NL80211_STA_INFO_CHAIN_SIGNAL)) {
                if (!nl80211_put_signal(msg, sinfo->chains,
                                        sinfo->chain_signal,
                                        NL80211_STA_INFO_CHAIN_SIGNAL))
                        goto nla_put_failure;
        }
-       if (sinfo->filled & STATION_INFO_CHAIN_SIGNAL_AVG) {
+       if (sinfo->filled & BIT(NL80211_STA_INFO_CHAIN_SIGNAL_AVG)) {
                if (!nl80211_put_signal(msg, sinfo->chains,
                                        sinfo->chain_signal_avg,
                                        NL80211_STA_INFO_CHAIN_SIGNAL_AVG))
                        goto nla_put_failure;
        }
-       if (sinfo->filled & STATION_INFO_TX_BITRATE) {
+       if (sinfo->filled & BIT(NL80211_STA_INFO_TX_BITRATE)) {
                if (!nl80211_put_sta_rate(msg, &sinfo->txrate,
                                          NL80211_STA_INFO_TX_BITRATE))
                        goto nla_put_failure;
        }
-       if (sinfo->filled & STATION_INFO_RX_BITRATE) {
+       if (sinfo->filled & BIT(NL80211_STA_INFO_RX_BITRATE)) {
                if (!nl80211_put_sta_rate(msg, &sinfo->rxrate,
                                          NL80211_STA_INFO_RX_BITRATE))
                        goto nla_put_failure;
        }
-       if ((sinfo->filled & STATION_INFO_RX_PACKETS) &&
-           nla_put_u32(msg, NL80211_STA_INFO_RX_PACKETS,
-                       sinfo->rx_packets))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_TX_PACKETS) &&
-           nla_put_u32(msg, NL80211_STA_INFO_TX_PACKETS,
-                       sinfo->tx_packets))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_TX_RETRIES) &&
-           nla_put_u32(msg, NL80211_STA_INFO_TX_RETRIES,
-                       sinfo->tx_retries))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_TX_FAILED) &&
-           nla_put_u32(msg, NL80211_STA_INFO_TX_FAILED,
-                       sinfo->tx_failed))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_EXPECTED_THROUGHPUT) &&
-           nla_put_u32(msg, NL80211_STA_INFO_EXPECTED_THROUGHPUT,
-                       sinfo->expected_throughput))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_BEACON_LOSS_COUNT) &&
-           nla_put_u32(msg, NL80211_STA_INFO_BEACON_LOSS,
-                       sinfo->beacon_loss_count))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_LOCAL_PM) &&
-           nla_put_u32(msg, NL80211_STA_INFO_LOCAL_PM,
-                       sinfo->local_pm))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_PEER_PM) &&
-           nla_put_u32(msg, NL80211_STA_INFO_PEER_PM,
-                       sinfo->peer_pm))
-               goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_NONPEER_PM) &&
-           nla_put_u32(msg, NL80211_STA_INFO_NONPEER_PM,
-                       sinfo->nonpeer_pm))
-               goto nla_put_failure;
-       if (sinfo->filled & STATION_INFO_BSS_PARAM) {
+
+       PUT_SINFO(RX_PACKETS, rx_packets, u32);
+       PUT_SINFO(TX_PACKETS, tx_packets, u32);
+       PUT_SINFO(TX_RETRIES, tx_retries, u32);
+       PUT_SINFO(TX_FAILED, tx_failed, u32);
+       PUT_SINFO(EXPECTED_THROUGHPUT, expected_throughput, u32);
+       PUT_SINFO(BEACON_LOSS, beacon_loss_count, u32);
+       PUT_SINFO(LOCAL_PM, local_pm, u32);
+       PUT_SINFO(PEER_PM, peer_pm, u32);
+       PUT_SINFO(NONPEER_PM, nonpeer_pm, u32);
+
+       if (sinfo->filled & BIT(NL80211_STA_INFO_BSS_PARAM)) {
                bss_param = nla_nest_start(msg, NL80211_STA_INFO_BSS_PARAM);
                if (!bss_param)
                        goto nla_put_failure;
 
                nla_nest_end(msg, bss_param);
        }
-       if ((sinfo->filled & STATION_INFO_STA_FLAGS) &&
+       if ((sinfo->filled & BIT(NL80211_STA_INFO_STA_FLAGS)) &&
            nla_put(msg, NL80211_STA_INFO_STA_FLAGS,
                    sizeof(struct nl80211_sta_flag_update),
                    &sinfo->sta_flags))
                goto nla_put_failure;
-       if ((sinfo->filled & STATION_INFO_T_OFFSET) &&
-               nla_put_u64(msg, NL80211_STA_INFO_T_OFFSET,
-                           sinfo->t_offset))
-               goto nla_put_failure;
+
+       PUT_SINFO(T_OFFSET, t_offset, u64);
+       PUT_SINFO(RX_DROP_MISC, rx_dropped_misc, u64);
+
+#undef PUT_SINFO
        nla_nest_end(msg, sinfoattr);
 
-       if ((sinfo->filled & STATION_INFO_ASSOC_REQ_IES) &&
+       if (sinfo->assoc_req_ies_len &&
            nla_put(msg, NL80211_ATTR_IE, sinfo->assoc_req_ies_len,
                    sinfo->assoc_req_ies))
                goto nla_put_failure;
 
        if (err)
                return err;
 
-       if (!(sinfo.filled & STATION_INFO_TX_BITRATE))
+       if (!(sinfo.filled & BIT(NL80211_STA_INFO_TX_BITRATE)))
                return -EOPNOTSUPP;
 
        rate->value = 100000 * cfg80211_calculate_bitrate(&sinfo.txrate);
 
        switch (rdev->wiphy.signal_type) {
        case CFG80211_SIGNAL_TYPE_MBM:
-               if (sinfo.filled & STATION_INFO_SIGNAL) {
+               if (sinfo.filled & BIT(NL80211_STA_INFO_SIGNAL)) {
                        int sig = sinfo.signal;
                        wstats.qual.updated |= IW_QUAL_LEVEL_UPDATED;
                        wstats.qual.updated |= IW_QUAL_QUAL_UPDATED;
                        break;
                }
        case CFG80211_SIGNAL_TYPE_UNSPEC:
-               if (sinfo.filled & STATION_INFO_SIGNAL) {
+               if (sinfo.filled & BIT(NL80211_STA_INFO_SIGNAL)) {
                        wstats.qual.updated |= IW_QUAL_LEVEL_UPDATED;
                        wstats.qual.updated |= IW_QUAL_QUAL_UPDATED;
                        wstats.qual.level = sinfo.signal;
        }
 
        wstats.qual.updated |= IW_QUAL_NOISE_INVALID;
-       if (sinfo.filled & STATION_INFO_RX_DROP_MISC)
+       if (sinfo.filled & BIT(NL80211_STA_INFO_RX_DROP_MISC))
                wstats.discard.misc = sinfo.rx_dropped_misc;
-       if (sinfo.filled & STATION_INFO_TX_FAILED)
+       if (sinfo.filled & BIT(NL80211_STA_INFO_TX_FAILED))
                wstats.discard.retries = sinfo.tx_failed;
 
        return &wstats;