1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * nxpwifi: commands and events 4 * 5 * Copyright 2011-2024 NXP 6 */ 7 8 #ifndef _NXPWIFI_CMD_EVT_H_ 9 #define _NXPWIFI_CMD_EVT_H_ 10 11 struct nxpwifi_cmd_entry { 12 u16 cmd_no; 13 int (*prepare_cmd)(struct nxpwifi_private *priv, 14 struct host_cmd_ds_command *cmd, 15 u16 cmd_no, void *data_buf, 16 u16 cmd_action, u32 cmd_type); 17 int (*cmd_resp)(struct nxpwifi_private *priv, 18 struct host_cmd_ds_command *resp, 19 u16 cmdresp_no, 20 void *data_buf); 21 }; 22 23 struct nxpwifi_evt_entry { 24 u32 event_cause; 25 int (*event_handler)(struct nxpwifi_private *priv); 26 }; 27 28 static inline int 29 nxpwifi_cmd_fill_head_only(struct nxpwifi_private *priv, 30 struct host_cmd_ds_command *cmd, 31 u16 cmd_no, void *data_buf, 32 u16 cmd_action, u32 cmd_type) 33 { 34 cmd->command = cpu_to_le16(cmd_no); 35 cmd->size = cpu_to_le16(S_DS_GEN); 36 37 return 0; 38 } 39 40 int nxpwifi_send_cmd(struct nxpwifi_private *priv, u16 cmd_no, 41 u16 cmd_action, u32 cmd_oid, void *data_buf, bool sync); 42 int nxpwifi_sta_prepare_cmd(struct nxpwifi_private *priv, 43 struct cmd_ctrl_node *cmd_node, 44 u16 cmd_action, u32 cmd_oid); 45 int nxpwifi_sta_init_cmd(struct nxpwifi_private *priv, u8 first_sta, bool init); 46 int nxpwifi_uap_prepare_cmd(struct nxpwifi_private *priv, 47 struct cmd_ctrl_node *cmd_node, 48 u16 cmd_action, u32 type); 49 int nxpwifi_set_secure_params(struct nxpwifi_private *priv, 50 struct nxpwifi_uap_bss_param *bss_config, 51 struct cfg80211_ap_settings *params); 52 void nxpwifi_set_ht_params(struct nxpwifi_private *priv, 53 struct nxpwifi_uap_bss_param *bss_cfg, 54 struct cfg80211_ap_settings *params); 55 void nxpwifi_set_vht_params(struct nxpwifi_private *priv, 56 struct nxpwifi_uap_bss_param *bss_cfg, 57 struct cfg80211_ap_settings *params); 58 void nxpwifi_set_tpc_params(struct nxpwifi_private *priv, 59 struct nxpwifi_uap_bss_param *bss_cfg, 60 struct cfg80211_ap_settings *params); 61 void nxpwifi_set_uap_rates(struct nxpwifi_uap_bss_param *bss_cfg, 62 struct cfg80211_ap_settings *params); 63 void nxpwifi_set_vht_width(struct nxpwifi_private *priv, 64 enum nl80211_chan_width width, 65 bool ap_11ac_disable); 66 bool nxpwifi_check_11ax_capability(struct nxpwifi_private *priv, 67 struct nxpwifi_uap_bss_param *bss_cfg, 68 struct cfg80211_ap_settings *params); 69 int nxpwifi_set_11ax_status(struct nxpwifi_private *priv, 70 struct nxpwifi_uap_bss_param *bss_cfg, 71 struct cfg80211_ap_settings *params); 72 void nxpwifi_set_sys_config_invalid_data(struct nxpwifi_uap_bss_param *config); 73 void nxpwifi_set_wmm_params(struct nxpwifi_private *priv, 74 struct nxpwifi_uap_bss_param *bss_cfg, 75 struct cfg80211_ap_settings *params); 76 void nxpwifi_config_uap_11d(struct nxpwifi_private *priv, 77 struct cfg80211_beacon_data *beacon_data); 78 void nxpwifi_uap_set_channel(struct nxpwifi_private *priv, 79 struct nxpwifi_uap_bss_param *bss_cfg, 80 struct cfg80211_chan_def chandef); 81 int nxpwifi_config_start_uap(struct nxpwifi_private *priv, 82 struct nxpwifi_uap_bss_param *bss_cfg); 83 int nxpwifi_process_event(struct nxpwifi_adapter *adapter); 84 int nxpwifi_process_sta_event(struct nxpwifi_private *priv); 85 int nxpwifi_process_uap_event(struct nxpwifi_private *priv); 86 void nxpwifi_reset_connect_state(struct nxpwifi_private *priv, u16 reason, 87 bool from_ap); 88 void nxpwifi_process_multi_chan_event(struct nxpwifi_private *priv, 89 struct sk_buff *event_skb); 90 void nxpwifi_process_tx_pause_event(struct nxpwifi_private *priv, 91 struct sk_buff *event); 92 void nxpwifi_bt_coex_wlan_param_update_event(struct nxpwifi_private *priv, 93 struct sk_buff *event_skb); 94 int nxpwifi_mgmt_frame_reg(struct nxpwifi_private *priv, u32 mask); 95 int nxpwifi_set_uap_sys_cfg(struct nxpwifi_private *priv, 96 struct nxpwifi_uap_bss_param *cfg); 97 int nxpwifi_set_rts(struct nxpwifi_private *priv, u32 rts_thr); 98 int nxpwifi_set_frag(struct nxpwifi_private *priv, u32 frag_thr); 99 int nxpwifi_set_bss_mode(struct nxpwifi_private *priv); 100 int nxpwifi_config_monitor_mode(struct nxpwifi_private *priv, 101 struct nxpwifi_802_11_net_monitor *cfg); 102 int nxpwifi_apply_regdomain(struct nxpwifi_private *priv); 103 int nxpwifi_get_tx_pwr(struct nxpwifi_private *priv); 104 int nxpwifi_get_rssi_info(struct nxpwifi_private *priv); 105 int nxpwifi_get_802_11_snmp_mib(struct nxpwifi_private *priv, u16 oid, void *value); 106 int nxpwifi_set_rf_antenna(struct nxpwifi_private *priv, void *antcfg); 107 int nxpwifi_get_rf_antenna(struct nxpwifi_private *priv, u32 *tx_ant, u32 *rx_ant); 108 int nxpwifi_ap_stop_bss(struct nxpwifi_private *priv); 109 int nxpwifi_ap_sys_reset(struct nxpwifi_private *priv); 110 int nxpwifi_cfg80211_deinit_p2p(struct nxpwifi_private *priv); 111 int nxpwifi_ap_get_sta_list(struct nxpwifi_private *priv); 112 int nxpwifi_set_tx_rate(struct nxpwifi_private *priv, void *bitmap_rates); 113 int nxpwifi_802_11_subscribe_event(struct nxpwifi_private *priv, 114 struct nxpwifi_ds_misc_subsc_evt *subsc_evt); 115 int nxpwifi_uap_sta_deauth(struct nxpwifi_private *priv, u8 *mac); 116 int nxpwifi_bg_scan_config(struct nxpwifi_private *priv, void *bg_scan_cfg); 117 int nxpwifi_mef_cfg(struct nxpwifi_private *priv, void *mef_cfg); 118 int nxpwifi_coalesce_cfg(struct nxpwifi_private *priv, void *coalesce_cfg); 119 int nxpwifi_add_new_station(struct nxpwifi_private *priv, void *add_sta); 120 int nxpwifi_hostcmd(struct nxpwifi_private *priv, struct nxpwifi_ds_misc_cmd *hostcmd); 121 int nxpwifi_chan_report_request(struct nxpwifi_private *priv, void *radar_params); 122 #endif /* !_NXPWIFI_CMD_EVT_H_ */ 123