1 /* 2 * Copyright (c) 2016 Quantenna Communications, Inc. 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License 6 * as published by the Free Software Foundation; either version 2 7 * of the License, or (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 */ 15 16 #ifndef QLINK_COMMANDS_H_ 17 #define QLINK_COMMANDS_H_ 18 19 #include <linux/nl80211.h> 20 21 #include "core.h" 22 #include "bus.h" 23 24 int qtnf_cmd_send_init_fw(struct qtnf_bus *bus); 25 void qtnf_cmd_send_deinit_fw(struct qtnf_bus *bus); 26 int qtnf_cmd_get_hw_info(struct qtnf_bus *bus); 27 int qtnf_cmd_get_mac_info(struct qtnf_wmac *mac); 28 int qtnf_cmd_send_add_intf(struct qtnf_vif *vif, enum nl80211_iftype iftype, 29 u8 *mac_addr); 30 int qtnf_cmd_send_change_intf_type(struct qtnf_vif *vif, 31 enum nl80211_iftype iftype, u8 *mac_addr); 32 int qtnf_cmd_send_del_intf(struct qtnf_vif *vif); 33 int qtnf_cmd_band_info_get(struct qtnf_wmac *mac, 34 struct ieee80211_supported_band *band); 35 int qtnf_cmd_send_regulatory_config(struct qtnf_wmac *mac, const char *alpha2); 36 int qtnf_cmd_send_start_ap(struct qtnf_vif *vif, 37 const struct cfg80211_ap_settings *s); 38 int qtnf_cmd_send_stop_ap(struct qtnf_vif *vif); 39 int qtnf_cmd_send_register_mgmt(struct qtnf_vif *vif, u16 frame_type, bool reg); 40 int qtnf_cmd_send_mgmt_frame(struct qtnf_vif *vif, u32 cookie, u16 flags, 41 u16 freq, const u8 *buf, size_t len); 42 int qtnf_cmd_send_mgmt_set_appie(struct qtnf_vif *vif, u8 frame_type, 43 const u8 *buf, size_t len); 44 int qtnf_cmd_get_sta_info(struct qtnf_vif *vif, const u8 *sta_mac, 45 struct station_info *sinfo); 46 int qtnf_cmd_send_phy_params(struct qtnf_wmac *mac, u16 cmd_action, 47 void *data_buf); 48 int qtnf_cmd_send_add_key(struct qtnf_vif *vif, u8 key_index, bool pairwise, 49 const u8 *mac_addr, struct key_params *params); 50 int qtnf_cmd_send_del_key(struct qtnf_vif *vif, u8 key_index, bool pairwise, 51 const u8 *mac_addr); 52 int qtnf_cmd_send_set_default_key(struct qtnf_vif *vif, u8 key_index, 53 bool unicast, bool multicast); 54 int qtnf_cmd_send_set_default_mgmt_key(struct qtnf_vif *vif, u8 key_index); 55 int qtnf_cmd_send_add_sta(struct qtnf_vif *vif, const u8 *mac, 56 struct station_parameters *params); 57 int qtnf_cmd_send_change_sta(struct qtnf_vif *vif, const u8 *mac, 58 struct station_parameters *params); 59 int qtnf_cmd_send_del_sta(struct qtnf_vif *vif, 60 struct station_del_parameters *params); 61 62 int qtnf_cmd_resp_parse(struct qtnf_bus *bus, struct sk_buff *resp_skb); 63 int qtnf_cmd_resp_check(const struct qtnf_vif *vif, 64 const struct sk_buff *resp_skb, u16 cmd_id, 65 u16 *result, const u8 **payload, size_t *payload_size); 66 int qtnf_cmd_send_scan(struct qtnf_wmac *mac); 67 int qtnf_cmd_send_connect(struct qtnf_vif *vif, 68 struct cfg80211_connect_params *sme); 69 int qtnf_cmd_send_disconnect(struct qtnf_vif *vif, 70 u16 reason_code); 71 int qtnf_cmd_send_updown_intf(struct qtnf_vif *vif, 72 bool up); 73 int qtnf_cmd_reg_notify(struct qtnf_bus *bus, struct regulatory_request *req); 74 int qtnf_cmd_get_chan_stats(struct qtnf_wmac *mac, u16 channel, 75 struct qtnf_chan_stats *stats); 76 int qtnf_cmd_send_chan_switch(struct qtnf_vif *vif, 77 struct cfg80211_csa_settings *params); 78 int qtnf_cmd_get_channel(struct qtnf_vif *vif, struct cfg80211_chan_def *chdef); 79 int qtnf_cmd_start_cac(const struct qtnf_vif *vif, 80 const struct cfg80211_chan_def *chdef, 81 u32 cac_time_ms); 82 int qtnf_cmd_set_mac_acl(const struct qtnf_vif *vif, 83 const struct cfg80211_acl_data *params); 84 85 #endif /* QLINK_COMMANDS_H_ */ 86