8723BU: Update 8723BU wifi driver to version v4.3.16_14189.20150519_BTCOEX2015119...
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bu / hal / rtl8723b / rtl8723b_rxdesc.c
index eedc8c20b4f940d038dfc25988442d087ed346f8..c7fa88db26fddbaaa0cc39141f7a6c11cc260895 100755 (executable)
 
 #include <rtl8723b_hal.h>
 
-static void process_rssi(_adapter *padapter,union recv_frame *prframe)
-{
-       u32     last_rssi, tmp_val;
-       struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib;
-#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS
-       struct signal_stat * signal_stat = &padapter->recvpriv.signal_strength_data;
-#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS
-
-       //DBG_8192C("process_rssi=> pattrib->rssil(%d) signal_strength(%d)\n ",pattrib->RecvSignalPower,pattrib->signal_strength);
-       //if(pRfd->Status.bPacketToSelf || pRfd->Status.bPacketBeacon)
-       {
-
-       #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS
-               if(signal_stat->update_req) {
-                       signal_stat->total_num = 0;
-                       signal_stat->total_val = 0;
-                       signal_stat->update_req = 0;
-               }
-
-               signal_stat->total_num++;
-               signal_stat->total_val  += pattrib->phy_info.SignalStrength;
-               signal_stat->avg_val = signal_stat->total_val / signal_stat->total_num;
-       #else //CONFIG_NEW_SIGNAL_STAT_PROCESS
-
-               //Adapter->RxStats.RssiCalculateCnt++;  //For antenna Test
-               if(padapter->recvpriv.signal_strength_data.total_num++ >= PHY_RSSI_SLID_WIN_MAX)
-               {
-                       padapter->recvpriv.signal_strength_data.total_num = PHY_RSSI_SLID_WIN_MAX;
-                       last_rssi = padapter->recvpriv.signal_strength_data.elements[padapter->recvpriv.signal_strength_data.index];
-                       padapter->recvpriv.signal_strength_data.total_val -= last_rssi;
-               }
-               padapter->recvpriv.signal_strength_data.total_val  +=pattrib->phy_info.SignalStrength;
-
-               padapter->recvpriv.signal_strength_data.elements[padapter->recvpriv.signal_strength_data.index++] = pattrib->phy_info.SignalStrength;
-               if(padapter->recvpriv.signal_strength_data.index >= PHY_RSSI_SLID_WIN_MAX)
-                       padapter->recvpriv.signal_strength_data.index = 0;
-
-
-               tmp_val = padapter->recvpriv.signal_strength_data.total_val/padapter->recvpriv.signal_strength_data.total_num;
-
-               if(padapter->recvpriv.is_signal_dbg) {
-                       padapter->recvpriv.signal_strength= padapter->recvpriv.signal_strength_dbg;
-                       padapter->recvpriv.rssi=(s8)translate_percentage_to_dbm(padapter->recvpriv.signal_strength_dbg);
-               } else {
-                       padapter->recvpriv.signal_strength= tmp_val;
-                       padapter->recvpriv.rssi=(s8)translate_percentage_to_dbm(tmp_val);
-               }
-
-               RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("UI RSSI = %d, ui_rssi.TotalVal = %d, ui_rssi.TotalNum = %d\n", tmp_val, padapter->recvpriv.signal_strength_data.total_val,padapter->recvpriv.signal_strength_data.total_num));
-       #endif //CONFIG_NEW_SIGNAL_STAT_PROCESS
-       }
-
-}// Process_UI_RSSI_8192C
-
-static void process_link_qual(_adapter *padapter,union recv_frame *prframe)
-{
-       u32     last_evm=0, tmpVal;
-       struct rx_pkt_attrib *pattrib;
-#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS
-       struct signal_stat * signal_stat;
-#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS
-
-       if(prframe == NULL || padapter==NULL){
-               return;
-       }
-
-       pattrib = &prframe->u.hdr.attrib;
-#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS
-       signal_stat = &padapter->recvpriv.signal_qual_data;
-#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS
-
-       //DBG_8192C("process_link_qual=> pattrib->signal_qual(%d)\n ",pattrib->signal_qual);
-
-#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS
-       if(signal_stat->update_req) {
-               signal_stat->total_num = 0;
-               signal_stat->total_val = 0;
-               signal_stat->update_req = 0;
-       }
-
-       signal_stat->total_num++;
-       signal_stat->total_val  += pattrib->phy_info.SignalQuality;
-       signal_stat->avg_val = signal_stat->total_val / signal_stat->total_num;
-
-#else //CONFIG_NEW_SIGNAL_STAT_PROCESS
-       if(pattrib->phy_info.SignalQuality != 0)
-       {
-                       //
-                       // 1. Record the general EVM to the sliding window.
-                       //
-                       if(padapter->recvpriv.signal_qual_data.total_num++ >= PHY_LINKQUALITY_SLID_WIN_MAX)
-                       {
-                               padapter->recvpriv.signal_qual_data.total_num = PHY_LINKQUALITY_SLID_WIN_MAX;
-                               last_evm = padapter->recvpriv.signal_qual_data.elements[padapter->recvpriv.signal_qual_data.index];
-                               padapter->recvpriv.signal_qual_data.total_val -= last_evm;
-                       }
-                       padapter->recvpriv.signal_qual_data.total_val += pattrib->phy_info.SignalQuality;
-
-                       padapter->recvpriv.signal_qual_data.elements[padapter->recvpriv.signal_qual_data.index++] = pattrib->phy_info.SignalQuality;
-                       if(padapter->recvpriv.signal_qual_data.index >= PHY_LINKQUALITY_SLID_WIN_MAX)
-                               padapter->recvpriv.signal_qual_data.index = 0;
-
-                       RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("Total SQ=%d  pattrib->signal_qual= %d\n", padapter->recvpriv.signal_qual_data.total_val, pattrib->phy_info.SignalQuality));
-
-                       // <1> Showed on UI for user, in percentage.
-                       tmpVal = padapter->recvpriv.signal_qual_data.total_val/padapter->recvpriv.signal_qual_data.total_num;
-                       padapter->recvpriv.signal_qual=(u8)tmpVal;
-
-       }
-       else
-       {
-               RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,(" pattrib->signal_qual =%d\n", pattrib->phy_info.SignalQuality));
-       }
-#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS
-
-}// Process_UiLinkQuality8192S
-
-static void process_phy_info(_adapter *padapter, void *prframe)
-{
-       union recv_frame *precvframe = (union recv_frame *)prframe;
-       //
-       // Check RSSI
-       //
-       process_rssi(padapter, precvframe);
-       //
-       // Check PWDB.
-       //
-       //process_PWDB(padapter, precvframe);
-
-       //UpdateRxSignalStatistics8192C(Adapter, pRfd);
-       //
-       // Check EVM
-       //
-       process_link_qual(padapter,  precvframe);
-       #ifdef DBG_RX_SIGNAL_DISPLAY_RAW_DATA
-       rtw_store_phy_info( padapter,prframe);
-       #endif
-
-}
-
-/*
- * Notice:
- *     Before calling this function,
- *     precvframe->u.hdr.rx_data should be ready!
- */
-void rtl8723b_query_rx_phy_status(union recv_frame *precvframe, struct phy_stat *pphy_status)
-{
-       PADAPTER padapter = precvframe->u.hdr.adapter;
-       struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib;
-       PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
-       PODM_PHY_INFO_T pPHYInfo  = (PODM_PHY_INFO_T)(&pattrib->phy_info);
-
-       u8 *wlanhdr;
-       ODM_PACKET_INFO_T pkt_info;
-       u8 *sa = NULL;
-       //_irqL         irqL;
-       struct sta_priv *pstapriv;
-       struct sta_info *psta;
-
-
-       pkt_info.bPacketMatchBSSID =_FALSE;
-       pkt_info.bPacketToSelf = _FALSE;
-       pkt_info.bPacketBeacon = _FALSE;
-
-       wlanhdr = get_recvframe_data(precvframe);
-
-       pkt_info.bPacketMatchBSSID = ((!IsFrameTypeCtrl(wlanhdr)) &&
-               !pattrib->icv_err && !pattrib->crc_err &&
-               _rtw_memcmp(get_hdr_bssid(wlanhdr), get_bssid(&padapter->mlmepriv), ETH_ALEN));
-
-       pkt_info.bToSelf = ((!pattrib->icv_err) && (!pattrib->crc_err)) && (_rtw_memcmp(get_ra(wlanhdr), myid(&padapter->eeprompriv), ETH_ALEN));
-
-       pkt_info.bPacketToSelf = pkt_info.bPacketMatchBSSID && (_rtw_memcmp(get_ra(wlanhdr), myid(&padapter->eeprompriv), ETH_ALEN));
-
-       pkt_info.bPacketBeacon = pkt_info.bPacketMatchBSSID && (GetFrameSubType(wlanhdr) == WIFI_BEACON);
-/*
-       if(pkt_info.bPacketBeacon){
-               if(check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE) == _TRUE){
-                       sa = padapter->mlmepriv.cur_network.network.MacAddress;
-               #if 0
-                       {
-                               DBG_871X("==> rx beacon from AP[%02x:%02x:%02x:%02x:%02x:%02x]\n",
-                                       sa[0],sa[1],sa[2],sa[3],sa[4],sa[5]);
-                       }
-               #endif
-               }
-               //to do Ad-hoc
-       }
-       else{
-               sa = get_sa(wlanhdr);
-       }
-*/
-       sa = get_ta(wlanhdr);
-
-       pkt_info.StationID = 0xFF;
-
-       pstapriv = &padapter->stapriv;
-       psta = rtw_get_stainfo(pstapriv, sa);
-       if (psta)
-               pkt_info.StationID = psta->mac_id;
-       pkt_info.DataRate = pattrib->data_rate;
-
-       ODM_PhyStatusQuery(&pHalData->odmpriv, pPHYInfo, (u8*)pphy_status, &pkt_info);
-       if(psta)
-               psta->rssi = pattrib->phy_info.RecvSignalPower;
-
-       precvframe->u.hdr.psta = NULL;
-       if (pkt_info.bPacketMatchBSSID &&
-               (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) == _TRUE)) {
-               if (psta) {
-                       precvframe->u.hdr.psta = psta;
-                       process_phy_info(padapter, precvframe);
-               }
-       } else if (pkt_info.bPacketToSelf || pkt_info.bPacketBeacon) {
-               if (check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE) == _TRUE)
-                       if (psta)
-                               precvframe->u.hdr.psta = psta;
-               process_phy_info(padapter, precvframe);
-       }
-}
-
 void rtl8723b_query_rx_desc_status(union recv_frame *precvframe, u8 *pdesc)
 {
        struct rx_pkt_attrib *pattrib;
@@ -276,6 +55,15 @@ void rtl8723b_query_rx_desc_status(union recv_frame *precvframe, u8 *pdesc)
 
                // Offset 12
                pattrib->data_rate = (u8)GET_RX_STATUS_DESC_RX_RATE_8723B(pdesc);
+
+               /* Offset 16 */
+               pattrib->sgi = (u8)GET_RX_STATUS_DESC_SPLCP_8723B(pdesc);
+               pattrib->ldpc = (u8)GET_RX_STATUS_DESC_LDPC_8723B(pdesc);
+               pattrib->stbc = (u8)GET_RX_STATUS_DESC_STBC_8723B(pdesc);
+               pattrib->bw = (u8)GET_RX_STATUS_DESC_BW_8723B(pdesc);
+
+               /* Offset 20 */
+               /* pattrib->tsfl=(u8)GET_RX_STATUS_DESC_TSFL_8723B(pdesc); */
        }
 }