Skip to content

Commit 3685727

Browse files
ryderlee1110nbd168
authored andcommitted
mt76: mt7915: add more ethtool stats
Add channel time and MAC ready stats. Signed-off-by: Ryder Lee <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
1 parent 63db9d4 commit 3685727

File tree

4 files changed

+73
-16
lines changed

4 files changed

+73
-16
lines changed

drivers/net/wireless/mediatek/mt76/mt7915/mac.c

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2214,7 +2214,8 @@ void mt7915_mac_update_stats(struct mt7915_phy *phy)
22142214
u32 val;
22152215

22162216
cnt = mt76_rr(dev, MT_MIB_SDR3(phy->band_idx));
2217-
mib->fcs_err_cnt += is_mt7915(&dev->mt76) ? FIELD_GET(MT_MIB_SDR3_FCS_ERR_MASK, cnt) :
2217+
mib->fcs_err_cnt += is_mt7915(&dev->mt76) ?
2218+
FIELD_GET(MT_MIB_SDR3_FCS_ERR_MASK, cnt) :
22182219
FIELD_GET(MT_MIB_SDR3_FCS_ERR_MASK_MT7916, cnt);
22192220

22202221
cnt = mt76_rr(dev, MT_MIB_SDR4(phy->band_idx));
@@ -2227,19 +2228,28 @@ void mt7915_mac_update_stats(struct mt7915_phy *phy)
22272228
mib->channel_idle_cnt += FIELD_GET(MT_MIB_SDR6_CHANNEL_IDL_CNT_MASK, cnt);
22282229

22292230
cnt = mt76_rr(dev, MT_MIB_SDR7(phy->band_idx));
2230-
mib->rx_vector_mismatch_cnt += FIELD_GET(MT_MIB_SDR7_RX_VECTOR_MISMATCH_CNT_MASK, cnt);
2231+
mib->rx_vector_mismatch_cnt +=
2232+
FIELD_GET(MT_MIB_SDR7_RX_VECTOR_MISMATCH_CNT_MASK, cnt);
22312233

22322234
cnt = mt76_rr(dev, MT_MIB_SDR8(phy->band_idx));
2233-
mib->rx_delimiter_fail_cnt += FIELD_GET(MT_MIB_SDR8_RX_DELIMITER_FAIL_CNT_MASK, cnt);
2235+
mib->rx_delimiter_fail_cnt +=
2236+
FIELD_GET(MT_MIB_SDR8_RX_DELIMITER_FAIL_CNT_MASK, cnt);
2237+
2238+
cnt = mt76_rr(dev, MT_MIB_SDR10(phy->band_idx));
2239+
mib->rx_mrdy_cnt += is_mt7915(&dev->mt76) ?
2240+
FIELD_GET(MT_MIB_SDR10_MRDY_COUNT_MASK, cnt) :
2241+
FIELD_GET(MT_MIB_SDR10_MRDY_COUNT_MASK_MT7916, cnt);
22342242

22352243
cnt = mt76_rr(dev, MT_MIB_SDR11(phy->band_idx));
2236-
mib->rx_len_mismatch_cnt += FIELD_GET(MT_MIB_SDR11_RX_LEN_MISMATCH_CNT_MASK, cnt);
2244+
mib->rx_len_mismatch_cnt +=
2245+
FIELD_GET(MT_MIB_SDR11_RX_LEN_MISMATCH_CNT_MASK, cnt);
22372246

22382247
cnt = mt76_rr(dev, MT_MIB_SDR12(phy->band_idx));
22392248
mib->tx_ampdu_cnt += cnt;
22402249

22412250
cnt = mt76_rr(dev, MT_MIB_SDR13(phy->band_idx));
2242-
mib->tx_stop_q_empty_cnt += FIELD_GET(MT_MIB_SDR13_TX_STOP_Q_EMPTY_CNT_MASK, cnt);
2251+
mib->tx_stop_q_empty_cnt +=
2252+
FIELD_GET(MT_MIB_SDR13_TX_STOP_Q_EMPTY_CNT_MASK, cnt);
22432253

22442254
cnt = mt76_rr(dev, MT_MIB_SDR14(phy->band_idx));
22452255
mib->tx_mpdu_attempts_cnt += is_mt7915(&dev->mt76) ?
@@ -2251,6 +2261,29 @@ void mt7915_mac_update_stats(struct mt7915_phy *phy)
22512261
FIELD_GET(MT_MIB_SDR15_TX_MPDU_SUCCESS_CNT_MASK, cnt) :
22522262
FIELD_GET(MT_MIB_SDR15_TX_MPDU_SUCCESS_CNT_MASK_MT7916, cnt);
22532263

