blob: 81b5efe649faab02b462479b6fc3d0a29ea6dbde [file] [log] [blame]
Larry Fingerf7c92d22014-03-28 21:37:39 -05001/******************************************************************************
2 *
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
4 *
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.
8 *
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
12 * more details.
13 *
14 ******************************************************************************/
15#define _RTL8723A_REDESC_C_
16
17#include <osdep_service.h>
18#include <drv_types.h>
19#include <rtl8723a_hal.h>
20
21static void process_rssi(struct rtw_adapter *padapter,
22 struct recv_frame *prframe)
23{
24 struct rx_pkt_attrib *pattrib = &prframe->attrib;
25 struct signal_stat *signal_stat = &padapter->recvpriv.signal_strength_data;
26
27 if (signal_stat->update_req) {
28 signal_stat->total_num = 0;
29 signal_stat->total_val = 0;
30 signal_stat->update_req = 0;
31 }
32
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;
36}
37
38static void process_link_qual(struct rtw_adapter *padapter,
39 struct recv_frame *prframe)
40{
41 struct rx_pkt_attrib *pattrib;
42 struct signal_stat *signal_stat;
43
44 if (prframe == NULL || padapter == NULL)
45 return;
46
47 pattrib = &prframe->attrib;
48 signal_stat = &padapter->recvpriv.signal_qual_data;
49
50 if (signal_stat->update_req) {
51 signal_stat->total_num = 0;
52 signal_stat->total_val = 0;
53 signal_stat->update_req = 0;
54 }
55
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;
59}
60
61/* void rtl8723a_process_phy_info(struct rtw_adapter *padapter, union recv_frame *prframe) */
62void rtl8723a_process_phy_info(struct rtw_adapter *padapter, void *prframe)
63{
64 struct recv_frame *precvframe = prframe;
65 /* Check RSSI */
66 process_rssi(padapter, precvframe);
67 /* Check EVM */
68 process_link_qual(padapter, precvframe);
69}