[WCNCR00166796] sniffer: refine sniffer mode for MT7668
[Description]
Fix urb reuse cause exception, fix incorrect RSSI
Change-Id: Iaf3d25ea346862018b23f95fe9c0376cab722aa6
CR-Id: WCNCR00166796
Feature: sniffer
Signed-off-by: guo-jie.wang <guo-jie.wang@mediatek.com>
diff --git a/nic/nic_rx.c b/nic/nic_rx.c
index ec3b11c..cf4491e 100644
--- a/nic/nic_rx.c
+++ b/nic/nic_rx.c
@@ -1308,7 +1308,7 @@
}
/* Bit Number 5 ANT SIGNAL */
- rMonitorRadiotap.ucAntennaSignal = (((prRxStatusGroup3)->u4RxVector[3] & RX_VT_IB_RSSI_MASK));
+ rMonitorRadiotap.ucAntennaSignal = RCPI_TO_dBm(HAL_RX_STATUS_GET_RCPI0(prSwRfb->prRxStatusGroup3));
/* Bit Number 6 ANT NOISE */
rMonitorRadiotap.ucAntennaNoise = ((((prRxStatusGroup3)->u4RxVector[5] & RX_VT_NF0_MASK) >> 1) + 128);
@@ -1353,6 +1353,7 @@
prRxCtrl->ucNumIndPacket++;
#endif
+ prSwRfb->pvPacket = NULL;
/* Return RFB */
if (nicRxSetupRFB(prAdapter, prSwRfb)) {
DBGLOG(RX, WARN, "Cannot allocate packet buffer for SwRfb!\n");
@@ -2754,10 +2755,14 @@
switch (prSwRfb->ucPacketType) {
case RX_PKT_TYPE_RX_DATA:
#if CFG_SUPPORT_SNIFFER
- if (prAdapter->prGlueInfo->fgIsEnableMon) {
+ if (HAL_IS_RX_DIRECT(prAdapter)) {
+ spin_lock_bh(&prAdapter->prGlueInfo->rSpinLock[SPIN_LOCK_RX_DIRECT]);
nicRxProcessMonitorPacket(prAdapter, prSwRfb);
- break;
+ spin_unlock_bh(&prAdapter->prGlueInfo->rSpinLock[SPIN_LOCK_RX_DIRECT]);
+ } else {
+ nicRxProcessMonitorPacket(prAdapter, prSwRfb);
}
+ break;
#endif
if (HAL_IS_RX_DIRECT(prAdapter)) {
spin_lock_bh(&prAdapter->prGlueInfo->rSpinLock[SPIN_LOCK_RX_DIRECT]);