if_umbreg.h revision 1.1 1 1.1 khorben /* $NetBSD: if_umbreg.h,v 1.1 2018/07/31 16:44:29 khorben Exp $ */
2 1.1 khorben /* $OpenBSD: if_umb.h,v 1.4 2017/04/18 13:27:55 gerhard Exp $ */
3 1.1 khorben
4 1.1 khorben /*
5 1.1 khorben * Copyright (c) 2016 genua mbH
6 1.1 khorben * All rights reserved.
7 1.1 khorben *
8 1.1 khorben * Permission to use, copy, modify, and distribute this software for any
9 1.1 khorben * purpose with or without fee is hereby granted, provided that the above
10 1.1 khorben * copyright notice and this permission notice appear in all copies.
11 1.1 khorben *
12 1.1 khorben * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13 1.1 khorben * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14 1.1 khorben * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
15 1.1 khorben * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16 1.1 khorben * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17 1.1 khorben * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18 1.1 khorben * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 1.1 khorben */
20 1.1 khorben
21 1.1 khorben /*
22 1.1 khorben * Mobile Broadband Interface Model
23 1.1 khorben * http://www.usb.org/developers/docs/devclass_docs/MBIM-Compliance-1.0.pdf
24 1.1 khorben */
25 1.1 khorben #ifndef _IF_UMBREG_H_
26 1.1 khorben #define _IF_UMBREG_H_
27 1.1 khorben
28 1.1 khorben struct umb_valdescr {
29 1.1 khorben int val;
30 1.1 khorben char const *descr;
31 1.1 khorben };
32 1.1 khorben
33 1.1 khorben static const char *
34 1.1 khorben umb_val2descr(const struct umb_valdescr *vdp, int val)
35 1.1 khorben {
36 1.1 khorben static char sval[32];
37 1.1 khorben
38 1.1 khorben while (vdp->descr != NULL) {
39 1.1 khorben if (vdp->val == val)
40 1.1 khorben return vdp->descr;
41 1.1 khorben vdp++;
42 1.1 khorben }
43 1.1 khorben snprintf(sval, sizeof (sval), "#%d", val);
44 1.1 khorben return sval;
45 1.1 khorben }
46 1.1 khorben
47 1.1 khorben #define MBIM_REGSTATE_DESCRIPTIONS { \
48 1.1 khorben { MBIM_REGSTATE_UNKNOWN, "unknown" }, \
49 1.1 khorben { MBIM_REGSTATE_DEREGISTERED, "not registered" }, \
50 1.1 khorben { MBIM_REGSTATE_SEARCHING, "searching" }, \
51 1.1 khorben { MBIM_REGSTATE_HOME, "home network" }, \
52 1.1 khorben { MBIM_REGSTATE_ROAMING, "roaming network" }, \
53 1.1 khorben { MBIM_REGSTATE_PARTNER, "partner network" }, \
54 1.1 khorben { MBIM_REGSTATE_DENIED, "access denied" }, \
55 1.1 khorben { 0, NULL } }
56 1.1 khorben
57 1.1 khorben #define MBIM_DATACLASS_DESCRIPTIONS { \
58 1.1 khorben { MBIM_DATACLASS_NONE, "none" }, \
59 1.1 khorben { MBIM_DATACLASS_GPRS, "GPRS" }, \
60 1.1 khorben { MBIM_DATACLASS_EDGE, "EDGE" }, \
61 1.1 khorben { MBIM_DATACLASS_UMTS, "UMTS" }, \
62 1.1 khorben { MBIM_DATACLASS_HSDPA, "HSDPA" }, \
63 1.1 khorben { MBIM_DATACLASS_HSUPA, "HSUPA" }, \
64 1.1 khorben { MBIM_DATACLASS_HSDPA|MBIM_DATACLASS_HSUPA, "HSPA" }, \
65 1.1 khorben { MBIM_DATACLASS_LTE, "LTE" }, \
66 1.1 khorben { MBIM_DATACLASS_1XRTT, "CDMA2000" }, \
67 1.1 khorben { MBIM_DATACLASS_1XEVDO, "CDMA2000" }, \
68 1.1 khorben { MBIM_DATACLASS_1XEVDO_REV_A, "CDMA2000" }, \
69 1.1 khorben { MBIM_DATACLASS_1XEVDV, "CDMA2000" }, \
70 1.1 khorben { MBIM_DATACLASS_3XRTT, "CDMA2000" }, \
71 1.1 khorben { MBIM_DATACLASS_1XEVDO_REV_B, "CDMA2000" }, \
72 1.1 khorben { MBIM_DATACLASS_UMB, "CDMA2000" }, \
73 1.1 khorben { MBIM_DATACLASS_CUSTOM, "custom" }, \
74 1.1 khorben { 0, NULL } }
75 1.1 khorben
76 1.1 khorben #define MBIM_1TO1_DESCRIPTION(m) { (m), #m }
77 1.1 khorben #define MBIM_MESSAGES_DESCRIPTIONS { \
78 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_OPEN_MSG), \
79 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CLOSE_MSG), \
80 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_COMMAND_MSG), \
81 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_HOST_ERROR_MSG), \
82 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_OPEN_DONE), \
83 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CLOSE_DONE), \
84 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_COMMAND_DONE), \
85 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_FUNCTION_ERROR_MSG), \
86 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_INDICATE_STATUS_MSG), \
87 1.1 khorben { 0, NULL } }
88 1.1 khorben
89 1.1 khorben #define MBIM_STATUS_DESCRIPTION(m) { MBIM_STATUS_ ## m, #m }
90 1.1 khorben #define MBIM_STATUS_DESCRIPTIONS { \
91 1.1 khorben MBIM_STATUS_DESCRIPTION(SUCCESS), \
92 1.1 khorben MBIM_STATUS_DESCRIPTION(BUSY), \
93 1.1 khorben MBIM_STATUS_DESCRIPTION(FAILURE), \
94 1.1 khorben MBIM_STATUS_DESCRIPTION(SIM_NOT_INSERTED), \
95 1.1 khorben MBIM_STATUS_DESCRIPTION(BAD_SIM), \
96 1.1 khorben MBIM_STATUS_DESCRIPTION(PIN_REQUIRED), \
97 1.1 khorben MBIM_STATUS_DESCRIPTION(PIN_DISABLED), \
98 1.1 khorben MBIM_STATUS_DESCRIPTION(NOT_REGISTERED), \
99 1.1 khorben MBIM_STATUS_DESCRIPTION(PROVIDERS_NOT_FOUND), \
100 1.1 khorben MBIM_STATUS_DESCRIPTION(NO_DEVICE_SUPPORT), \
101 1.1 khorben MBIM_STATUS_DESCRIPTION(PROVIDER_NOT_VISIBLE), \
102 1.1 khorben MBIM_STATUS_DESCRIPTION(DATA_CLASS_NOT_AVAILABLE), \
103 1.1 khorben MBIM_STATUS_DESCRIPTION(PACKET_SERVICE_DETACHED), \
104 1.1 khorben MBIM_STATUS_DESCRIPTION(MAX_ACTIVATED_CONTEXTS), \
105 1.1 khorben MBIM_STATUS_DESCRIPTION(NOT_INITIALIZED), \
106 1.1 khorben MBIM_STATUS_DESCRIPTION(VOICE_CALL_IN_PROGRESS), \
107 1.1 khorben MBIM_STATUS_DESCRIPTION(CONTEXT_NOT_ACTIVATED), \
108 1.1 khorben MBIM_STATUS_DESCRIPTION(SERVICE_NOT_ACTIVATED), \
109 1.1 khorben MBIM_STATUS_DESCRIPTION(INVALID_ACCESS_STRING), \
110 1.1 khorben MBIM_STATUS_DESCRIPTION(INVALID_USER_NAME_PWD), \
111 1.1 khorben MBIM_STATUS_DESCRIPTION(RADIO_POWER_OFF), \
112 1.1 khorben MBIM_STATUS_DESCRIPTION(INVALID_PARAMETERS), \
113 1.1 khorben MBIM_STATUS_DESCRIPTION(READ_FAILURE), \
114 1.1 khorben MBIM_STATUS_DESCRIPTION(WRITE_FAILURE), \
115 1.1 khorben MBIM_STATUS_DESCRIPTION(NO_PHONEBOOK), \
116 1.1 khorben MBIM_STATUS_DESCRIPTION(PARAMETER_TOO_LONG), \
117 1.1 khorben MBIM_STATUS_DESCRIPTION(STK_BUSY), \
118 1.1 khorben MBIM_STATUS_DESCRIPTION(OPERATION_NOT_ALLOWED), \
119 1.1 khorben MBIM_STATUS_DESCRIPTION(MEMORY_FAILURE), \
120 1.1 khorben MBIM_STATUS_DESCRIPTION(INVALID_MEMORY_INDEX), \
121 1.1 khorben MBIM_STATUS_DESCRIPTION(MEMORY_FULL), \
122 1.1 khorben MBIM_STATUS_DESCRIPTION(FILTER_NOT_SUPPORTED), \
123 1.1 khorben MBIM_STATUS_DESCRIPTION(DSS_INSTANCE_LIMIT), \
124 1.1 khorben MBIM_STATUS_DESCRIPTION(INVALID_DEVICE_SERVICE_OPERATION), \
125 1.1 khorben MBIM_STATUS_DESCRIPTION(AUTH_INCORRECT_AUTN), \
126 1.1 khorben MBIM_STATUS_DESCRIPTION(AUTH_SYNC_FAILURE), \
127 1.1 khorben MBIM_STATUS_DESCRIPTION(AUTH_AMF_NOT_SET), \
128 1.1 khorben MBIM_STATUS_DESCRIPTION(CONTEXT_NOT_SUPPORTED), \
129 1.1 khorben MBIM_STATUS_DESCRIPTION(SMS_UNKNOWN_SMSC_ADDRESS), \
130 1.1 khorben MBIM_STATUS_DESCRIPTION(SMS_NETWORK_TIMEOUT), \
131 1.1 khorben MBIM_STATUS_DESCRIPTION(SMS_LANG_NOT_SUPPORTED), \
132 1.1 khorben MBIM_STATUS_DESCRIPTION(SMS_ENCODING_NOT_SUPPORTED), \
133 1.1 khorben MBIM_STATUS_DESCRIPTION(SMS_FORMAT_NOT_SUPPORTED), \
134 1.1 khorben { 0, NULL } }
135 1.1 khorben
136 1.1 khorben #define MBIM_ERROR_DESCRIPTION(m) { MBIM_ERROR_ ## m, #m }
137 1.1 khorben #define MBIM_ERROR_DESCRIPTIONS { \
138 1.1 khorben MBIM_ERROR_DESCRIPTION(TIMEOUT_FRAGMENT), \
139 1.1 khorben MBIM_ERROR_DESCRIPTION(FRAGMENT_OUT_OF_SEQUENCE), \
140 1.1 khorben MBIM_ERROR_DESCRIPTION(LENGTH_MISMATCH), \
141 1.1 khorben MBIM_ERROR_DESCRIPTION(DUPLICATED_TID), \
142 1.1 khorben MBIM_ERROR_DESCRIPTION(NOT_OPENED), \
143 1.1 khorben MBIM_ERROR_DESCRIPTION(UNKNOWN), \
144 1.1 khorben MBIM_ERROR_DESCRIPTION(CANCEL), \
145 1.1 khorben MBIM_ERROR_DESCRIPTION(MAX_TRANSFER), \
146 1.1 khorben { 0, NULL } }
147 1.1 khorben
148 1.1 khorben #define MBIM_CID_DESCRIPTIONS { \
149 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_DEVICE_CAPS), \
150 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_SUBSCRIBER_READY_STATUS), \
151 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_RADIO_STATE), \
152 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_PIN), \
153 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_PIN_LIST), \
154 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_HOME_PROVIDER), \
155 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_PREFERRED_PROVIDERS), \
156 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_VISIBLE_PROVIDERS), \
157 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_REGISTER_STATE), \
158 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_PACKET_SERVICE), \
159 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_SIGNAL_STATE), \
160 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_CONNECT), \
161 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_PROVISIONED_CONTEXTS), \
162 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_SERVICE_ACTIVATION), \
163 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_IP_CONFIGURATION), \
164 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_DEVICE_SERVICES), \
165 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_DEVICE_SERVICE_SUBSCRIBE_LIST), \
166 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_PACKET_STATISTICS), \
167 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_NETWORK_IDLE_HINT), \
168 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_EMERGENCY_MODE), \
169 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_IP_PACKET_FILTERS), \
170 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_MULTICARRIER_PROVIDERS), \
171 1.1 khorben { 0, NULL } }
172 1.1 khorben
173 1.1 khorben #define MBIM_SIMSTATE_DESCRIPTIONS { \
174 1.1 khorben { MBIM_SIMSTATE_NOTINITIALIZED, "not initialized" }, \
175 1.1 khorben { MBIM_SIMSTATE_INITIALIZED, "initialized" }, \
176 1.1 khorben { MBIM_SIMSTATE_NOTINSERTED, "not inserted" }, \
177 1.1 khorben { MBIM_SIMSTATE_BADSIM, "bad type" }, \
178 1.1 khorben { MBIM_SIMSTATE_FAILURE, "failed" }, \
179 1.1 khorben { MBIM_SIMSTATE_NOTACTIVATED, "not activated" }, \
180 1.1 khorben { MBIM_SIMSTATE_LOCKED, "locked" }, \
181 1.1 khorben { 0, NULL } }
182 1.1 khorben
183 1.1 khorben #define MBIM_PINTYPE_DESCRIPTIONS { \
184 1.1 khorben { MBIM_PIN_TYPE_NONE, "none" }, \
185 1.1 khorben { MBIM_PIN_TYPE_CUSTOM, "custom" }, \
186 1.1 khorben { MBIM_PIN_TYPE_PIN1, "PIN1" }, \
187 1.1 khorben { MBIM_PIN_TYPE_PIN2, "PIN2" }, \
188 1.1 khorben { MBIM_PIN_TYPE_DEV_SIM_PIN, "device PIN" }, \
189 1.1 khorben { MBIM_PIN_TYPE_DEV_FIRST_SIM_PIN, "device 1st PIN" }, \
190 1.1 khorben { MBIM_PIN_TYPE_NETWORK_PIN, "network PIN" }, \
191 1.1 khorben { MBIM_PIN_TYPE_NETWORK_SUBSET_PIN, "network subset PIN" }, \
192 1.1 khorben { MBIM_PIN_TYPE_SERVICE_PROVIDER_PIN, "provider PIN" }, \
193 1.1 khorben { MBIM_PIN_TYPE_CORPORATE_PIN, "corporate PIN" }, \
194 1.1 khorben { MBIM_PIN_TYPE_SUBSIDY_LOCK, "subsidy lock" }, \
195 1.1 khorben { MBIM_PIN_TYPE_PUK1, "PUK" }, \
196 1.1 khorben { MBIM_PIN_TYPE_PUK2, "PUK2" }, \
197 1.1 khorben { MBIM_PIN_TYPE_DEV_FIRST_SIM_PUK, "device 1st PUK" }, \
198 1.1 khorben { MBIM_PIN_TYPE_NETWORK_PUK, "network PUK" }, \
199 1.1 khorben { MBIM_PIN_TYPE_NETWORK_SUBSET_PUK, "network subset PUK" }, \
200 1.1 khorben { MBIM_PIN_TYPE_SERVICE_PROVIDER_PUK, "provider PUK" }, \
201 1.1 khorben { MBIM_PIN_TYPE_CORPORATE_PUK, "corporate PUK" }, \
202 1.1 khorben { 0, NULL } }
203 1.1 khorben
204 1.1 khorben #define MBIM_PKTSRV_STATE_DESCRIPTIONS { \
205 1.1 khorben { MBIM_PKTSERVICE_STATE_UNKNOWN, "unknown" }, \
206 1.1 khorben { MBIM_PKTSERVICE_STATE_ATTACHING, "attaching" }, \
207 1.1 khorben { MBIM_PKTSERVICE_STATE_ATTACHED, "attached" }, \
208 1.1 khorben { MBIM_PKTSERVICE_STATE_DETACHING, "detaching" }, \
209 1.1 khorben { MBIM_PKTSERVICE_STATE_DETACHED, "detached" }, \
210 1.1 khorben { 0, NULL } }
211 1.1 khorben
212 1.1 khorben #define MBIM_ACTIVATION_STATE_DESCRIPTIONS { \
213 1.1 khorben { MBIM_ACTIVATION_STATE_UNKNOWN, "unknown" }, \
214 1.1 khorben { MBIM_ACTIVATION_STATE_ACTIVATED, "activated" }, \
215 1.1 khorben { MBIM_ACTIVATION_STATE_ACTIVATING, "activating" }, \
216 1.1 khorben { MBIM_ACTIVATION_STATE_DEACTIVATED, "deactivated" }, \
217 1.1 khorben { MBIM_ACTIVATION_STATE_DEACTIVATING, "deactivating" }, \
218 1.1 khorben { 0, NULL } }
219 1.1 khorben
220 1.1 khorben /*
221 1.1 khorben * Driver internal state
222 1.1 khorben */
223 1.1 khorben enum umb_state {
224 1.1 khorben UMB_S_DOWN = 0, /* interface down */
225 1.1 khorben UMB_S_OPEN, /* MBIM device has been opened */
226 1.1 khorben UMB_S_CID, /* QMI client id allocated */
227 1.1 khorben UMB_S_RADIO, /* radio is on */
228 1.1 khorben UMB_S_SIMREADY, /* SIM is ready */
229 1.1 khorben UMB_S_ATTACHED, /* packet service is attached */
230 1.1 khorben UMB_S_CONNECTED, /* connected to provider */
231 1.1 khorben UMB_S_UP, /* have IP configuration */
232 1.1 khorben };
233 1.1 khorben
234 1.1 khorben #define UMB_INTERNAL_STATE_DESCRIPTIONS { \
235 1.1 khorben { UMB_S_DOWN, "down" }, \
236 1.1 khorben { UMB_S_OPEN, "open" }, \
237 1.1 khorben { UMB_S_CID, "CID allocated" }, \
238 1.1 khorben { UMB_S_RADIO, "radio on" }, \
239 1.1 khorben { UMB_S_SIMREADY, "SIM is ready" }, \
240 1.1 khorben { UMB_S_ATTACHED, "attached" }, \
241 1.1 khorben { UMB_S_CONNECTED, "connected" }, \
242 1.1 khorben { UMB_S_UP, "up" }, \
243 1.1 khorben { 0, NULL } }
244 1.1 khorben
245 1.1 khorben /*
246 1.1 khorben * UMB parameters (SIOC[GS]UMBPARAM ioctls)
247 1.1 khorben */
248 1.1 khorben struct umb_parameter {
249 1.1 khorben int op;
250 1.1 khorben int is_puk;
251 1.1 khorben uint16_t pin[MBIM_PIN_MAXLEN];
252 1.1 khorben int pinlen;
253 1.1 khorben
254 1.1 khorben char newpin[MBIM_PIN_MAXLEN];
255 1.1 khorben int newpinlen;
256 1.1 khorben
257 1.1 khorben #define UMB_APN_MAXLEN 100
258 1.1 khorben uint16_t apn[UMB_APN_MAXLEN];
259 1.1 khorben int apnlen;
260 1.1 khorben
261 1.1 khorben #define UMB_USERNAME_MAXLEN 205
262 1.1 khorben uint16_t username[UMB_USERNAME_MAXLEN];
263 1.1 khorben int usernamelen;
264 1.1 khorben
265 1.1 khorben #define UMB_PASSWORD_MAXLEN 205
266 1.1 khorben uint16_t password[UMB_PASSWORD_MAXLEN];
267 1.1 khorben int passwordlen;
268 1.1 khorben
269 1.1 khorben int roaming;
270 1.1 khorben uint32_t preferredclasses;
271 1.1 khorben };
272 1.1 khorben
273 1.1 khorben /*
274 1.1 khorben * UMB device status info (SIOCGUMBINFO ioctl)
275 1.1 khorben */
276 1.1 khorben struct umb_info {
277 1.1 khorben enum umb_state state;
278 1.1 khorben int enable_roaming;
279 1.1 khorben #define UMB_PIN_REQUIRED 0
280 1.1 khorben #define UMB_PIN_UNLOCKED 1
281 1.1 khorben #define UMB_PUK_REQUIRED 2
282 1.1 khorben int pin_state;
283 1.1 khorben int pin_attempts_left;
284 1.1 khorben int activation;
285 1.1 khorben int sim_state;
286 1.1 khorben int regstate;
287 1.1 khorben int regmode;
288 1.1 khorben int nwerror;
289 1.1 khorben int packetstate;
290 1.1 khorben uint32_t supportedclasses; /* what the hw supports */
291 1.1 khorben uint32_t preferredclasses; /* what the user prefers */
292 1.1 khorben uint32_t highestclass; /* what the network offers */
293 1.1 khorben uint32_t cellclass;
294 1.1 khorben #define UMB_PROVIDERNAME_MAXLEN 20
295 1.1 khorben uint16_t provider[UMB_PROVIDERNAME_MAXLEN];
296 1.1 khorben #define UMB_PHONENR_MAXLEN 22
297 1.1 khorben uint16_t pn[UMB_PHONENR_MAXLEN];
298 1.1 khorben #define UMB_SUBSCRIBERID_MAXLEN 15
299 1.1 khorben uint16_t sid[UMB_SUBSCRIBERID_MAXLEN];
300 1.1 khorben #define UMB_ICCID_MAXLEN 20
301 1.1 khorben uint16_t iccid[UMB_ICCID_MAXLEN];
302 1.1 khorben #define UMB_ROAMINGTEXT_MAXLEN 63
303 1.1 khorben uint16_t roamingtxt[UMB_ROAMINGTEXT_MAXLEN];
304 1.1 khorben
305 1.1 khorben #define UMB_DEVID_MAXLEN 18
306 1.1 khorben uint16_t devid[UMB_DEVID_MAXLEN];
307 1.1 khorben #define UMB_FWINFO_MAXLEN 30
308 1.1 khorben uint16_t fwinfo[UMB_FWINFO_MAXLEN];
309 1.1 khorben #define UMB_HWINFO_MAXLEN 30
310 1.1 khorben uint16_t hwinfo[UMB_HWINFO_MAXLEN];
311 1.1 khorben
312 1.1 khorben uint16_t apn[UMB_APN_MAXLEN];
313 1.1 khorben int apnlen;
314 1.1 khorben
315 1.1 khorben uint16_t username[UMB_USERNAME_MAXLEN];
316 1.1 khorben int usernamelen;
317 1.1 khorben
318 1.1 khorben uint16_t password[UMB_PASSWORD_MAXLEN];
319 1.1 khorben int passwordlen;
320 1.1 khorben
321 1.1 khorben #define UMB_VALUE_UNKNOWN -999
322 1.1 khorben int rssi;
323 1.1 khorben #define UMB_BER_EXCELLENT 0
324 1.1 khorben #define UMB_BER_VERYGOOD 1
325 1.1 khorben #define UMB_BER_GOOD 2
326 1.1 khorben #define UMB_BER_OK 3
327 1.1 khorben #define UMB_BER_MEDIUM 4
328 1.1 khorben #define UMB_BER_BAD 5
329 1.1 khorben #define UMB_BER_VERYBAD 6
330 1.1 khorben #define UMB_BER_EXTREMELYBAD 7
331 1.1 khorben int ber;
332 1.1 khorben
333 1.1 khorben int hw_radio_on;
334 1.1 khorben int sw_radio_on;
335 1.1 khorben
336 1.1 khorben uint64_t uplink_speed;
337 1.1 khorben uint64_t downlink_speed;
338 1.1 khorben
339 1.1 khorben #define UMB_MAX_DNSSRV 2
340 1.1 khorben u_int32_t ipv4dns[UMB_MAX_DNSSRV];
341 1.1 khorben };
342 1.1 khorben
343 1.1 khorben #if !defined(ifr_mtu)
344 1.1 khorben #define ifr_mtu ifr_ifru.ifru_metric
345 1.1 khorben #endif
346 1.1 khorben
347 1.1 khorben #ifdef _KERNEL
348 1.1 khorben /*
349 1.1 khorben * UMB device
350 1.1 khorben */
351 1.1 khorben struct umb_softc {
352 1.1 khorben device_t sc_dev;
353 1.1 khorben struct ifnet sc_if;
354 1.1 khorben #define GET_IFP(sc) (&(sc)->sc_if)
355 1.1 khorben struct ifmedia sc_im;
356 1.1 khorben krndsource_t sc_rnd_source;
357 1.1 khorben struct usbd_device *sc_udev;
358 1.1 khorben
359 1.1 khorben int sc_ver_maj;
360 1.1 khorben int sc_ver_min;
361 1.1 khorben int sc_ctrl_len;
362 1.1 khorben int sc_maxpktlen;
363 1.1 khorben int sc_maxsessions;
364 1.1 khorben
365 1.1 khorben #define UMBFLG_FCC_AUTH_REQUIRED 0x0001
366 1.1 khorben uint32_t sc_flags;
367 1.1 khorben int sc_cid;
368 1.1 khorben
369 1.1 khorben struct usb_task sc_umb_task;
370 1.1 khorben struct usb_task sc_get_response_task;
371 1.1 khorben int sc_nresp;
372 1.1 khorben callout_t sc_statechg_timer;
373 1.1 khorben char sc_dying;
374 1.1 khorben char sc_attached;
375 1.1 khorben
376 1.1 khorben uint8_t sc_ctrl_ifaceno;
377 1.1 khorben struct usbd_pipe *sc_ctrl_pipe;
378 1.1 khorben usb_cdc_notification_t sc_intr_msg;
379 1.1 khorben struct usbd_interface *sc_data_iface;
380 1.1 khorben
381 1.1 khorben void *sc_resp_buf;
382 1.1 khorben void *sc_ctrl_msg;
383 1.1 khorben
384 1.1 khorben int sc_rx_ep;
385 1.1 khorben struct usbd_xfer *sc_rx_xfer;
386 1.1 khorben char *sc_rx_buf;
387 1.1 khorben int sc_rx_bufsz;
388 1.1 khorben struct usbd_pipe *sc_rx_pipe;
389 1.1 khorben unsigned sc_rx_nerr;
390 1.1 khorben
391 1.1 khorben int sc_tx_ep;
392 1.1 khorben struct usbd_xfer *sc_tx_xfer;
393 1.1 khorben char *sc_tx_buf;
394 1.1 khorben int sc_tx_bufsz;
395 1.1 khorben struct usbd_pipe *sc_tx_pipe;
396 1.1 khorben struct mbuf *sc_tx_m;
397 1.1 khorben uint32_t sc_tx_seq;
398 1.1 khorben
399 1.1 khorben uint32_t sc_tid;
400 1.1 khorben
401 1.1 khorben #define sc_state sc_info.state
402 1.1 khorben #define sc_roaming sc_info.enable_roaming
403 1.1 khorben struct umb_info sc_info;
404 1.1 khorben };
405 1.1 khorben #endif /* _KERNEL */
406 1.1 khorben
407 1.1 khorben #endif /* _IF_UMBREG_H_ */
408