[WCNCR00145893] misc: Add debug CMD
[Description]
Add iwpriv CMD to get more rx info
Change-Id: I6097f4f5a314e895958d3624334f9913f155f7c6
Feature: misc
CR-Id: WCNCR00145893
Signed-off-by: Yi-Cheng Huang <yi-cheng.huang@mediatek.com>
diff --git a/include/mgmt/cnm_mem.h b/include/mgmt/cnm_mem.h
index b5f6ccd..4a0292e 100644
--- a/include/mgmt/cnm_mem.h
+++ b/include/mgmt/cnm_mem.h
@@ -511,6 +511,9 @@
#if CFG_SUPPORT_MSP
UINT_32 u4RxVector0;
UINT_32 u4RxVector1;
+ UINT_32 u4RxVector2;
+ UINT_32 u4RxVector3;
+ UINT_32 u4RxVector4;
#endif
UINT_8 ucSmDialogToken; /* Spectrum Mngt Dialog Token */
UINT_8 ucSmMsmtRequestMode; /* Measurement Request Mode */
diff --git a/nic/nic_rx.c b/nic/nic_rx.c
index 08d066a..89e50d9 100644
--- a/nic/nic_rx.c
+++ b/nic/nic_rx.c
@@ -1458,6 +1458,15 @@
prAdapter->arStaRec[prRetSwRfb->ucStaRecIdx].u4RxVector1 =
HAL_RX_VECTOR_GET_RX_VECTOR(prRetSwRfb->prRxStatusGroup3, 1);
+
+ prAdapter->arStaRec[prRetSwRfb->ucStaRecIdx].u4RxVector2 =
+ HAL_RX_VECTOR_GET_RX_VECTOR(prRetSwRfb->prRxStatusGroup3, 2);
+
+ prAdapter->arStaRec[prRetSwRfb->ucStaRecIdx].u4RxVector3 =
+ HAL_RX_VECTOR_GET_RX_VECTOR(prRetSwRfb->prRxStatusGroup3, 3);
+
+ prAdapter->arStaRec[prRetSwRfb->ucStaRecIdx].u4RxVector4 =
+ HAL_RX_VECTOR_GET_RX_VECTOR(prRetSwRfb->prRxStatusGroup3, 4);
}
#endif
/* save next first */
diff --git a/os/linux/gl_wext_priv.c b/os/linux/gl_wext_priv.c
index eaa35f4..0a1f812 100644
--- a/os/linux/gl_wext_priv.c
+++ b/os/linux/gl_wext_priv.c
@@ -2290,6 +2290,7 @@
#define CMD_GET_TEST_RESULT "GET_TEST_RESULT"
#define CMD_GET_STA_STAT "STAT"
#define CMD_GET_STA_STAT2 "STAT2"
+#define CMD_GET_STA_RX_STAT "RX_STAT"
#if CFG_WOW_SUPPORT
#define CMD_WOW_START "WOW_START"
@@ -4757,6 +4758,392 @@
return i4BytesWritten;
}
+
+static INT_32 priv_driver_dump_rx_stat_info(P_ADAPTER_T prAdapter, IN char *pcCommand, IN int i4TotalLen,
+ IN BOOLEAN fgResetCnt)
+{
+ INT_32 i4BytesWritten = 0;
+ UINT_32 u4RxVector0 = 0, u4RxVector2 = 0, u4RxVector3 = 0, u4RxVector4 = 0;
+ UINT_8 ucStaIdx, ucWlanIndex, cbw;
+ BOOLEAN fgWlanIdxFound = TRUE, fgSkipRxV = FALSE;
+ UINT_32 u4FAGCRssiWBR0, u4FAGCRssiIBR0;
+ UINT_32 u4Value, u4Foe, foe_const;
+ static UINT_32 au4MacMdrdy[ENUM_BAND_NUM] = {0};
+ static UINT_32 au4FcsError[ENUM_BAND_NUM] = {0};
+ static UINT_32 au4OutOfResource[ENUM_BAND_NUM] = {0};
+ static UINT_32 au4LengthMismatch[ENUM_BAND_NUM] = {0};
+
+ au4MacMdrdy[ENUM_BAND_0] += htonl(g_HqaRxStat.MAC_Mdrdy);
+ au4MacMdrdy[ENUM_BAND_1] += htonl(g_HqaRxStat.MAC_Mdrdy1);
+ au4FcsError[ENUM_BAND_0] += htonl(g_HqaRxStat.MAC_FCS_Err);
+ au4FcsError[ENUM_BAND_1] += htonl(g_HqaRxStat.MAC_FCS_Err1);
+ au4OutOfResource[ENUM_BAND_0] += htonl(g_HqaRxStat.OutOfResource);
+ au4OutOfResource[ENUM_BAND_1] += htonl(g_HqaRxStat.OutOfResource1);
+ au4LengthMismatch[ENUM_BAND_0] += htonl(g_HqaRxStat.LengthMismatchCount_B0);
+ au4LengthMismatch[ENUM_BAND_1] += htonl(g_HqaRxStat.LengthMismatchCount_B1);
+
+ if (fgResetCnt) {
+ kalMemZero(au4MacMdrdy, sizeof(au4MacMdrdy));
+ kalMemZero(au4FcsError, sizeof(au4FcsError));
+ kalMemZero(au4OutOfResource, sizeof(au4OutOfResource));
+ kalMemZero(au4LengthMismatch, sizeof(au4LengthMismatch));
+ }
+
+ if (prAdapter->prAisBssInfo->prStaRecOfAP)
+ ucWlanIndex = prAdapter->prAisBssInfo->prStaRecOfAP->ucWlanIndex;
+ else if (!wlanGetWlanIdxByAddress(prAdapter, NULL, &ucWlanIndex))
+ fgWlanIdxFound = FALSE;
+
+ if (fgWlanIdxFound) {
+ if (wlanGetStaIdxByWlanIdx(prAdapter, ucWlanIndex, &ucStaIdx) == WLAN_STATUS_SUCCESS) {
+ u4RxVector0 = prAdapter->arStaRec[ucStaIdx].u4RxVector0;
+ u4RxVector2 = prAdapter->arStaRec[ucStaIdx].u4RxVector2;
+ u4RxVector3 = prAdapter->arStaRec[ucStaIdx].u4RxVector3;
+ u4RxVector4 = prAdapter->arStaRec[ucStaIdx].u4RxVector4;
+ } else{
+ fgSkipRxV = TRUE;
+ }
+ } else{
+ fgSkipRxV = TRUE;
+ }
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%s", "\n\nRX Stat:\n");
+#if 0
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "PER0", " = ",
+ g_HqaRxStat.PER0);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "PER1", " = ",
+ g_HqaRxStat.PER1);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "RX OK0", " = ",
+ g_HqaRxStat.RXOK0);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "RX OK1", " = ",
+ g_HqaRxStat.RXOK1);
+#endif
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "MAC Mdrdy0", " = ",
+ au4MacMdrdy[ENUM_BAND_0]);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "MAC Mdrdy1", " = ",
+ au4MacMdrdy[ENUM_BAND_1]);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "FCS Err0", " = ",
+ au4FcsError[ENUM_BAND_0]);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "FCS Err1", " = ",
+ au4FcsError[ENUM_BAND_1]);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "CCK PD Cnt B0", " = ",
+ htonl(g_HqaRxStat.CCK_PD));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "CCK PD Cnt B1", " = ",
+ htonl(g_HqaRxStat.CCK_PD_Band1));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "CCK SIG Err B0", " = ",
+ htonl(g_HqaRxStat.CCK_SIG_Err));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "CCK SIG Err B1", " = ",
+ htonl(g_HqaRxStat.CCK_SIG_Err_Band1));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "OFDM PD Cnt B0", " = ",
+ htonl(g_HqaRxStat.OFDM_PD));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "OFDM PD Cnt B1", " = ",
+ htonl(g_HqaRxStat.OFDM_PD_Band1));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "OFDM TAG Error", " = ",
+ htonl(g_HqaRxStat.OFDM_TAG_Err));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "CCK SFD Err B0", " = ",
+ htonl(g_HqaRxStat.CCK_SFD_Err));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "CCK SFD Err B1", " = ",
+ htonl(g_HqaRxStat.CCK_SFD_Err_Band1));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "OFDM SIG Err B0", " = ",
+ htonl(g_HqaRxStat.OFDM_SIG_Err));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "OFDM SIG Err B1", " = ",
+ htonl(g_HqaRxStat.OFDM_SIG_Err_Band1));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "CCK FCS Err B0", " = ",
+ htonl(g_HqaRxStat.FCSErr_CCK));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "CCK FCS Err B1", " = ",
+ htonl(g_HqaRxStat.CCK_FCS_Err_Band1));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "OFDM FCS Err B0", " = ",
+ htonl(g_HqaRxStat.FCSErr_OFDM));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "OFDM FCS Err B1", " = ",
+ htonl(g_HqaRxStat.OFDM_FCS_Err_Band1));
+
+ if (!fgSkipRxV) {
+ u4FAGCRssiIBR0 = (u4RxVector2 & BITS(16, 23)) >> 16;
+ u4FAGCRssiWBR0 = (u4RxVector2 & BITS(24, 31)) >> 24;
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "FAGC RSSI W", " = ",
+ (u4FAGCRssiWBR0 >= 128) ? (u4FAGCRssiWBR0 - 256) : (u4FAGCRssiWBR0));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "FAGC RSSI I", " = ",
+ (u4FAGCRssiIBR0 >= 128) ? (u4FAGCRssiIBR0 - 256) : (u4FAGCRssiIBR0));
+ } else{
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%s\n", "FAGC RSSI W", " = ", "N/A");
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%s\n", "FAGC RSSI I", " = ", "N/A");
+ }
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "CCK MDRDY B0", " = ",
+ htonl(g_HqaRxStat.PhyMdrdyCCK));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "CCK MDRDY B1", " = ",
+ htonl(g_HqaRxStat.PHY_CCK_MDRDY_Band1));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "OFDM MDRDY B0", " = ",
+ htonl(g_HqaRxStat.PhyMdrdyOFDM));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "OFDM MDRDY B1", " = ",
+ htonl(g_HqaRxStat.PHY_OFDM_MDRDY_Band1));
+
+ if (!fgSkipRxV) {
+#if 0
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Driver RX Cnt0", " = ",
+ htonl(g_HqaRxStat.DriverRxCount));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Driver RX Cnt1", " = ",
+ htonl(g_HqaRxStat.DriverRxCount1));
+#endif
+ u4Value = (u4RxVector0 & BITS(12, 14)) >> 12;
+ if (u4Value == 0) {
+ u4Foe = (((u4RxVector4 & BITS(7, 31)) >> 7) & 0x7ff);
+ u4Foe = (u4Foe * 1000)>>11;
+ } else{
+ cbw = ((u4RxVector0 & BITS(15, 16)) >> 15);
+ foe_const = ((1 << (cbw + 1)) & 0xf) * 10000;
+ u4Foe = (((u4RxVector4 & BITS(7, 31)) >> 7) & 0xfff);
+ u4Foe = (u4Foe * foe_const) >> 15;
+ }
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Freq Offset From RX", " = ", u4Foe);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "RX SNR (dB)", " = ",
+ ((u4RxVector4 & BITS(26, 31)) >> 26) - 16);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "RCPI RX0", " = ",
+ u4RxVector3 & BITS(0, 7));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "RCPI RX1", " = ",
+ (u4RxVector3 & BITS(8, 15)) >> 8);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "RCPI RX2", " = ",
+ ((u4RxVector3 & BITS(16, 23)) >> 16) == 0xFF ? (0) : ((u4RxVector3 & BITS(16, 23)) >> 16));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "RCPI RX3", " = ",
+ ((u4RxVector3 & BITS(24, 31)) >> 24) == 0xFF ? (0) : ((u4RxVector3 & BITS(24, 31)) >> 24));
+ } else{
+#if 0
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%s\n", "Driver RX Cnt0", " = ", "N/A");
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%s\n", "Driver RX Cnt1", " = ", "N/A");
+#endif
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%s\n", "Freq Offset From RX", " = ", "N/A");
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%s\n", "RX SNR (dB)", " = ", "N/A");
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%s\n", "RCPI RX0", " = ", "N/A");
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%s\n", "RCPI RX1", " = ", "N/A");
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%s\n", "RCPI RX2", " = ", "N/A");
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%s\n", "RCPI RX3", " = ", "N/A");
+ }
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Inst RSSI IB R0", " = ",
+ htonl(g_HqaRxStat.InstRssiIBR0));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Inst RSSI WB R0", " = ",
+ htonl(g_HqaRxStat.InstRssiWBR0));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Inst RSSI IB R1", " = ",
+ htonl(g_HqaRxStat.InstRssiIBR1));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Inst RSSI WB R1", " = ",
+ htonl(g_HqaRxStat.InstRssiWBR1));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Inst RSSI IB R2", " = ",
+ htonl(g_HqaRxStat.InstRssiIBR2));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Inst RSSI WB R2", " = ",
+ htonl(g_HqaRxStat.InstRssiWBR2));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Inst RSSI IB R3", " = ",
+ htonl(g_HqaRxStat.InstRssiIBR3));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Inst RSSI WB R3", " = ",
+ htonl(g_HqaRxStat.InstRssiWBR3));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "ACI Hit Lower", " = ",
+ htonl(g_HqaRxStat.ACIHitLower));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "ACI Hit Higher", " = ",
+ htonl(g_HqaRxStat.ACIHitUpper));
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "OutOf Resource Pkt0", " = ",
+ au4OutOfResource[ENUM_BAND_0]);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "OutOf Resource Pkt1", " = ",
+ au4OutOfResource[ENUM_BAND_1]);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Len Mismatch Cnt B0", " = ",
+ au4LengthMismatch[ENUM_BAND_0]);
+
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "Len Mismatch Cnt B1", " = ",
+ au4LengthMismatch[ENUM_BAND_1]);
+#if 0
+ i4BytesWritten += kalSnprintf(pcCommand + i4BytesWritten, i4TotalLen - i4BytesWritten,
+ "%-20s%s%d\n", "MU RX Cnt", " = ",
+ htonl(g_HqaRxStat.MRURxCount));
+#endif
+ return i4BytesWritten;
+}
+
+
+static int priv_driver_show_rx_stat(IN struct net_device *prNetDev, IN char *pcCommand, IN int i4TotalLen)
+{
+ P_GLUE_INFO_T prGlueInfo = NULL;
+ P_ADAPTER_T prAdapter = NULL;
+ WLAN_STATUS rStatus = WLAN_STATUS_SUCCESS;
+ UINT_32 u4BufLen = 0;
+ INT_32 i4BytesWritten = 0;
+ INT_32 i4Argc = 0;
+ PCHAR apcArgv[WLAN_CFG_ARGV_MAX];
+ P_PARAM_CUSTOM_ACCESS_RX_STAT prRxStatisticsTest;
+ BOOLEAN fgResetCnt = FALSE;
+ PARAM_CUSTOM_SW_CTRL_STRUCT_T rSwCtrlInfo;
+ UINT_32 u4Id = 0x99980000;
+
+ ASSERT(prNetDev);
+ if (GLUE_CHK_PR2(prNetDev, pcCommand) == FALSE)
+ return -1;
+
+ prGlueInfo = *((P_GLUE_INFO_T *) netdev_priv(prNetDev));
+ prAdapter = prGlueInfo->prAdapter;
+
+ DBGLOG(REQ, LOUD, "command is %s\n", pcCommand);
+ wlanCfgParseArgument(pcCommand, &i4Argc, apcArgv);
+ DBGLOG(REQ, LOUD, "argc is %i\n", i4Argc);
+
+ DBGLOG(INIT, ERROR, "MT6632 : priv_driver_show_rx_stat\n");
+
+ if (i4Argc >= 2) {
+ if (strnicmp(apcArgv[1], CMD_STAT_RESET_CNT, strlen(CMD_STAT_RESET_CNT)) == 0)
+ fgResetCnt = TRUE;
+ }
+
+ if (i4Argc >= 1) {
+ if (fgResetCnt) {
+ rSwCtrlInfo.u4Id = u4Id;
+ rSwCtrlInfo.u4Data = 0;
+
+ rStatus = kalIoctl(prGlueInfo,
+ wlanoidSetSwCtrlWrite,
+ &rSwCtrlInfo, sizeof(rSwCtrlInfo),
+ FALSE, FALSE, TRUE, &u4BufLen);
+
+ if (rStatus != WLAN_STATUS_SUCCESS)
+ return -1;
+ }
+
+ prRxStatisticsTest =
+ (P_PARAM_CUSTOM_ACCESS_RX_STAT)kalMemAlloc(sizeof(PARAM_CUSTOM_ACCESS_RX_STAT), VIR_MEM_TYPE);
+ if (!prRxStatisticsTest)
+ return -1;
+
+ prRxStatisticsTest->u4SeqNum = u4RxStatSeqNum;
+ prRxStatisticsTest->u4TotalNum = sizeof(PARAM_RX_STAT_T) / 4;
+
+ rStatus = kalIoctl(prGlueInfo,
+ wlanoidQueryRxStatistics,
+ prRxStatisticsTest, sizeof(PARAM_CUSTOM_ACCESS_RX_STAT),
+ TRUE, TRUE, TRUE, &u4BufLen);
+
+ if (rStatus != WLAN_STATUS_SUCCESS) {
+ kalMemFree(prRxStatisticsTest, VIR_MEM_TYPE, sizeof(PARAM_CUSTOM_ACCESS_RX_STAT));
+ return -1;
+ }
+
+ i4BytesWritten = priv_driver_dump_rx_stat_info(prAdapter, pcCommand, i4TotalLen, fgResetCnt);
+
+ kalMemFree(prRxStatisticsTest, VIR_MEM_TYPE, sizeof(PARAM_CUSTOM_ACCESS_RX_STAT));
+ }
+
+ return i4BytesWritten;
+}
+
+
static int priv_driver_get_drv_mcr(IN struct net_device *prNetDev, IN char *pcCommand, IN int i4TotalLen)
{
P_GLUE_INFO_T prGlueInfo = NULL;
@@ -7166,6 +7553,8 @@
i4BytesWritten = priv_driver_get_sta_stat2(prNetDev, pcCommand, i4TotalLen);
} else if (strnicmp(pcCommand, CMD_GET_STA_STAT, strlen(CMD_GET_STA_STAT)) == 0) {
i4BytesWritten = priv_driver_get_sta_stat(prNetDev, pcCommand, i4TotalLen);
+ } else if (strnicmp(pcCommand, CMD_GET_STA_RX_STAT, strlen(CMD_GET_STA_RX_STAT)) == 0) {
+ i4BytesWritten = priv_driver_show_rx_stat(prNetDev, pcCommand, i4TotalLen);
}
#if CFG_SUPPORT_CAL_RESULT_BACKUP_TO_HOST
else if (strnicmp(pcCommand,