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