Add support to report eht rx rate.
Note that extended fields for eht in mt76_rx_status will make the struct
size exceed the cb size, so make nss and band share the same u8.
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
        status->enc_flags = mstat.enc_flags;
        status->encoding = mstat.encoding;
        status->bw = mstat.bw;
-       status->he_ru = mstat.he_ru;
-       status->he_gi = mstat.he_gi;
-       status->he_dcm = mstat.he_dcm;
+       if (status->encoding == RX_ENC_EHT) {
+               status->eht.ru = mstat.eht.ru;
+               status->eht.gi = mstat.eht.gi;
+       } else {
+               status->he_ru = mstat.he_ru;
+               status->he_gi = mstat.he_gi;
+               status->he_dcm = mstat.he_dcm;
+       }
        status->rate_idx = mstat.rate_idx;
        status->nss = mstat.nss;
        status->band = mstat.band;
 
        u16 freq;
        u32 flag;
        u8 enc_flags;
-       u8 encoding:2, bw:3, he_ru:3;
-       u8 he_gi:2, he_dcm:1;
+       u8 encoding:3, bw:4;
+       union {
+               struct {
+                       u8 he_ru:3;
+                       u8 he_gi:2;
+                       u8 he_dcm:1;
+               };
+               struct {
+                       u8 ru:4;
+                       u8 gi:2;
+               } eht;
+       };
+
        u8 amsdu:1, first_amsdu:1, last_amsdu:1;
        u8 rate_idx;
-       u8 nss;
-       u8 band;
+       u8 nss:5, band:3;
        s8 signal;
        u8 chains;
        s8 chain_signal[IEEE80211_MAX_CHAINS];
 
        case MT_PHY_TYPE_EHT_SU:
        case MT_PHY_TYPE_EHT_TRIG:
        case MT_PHY_TYPE_EHT_MU:
-               /* TODO: currently report rx rate with HE rate */
                status->nss = nss;
-               status->encoding = RX_ENC_HE;
-               bw = min_t(int, bw, IEEE80211_STA_RX_BW_160);
-               i = min_t(int, i & 0xf, 11);
+               status->encoding = RX_ENC_EHT;
+               i &= GENMASK(3, 0);
+
+               if (gi <= NL80211_RATE_INFO_EHT_GI_3_2)
+                       status->eht.gi = gi;
                break;
        default:
                return -EINVAL;