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