@@ -3678,6 +3678,13 @@ int mt7996_mcu_get_chip_config(struct mt7996_dev *dev, u32 *cap)
3678
3678
3679
3679
int mt7996_mcu_get_chan_mib_info (struct mt7996_phy * phy , bool chan_switch )
3680
3680
{
3681
+ enum {
3682
+ IDX_TX_TIME ,
3683
+ IDX_RX_TIME ,
3684
+ IDX_OBSS_AIRTIME ,
3685
+ IDX_NON_WIFI_TIME ,
3686
+ IDX_NUM
3687
+ };
3681
3688
struct {
3682
3689
struct {
3683
3690
u8 band ;
@@ -3687,16 +3694,15 @@ int mt7996_mcu_get_chan_mib_info(struct mt7996_phy *phy, bool chan_switch)
3687
3694
__le16 tag ;
3688
3695
__le16 len ;
3689
3696
__le32 offs ;
3690
- } data [4 ];
3697
+ } data [IDX_NUM ];
3691
3698
} __packed req = {
3692
3699
.hdr .band = phy -> mt76 -> band_idx ,
3693
3700
};
3694
- /* strict order */
3695
3701
static const u32 offs [] = {
3696
- UNI_MIB_TX_TIME ,
3697
- UNI_MIB_RX_TIME ,
3698
- UNI_MIB_OBSS_AIRTIME ,
3699
- UNI_MIB_NON_WIFI_TIME ,
3702
+ [ IDX_TX_TIME ] = UNI_MIB_TX_TIME ,
3703
+ [ IDX_RX_TIME ] = UNI_MIB_RX_TIME ,
3704
+ [ IDX_OBSS_AIRTIME ] = UNI_MIB_OBSS_AIRTIME ,
3705
+ [ IDX_NON_WIFI_TIME ] = UNI_MIB_NON_WIFI_TIME ,
3700
3706
};
3701
3707
struct mt76_channel_state * state = phy -> mt76 -> chan_state ;
3702
3708
struct mt76_channel_state * state_ts = & phy -> state_ts ;
@@ -3705,7 +3711,7 @@ int mt7996_mcu_get_chan_mib_info(struct mt7996_phy *phy, bool chan_switch)
3705
3711
struct sk_buff * skb ;
3706
3712
int i , ret ;
3707
3713
3708
- for (i = 0 ; i < 4 ; i ++ ) {
3714
+ for (i = 0 ; i < IDX_NUM ; i ++ ) {
3709
3715
req .data [i ].tag = cpu_to_le16 (UNI_CMD_MIB_DATA );
3710
3716
req .data [i ].len = cpu_to_le16 (sizeof (req .data [i ]));
3711
3717
req .data [i ].offs = cpu_to_le32 (offs [i ]);
@@ -3724,17 +3730,24 @@ int mt7996_mcu_get_chan_mib_info(struct mt7996_phy *phy, bool chan_switch)
3724
3730
goto out ;
3725
3731
3726
3732
#define __res_u64 (s ) le64_to_cpu(res[s].data)
3727
- state -> cc_tx += __res_u64 (1 ) - state_ts -> cc_tx ;
3728
- state -> cc_bss_rx += __res_u64 (2 ) - state_ts -> cc_bss_rx ;
3729
- state -> cc_rx += __res_u64 (2 ) + __res_u64 (3 ) - state_ts -> cc_rx ;
3730
- state -> cc_busy += __res_u64 (0 ) + __res_u64 (1 ) + __res_u64 (2 ) + __res_u64 (3 ) -
3733
+ state -> cc_tx += __res_u64 (IDX_TX_TIME ) - state_ts -> cc_tx ;
3734
+ state -> cc_bss_rx += __res_u64 (IDX_RX_TIME ) - state_ts -> cc_bss_rx ;
3735
+ state -> cc_rx += __res_u64 (IDX_RX_TIME ) +
3736
+ __res_u64 (IDX_OBSS_AIRTIME ) -
3737
+ state_ts -> cc_rx ;
3738
+ state -> cc_busy += __res_u64 (IDX_TX_TIME ) +
3739
+ __res_u64 (IDX_RX_TIME ) +
3740
+ __res_u64 (IDX_OBSS_AIRTIME ) +
3741
+ __res_u64 (IDX_NON_WIFI_TIME ) -
3731
3742
state_ts -> cc_busy ;
3732
-
3733
3743
out :
3734
- state_ts -> cc_tx = __res_u64 (1 );
3735
- state_ts -> cc_bss_rx = __res_u64 (2 );
3736
- state_ts -> cc_rx = __res_u64 (2 ) + __res_u64 (3 );
3737
- state_ts -> cc_busy = __res_u64 (0 ) + __res_u64 (1 ) + __res_u64 (2 ) + __res_u64 (3 );
3744
+ state_ts -> cc_tx = __res_u64 (IDX_TX_TIME );
3745
+ state_ts -> cc_bss_rx = __res_u64 (IDX_RX_TIME );
3746
+ state_ts -> cc_rx = __res_u64 (IDX_RX_TIME ) + __res_u64 (IDX_OBSS_AIRTIME );
3747
+ state_ts -> cc_busy = __res_u64 (IDX_TX_TIME ) +
3748
+ __res_u64 (IDX_RX_TIME ) +
3749
+ __res_u64 (IDX_OBSS_AIRTIME ) +
3750
+ __res_u64 (IDX_NON_WIFI_TIME );
3738
3751
#undef __res_u64
3739
3752
3740
3753
dev_kfree_skb (skb );
0 commit comments