/****************************************************************************** * * Copyright(c) 2007 - 2017 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * *****************************************************************************/ #ifndef __RTW_RM_H_ #define __RTW_RM_H_ u8 rm_post_event_hdl(_adapter *padapter, u8 *pbuf); #define RM_TIMER_NUM 32 #define RM_ALL_MEAS BIT(1) #define RM_ID_FOR_ALL(aid) ((aid<<16)|RM_ALL_MEAS) #define RM_CAP_ARG(x) ((u8 *)(x))[4], ((u8 *)(x))[3], ((u8 *)(x))[2], ((u8 *)(x))[1], ((u8 *)(x))[0] #define RM_CAP_FMT "%02x %02x%02x %02x%02x" /* remember to modify rm_event_name() when adding new event */ enum RM_EV_ID { RM_EV_state_in, RM_EV_busy_timer_expire, RM_EV_delay_timer_expire, RM_EV_meas_timer_expire, RM_EV_retry_timer_expire, RM_EV_repeat_delay_expire, RM_EV_request_timer_expire, RM_EV_wait_report, RM_EV_start_meas, RM_EV_survey_done, RM_EV_recv_rep, RM_EV_cancel, RM_EV_state_out, RM_EV_max }; struct rm_event { u32 rmid; enum RM_EV_ID evid; _list list; }; #ifdef CONFIG_RTW_80211K struct rm_clock { struct rm_obj *prm; atomic_t counter; enum RM_EV_ID evid; }; struct rm_priv { u8 enable; _queue ev_queue; _queue rm_queue; _timer rm_timer; struct rm_clock clock[RM_TIMER_NUM]; u8 rm_en_cap_def[5]; u8 rm_en_cap_assoc[5]; /* rm debug */ void *prm_sel; }; int rtw_init_rm(_adapter *padapter); int rtw_free_rm_priv(_adapter *padapter); unsigned int rm_on_action(_adapter *padapter, union recv_frame *precv_frame); void RM_IE_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE); void rtw_ap_parse_sta_rm_en_cap(_adapter *padapter, struct sta_info *psta, struct rtw_ieee802_11_elems *elems); int rm_post_event(_adapter *padapter, u32 rmid, enum RM_EV_ID evid); void rm_handler(_adapter *padapter, struct rm_event *pev); u8 rm_add_nb_req(_adapter *padapter, struct sta_info *psta); #endif /*CONFIG_RTW_80211K */ #endif /* __RTW_RM_H_ */