2264+
cnt = mt76_rr(dev, MT_MIB_SDR16(phy->band_idx));
2265+
mib->primary_cca_busy_time +=
2266+
FIELD_GET(MT_MIB_SDR16_PRIMARY_CCA_BUSY_TIME_MASK, cnt);
2267+
2268+
cnt = mt76_rr(dev, MT_MIB_SDR17(phy->band_idx));
2269+
mib->secondary_cca_busy_time +=
2270+
FIELD_GET(MT_MIB_SDR17_SECONDARY_CCA_BUSY_TIME_MASK, cnt);
2271+
2272+
cnt = mt76_rr(dev, MT_MIB_SDR18(phy->band_idx));
2273+
mib->primary_energy_detect_time +=
2274+
FIELD_GET(MT_MIB_SDR18_PRIMARY_ENERGY_DETECT_TIME_MASK, cnt);
2275+
2276+
cnt = mt76_rr(dev, MT_MIB_SDR19(phy->band_idx));
2277+
mib->cck_mdrdy_time += FIELD_GET(MT_MIB_SDR19_CCK_MDRDY_TIME_MASK, cnt);
2278+
2279+
cnt = mt76_rr(dev, MT_MIB_SDR20(phy->band_idx));
2280+
mib->ofdm_mdrdy_time +=
2281+
FIELD_GET(MT_MIB_SDR20_OFDM_VHT_MDRDY_TIME_MASK, cnt);
2282+
2283+
cnt = mt76_rr(dev, MT_MIB_SDR21(phy->band_idx));
2284+
mib->green_mdrdy_time +=
2285+
FIELD_GET(MT_MIB_SDR21_GREEN_MDRDY_TIME_MASK, cnt);
2286+
22542287
cnt = mt76_rr(dev, MT_MIB_SDR22(phy->band_idx));
22552288
mib->rx_ampdu_cnt += cnt;
22562289

@@ -2266,10 +2299,12 @@ void mt7915_mac_update_stats(struct mt7915_phy *phy)
22662299
mib->rx_ampdu_valid_subframe_bytes_cnt += cnt;
22672300

22682301
cnt = mt76_rr(dev, MT_MIB_SDR27(phy->band_idx));
2269-
mib->tx_rwp_fail_cnt += FIELD_GET(MT_MIB_SDR27_TX_RWP_FAIL_CNT_MASK, cnt);
2302+
mib->tx_rwp_fail_cnt +=
2303+
FIELD_GET(MT_MIB_SDR27_TX_RWP_FAIL_CNT_MASK, cnt);
22702304

22712305
cnt = mt76_rr(dev, MT_MIB_SDR28(phy->band_idx));
2272-
mib->tx_rwp_need_cnt += FIELD_GET(MT_MIB_SDR28_TX_RWP_NEED_CNT_MASK, cnt);
2306+
mib->tx_rwp_need_cnt +=
2307+
FIELD_GET(MT_MIB_SDR28_TX_RWP_NEED_CNT_MASK, cnt);
22732308

