diff --git a/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h b/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h index 5a442599828d..164c669fdae1 100644 --- a/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h +++ b/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h @@ -72,6 +72,11 @@ struct direct_buf_rx_data; #include #endif /* QCA_SUPPORT_CP_STATS */ +#ifdef CMN_VDEV_MGR_TGT_IF_ENABLE +#include +#include +#endif /* CMN_VDEV_MGR_TGT_IF_ENABLE */ + #ifdef QCA_SUPPORT_CP_STATS /** * struct wlan_lmac_if_cp_stats_tx_ops - defines southbound tx callbacks for @@ -170,12 +175,98 @@ struct wlan_lmac_if_ftm_tx_ops { }; +/** + * struct wlan_lmac_if_mlme_tx_ops - south bound tx function pointers for mlme + * @scan_sta_power_events: function to handle STA power events + * @scan_connection_lost: function to get scan connection lost + * @scan_end: function to end scan + * @get_wifi_iface_id: function to get wifi interface id + * @vdev_mlme_attach: function to register events + * @vdev_mlme_detach: function to unregister events + * @vdev_mlme_rsp_timer_mgmt: function to manage vdev response timer + * @vdev_create_send: function to send vdev create + * @vdev_create_complete: function to send WMI cfg required for create + * @vdev_start_send: function to send vdev start + * @vdev_up_send: function to send vdev up + * @vdev_delete_send: function to send vdev delete + * @vdev_stop_send: function to send vdev stop + * @vdev_down_send: function to send vdev down + * @vdev_set_param_send: function to send vdev parameter + * @vdev_set_nac_rssi_send: function to send nac rssi + * @vdev_set_neighbour_rx_cmd_send: function to send vdev neighbour rx cmd + * @vdev_sifs_trigger_send: function to send vdev sifs trigger + * @vdev_set_custom_aggr_size_cmd_send: function to send custom aggr size + * @vdev_config_ratemask_cmd_send: function to send ratemask + * @peer_flush_tids_send: function to flush peer tids + * @multiple_vdev_restart_req_cmd: function to send multiple vdev restart + * @beacon_send_cmd: function to send beacon + * @beacon_tmpl_send: function to send beacon template + * @vdev_bcn_miss_offload_send: function to send beacon miss offload + * @vdev_sta_ps_param_send: function to sent STA power save config + * @target_is_pre_lithium: function to get target type status + * @vdev_mgr_resp_timer_mgmt: function to manage response timer + */ struct wlan_lmac_if_mlme_tx_ops { void (*scan_sta_power_events)(struct wlan_objmgr_pdev *pdev, int event_type, int event_status); void (*scan_connection_lost)(struct wlan_objmgr_pdev *pdev); void (*scan_end)(struct wlan_objmgr_pdev *pdev); uint32_t (*get_wifi_iface_id) (struct wlan_objmgr_pdev *pdev); +#ifdef CMN_VDEV_MGR_TGT_IF_ENABLE + QDF_STATUS (*vdev_mlme_attach)(struct wlan_objmgr_psoc *psoc); + QDF_STATUS (*vdev_mlme_detach)(struct wlan_objmgr_psoc *psoc); + QDF_STATUS (*vdev_mlme_rsp_timer_mgmt)(struct wlan_objmgr_vdev *vdev, + qdf_timer_t *rsp_timer, + bool flag); + QDF_STATUS (*vdev_create_send)(struct wlan_objmgr_vdev *vdev, + struct vdev_create_params *param); + QDF_STATUS (*vdev_create_complete)(struct wlan_objmgr_vdev *vdev); + QDF_STATUS (*vdev_start_send)(struct wlan_objmgr_vdev *vdev, + struct vdev_start_params *param); + QDF_STATUS (*vdev_up_send)(struct wlan_objmgr_vdev *vdev, + struct vdev_up_params *param); + QDF_STATUS (*vdev_delete_send)(struct wlan_objmgr_vdev *vdev, + struct vdev_delete_params *param); + QDF_STATUS (*vdev_stop_send)(struct wlan_objmgr_vdev *vdev, + struct vdev_stop_params *param); + QDF_STATUS (*vdev_down_send)(struct wlan_objmgr_vdev *vdev, + struct vdev_down_params *param); + QDF_STATUS (*vdev_set_param_send)(struct wlan_objmgr_vdev *vdev, + struct vdev_set_params *param); + QDF_STATUS (*vdev_set_nac_rssi_send)( + struct wlan_objmgr_vdev *vdev, + struct vdev_scan_nac_rssi_params *param); + QDF_STATUS (*vdev_set_neighbour_rx_cmd_send)( + struct wlan_objmgr_vdev *vdev, + struct set_neighbour_rx_params *param, + uint8_t *mac); + QDF_STATUS (*vdev_sifs_trigger_send)( + struct wlan_objmgr_vdev *vdev, + struct sifs_trigger_param *param); + QDF_STATUS (*vdev_set_custom_aggr_size_cmd_send)( + struct wlan_objmgr_vdev *vdev, + struct set_custom_aggr_size_params *param); + QDF_STATUS (*vdev_config_ratemask_cmd_send)( + struct wlan_objmgr_vdev *vdev, + struct config_ratemask_params *param); + QDF_STATUS (*peer_flush_tids_send)( + struct wlan_objmgr_vdev *vdev, + struct peer_flush_params *param); + QDF_STATUS (*multiple_vdev_restart_req_cmd)( + struct wlan_objmgr_pdev *pdev, + struct multiple_vdev_restart_params *param); + QDF_STATUS (*beacon_cmd_send)(struct wlan_objmgr_vdev *vdev, + struct beacon_params *param); + QDF_STATUS (*beacon_tmpl_send)(struct wlan_objmgr_vdev *vdev, + struct beacon_tmpl_params *param); + QDF_STATUS (*vdev_bcn_miss_offload_send)(struct wlan_objmgr_vdev *vdev); + QDF_STATUS (*vdev_sta_ps_param_send)(struct wlan_objmgr_vdev *vdev, + struct sta_ps_params *param); + QDF_STATUS (*target_is_pre_lithium)(struct wlan_objmgr_psoc *psoc); + QDF_STATUS (*vdev_mgr_resp_timer_mgmt)(struct wlan_objmgr_vdev *vdev, + qdf_timer_t *rsp_timer, + bool init); +#endif }; /** @@ -1191,6 +1282,43 @@ struct wlan_lmac_if_dfs_rx_ops { bool *bw_reduce); }; +/** + * struct wlan_lmac_if_mlme_rx_ops: Function pointer to call MLME functions + * @wlan_mlme_scan_start: function to start scan + * @wlan_mlme_register_pm_event_handler: function to register pm event + * @wlan_mlme_unregister_pm_event_handler: function unregister for pm event + * @wlan_mlme_register_vdev_event_handler: function to register for vdev event + * @wlan_mlme_unregister_vdev_event_handler: functiont o unregister for vdev + * event + * @wlan_mlme_send_probe_request: function to send probe + * @wlan_mlme_resmgr_request_bsschan: function to request bsschan + * @wlan_mlme_resmgr_request_offchan: function to request offchan + * @wlan_mlme_resmgr_active: function to check resmgr status + * @wlan_mlme_get_cw_inter_found: function to get cw interference + * @wlan_mlme_set_home_channel: function to set home channel + * @wlan_mlme_set_channel: function to set channel + * @wlan_mlme_start_record_stats: functiont to start record stats + * @wlan_mlme_end_record_stats: function to end recording of stats + * @wlan_mlme_get_enh_rpt_ind: function to get enhanced repeater index + * @wlan_mlme_pause: function to pause mlme + * @wlan_mlme_unpause: function to unpause mlme + * @wlan_mlme_vdev_pause_control: function to set vdev pause control + * @wlan_mlme_sta_power_pause: function to set sta power pause + * @wlan_mlme_sta_power_unpause: function to set sta power pause + * @wlan_mlme_set_vdev_sleep: function to sleep vdev sleep + * @wlan_mlme_set_vdev_wakeup: function to set vdev wakeup + * @wlan_mlme_get_traffic_indication_timestamp: function to get tid timestamp + * @wlan_mlme_get_acs_in_progress: function to get ACS progress + * @wlan_mlme_end_scan: function to end scan + * @mlme_get_rsp_timer: function to get vdev mgr response timer + * @mlme_response_timeout_cb: function to trigger on response time expiry + * @mlme_start_response: function to handle vdev start response + * @mlme_stop_response: function to handle vdev stop response + * @mlme_delete_response: function to handle vdev delete response + * @mlme_offload_bcn_tx_status_event_handle: function to get offload beacon tx + * status + * @mlme_tbttoffset_update_handle: function to handle tbttoffset event + */ struct wlan_lmac_if_mlme_rx_ops { void (*wlan_mlme_scan_start)(struct wlan_objmgr_pdev *pdev); @@ -1248,6 +1376,27 @@ struct wlan_lmac_if_mlme_rx_ops { int (*wlan_mlme_get_acs_in_progress)(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id); void (*wlan_mlme_end_scan)(struct wlan_objmgr_pdev *pdev); + +#ifdef CMN_VDEV_MGR_TGT_IF_ENABLE + struct vdev_response_timer *(*vdev_mgr_get_response_timer_info)( + struct wlan_objmgr_vdev *vdev); + void (*vdev_mgr_response_timeout_cb)(struct wlan_objmgr_vdev *vdev); + QDF_STATUS (*vdev_mgr_start_response)( + struct wlan_objmgr_psoc *psoc, + struct vdev_start_response *rsp); + QDF_STATUS (*vdev_mgr_stop_response)( + struct wlan_objmgr_psoc *psoc, + struct vdev_stop_response *rsp); + QDF_STATUS (*vdev_mgr_delete_response)( + struct wlan_objmgr_psoc *psoc, + struct vdev_delete_response *rsp); + QDF_STATUS (*vdev_mgr_offload_bcn_tx_status_event_handle)( + uint32_t vdev_id, + uint32_t tx_status); + QDF_STATUS (*vdev_mgr_tbttoffset_update_handle)( + uint32_t num_vdevs, + bool is_ext); +#endif }; #ifdef WLAN_SUPPORT_GREEN_AP diff --git a/umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c b/umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c index 74b2990a284a..9d990e70d5a8 100644 --- a/umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c +++ b/umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c @@ -65,6 +65,10 @@ #include #endif /* QCA_SUPPORT_CP_STATS */ +#ifdef CMN_VDEV_MGR_TGT_IF_ENABLE +#include +#endif + /* Function pointer for OL/WMA specific UMAC tx_ops * registration. */ @@ -72,6 +76,19 @@ QDF_STATUS (*wlan_lmac_if_umac_tx_ops_register) (struct wlan_lmac_if_tx_ops *tx_ops); qdf_export_symbol(wlan_lmac_if_umac_tx_ops_register); +#ifdef CMN_VDEV_MGR_TGT_IF_ENABLE +static void +tgt_vdev_mgr_rx_ops_register(struct wlan_lmac_if_rx_ops *rx_ops) +{ + tgt_vdev_mgr_register_rx_ops(rx_ops); +} +#else +static void +tgt_vdev_mgr_rx_ops_register(struct wlan_lmac_if_rx_ops *rx_ops) +{ +} +#endif + #ifdef QCA_SUPPORT_CP_STATS /** * wlan_lmac_if_cp_stats_rx_ops_register() - API to register cp stats Rx Ops @@ -516,6 +533,9 @@ wlan_lmac_if_umac_rx_ops_register(struct wlan_lmac_if_rx_ops *rx_ops) /* FILS Discovery */ wlan_lmac_if_fd_rx_ops_register(rx_ops); + /* MLME rx_ops */ + tgt_vdev_mgr_rx_ops_register(rx_ops); + return QDF_STATUS_SUCCESS; }