]>
Commit | Line | Data |
---|---|---|
8e84c258 EK |
1 | /* |
2 | * Copyright (c) 2013 Eugene Krasnikov <k.eugene.e@gmail.com> | |
3 | * | |
4 | * Permission to use, copy, modify, and/or distribute this software for any | |
5 | * purpose with or without fee is hereby granted, provided that the above | |
6 | * copyright notice and this permission notice appear in all copies. | |
7 | * | |
8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | |
11 | * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | |
13 | * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |
14 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
15 | */ | |
16 | ||
17 | #ifndef _SMD_H_ | |
18 | #define _SMD_H_ | |
19 | ||
20 | #include "wcn36xx.h" | |
21 | ||
22 | /* Max shared size is 4k but we take less.*/ | |
23 | #define WCN36XX_NV_FRAGMENT_SIZE 3072 | |
24 | ||
25 | #define WCN36XX_HAL_BUF_SIZE 4096 | |
26 | ||
546c505b | 27 | #define HAL_MSG_TIMEOUT 500 |
8e84c258 EK |
28 | #define WCN36XX_SMSM_WLAN_TX_ENABLE 0x00000400 |
29 | #define WCN36XX_SMSM_WLAN_TX_RINGS_EMPTY 0x00000200 | |
30 | /* The PNO version info be contained in the rsp msg */ | |
31 | #define WCN36XX_FW_MSG_PNO_VERSION_MASK 0x8000 | |
32 | ||
33 | enum wcn36xx_fw_msg_result { | |
34 | WCN36XX_FW_MSG_RESULT_SUCCESS = 0, | |
35 | WCN36XX_FW_MSG_RESULT_SUCCESS_SYNC = 1, | |
36 | ||
37 | WCN36XX_FW_MSG_RESULT_MEM_FAIL = 5, | |
38 | }; | |
39 | ||
40 | /******************************/ | |
41 | /* SMD requests and responses */ | |
42 | /******************************/ | |
43 | struct wcn36xx_fw_msg_status_rsp { | |
44 | u32 status; | |
45 | } __packed; | |
46 | ||
47 | struct wcn36xx_hal_ind_msg { | |
48 | struct list_head list; | |
49 | u8 *msg; | |
50 | size_t msg_len; | |
51 | }; | |
52 | ||
53 | struct wcn36xx; | |
54 | ||
55 | int wcn36xx_smd_open(struct wcn36xx *wcn); | |
56 | void wcn36xx_smd_close(struct wcn36xx *wcn); | |
57 | ||
58 | int wcn36xx_smd_load_nv(struct wcn36xx *wcn); | |
59 | int wcn36xx_smd_start(struct wcn36xx *wcn); | |
60 | int wcn36xx_smd_stop(struct wcn36xx *wcn); | |
61 | int wcn36xx_smd_init_scan(struct wcn36xx *wcn, enum wcn36xx_hal_sys_mode mode); | |
62 | int wcn36xx_smd_start_scan(struct wcn36xx *wcn); | |
63 | int wcn36xx_smd_end_scan(struct wcn36xx *wcn); | |
64 | int wcn36xx_smd_finish_scan(struct wcn36xx *wcn, | |
65 | enum wcn36xx_hal_sys_mode mode); | |
66 | int wcn36xx_smd_update_scan_params(struct wcn36xx *wcn); | |
67 | int wcn36xx_smd_add_sta_self(struct wcn36xx *wcn, struct ieee80211_vif *vif); | |
68 | int wcn36xx_smd_delete_sta_self(struct wcn36xx *wcn, u8 *addr); | |
69 | int wcn36xx_smd_delete_sta(struct wcn36xx *wcn, u8 sta_index); | |
70 | int wcn36xx_smd_join(struct wcn36xx *wcn, const u8 *bssid, u8 *vif, u8 ch); | |
71 | int wcn36xx_smd_set_link_st(struct wcn36xx *wcn, const u8 *bssid, | |
72 | const u8 *sta_mac, | |
73 | enum wcn36xx_hal_link_state state); | |
74 | int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif, | |
75 | struct ieee80211_sta *sta, const u8 *bssid, | |
76 | bool update); | |
77 | int wcn36xx_smd_delete_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif); | |
78 | int wcn36xx_smd_config_sta(struct wcn36xx *wcn, struct ieee80211_vif *vif, | |
79 | struct ieee80211_sta *sta); | |
80 | int wcn36xx_smd_send_beacon(struct wcn36xx *wcn, struct ieee80211_vif *vif, | |
81 | struct sk_buff *skb_beacon, u16 tim_off, | |
82 | u16 p2p_off); | |
83 | int wcn36xx_smd_switch_channel(struct wcn36xx *wcn, | |
84 | struct ieee80211_vif *vif, int ch); | |
85 | int wcn36xx_smd_update_proberesp_tmpl(struct wcn36xx *wcn, | |
86 | struct ieee80211_vif *vif, | |
87 | struct sk_buff *skb); | |
88 | int wcn36xx_smd_set_stakey(struct wcn36xx *wcn, | |
89 | enum ani_ed_type enc_type, | |
90 | u8 keyidx, | |
91 | u8 keylen, | |
92 | u8 *key, | |
93 | u8 sta_index); | |
94 | int wcn36xx_smd_set_bsskey(struct wcn36xx *wcn, | |
95 | enum ani_ed_type enc_type, | |
96 | u8 keyidx, | |
97 | u8 keylen, | |
98 | u8 *key); | |
99 | int wcn36xx_smd_remove_stakey(struct wcn36xx *wcn, | |
100 | enum ani_ed_type enc_type, | |
101 | u8 keyidx, | |
102 | u8 sta_index); | |
103 | int wcn36xx_smd_remove_bsskey(struct wcn36xx *wcn, | |
104 | enum ani_ed_type enc_type, | |
105 | u8 keyidx); | |
106 | int wcn36xx_smd_enter_bmps(struct wcn36xx *wcn, struct ieee80211_vif *vif); | |
107 | int wcn36xx_smd_exit_bmps(struct wcn36xx *wcn, struct ieee80211_vif *vif); | |
108 | int wcn36xx_smd_set_power_params(struct wcn36xx *wcn, bool ignore_dtim); | |
109 | int wcn36xx_smd_keep_alive_req(struct wcn36xx *wcn, | |
110 | struct ieee80211_vif *vif, | |
111 | int packet_type); | |
112 | int wcn36xx_smd_dump_cmd_req(struct wcn36xx *wcn, u32 arg1, u32 arg2, | |
113 | u32 arg3, u32 arg4, u32 arg5); | |
114 | int wcn36xx_smd_feature_caps_exchange(struct wcn36xx *wcn); | |
2be6636a PF |
115 | void set_feat_caps(u32 *bitmap, enum place_holder_in_cap_bitmap cap); |
116 | int get_feat_caps(u32 *bitmap, enum place_holder_in_cap_bitmap cap); | |
117 | void clear_feat_caps(u32 *bitmap, enum place_holder_in_cap_bitmap cap); | |
8e84c258 EK |
118 | |
119 | int wcn36xx_smd_add_ba_session(struct wcn36xx *wcn, | |
120 | struct ieee80211_sta *sta, | |
121 | u16 tid, | |
122 | u16 *ssn, | |
123 | u8 direction, | |
124 | u8 sta_index); | |
125 | int wcn36xx_smd_add_ba(struct wcn36xx *wcn); | |
126 | int wcn36xx_smd_del_ba(struct wcn36xx *wcn, u16 tid, u8 sta_index); | |
127 | int wcn36xx_smd_trigger_ba(struct wcn36xx *wcn, u8 sta_index); | |
128 | ||
129 | int wcn36xx_smd_update_cfg(struct wcn36xx *wcn, u32 cfg_id, u32 value); | |
130 | #endif /* _SMD_H_ */ |