70 lines
2.7 KiB
Diff
70 lines
2.7 KiB
Diff
Index: mt_wifi/mt_wifi/embedded/common/cmm_info.c
|
|
===================================================================
|
|
--- mt_wifi.orig/mt_wifi/embedded/common/cmm_info.c
|
|
+++ mt_wifi/mt_wifi/embedded/common/cmm_info.c
|
|
@@ -7164,6 +7164,35 @@ USHORT RTMPGetLastTxRate(PRTMP_ADAPTER p
|
|
return lastTxRate.word;
|
|
}
|
|
|
|
+USHORT RTMPGetLastRxRate(PRTMP_ADAPTER pAd, MAC_TABLE_ENTRY *pEntry)
|
|
+{
|
|
+ HTTRANSMIT_SETTING lastRxRate;
|
|
+ UCHAR ucBand = HcGetBandByWdev(pEntry->wdev);
|
|
+#ifdef RACTRL_FW_OFFLOAD_SUPPORT
|
|
+ EXT_EVENT_PHY_STATE_RX_RATE rRxStatResult = {0, 0, 0, 0, 0, 0, 0, 0};
|
|
+#endif
|
|
+ os_zero_mem(&lastRxRate, sizeof(HTTRANSMIT_SETTING));
|
|
+
|
|
+#ifdef RACTRL_FW_OFFLOAD_SUPPORT
|
|
+ MtCmdPhyGetRxRate(pAd, CMD_PHY_STATE_CONTENTION_RX_PHYRATE, ucBand, pEntry->wcid, &rRxStatResult);
|
|
+ lastRxRate.field.MODE = rRxStatResult.u1RxMode;
|
|
+ lastRxRate.field.BW = rRxStatResult.u1BW;
|
|
+ lastRxRate.field.ldpc = rRxStatResult.u1Coding;
|
|
+ lastRxRate.field.ShortGI = rRxStatResult.u1Gi ? 1 : 0;
|
|
+ lastRxRate.field.STBC = rRxStatResult.u1Stbc;
|
|
+
|
|
+ if (lastRxRate.field.MODE >= MODE_VHT)
|
|
+ lastRxRate.field.MCS = ((rRxStatResult.u1RxNsts & 0x3) << 4) + rRxStatResult.u1RxRate;
|
|
+ else if (lastRxRate.field.MODE == MODE_OFDM)
|
|
+ lastRxRate.field.MCS = getLegacyOFDMMCSIndex(rRxStatResult.u1RxRate & 0xF);
|
|
+ else
|
|
+ lastRxRate.field.MCS = rRxStatResult.u1RxRate;
|
|
+#else
|
|
+ lastRxRate.word = pEntry->LastRxRate;
|
|
+#endif /* RACTRL_FW_OFFLOAD_SUPPORT */
|
|
+ return lastRxRate.word;
|
|
+}
|
|
+
|
|
VOID RTMPIoctlGetMacTableStaInfo(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN RTMP_IOCTL_INPUT_STRUCT *wrq)
|
|
@@ -7175,6 +7204,7 @@ VOID RTMPIoctlGetMacTableStaInfo(
|
|
MAC_TABLE_ENTRY *pEntry;
|
|
/* allocate memory */
|
|
os_alloc_mem(NULL, (UCHAR **)&pMacTab, sizeof(RT_802_11_MAC_TABLE));
|
|
+ CHAR rssi[4] = {-127, -127, -127, -127};
|
|
|
|
if (pMacTab == NULL) {
|
|
MTWF_DBG(pAd, DBG_CAT_CFG, DBG_SUBCAT_ALL, DBG_LVL_ERROR, "Allocate memory fail!!!\n");
|
|
@@ -7203,14 +7233,15 @@ VOID RTMPIoctlGetMacTableStaInfo(
|
|
pDst->MimoPs = pEntry->MmpsMode;
|
|
#endif /* DOT11_N_SUPPORT */
|
|
/* Fill in RSSI per entry*/
|
|
- pDst->AvgRssi0 = pEntry->RssiSample.AvgRssi[0];
|
|
- pDst->AvgRssi1 = pEntry->RssiSample.AvgRssi[1];
|
|
- pDst->AvgRssi2 = pEntry->RssiSample.AvgRssi[2];
|
|
- pDst->AvgRssi3 = pEntry->RssiSample.AvgRssi[3];
|
|
+ rtmp_get_rssi(pAd, pEntry->wcid, rssi, 4);
|
|
+ pDst->AvgRssi0 = rssi[0];
|
|
+ pDst->AvgRssi1 = rssi[1];
|
|
+ pDst->AvgRssi2 = rssi[2];
|
|
+ pDst->AvgRssi3 = rssi[3];
|
|
/* the connected time per entry*/
|
|
pDst->ConnectedTime = pEntry->StaConnectTime;
|
|
pDst->TxRate.word = RTMPGetLastTxRate(pAd, pEntry);
|
|
- pDst->LastRxRate = pEntry->LastRxRate;
|
|
+ pDst->LastRxRate = RTMPGetLastRxRate(pAd, pEntry);
|
|
pMacTab->Num += 1;
|
|
/* Add to avoid Array cross board */
|
|
if (pMacTab->Num >= MAX_LEN_OF_MAC_TABLE)
|