aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/wimax/i2400m.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/wimax/i2400m.h')
-rw-r--r--include/linux/wimax/i2400m.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/include/linux/wimax/i2400m.h b/include/linux/wimax/i2400m.h
index 74198f5bb4dc..d5148a7889a6 100644
--- a/include/linux/wimax/i2400m.h
+++ b/include/linux/wimax/i2400m.h
@@ -207,6 +207,7 @@ enum i2400m_pt {
207 I2400M_PT_TRACE, /* For device debug */ 207 I2400M_PT_TRACE, /* For device debug */
208 I2400M_PT_RESET_WARM, /* device reset */ 208 I2400M_PT_RESET_WARM, /* device reset */
209 I2400M_PT_RESET_COLD, /* USB[transport] reset, like reconnect */ 209 I2400M_PT_RESET_COLD, /* USB[transport] reset, like reconnect */
210 I2400M_PT_EDATA, /* Extended RX data */
210 I2400M_PT_ILLEGAL 211 I2400M_PT_ILLEGAL
211}; 212};
212 213
@@ -221,6 +222,48 @@ struct i2400m_pl_data_hdr {
221} __attribute__((packed)); 222} __attribute__((packed));
222 223
223 224
225/*
226 * Payload for an extended data packet
227 *
228 * New in fw v1.4
229 *
230 * @reorder: if this payload has to be reorder or not (and how)
231 * @cs: the type of data in the packet, as defined per (802.16e
232 * T11.13.19.1). Currently only 2 (IPv4 packet) supported.
233 *
234 * This is prefixed to each and every INCOMING DATA packet.
235 */
236struct i2400m_pl_edata_hdr {
237 __le32 reorder; /* bits defined in i2400m_ro */
238 __u8 cs;
239 __u8 reserved[11];
240} __attribute__((packed));
241
242enum i2400m_cs {
243 I2400M_CS_IPV4_0 = 0,
244 I2400M_CS_IPV4 = 2,
245};
246
247enum i2400m_ro {
248 I2400M_RO_NEEDED = 0x01,
249 I2400M_RO_TYPE = 0x03,
250 I2400M_RO_TYPE_SHIFT = 1,
251 I2400M_RO_CIN = 0x0f,
252 I2400M_RO_CIN_SHIFT = 4,
253 I2400M_RO_FBN = 0x07ff,
254 I2400M_RO_FBN_SHIFT = 8,
255 I2400M_RO_SN = 0x07ff,
256 I2400M_RO_SN_SHIFT = 21,
257};
258
259enum i2400m_ro_type {
260 I2400M_RO_TYPE_RESET = 0,
261 I2400M_RO_TYPE_PACKET,
262 I2400M_RO_TYPE_WS,
263 I2400M_RO_TYPE_PACKET_WS,
264};
265
266
224/* Misc constants */ 267/* Misc constants */
225enum { 268enum {
226 I2400M_PL_PAD = 16, /* Payload data size alignment */ 269 I2400M_PL_PAD = 16, /* Payload data size alignment */
@@ -381,6 +424,9 @@ enum i2400m_tlv {
381 I2400M_TLV_RF_STATUS = 163, 424 I2400M_TLV_RF_STATUS = 163,
382 I2400M_TLV_DEVICE_RESET_TYPE = 132, 425 I2400M_TLV_DEVICE_RESET_TYPE = 132,
383 I2400M_TLV_CONFIG_IDLE_PARAMETERS = 601, 426 I2400M_TLV_CONFIG_IDLE_PARAMETERS = 601,
427 I2400M_TLV_CONFIG_IDLE_TIMEOUT = 611,
428 I2400M_TLV_CONFIG_D2H_DATA_FORMAT = 614,
429 I2400M_TLV_CONFIG_DL_HOST_REORDER = 615,
384}; 430};
385 431
386 432
@@ -509,4 +555,27 @@ struct i2400m_tlv_media_status {
509 __le32 media_status; 555 __le32 media_status;
510} __attribute__((packed)); 556} __attribute__((packed));
511 557
558
559/* New in v1.4 */
560struct i2400m_tlv_config_idle_timeout {
561 struct i2400m_tlv_hdr hdr;
562 __le32 timeout; /* 100 to 300000 ms [5min], 100 increments
563 * 0 disabled */
564} __attribute__((packed));
565
566/* New in v1.4 -- for backward compat, will be removed */
567struct i2400m_tlv_config_d2h_data_format {
568 struct i2400m_tlv_hdr hdr;
569 __u8 format; /* 0 old format, 1 enhanced */
570 __u8 reserved[3];
571} __attribute__((packed));
572
573/* New in v1.4 */
574struct i2400m_tlv_config_dl_host_reorder {
575 struct i2400m_tlv_hdr hdr;
576 __u8 reorder; /* 0 disabled, 1 enabled */
577 __u8 reserved[3];
578} __attribute__((packed));
579
580
512#endif /* #ifndef __LINUX__WIMAX__I2400M_H__ */ 581#endif /* #ifndef __LINUX__WIMAX__I2400M_H__ */