22742309
cnt = mt76_rr(dev, MT_MIB_SDR29(phy->band_idx));
22752310
mib->rx_pfdrop_cnt += is_mt7915(&dev->mt76) ?
@@ -2311,7 +2346,8 @@ void mt7915_mac_update_stats(struct mt7915_phy *phy)
23112346
if (is_mt7915(&dev->mt76)) {
23122347
for (i = 0, aggr1 = aggr0 + 4; i < 4; i++) {
23132348
val = mt76_rr(dev, MT_MIB_MB_SDR1(phy->band_idx, (i << 4)));
2314-
mib->ba_miss_cnt += FIELD_GET(MT_MIB_BA_MISS_COUNT_MASK, val);
2349+
mib->ba_miss_cnt +=
2350+
FIELD_GET(MT_MIB_BA_MISS_COUNT_MASK, val);
23152351
mib->ack_fail_cnt +=
23162352
FIELD_GET(MT_MIB_ACK_FAIL_COUNT_MASK, val);
23172353

drivers/net/wireless/mediatek/mt76/mt7915/main.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,8 +1146,15 @@ static const char mt7915_gstrings_stats[][ETH_GSTRING_LEN] = {
11461146
"rx_fifo_full_cnt",
11471147
"rx_mpdu_cnt",
11481148
"channel_idle_cnt",
1149+
"primary_cca_busy_time",
1150+
"secondary_cca_busy_time",
1151+
"primary_energy_detect_time",
1152+
"cck_mdrdy_time",
1153+
"ofdm_mdrdy_time",
1154+
"green_mdrdy_time",
11491155
"rx_vector_mismatch_cnt",
11501156
"rx_delimiter_fail_cnt",
1157+
"rx_mrdy_cnt",
11511158
"rx_len_mismatch_cnt",
11521159
"rx_ampdu_cnt",
11531160
"rx_ampdu_bytes_cnt",
@@ -1287,8 +1294,15 @@ void mt7915_get_et_stats(struct ieee80211_hw *hw,
12871294
data[ei++] = mib->rx_fifo_full_cnt;
12881295
data[ei++] = mib->rx_mpdu_cnt;
12891296
data[ei++] = mib->channel_idle_cnt;
1297+
data[ei++] = mib->primary_cca_busy_time;
1298+
data[ei++] = mib->secondary_cca_busy_time;
1299+
data[ei++] = mib->primary_energy_detect_time;
1300+
data[ei++] = mib->cck_mdrdy_time;
1301+
data[ei++] = mib->ofdm_mdrdy_time;
1302+
data[ei++] = mib->green_mdrdy_time;
12901303
data[ei++] = mib->rx_vector_mismatch_cnt;
12911304
data[ei++] = mib->rx_delimiter_fail_cnt;
1305+
data[ei++] = mib->rx_mrdy_cnt;
12921306
data[ei++] = mib->rx_len_mismatch_cnt;
12931307
data[ei++] = mib->rx_ampdu_cnt;
12941308
data[ei++] = mib->rx_ampdu_bytes_cnt;

drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,15 @@ struct mib_stats {
200200
/* rx stats */
201201
u32 rx_fifo_full_cnt;
202202
u32 channel_idle_cnt;
203+
u32 primary_cca_busy_time;
204+
u32 secondary_cca_busy_time;
205+
u32 primary_energy_detect_time;
206+
u32 cck_mdrdy_time;
207+
u32 ofdm_mdrdy_time;
208+
u32 green_mdrdy_time;
203209
u32 rx_vector_mismatch_cnt;
204210
u32 rx_delimiter_fail_cnt;
211+
u32 rx_mrdy_cnt;
205212
u32 rx_len_mismatch_cnt;
206213
u32 rx_mpdu_cnt;
207214
u32 rx_ampdu_cnt;

drivers/net/wireless/mediatek/mt76/mt7915/regs.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ enum offs_rev {
305305
#define MT_MIB_SDR9_DNR(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR9))
306306
#define MT_MIB_SDR9_CCA_BUSY_TIME_MASK GENMASK(23, 0)
307307

308-
#define MT_MIB_SDR10_DNR(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR10))
308+
#define MT_MIB_SDR10(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR10))
309309
#define MT_MIB_SDR10_MRDY_COUNT_MASK GENMASK(25, 0)
310310
#define MT_MIB_SDR10_MRDY_COUNT_MASK_MT7916 GENMASK(31, 0)
311311

@@ -329,24 +329,24 @@ enum offs_rev {
329329
#define MT_MIB_SDR15_TX_MPDU_SUCCESS_CNT_MASK_MT7916 GENMASK(31, 0)
330330

331331
/* in units of 'us' */
332-
#define MT_MIB_SDR16_DNR(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR16))
332+
#define MT_MIB_SDR16(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR16))
333333
#define MT_MIB_SDR16_PRIMARY_CCA_BUSY_TIME_MASK GENMASK(23, 0)
334334

335-
#define MT_MIB_SDR17_DNR(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR17))
335+
#define MT_MIB_SDR17(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR17))
336336
#define MT_MIB_SDR17_SECONDARY_CCA_BUSY_TIME_MASK GENMASK(23, 0)
337337

338338
#define MT_MIB_SDR18(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR18))
339339
#define MT_MIB_SDR18_PRIMARY_ENERGY_DETECT_TIME_MASK GENMASK(23, 0)
340340

341341
/* units are us */
342-
#define MT_MIB_SDR19_DNR(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR19))
342+
#define MT_MIB_SDR19(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR19))
343343
#define MT_MIB_SDR19_CCK_MDRDY_TIME_MASK GENMASK(23, 0)
344344

345-
#define MT_MIB_SDR20_DNR(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR20))
345+
#define MT_MIB_SDR20(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR20))
346346
#define MT_MIB_SDR20_OFDM_VHT_MDRDY_TIME_MASK GENMASK(23, 0)
347347

348-
#define MT_MIB_SDR21_DNR(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR21))
349-
#define MT_MIB_SDR20_GREEN_MDRDY_TIME_MASK GENMASK(23, 0)
348+
#define MT_MIB_SDR21(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR21))
349+
#define MT_MIB_SDR21_GREEN_MDRDY_TIME_MASK GENMASK(23, 0)
350350

351351
/* rx ampdu count, 32-bit */
352352
#define MT_MIB_SDR22(_band) MT_WF_MIB(_band, __OFFS(MIB_SDR22))
@@ -940,7 +940,7 @@ enum offs_rev {
940940
#define MT_ADIE_TYPE_MASK BIT(1)
941941

942942
/* FW MODE SYNC */
943-
#define MT_FW_EXCEPTION __REG(FW_EXCEPTION_ADDR)
943+
#define MT_FW_EXCEPTION __REG(FW_EXCEPTION_ADDR)
944944

945945
#define MT_SWDEF_BASE __REG(SWDEF_BASE_ADDR)
946946

0 commit comments

Comments
 (0)