xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8189fs/hal/phydm/txbf/haltxbfinterface.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c) 2007 - 2017  Realtek Corporation.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify it
6*4882a593Smuzhiyun  * under the terms of version 2 of the GNU General Public License as
7*4882a593Smuzhiyun  * published by the Free Software Foundation.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * This program is distributed in the hope that it will be useful, but WITHOUT
10*4882a593Smuzhiyun  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12*4882a593Smuzhiyun  * more details.
13*4882a593Smuzhiyun  *
14*4882a593Smuzhiyun  * The full GNU General Public License is included in this distribution in the
15*4882a593Smuzhiyun  * file called LICENSE.
16*4882a593Smuzhiyun  *
17*4882a593Smuzhiyun  * Contact Information:
18*4882a593Smuzhiyun  * wlanfae <wlanfae@realtek.com>
19*4882a593Smuzhiyun  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20*4882a593Smuzhiyun  * Hsinchu 300, Taiwan.
21*4882a593Smuzhiyun  *
22*4882a593Smuzhiyun  * Larry Finger <Larry.Finger@lwfinger.net>
23*4882a593Smuzhiyun  *
24*4882a593Smuzhiyun  *****************************************************************************/
25*4882a593Smuzhiyun #ifndef __HAL_TXBF_INTERFACE_H__
26*4882a593Smuzhiyun #define __HAL_TXBF_INTERFACE_H__
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun #ifdef PHYDM_BEAMFORMING_SUPPORT
29*4882a593Smuzhiyun #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun #define a_SifsTime ((IS_WIRELESS_MODE_5G(adapter) || IS_WIRELESS_MODE_N_24G(adapter)) ? 16 : 10)
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun void beamforming_gid_paid(
34*4882a593Smuzhiyun 	void *adapter,
35*4882a593Smuzhiyun 	PRT_TCB tcb);
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun enum rt_status
38*4882a593Smuzhiyun beamforming_get_report_frame(
39*4882a593Smuzhiyun 	void *adapter,
40*4882a593Smuzhiyun 	PRT_RFD rfd,
41*4882a593Smuzhiyun 	POCTET_STRING p_pdu_os);
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun void beamforming_get_ndpa_frame(
44*4882a593Smuzhiyun 	void *dm_void,
45*4882a593Smuzhiyun 	OCTET_STRING pdu_os);
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun boolean
48*4882a593Smuzhiyun send_fw_ht_ndpa_packet(
49*4882a593Smuzhiyun 	void *dm_void,
50*4882a593Smuzhiyun 	u8 *RA,
51*4882a593Smuzhiyun 	enum channel_width BW);
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun boolean
54*4882a593Smuzhiyun send_fw_vht_ndpa_packet(
55*4882a593Smuzhiyun 	void *dm_void,
56*4882a593Smuzhiyun 	u8 *RA,
57*4882a593Smuzhiyun 	u16 AID,
58*4882a593Smuzhiyun 	enum channel_width BW);
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun boolean
61*4882a593Smuzhiyun send_sw_vht_ndpa_packet(
62*4882a593Smuzhiyun 	void *dm_void,
63*4882a593Smuzhiyun 	u8 *RA,
64*4882a593Smuzhiyun 	u16 AID,
65*4882a593Smuzhiyun 	enum channel_width BW);
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun boolean
68*4882a593Smuzhiyun send_sw_ht_ndpa_packet(
69*4882a593Smuzhiyun 	void *dm_void,
70*4882a593Smuzhiyun 	u8 *RA,
71*4882a593Smuzhiyun 	enum channel_width BW);
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun #if (SUPPORT_MU_BF == 1)
74*4882a593Smuzhiyun enum rt_status
75*4882a593Smuzhiyun beamforming_get_vht_gid_mgnt_frame(
76*4882a593Smuzhiyun 	void *adapter,
77*4882a593Smuzhiyun 	PRT_RFD rfd,
78*4882a593Smuzhiyun 	POCTET_STRING p_pdu_os);
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun boolean
81*4882a593Smuzhiyun send_sw_vht_gid_mgnt_frame(
82*4882a593Smuzhiyun 	void *dm_void,
83*4882a593Smuzhiyun 	u8 *RA,
84*4882a593Smuzhiyun 	u8 idx);
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun boolean
87*4882a593Smuzhiyun send_sw_vht_bf_report_poll(
88*4882a593Smuzhiyun 	void *dm_void,
89*4882a593Smuzhiyun 	u8 *RA,
90*4882a593Smuzhiyun 	boolean is_final_poll);
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun boolean
93*4882a593Smuzhiyun send_sw_vht_mu_ndpa_packet(
94*4882a593Smuzhiyun 	void *dm_void,
95*4882a593Smuzhiyun 	enum channel_width BW);
96*4882a593Smuzhiyun #else
97*4882a593Smuzhiyun #define beamforming_get_vht_gid_mgnt_frame(adapter, rfd, p_pdu_os) RT_STATUS_FAILURE
98*4882a593Smuzhiyun #define send_sw_vht_gid_mgnt_frame(dm_void, RA)
99*4882a593Smuzhiyun #define send_sw_vht_bf_report_poll(dm_void, RA, is_final_poll)
100*4882a593Smuzhiyun #define send_sw_vht_mu_ndpa_packet(dm_void, BW)
101*4882a593Smuzhiyun #endif
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun u32 beamforming_get_report_frame(
106*4882a593Smuzhiyun 	void *dm_void,
107*4882a593Smuzhiyun 	union recv_frame *precv_frame);
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun boolean
110*4882a593Smuzhiyun send_fw_ht_ndpa_packet(
111*4882a593Smuzhiyun 	void *dm_void,
112*4882a593Smuzhiyun 	u8 *RA,
113*4882a593Smuzhiyun 	enum channel_width BW);
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun boolean
116*4882a593Smuzhiyun send_sw_ht_ndpa_packet(
117*4882a593Smuzhiyun 	void *dm_void,
118*4882a593Smuzhiyun 	u8 *RA,
119*4882a593Smuzhiyun 	enum channel_width BW);
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun boolean
122*4882a593Smuzhiyun send_fw_vht_ndpa_packet(
123*4882a593Smuzhiyun 	void *dm_void,
124*4882a593Smuzhiyun 	u8 *RA,
125*4882a593Smuzhiyun 	u16 AID,
126*4882a593Smuzhiyun 	enum channel_width BW);
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun boolean
129*4882a593Smuzhiyun send_sw_vht_ndpa_packet(
130*4882a593Smuzhiyun 	void *dm_void,
131*4882a593Smuzhiyun 	u8 *RA,
132*4882a593Smuzhiyun 	u16 AID,
133*4882a593Smuzhiyun 	enum channel_width BW);
134*4882a593Smuzhiyun #endif
135*4882a593Smuzhiyun 
136*4882a593Smuzhiyun void beamforming_get_ndpa_frame(
137*4882a593Smuzhiyun 	void *dm_void,
138*4882a593Smuzhiyun #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
139*4882a593Smuzhiyun 	OCTET_STRING pdu_os
140*4882a593Smuzhiyun #elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
141*4882a593Smuzhiyun 	union recv_frame *precv_frame
142*4882a593Smuzhiyun #endif
143*4882a593Smuzhiyun 	);
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun boolean
146*4882a593Smuzhiyun dbg_send_sw_vht_mundpa_packet(
147*4882a593Smuzhiyun 	void *dm_void,
148*4882a593Smuzhiyun 	enum channel_width BW);
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun #else
151*4882a593Smuzhiyun #define beamforming_get_ndpa_frame(dm, _pdu_os)
152*4882a593Smuzhiyun #if (DM_ODM_SUPPORT_TYPE == ODM_CE)
153*4882a593Smuzhiyun #define beamforming_get_report_frame(adapter, precv_frame) RT_STATUS_FAILURE
154*4882a593Smuzhiyun #elif (DM_ODM_SUPPORT_TYPE == ODM_WIN)
155*4882a593Smuzhiyun #define beamforming_get_report_frame(adapter, rfd, p_pdu_os) RT_STATUS_FAILURE
156*4882a593Smuzhiyun #define beamforming_get_vht_gid_mgnt_frame(adapter, rfd, p_pdu_os) RT_STATUS_FAILURE
157*4882a593Smuzhiyun #endif
158*4882a593Smuzhiyun #define send_fw_ht_ndpa_packet(dm_void, RA, BW)
159*4882a593Smuzhiyun #define send_sw_ht_ndpa_packet(dm_void, RA, BW)
160*4882a593Smuzhiyun #define send_fw_vht_ndpa_packet(dm_void, RA, AID, BW)
161*4882a593Smuzhiyun #define send_sw_vht_ndpa_packet(dm_void, RA, AID, BW)
162*4882a593Smuzhiyun #define send_sw_vht_gid_mgnt_frame(dm_void, RA, idx)
163*4882a593Smuzhiyun #define send_sw_vht_bf_report_poll(dm_void, RA, is_final_poll)
164*4882a593Smuzhiyun #define send_sw_vht_mu_ndpa_packet(dm_void, BW)
165*4882a593Smuzhiyun #endif
166*4882a593Smuzhiyun 
167*4882a593Smuzhiyun #endif
168