1 // SPDX-License-Identifier: ISC 2 /* 3 * Copyright (c) 2012 Broadcom Corporation 4 */ 5 6 #ifndef _fwil_h_ 7 #define _fwil_h_ 8 9 #include "debug.h" 10 11 /******************************************************************************* 12 * Dongle command codes that are interpreted by firmware 13 ******************************************************************************/ 14 #define BRCMF_C_GET_VERSION 1 15 #define BRCMF_C_UP 2 16 #define BRCMF_C_DOWN 3 17 #define BRCMF_C_SET_PROMISC 10 18 #define BRCMF_C_GET_RATE 12 19 #define BRCMF_C_GET_INFRA 19 20 #define BRCMF_C_SET_INFRA 20 21 #define BRCMF_C_GET_AUTH 21 22 #define BRCMF_C_SET_AUTH 22 23 #define BRCMF_C_GET_BSSID 23 24 #define BRCMF_C_GET_SSID 25 25 #define BRCMF_C_SET_SSID 26 26 #define BRCMF_C_TERMINATED 28 27 #define BRCMF_C_GET_CHANNEL 29 28 #define BRCMF_C_SET_CHANNEL 30 29 #define BRCMF_C_GET_SRL 31 30 #define BRCMF_C_SET_SRL 32 31 #define BRCMF_C_GET_LRL 33 32 #define BRCMF_C_SET_LRL 34 33 #define BRCMF_C_GET_RADIO 37 34 #define BRCMF_C_SET_RADIO 38 35 #define BRCMF_C_GET_PHYTYPE 39 36 #define BRCMF_C_SET_KEY 45 37 #define BRCMF_C_GET_REGULATORY 46 38 #define BRCMF_C_SET_REGULATORY 47 39 #define BRCMF_C_SET_PASSIVE_SCAN 49 40 #define BRCMF_C_SCAN 50 41 #define BRCMF_C_SCAN_RESULTS 51 42 #define BRCMF_C_DISASSOC 52 43 #define BRCMF_C_REASSOC 53 44 #define BRCMF_C_SET_ROAM_TRIGGER 55 45 #define BRCMF_C_SET_ROAM_DELTA 57 46 #define BRCMF_C_GET_BCNPRD 75 47 #define BRCMF_C_SET_BCNPRD 76 48 #define BRCMF_C_GET_DTIMPRD 77 49 #define BRCMF_C_SET_DTIMPRD 78 50 #define BRCMF_C_SET_COUNTRY 84 51 #define BRCMF_C_GET_PM 85 52 #define BRCMF_C_SET_PM 86 53 #define BRCMF_C_GET_REVINFO 98 54 #define BRCMF_C_GET_MONITOR 107 55 #define BRCMF_C_SET_MONITOR 108 56 #define BRCMF_C_GET_CURR_RATESET 114 57 #define BRCMF_C_GET_AP 117 58 #define BRCMF_C_SET_AP 118 59 #define BRCMF_C_SET_SCB_AUTHORIZE 121 60 #define BRCMF_C_SET_SCB_DEAUTHORIZE 122 61 #define BRCMF_C_GET_RSSI 127 62 #define BRCMF_C_GET_WSEC 133 63 #define BRCMF_C_SET_WSEC 134 64 #define BRCMF_C_GET_PHY_NOISE 135 65 #define BRCMF_C_GET_BSS_INFO 136 66 #define BRCMF_C_GET_GET_PKTCNTS 137 67 #define BRCMF_C_GET_BANDLIST 140 68 #define BRCMF_C_SET_SCB_TIMEOUT 158 69 #define BRCMF_C_GET_ASSOCLIST 159 70 #define BRCMF_C_GET_PHYLIST 180 71 #define BRCMF_C_SET_SCAN_CHANNEL_TIME 185 72 #define BRCMF_C_SET_SCAN_UNASSOC_TIME 187 73 #define BRCMF_C_SCB_DEAUTHENTICATE_FOR_REASON 201 74 #define BRCMF_C_SET_ASSOC_PREFER 205 75 #define BRCMF_C_GET_VALID_CHANNELS 217 76 #define BRCMF_C_SET_FAKEFRAG 219 77 #define BRCMF_C_GET_KEY_PRIMARY 235 78 #define BRCMF_C_SET_KEY_PRIMARY 236 79 #define BRCMF_C_SET_SCAN_PASSIVE_TIME 258 80 #define BRCMF_C_GET_VAR 262 81 #define BRCMF_C_SET_VAR 263 82 #define BRCMF_C_SET_WSEC_PMK 268 83 84 s32 brcmf_fil_cmd_data_set(struct brcmf_if *ifp, u32 cmd, void *data, u32 len); 85 s32 brcmf_fil_cmd_data_get(struct brcmf_if *ifp, u32 cmd, void *data, u32 len); 86 static inline 87 s32 brcmf_fil_cmd_int_set(struct brcmf_if *ifp, u32 cmd, u32 data) 88 { 89 s32 err; 90 __le32 data_le = cpu_to_le32(data); 91 92 brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, data); 93 err = brcmf_fil_cmd_data_set(ifp, cmd, &data_le, sizeof(data_le)); 94 95 return err; 96 } 97 static inline 98 s32 brcmf_fil_cmd_int_get(struct brcmf_if *ifp, u32 cmd, u32 *data) 99 { 100 s32 err; 101 102 err = brcmf_fil_cmd_data_get(ifp, cmd, data, sizeof(*data)); 103 if (err == 0) 104 *data = le32_to_cpu(*(__le32 *)data); 105 brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, *data); 106 107 return err; 108 } 109 static inline 110 s32 brcmf_fil_cmd_int_query(struct brcmf_if *ifp, u32 cmd, u32 *data) 111 { 112 __le32 *data_le = (__le32 *)data; 113 114 *data_le = cpu_to_le32(*data); 115 return brcmf_fil_cmd_int_get(ifp, cmd, data); 116 } 117 118 s32 brcmf_fil_iovar_data_set(struct brcmf_if *ifp, const char *name, 119 const void *data, u32 len); 120 s32 brcmf_fil_iovar_data_get(struct brcmf_if *ifp, const char *name, void *data, 121 u32 len); 122 static inline 123 s32 brcmf_fil_iovar_int_set(struct brcmf_if *ifp, const char *name, u32 data) 124 { 125 __le32 data_le = cpu_to_le32(data); 126 127 return brcmf_fil_iovar_data_set(ifp, name, &data_le, sizeof(data_le)); 128 } 129 static inline 130 s32 brcmf_fil_iovar_int_get(struct brcmf_if *ifp, const char *name, u32 *data) 131 { 132 s32 err; 133 134 err = brcmf_fil_iovar_data_get(ifp, name, data, sizeof(*data)); 135 if (err == 0) 136 *data = le32_to_cpu(*(__le32 *)data); 137 return err; 138 } 139 static inline 140 s32 brcmf_fil_iovar_int_query(struct brcmf_if *ifp, const char *name, u32 *data) 141 { 142 __le32 *data_le = (__le32 *)data; 143 144 *data_le = cpu_to_le32(*data); 145 return brcmf_fil_iovar_int_get(ifp, name, data); 146 } 147 148 149 s32 brcmf_fil_bsscfg_data_set(struct brcmf_if *ifp, const char *name, 150 void *data, u32 len); 151 s32 brcmf_fil_bsscfg_data_get(struct brcmf_if *ifp, const char *name, 152 void *data, u32 len); 153 static inline 154 s32 brcmf_fil_bsscfg_int_set(struct brcmf_if *ifp, const char *name, u32 data) 155 { 156 __le32 data_le = cpu_to_le32(data); 157 158 return brcmf_fil_bsscfg_data_set(ifp, name, &data_le, 159 sizeof(data_le)); 160 } 161 static inline 162 s32 brcmf_fil_bsscfg_int_get(struct brcmf_if *ifp, const char *name, u32 *data) 163 { 164 s32 err; 165 166 err = brcmf_fil_bsscfg_data_get(ifp, name, data, sizeof(*data)); 167 if (err == 0) 168 *data = le32_to_cpu(*(__le32 *)data); 169 return err; 170 } 171 static inline 172 s32 brcmf_fil_bsscfg_int_query(struct brcmf_if *ifp, const char *name, u32 *data) 173 { 174 __le32 *data_le = (__le32 *)data; 175 176 *data_le = cpu_to_le32(*data); 177 return brcmf_fil_bsscfg_int_get(ifp, name, data); 178 } 179 180 s32 brcmf_fil_xtlv_data_set(struct brcmf_if *ifp, const char *name, u16 id, 181 void *data, u32 len); 182 s32 brcmf_fil_xtlv_data_get(struct brcmf_if *ifp, const char *name, u16 id, 183 void *data, u32 len); 184 static inline 185 s32 brcmf_fil_xtlv_int_set(struct brcmf_if *ifp, const char *name, u16 id, 186 u32 data) 187 { 188 __le32 data_le = cpu_to_le32(data); 189 190 return brcmf_fil_xtlv_data_set(ifp, name, id, &data_le, 191 sizeof(data_le)); 192 } 193 static inline 194 s32 brcmf_fil_xtlv_int_get(struct brcmf_if *ifp, const char *name, u16 id, 195 u32 *data) 196 { 197 __le32 data_le = cpu_to_le32(*data); 198 s32 err; 199 200 err = brcmf_fil_xtlv_data_get(ifp, name, id, &data_le, sizeof(data_le)); 201 if (err == 0) 202 *data = le32_to_cpu(data_le); 203 return err; 204 } 205 static inline 206 s32 brcmf_fil_xtlv_int8_get(struct brcmf_if *ifp, const char *name, u16 id, 207 u8 *data) 208 { 209 return brcmf_fil_xtlv_data_get(ifp, name, id, data, sizeof(*data)); 210 } 211 static inline 212 s32 brcmf_fil_xtlv_int16_get(struct brcmf_if *ifp, const char *name, u16 id, 213 u16 *data) 214 { 215 __le16 data_le = cpu_to_le16(*data); 216 s32 err; 217 218 err = brcmf_fil_xtlv_data_get(ifp, name, id, &data_le, sizeof(data_le)); 219 if (err == 0) 220 *data = le16_to_cpu(data_le); 221 return err; 222 } 223 224 #endif /* _fwil_h_ */ 225