1 /******************************************************************************
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 ******************************************************************************/
15 #define _RTL8723A_REDESC_C_
17 #include <osdep_service.h>
18 #include <drv_types.h>
19 #include <rtl8723a_hal.h>
21 static void process_rssi(struct rtw_adapter
*padapter
,
22 struct recv_frame
*prframe
)
24 struct rx_pkt_attrib
*pattrib
= &prframe
->attrib
;
25 struct signal_stat
*signal_stat
= &padapter
->recvpriv
.signal_strength_data
;
27 if (signal_stat
->update_req
) {
28 signal_stat
->total_num
= 0;
29 signal_stat
->total_val
= 0;
30 signal_stat
->update_req
= 0;
33 signal_stat
->total_num
++;
34 signal_stat
->total_val
+= pattrib
->phy_info
.SignalStrength
;
35 signal_stat
->avg_val
= signal_stat
->total_val
/ signal_stat
->total_num
;
38 static void process_link_qual(struct rtw_adapter
*padapter
,
39 struct recv_frame
*prframe
)
41 struct rx_pkt_attrib
*pattrib
;
42 struct signal_stat
*signal_stat
;
44 if (prframe
== NULL
|| padapter
== NULL
)
47 pattrib
= &prframe
->attrib
;
48 signal_stat
= &padapter
->recvpriv
.signal_qual_data
;
50 if (signal_stat
->update_req
) {
51 signal_stat
->total_num
= 0;
52 signal_stat
->total_val
= 0;
53 signal_stat
->update_req
= 0;
56 signal_stat
->total_num
++;
57 signal_stat
->total_val
+= pattrib
->phy_info
.SignalQuality
;
58 signal_stat
->avg_val
= signal_stat
->total_val
/ signal_stat
->total_num
;
61 /* void rtl8723a_process_phy_info(struct rtw_adapter *padapter, union recv_frame *prframe) */
62 void rtl8723a_process_phy_info(struct rtw_adapter
*padapter
, void *prframe
)
64 struct recv_frame
*precvframe
= prframe
;
66 process_rssi(padapter
, precvframe
);
68 process_link_qual(padapter
, precvframe
);