aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-10-12 21:51:48 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-12 21:51:48 -0400
commit98260daa184c4a171834463cf85ab3a2c509d983 (patch)
tree318c3bfff9edef4da84a69895a3ac2aa39b8256a /include/linux
parente225ca27057e70e7cbb14ae4c1e5f758973af645 (diff)
parentdabdaf0caa3af520dbc1df87b2fb4e77224037bd (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking updates from David Miller: 1) Alexey Kuznetsov noticed we routed TCP resets improperly in the assymetric routing case, fix this by reverting a change that made us use the incoming interface in the outgoing route key when we didn't have a socket context to work with. 2) TCP sysctl kernel memory leakage to userspace fix from Alan Cox. 3) Move UAPI bits from David Howells, WIMAX and CAN this time. 4) Fix TX stalls in e1000e wrt. Byte Queue Limits, from Hiroaki SHIMODA, Denys Fedoryshchenko, and Jesse Brandeburg. 5) Fix IPV6 crashes in packet generator module, from Amerigo Wang. 6) Tidies and fixes in the new VXLAN driver from Stephen Hemminger. 7) Bridge IP options parse doesn't check first if SKB header has at least an IP header's worth of content present. Fix from Sarveshwar Bandi. 8) The kernel now generates compound pages on transmit and the Xen netback drivers needs some adjustments in order to handle this. Fix from Ian Campbell. 9) Turn off ASPM in JME driver, from Kevin Bardon and Matthew Garrett. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (43 commits) mcs7830: Fix link state detection net: add doc for in4_pton() net: add doc for in6_pton() vti: fix sparse bit endian warnings tcp: resets are misrouted usbnet: Support devices reporting idleness Add CDC-ACM support for the CX93010-2x UCMxx USB Modem net/ethernet/jme: disable ASPM tcp: sysctl interface leaks 16 bytes of kernel memory kaweth: print correct debug ptr e1000e: Change wthresh to 1 to avoid possible Tx stalls ipv4: fix route mark sparse warning xen: netback: handle compound page fragments on transmit. bridge: Pull ip header into skb->data before looking into ip header. isdn: fix a wrapping bug in isdn_ppp_ioctl() vxlan: fix oops when give unknown ifindex vxlan: fix receive checksum handling vxlan: add additional headroom vxlan: allow configuring port range vxlan: associate with tunnel socket on transmit ...
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/can/Kbuild5
-rw-r--r--include/linux/can/bcm.h66
-rw-r--r--include/linux/can/error.h91
-rw-r--r--include/linux/can/gw.h162
-rw-r--r--include/linux/can/netlink.h122
-rw-r--r--include/linux/can/raw.h30
-rw-r--r--include/linux/if_link.h6
-rw-r--r--include/linux/of_mdio.h20
-rw-r--r--include/linux/usb/usbnet.h2
-rw-r--r--include/linux/wimax/Kbuild1
-rw-r--r--include/linux/wimax/i2400m.h572
11 files changed, 18 insertions, 1059 deletions
diff --git a/include/linux/can/Kbuild b/include/linux/can/Kbuild
index c62b7f1728f9..e69de29bb2d1 100644
--- a/include/linux/can/Kbuild
+++ b/include/linux/can/Kbuild
@@ -1,5 +0,0 @@
1header-y += raw.h
2header-y += bcm.h
3header-y += gw.h
4header-y += error.h
5header-y += netlink.h
diff --git a/include/linux/can/bcm.h b/include/linux/can/bcm.h
deleted file mode 100644
index 3ebe387fea4d..000000000000
--- a/include/linux/can/bcm.h
+++ /dev/null
@@ -1,66 +0,0 @@
1/*
2 * linux/can/bcm.h
3 *
4 * Definitions for CAN Broadcast Manager (BCM)
5 *
6 * Author: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
7 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research
8 * All rights reserved.
9 *
10 */
11
12#ifndef CAN_BCM_H
13#define CAN_BCM_H
14
15#include <linux/types.h>
16#include <linux/can.h>
17
18/**
19 * struct bcm_msg_head - head of messages to/from the broadcast manager
20 * @opcode: opcode, see enum below.
21 * @flags: special flags, see below.
22 * @count: number of frames to send before changing interval.
23 * @ival1: interval for the first @count frames.
24 * @ival2: interval for the following frames.
25 * @can_id: CAN ID of frames to be sent or received.
26 * @nframes: number of frames appended to the message head.
27 * @frames: array of CAN frames.
28 */
29struct bcm_msg_head {
30 __u32 opcode;
31 __u32 flags;
32 __u32 count;
33 struct timeval ival1, ival2;
34 canid_t can_id;
35 __u32 nframes;
36 struct can_frame frames[0];
37};
38
39enum {
40 TX_SETUP = 1, /* create (cyclic) transmission task */
41 TX_DELETE, /* remove (cyclic) transmission task */
42 TX_READ, /* read properties of (cyclic) transmission task */
43 TX_SEND, /* send one CAN frame */
44 RX_SETUP, /* create RX content filter subscription */
45 RX_DELETE, /* remove RX content filter subscription */
46 RX_READ, /* read properties of RX content filter subscription */
47 TX_STATUS, /* reply to TX_READ request */
48 TX_EXPIRED, /* notification on performed transmissions (count=0) */
49 RX_STATUS, /* reply to RX_READ request */
50 RX_TIMEOUT, /* cyclic message is absent */
51 RX_CHANGED /* updated CAN frame (detected content change) */
52};
53
54#define SETTIMER 0x0001
55#define STARTTIMER 0x0002
56#define TX_COUNTEVT 0x0004
57#define TX_ANNOUNCE 0x0008
58#define TX_CP_CAN_ID 0x0010
59#define RX_FILTER_ID 0x0020
60#define RX_CHECK_DLC 0x0040
61#define RX_NO_AUTOTIMER 0x0080
62#define RX_ANNOUNCE_RESUME 0x0100
63#define TX_RESET_MULTI_IDX 0x0200
64#define RX_RTR_FRAME 0x0400
65
66#endif /* CAN_BCM_H */
diff --git a/include/linux/can/error.h b/include/linux/can/error.h
deleted file mode 100644
index 7b7148bded71..000000000000
--- a/include/linux/can/error.h
+++ /dev/null
@@ -1,91 +0,0 @@
1/*
2 * linux/can/error.h
3 *
4 * Definitions of the CAN error messages to be filtered and passed to the user.
5 *
6 * Author: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
7 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research
8 * All rights reserved.
9 *
10 */
11
12#ifndef CAN_ERROR_H
13#define CAN_ERROR_H
14
15#define CAN_ERR_DLC 8 /* dlc for error message frames */
16
17/* error class (mask) in can_id */
18#define CAN_ERR_TX_TIMEOUT 0x00000001U /* TX timeout (by netdevice driver) */
19#define CAN_ERR_LOSTARB 0x00000002U /* lost arbitration / data[0] */
20#define CAN_ERR_CRTL 0x00000004U /* controller problems / data[1] */
21#define CAN_ERR_PROT 0x00000008U /* protocol violations / data[2..3] */
22#define CAN_ERR_TRX 0x00000010U /* transceiver status / data[4] */
23#define CAN_ERR_ACK 0x00000020U /* received no ACK on transmission */
24#define CAN_ERR_BUSOFF 0x00000040U /* bus off */
25#define CAN_ERR_BUSERROR 0x00000080U /* bus error (may flood!) */
26#define CAN_ERR_RESTARTED 0x00000100U /* controller restarted */
27
28/* arbitration lost in bit ... / data[0] */
29#define CAN_ERR_LOSTARB_UNSPEC 0x00 /* unspecified */
30 /* else bit number in bitstream */
31
32/* error status of CAN-controller / data[1] */
33#define CAN_ERR_CRTL_UNSPEC 0x00 /* unspecified */
34#define CAN_ERR_CRTL_RX_OVERFLOW 0x01 /* RX buffer overflow */
35#define CAN_ERR_CRTL_TX_OVERFLOW 0x02 /* TX buffer overflow */
36#define CAN_ERR_CRTL_RX_WARNING 0x04 /* reached warning level for RX errors */
37#define CAN_ERR_CRTL_TX_WARNING 0x08 /* reached warning level for TX errors */
38#define CAN_ERR_CRTL_RX_PASSIVE 0x10 /* reached error passive status RX */
39#define CAN_ERR_CRTL_TX_PASSIVE 0x20 /* reached error passive status TX */
40 /* (at least one error counter exceeds */
41 /* the protocol-defined level of 127) */
42
43/* error in CAN protocol (type) / data[2] */
44#define CAN_ERR_PROT_UNSPEC 0x00 /* unspecified */
45#define CAN_ERR_PROT_BIT 0x01 /* single bit error */
46#define CAN_ERR_PROT_FORM 0x02 /* frame format error */
47#define CAN_ERR_PROT_STUFF 0x04 /* bit stuffing error */
48#define CAN_ERR_PROT_BIT0 0x08 /* unable to send dominant bit */
49#define CAN_ERR_PROT_BIT1 0x10 /* unable to send recessive bit */
50#define CAN_ERR_PROT_OVERLOAD 0x20 /* bus overload */
51#define CAN_ERR_PROT_ACTIVE 0x40 /* active error announcement */
52#define CAN_ERR_PROT_TX 0x80 /* error occurred on transmission */
53
54/* error in CAN protocol (location) / data[3] */
55#define CAN_ERR_PROT_LOC_UNSPEC 0x00 /* unspecified */
56#define CAN_ERR_PROT_LOC_SOF 0x03 /* start of frame */
57#define CAN_ERR_PROT_LOC_ID28_21 0x02 /* ID bits 28 - 21 (SFF: 10 - 3) */
58#define CAN_ERR_PROT_LOC_ID20_18 0x06 /* ID bits 20 - 18 (SFF: 2 - 0 )*/
59#define CAN_ERR_PROT_LOC_SRTR 0x04 /* substitute RTR (SFF: RTR) */
60#define CAN_ERR_PROT_LOC_IDE 0x05 /* identifier extension */
61#define CAN_ERR_PROT_LOC_ID17_13 0x07 /* ID bits 17-13 */
62#define CAN_ERR_PROT_LOC_ID12_05 0x0F /* ID bits 12-5 */
63#define CAN_ERR_PROT_LOC_ID04_00 0x0E /* ID bits 4-0 */
64#define CAN_ERR_PROT_LOC_RTR 0x0C /* RTR */
65#define CAN_ERR_PROT_LOC_RES1 0x0D /* reserved bit 1 */
66#define CAN_ERR_PROT_LOC_RES0 0x09 /* reserved bit 0 */
67#define CAN_ERR_PROT_LOC_DLC 0x0B /* data length code */
68#define CAN_ERR_PROT_LOC_DATA 0x0A /* data section */
69#define CAN_ERR_PROT_LOC_CRC_SEQ 0x08 /* CRC sequence */
70#define CAN_ERR_PROT_LOC_CRC_DEL 0x18 /* CRC delimiter */
71#define CAN_ERR_PROT_LOC_ACK 0x19 /* ACK slot */
72#define CAN_ERR_PROT_LOC_ACK_DEL 0x1B /* ACK delimiter */
73#define CAN_ERR_PROT_LOC_EOF 0x1A /* end of frame */
74#define CAN_ERR_PROT_LOC_INTERM 0x12 /* intermission */
75
76/* error status of CAN-transceiver / data[4] */
77/* CANH CANL */
78#define CAN_ERR_TRX_UNSPEC 0x00 /* 0000 0000 */
79#define CAN_ERR_TRX_CANH_NO_WIRE 0x04 /* 0000 0100 */
80#define CAN_ERR_TRX_CANH_SHORT_TO_BAT 0x05 /* 0000 0101 */
81#define CAN_ERR_TRX_CANH_SHORT_TO_VCC 0x06 /* 0000 0110 */
82#define CAN_ERR_TRX_CANH_SHORT_TO_GND 0x07 /* 0000 0111 */
83#define CAN_ERR_TRX_CANL_NO_WIRE 0x40 /* 0100 0000 */
84#define CAN_ERR_TRX_CANL_SHORT_TO_BAT 0x50 /* 0101 0000 */
85#define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60 /* 0110 0000 */
86#define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70 /* 0111 0000 */
87#define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80 /* 1000 0000 */
88
89/* controller specific additional information / data[5..7] */
90
91#endif /* CAN_ERROR_H */
diff --git a/include/linux/can/gw.h b/include/linux/can/gw.h
deleted file mode 100644
index 8e1db18c3cb6..000000000000
--- a/include/linux/can/gw.h
+++ /dev/null
@@ -1,162 +0,0 @@
1/*
2 * linux/can/gw.h
3 *
4 * Definitions for CAN frame Gateway/Router/Bridge
5 *
6 * Author: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
7 * Copyright (c) 2011 Volkswagen Group Electronic Research
8 * All rights reserved.
9 *
10 */
11
12#ifndef CAN_GW_H
13#define CAN_GW_H
14
15#include <linux/types.h>
16#include <linux/can.h>
17
18struct rtcanmsg {
19 __u8 can_family;
20 __u8 gwtype;
21 __u16 flags;
22};
23
24/* CAN gateway types */
25enum {
26 CGW_TYPE_UNSPEC,
27 CGW_TYPE_CAN_CAN, /* CAN->CAN routing */
28 __CGW_TYPE_MAX
29};
30
31#define CGW_TYPE_MAX (__CGW_TYPE_MAX - 1)
32
33/* CAN rtnetlink attribute definitions */
34enum {
35 CGW_UNSPEC,
36 CGW_MOD_AND, /* CAN frame modification binary AND */
37 CGW_MOD_OR, /* CAN frame modification binary OR */
38 CGW_MOD_XOR, /* CAN frame modification binary XOR */
39 CGW_MOD_SET, /* CAN frame modification set alternate values */
40 CGW_CS_XOR, /* set data[] XOR checksum into data[index] */
41 CGW_CS_CRC8, /* set data[] CRC8 checksum into data[index] */
42 CGW_HANDLED, /* number of handled CAN frames */
43 CGW_DROPPED, /* number of dropped CAN frames */
44 CGW_SRC_IF, /* ifindex of source network interface */
45 CGW_DST_IF, /* ifindex of destination network interface */
46 CGW_FILTER, /* specify struct can_filter on source CAN device */
47 __CGW_MAX
48};
49
50#define CGW_MAX (__CGW_MAX - 1)
51
52#define CGW_FLAGS_CAN_ECHO 0x01
53#define CGW_FLAGS_CAN_SRC_TSTAMP 0x02
54
55#define CGW_MOD_FUNCS 4 /* AND OR XOR SET */
56
57/* CAN frame elements that are affected by curr. 3 CAN frame modifications */
58#define CGW_MOD_ID 0x01
59#define CGW_MOD_DLC 0x02
60#define CGW_MOD_DATA 0x04
61
62#define CGW_FRAME_MODS 3 /* ID DLC DATA */
63
64#define MAX_MODFUNCTIONS (CGW_MOD_FUNCS * CGW_FRAME_MODS)
65
66struct cgw_frame_mod {
67 struct can_frame cf;
68 __u8 modtype;
69} __attribute__((packed));
70
71#define CGW_MODATTR_LEN sizeof(struct cgw_frame_mod)
72
73struct cgw_csum_xor {
74 __s8 from_idx;
75 __s8 to_idx;
76 __s8 result_idx;
77 __u8 init_xor_val;
78} __attribute__((packed));
79
80struct cgw_csum_crc8 {
81 __s8 from_idx;
82 __s8 to_idx;
83 __s8 result_idx;
84 __u8 init_crc_val;
85 __u8 final_xor_val;
86 __u8 crctab[256];
87 __u8 profile;
88 __u8 profile_data[20];
89} __attribute__((packed));
90
91/* length of checksum operation parameters. idx = index in CAN frame data[] */
92#define CGW_CS_XOR_LEN sizeof(struct cgw_csum_xor)
93#define CGW_CS_CRC8_LEN sizeof(struct cgw_csum_crc8)
94
95/* CRC8 profiles (compute CRC for additional data elements - see below) */
96enum {
97 CGW_CRC8PRF_UNSPEC,
98 CGW_CRC8PRF_1U8, /* compute one additional u8 value */
99 CGW_CRC8PRF_16U8, /* u8 value table indexed by data[1] & 0xF */
100 CGW_CRC8PRF_SFFID_XOR, /* (can_id & 0xFF) ^ (can_id >> 8 & 0xFF) */
101 __CGW_CRC8PRF_MAX
102};
103
104#define CGW_CRC8PRF_MAX (__CGW_CRC8PRF_MAX - 1)
105
106/*
107 * CAN rtnetlink attribute contents in detail
108 *
109 * CGW_XXX_IF (length 4 bytes):
110 * Sets an interface index for source/destination network interfaces.
111 * For the CAN->CAN gwtype the indices of _two_ CAN interfaces are mandatory.
112 *
113 * CGW_FILTER (length 8 bytes):
114 * Sets a CAN receive filter for the gateway job specified by the
115 * struct can_filter described in include/linux/can.h
116 *
117 * CGW_MOD_XXX (length 17 bytes):
118 * Specifies a modification that's done to a received CAN frame before it is
119 * send out to the destination interface.
120 *
121 * <struct can_frame> data used as operator
122 * <u8> affected CAN frame elements
123 *
124 * CGW_CS_XOR (length 4 bytes):
125 * Set a simple XOR checksum starting with an initial value into
126 * data[result-idx] using data[start-idx] .. data[end-idx]
127 *
128 * The XOR checksum is calculated like this:
129 *
130 * xor = init_xor_val
131 *
132 * for (i = from_idx .. to_idx)
133 * xor ^= can_frame.data[i]
134 *
135 * can_frame.data[ result_idx ] = xor
136 *
137 * CGW_CS_CRC8 (length 282 bytes):
138 * Set a CRC8 value into data[result-idx] using a given 256 byte CRC8 table,
139 * a given initial value and a defined input data[start-idx] .. data[end-idx].
140 * Finally the result value is XOR'ed with the final_xor_val.
141 *
142 * The CRC8 checksum is calculated like this:
143 *
144 * crc = init_crc_val
145 *
146 * for (i = from_idx .. to_idx)
147 * crc = crctab[ crc ^ can_frame.data[i] ]
148 *
149 * can_frame.data[ result_idx ] = crc ^ final_xor_val
150 *
151 * The calculated CRC may contain additional source data elements that can be
152 * defined in the handling of 'checksum profiles' e.g. shown in AUTOSAR specs
153 * like http://www.autosar.org/download/R4.0/AUTOSAR_SWS_E2ELibrary.pdf
154 * E.g. the profile_data[] may contain additional u8 values (called DATA_IDs)
155 * that are used depending on counter values inside the CAN frame data[].
156 * So far only three profiles have been implemented for illustration.
157 *
158 * Remark: In general the attribute data is a linear buffer.
159 * Beware of sending unpacked or aligned structs!
160 */
161
162#endif
diff --git a/include/linux/can/netlink.h b/include/linux/can/netlink.h
deleted file mode 100644
index 14966ddb7df1..000000000000
--- a/include/linux/can/netlink.h
+++ /dev/null
@@ -1,122 +0,0 @@
1/*
2 * linux/can/netlink.h
3 *
4 * Definitions for the CAN netlink interface
5 *
6 * Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com>
7 *
8 */
9
10#ifndef CAN_NETLINK_H
11#define CAN_NETLINK_H
12
13#include <linux/types.h>
14
15/*
16 * CAN bit-timing parameters
17 *
18 * For further information, please read chapter "8 BIT TIMING
19 * REQUIREMENTS" of the "Bosch CAN Specification version 2.0"
20 * at http://www.semiconductors.bosch.de/pdf/can2spec.pdf.
21 */
22struct can_bittiming {
23 __u32 bitrate; /* Bit-rate in bits/second */
24 __u32 sample_point; /* Sample point in one-tenth of a percent */
25 __u32 tq; /* Time quanta (TQ) in nanoseconds */
26 __u32 prop_seg; /* Propagation segment in TQs */
27 __u32 phase_seg1; /* Phase buffer segment 1 in TQs */
28 __u32 phase_seg2; /* Phase buffer segment 2 in TQs */
29 __u32 sjw; /* Synchronisation jump width in TQs */
30 __u32 brp; /* Bit-rate prescaler */
31};
32
33/*
34 * CAN harware-dependent bit-timing constant
35 *
36 * Used for calculating and checking bit-timing parameters
37 */
38struct can_bittiming_const {
39 char name[16]; /* Name of the CAN controller hardware */
40 __u32 tseg1_min; /* Time segement 1 = prop_seg + phase_seg1 */
41 __u32 tseg1_max;
42 __u32 tseg2_min; /* Time segement 2 = phase_seg2 */
43 __u32 tseg2_max;
44 __u32 sjw_max; /* Synchronisation jump width */
45 __u32 brp_min; /* Bit-rate prescaler */
46 __u32 brp_max;
47 __u32 brp_inc;
48};
49
50/*
51 * CAN clock parameters
52 */
53struct can_clock {
54 __u32 freq; /* CAN system clock frequency in Hz */
55};
56
57/*
58 * CAN operational and error states
59 */
60enum can_state {
61 CAN_STATE_ERROR_ACTIVE = 0, /* RX/TX error count < 96 */
62 CAN_STATE_ERROR_WARNING, /* RX/TX error count < 128 */
63 CAN_STATE_ERROR_PASSIVE, /* RX/TX error count < 256 */
64 CAN_STATE_BUS_OFF, /* RX/TX error count >= 256 */
65 CAN_STATE_STOPPED, /* Device is stopped */
66 CAN_STATE_SLEEPING, /* Device is sleeping */
67 CAN_STATE_MAX
68};
69
70/*
71 * CAN bus error counters
72 */
73struct can_berr_counter {
74 __u16 txerr;
75 __u16 rxerr;
76};
77
78/*
79 * CAN controller mode
80 */
81struct can_ctrlmode {
82 __u32 mask;
83 __u32 flags;
84};
85
86#define CAN_CTRLMODE_LOOPBACK 0x01 /* Loopback mode */
87#define CAN_CTRLMODE_LISTENONLY 0x02 /* Listen-only mode */
88#define CAN_CTRLMODE_3_SAMPLES 0x04 /* Triple sampling mode */
89#define CAN_CTRLMODE_ONE_SHOT 0x08 /* One-Shot mode */
90#define CAN_CTRLMODE_BERR_REPORTING 0x10 /* Bus-error reporting */
91
92/*
93 * CAN device statistics
94 */
95struct can_device_stats {
96 __u32 bus_error; /* Bus errors */
97 __u32 error_warning; /* Changes to error warning state */
98 __u32 error_passive; /* Changes to error passive state */
99 __u32 bus_off; /* Changes to bus off state */
100 __u32 arbitration_lost; /* Arbitration lost errors */
101 __u32 restarts; /* CAN controller re-starts */
102};
103
104/*
105 * CAN netlink interface
106 */
107enum {
108 IFLA_CAN_UNSPEC,
109 IFLA_CAN_BITTIMING,
110 IFLA_CAN_BITTIMING_CONST,
111 IFLA_CAN_CLOCK,
112 IFLA_CAN_STATE,
113 IFLA_CAN_CTRLMODE,
114 IFLA_CAN_RESTART_MS,
115 IFLA_CAN_RESTART,
116 IFLA_CAN_BERR_COUNTER,
117 __IFLA_CAN_MAX
118};
119
120#define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1)
121
122#endif /* CAN_NETLINK_H */
diff --git a/include/linux/can/raw.h b/include/linux/can/raw.h
deleted file mode 100644
index a814062b0719..000000000000
--- a/include/linux/can/raw.h
+++ /dev/null
@@ -1,30 +0,0 @@
1/*
2 * linux/can/raw.h
3 *
4 * Definitions for raw CAN sockets
5 *
6 * Authors: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
7 * Urs Thuermann <urs.thuermann@volkswagen.de>
8 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research
9 * All rights reserved.
10 *
11 */
12
13#ifndef CAN_RAW_H
14#define CAN_RAW_H
15
16#include <linux/can.h>
17
18#define SOL_CAN_RAW (SOL_CAN_BASE + CAN_RAW)
19
20/* for socket options affecting the socket (not the global system) */
21
22enum {
23 CAN_RAW_FILTER = 1, /* set 0 .. n can_filter(s) */
24 CAN_RAW_ERR_FILTER, /* set filter for error frames */
25 CAN_RAW_LOOPBACK, /* local loopback (default:on) */
26 CAN_RAW_RECV_OWN_MSGS, /* receive my own msgs (default:off) */
27 CAN_RAW_FD_FRAMES, /* allow CAN FD frames (default:off) */
28};
29
30#endif
diff --git a/include/linux/if_link.h b/include/linux/if_link.h
index e4dad4ddf085..3265f332998a 100644
--- a/include/linux/if_link.h
+++ b/include/linux/if_link.h
@@ -284,10 +284,16 @@ enum {
284 IFLA_VXLAN_LEARNING, 284 IFLA_VXLAN_LEARNING,
285 IFLA_VXLAN_AGEING, 285 IFLA_VXLAN_AGEING,
286 IFLA_VXLAN_LIMIT, 286 IFLA_VXLAN_LIMIT,
287 IFLA_VXLAN_PORT_RANGE,
287 __IFLA_VXLAN_MAX 288 __IFLA_VXLAN_MAX
288}; 289};
289#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1) 290#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
290 291
292struct ifla_vxlan_port_range {
293 __be16 low;
294 __be16 high;
295};
296
291/* SR-IOV virtual function management section */ 297/* SR-IOV virtual function management section */
292 298
293enum { 299enum {
diff --git a/include/linux/of_mdio.h b/include/linux/of_mdio.h
index 6ef49b803efb..8163107b94b4 100644
--- a/include/linux/of_mdio.h
+++ b/include/linux/of_mdio.h
@@ -26,32 +26,32 @@ extern struct phy_device *of_phy_connect_fixed_link(struct net_device *dev,
26extern struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np); 26extern struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np);
27 27
28#else /* CONFIG_OF */ 28#else /* CONFIG_OF */
29int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) 29static inline int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
30{ 30{
31 return -ENOSYS; 31 return -ENOSYS;
32} 32}
33 33
34struct phy_device *of_phy_find_device(struct device_node *phy_np) 34static inline struct phy_device *of_phy_find_device(struct device_node *phy_np)
35{ 35{
36 return NULL; 36 return NULL;
37} 37}
38 38
39struct phy_device *of_phy_connect(struct net_device *dev, 39static inline struct phy_device *of_phy_connect(struct net_device *dev,
40 struct device_node *phy_np, 40 struct device_node *phy_np,
41 void (*hndlr)(struct net_device *), 41 void (*hndlr)(struct net_device *),
42 u32 flags, phy_interface_t iface) 42 u32 flags, phy_interface_t iface)
43{ 43{
44 return NULL; 44 return NULL;
45} 45}
46 46
47struct phy_device *of_phy_connect_fixed_link(struct net_device *dev, 47static inline struct phy_device *of_phy_connect_fixed_link(struct net_device *dev,
48 void (*hndlr)(struct net_device *), 48 void (*hndlr)(struct net_device *),
49 phy_interface_t iface) 49 phy_interface_t iface)
50{ 50{
51 return NULL; 51 return NULL;
52} 52}
53 53
54struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np) 54static inline struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np)
55{ 55{
56 return NULL; 56 return NULL;
57} 57}
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h
index f87cf622317f..ddbbb7de894b 100644
--- a/include/linux/usb/usbnet.h
+++ b/include/linux/usb/usbnet.h
@@ -68,6 +68,7 @@ struct usbnet {
68# define EVENT_RX_PAUSED 5 68# define EVENT_RX_PAUSED 5
69# define EVENT_DEV_ASLEEP 6 69# define EVENT_DEV_ASLEEP 6
70# define EVENT_DEV_OPEN 7 70# define EVENT_DEV_OPEN 7
71# define EVENT_DEVICE_REPORT_IDLE 8
71}; 72};
72 73
73static inline struct usb_driver *driver_of(struct usb_interface *intf) 74static inline struct usb_driver *driver_of(struct usb_interface *intf)
@@ -160,6 +161,7 @@ extern int usbnet_probe(struct usb_interface *, const struct usb_device_id *);
160extern int usbnet_suspend(struct usb_interface *, pm_message_t); 161extern int usbnet_suspend(struct usb_interface *, pm_message_t);
161extern int usbnet_resume(struct usb_interface *); 162extern int usbnet_resume(struct usb_interface *);
162extern void usbnet_disconnect(struct usb_interface *); 163extern void usbnet_disconnect(struct usb_interface *);
164extern void usbnet_device_suggests_idle(struct usbnet *dev);
163 165
164 166
165/* Drivers that reuse some of the standard USB CDC infrastructure 167/* Drivers that reuse some of the standard USB CDC infrastructure
diff --git a/include/linux/wimax/Kbuild b/include/linux/wimax/Kbuild
index 3cb4f269bb09..e69de29bb2d1 100644
--- a/include/linux/wimax/Kbuild
+++ b/include/linux/wimax/Kbuild
@@ -1 +0,0 @@
1header-y += i2400m.h
diff --git a/include/linux/wimax/i2400m.h b/include/linux/wimax/i2400m.h
deleted file mode 100644
index 62d356153565..000000000000
--- a/include/linux/wimax/i2400m.h
+++ /dev/null
@@ -1,572 +0,0 @@
1/*
2 * Intel Wireless WiMax Connection 2400m
3 * Host-Device protocol interface definitions
4 *
5 *
6 * Copyright (C) 2007-2008 Intel Corporation. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * * Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * * Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in
16 * the documentation and/or other materials provided with the
17 * distribution.
18 * * Neither the name of Intel Corporation nor the names of its
19 * contributors may be used to endorse or promote products derived
20 * from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 *
35 * Intel Corporation <linux-wimax@intel.com>
36 * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
37 * - Initial implementation
38 *
39 *
40 * This header defines the data structures and constants used to
41 * communicate with the device.
42 *
43 * BOOTMODE/BOOTROM/FIRMWARE UPLOAD PROTOCOL
44 *
45 * The firmware upload protocol is quite simple and only requires a
46 * handful of commands. See drivers/net/wimax/i2400m/fw.c for more
47 * details.
48 *
49 * The BCF data structure is for the firmware file header.
50 *
51 *
52 * THE DATA / CONTROL PROTOCOL
53 *
54 * This is the normal protocol spoken with the device once the
55 * firmware is uploaded. It transports data payloads and control
56 * messages back and forth.
57 *
58 * It consists 'messages' that pack one or more payloads each. The
59 * format is described in detail in drivers/net/wimax/i2400m/rx.c and
60 * tx.c.
61 *
62 *
63 * THE L3L4 PROTOCOL
64 *
65 * The term L3L4 refers to Layer 3 (the device), Layer 4 (the
66 * driver/host software).
67 *
68 * This is the control protocol used by the host to control the i2400m
69 * device (scan, connect, disconnect...). This is sent to / received
70 * as control frames. These frames consist of a header and zero or
71 * more TLVs with information. We call each control frame a "message".
72 *
73 * Each message is composed of:
74 *
75 * HEADER
76 * [TLV0 + PAYLOAD0]
77 * [TLV1 + PAYLOAD1]
78 * [...]
79 * [TLVN + PAYLOADN]
80 *
81 * The HEADER is defined by 'struct i2400m_l3l4_hdr'. The payloads are
82 * defined by a TLV structure (Type Length Value) which is a 'header'
83 * (struct i2400m_tlv_hdr) and then the payload.
84 *
85 * All integers are represented as Little Endian.
86 *
87 * - REQUESTS AND EVENTS
88 *
89 * The requests can be clasified as follows:
90 *
91 * COMMAND: implies a request from the host to the device requesting
92 * an action being performed. The device will reply with a
93 * message (with the same type as the command), status and
94 * no (TLV) payload. Execution of a command might cause
95 * events (of different type) to be sent later on as
96 * device's state changes.
97 *
98 * GET/SET: similar to COMMAND, but will not cause other
99 * EVENTs. The reply, in the case of GET, will contain
100 * TLVs with the requested information.
101 *
102 * EVENT: asynchronous messages sent from the device, maybe as a
103 * consequence of previous COMMANDs but disassociated from
104 * them.
105 *
106 * Only one request might be pending at the same time (ie: don't
107 * parallelize nor post another GET request before the previous
108 * COMMAND has been acknowledged with it's corresponding reply by the
109 * device).
110 *
111 * The different requests and their formats are described below:
112 *
113 * I2400M_MT_* Message types
114 * I2400M_MS_* Message status (for replies, events)
115 * i2400m_tlv_* TLVs
116 *
117 * data types are named 'struct i2400m_msg_OPNAME', OPNAME matching the
118 * operation.
119 */
120
121#ifndef __LINUX__WIMAX__I2400M_H__
122#define __LINUX__WIMAX__I2400M_H__
123
124#include <linux/types.h>
125
126
127/*
128 * Host Device Interface (HDI) common to all busses
129 */
130
131/* Boot-mode (firmware upload mode) commands */
132
133/* Header for the firmware file */
134struct i2400m_bcf_hdr {
135 __le32 module_type;
136 __le32 header_len;
137 __le32 header_version;
138 __le32 module_id;
139 __le32 module_vendor;
140 __le32 date; /* BCD YYYMMDD */
141 __le32 size; /* in dwords */
142 __le32 key_size; /* in dwords */
143 __le32 modulus_size; /* in dwords */
144 __le32 exponent_size; /* in dwords */
145 __u8 reserved[88];
146} __attribute__ ((packed));
147
148/* Boot mode opcodes */
149enum i2400m_brh_opcode {
150 I2400M_BRH_READ = 1,
151 I2400M_BRH_WRITE = 2,
152 I2400M_BRH_JUMP = 3,
153 I2400M_BRH_SIGNED_JUMP = 8,
154 I2400M_BRH_HASH_PAYLOAD_ONLY = 9,
155};
156
157/* Boot mode command masks and stuff */
158enum i2400m_brh {
159 I2400M_BRH_SIGNATURE = 0xcbbc0000,
160 I2400M_BRH_SIGNATURE_MASK = 0xffff0000,
161 I2400M_BRH_SIGNATURE_SHIFT = 16,
162 I2400M_BRH_OPCODE_MASK = 0x0000000f,
163 I2400M_BRH_RESPONSE_MASK = 0x000000f0,
164 I2400M_BRH_RESPONSE_SHIFT = 4,
165 I2400M_BRH_DIRECT_ACCESS = 0x00000400,
166 I2400M_BRH_RESPONSE_REQUIRED = 0x00000200,
167 I2400M_BRH_USE_CHECKSUM = 0x00000100,
168};
169
170
171/**
172 * i2400m_bootrom_header - Header for a boot-mode command
173 *
174 * @cmd: the above command descriptor
175 * @target_addr: where on the device memory should the action be performed.
176 * @data_size: for read/write, amount of data to be read/written
177 * @block_checksum: checksum value (if applicable)
178 * @payload: the beginning of data attached to this header
179 */
180struct i2400m_bootrom_header {
181 __le32 command; /* Compose with enum i2400_brh */
182 __le32 target_addr;
183 __le32 data_size;
184 __le32 block_checksum;
185 char payload[0];
186} __attribute__ ((packed));
187
188
189/*
190 * Data / control protocol
191 */
192
193/* Packet types for the host-device interface */
194enum i2400m_pt {
195 I2400M_PT_DATA = 0,
196 I2400M_PT_CTRL,
197 I2400M_PT_TRACE, /* For device debug */
198 I2400M_PT_RESET_WARM, /* device reset */
199 I2400M_PT_RESET_COLD, /* USB[transport] reset, like reconnect */
200 I2400M_PT_EDATA, /* Extended RX data */
201 I2400M_PT_ILLEGAL
202};
203
204
205/*
206 * Payload for a data packet
207 *
208 * This is prefixed to each and every outgoing DATA type.
209 */
210struct i2400m_pl_data_hdr {
211 __le32 reserved;
212} __attribute__((packed));
213
214
215/*
216 * Payload for an extended data packet
217 *
218 * New in fw v1.4
219 *
220 * @reorder: if this payload has to be reorder or not (and how)
221 * @cs: the type of data in the packet, as defined per (802.16e
222 * T11.13.19.1). Currently only 2 (IPv4 packet) supported.
223 *
224 * This is prefixed to each and every INCOMING DATA packet.
225 */
226struct i2400m_pl_edata_hdr {
227 __le32 reorder; /* bits defined in i2400m_ro */
228 __u8 cs;
229 __u8 reserved[11];
230} __attribute__((packed));
231
232enum i2400m_cs {
233 I2400M_CS_IPV4_0 = 0,
234 I2400M_CS_IPV4 = 2,
235};
236
237enum i2400m_ro {
238 I2400M_RO_NEEDED = 0x01,
239 I2400M_RO_TYPE = 0x03,
240 I2400M_RO_TYPE_SHIFT = 1,
241 I2400M_RO_CIN = 0x0f,
242 I2400M_RO_CIN_SHIFT = 4,
243 I2400M_RO_FBN = 0x07ff,
244 I2400M_RO_FBN_SHIFT = 8,
245 I2400M_RO_SN = 0x07ff,
246 I2400M_RO_SN_SHIFT = 21,
247};
248
249enum i2400m_ro_type {
250 I2400M_RO_TYPE_RESET = 0,
251 I2400M_RO_TYPE_PACKET,
252 I2400M_RO_TYPE_WS,
253 I2400M_RO_TYPE_PACKET_WS,
254};
255
256
257/* Misc constants */
258enum {
259 I2400M_PL_ALIGN = 16, /* Payload data size alignment */
260 I2400M_PL_SIZE_MAX = 0x3EFF,
261 I2400M_MAX_PLS_IN_MSG = 60,
262 /* protocol barkers: sync sequences; for notifications they
263 * are sent in groups of four. */
264 I2400M_H2D_PREVIEW_BARKER = 0xcafe900d,
265 I2400M_COLD_RESET_BARKER = 0xc01dc01d,
266 I2400M_WARM_RESET_BARKER = 0x50f750f7,
267 I2400M_NBOOT_BARKER = 0xdeadbeef,
268 I2400M_SBOOT_BARKER = 0x0ff1c1a1,
269 I2400M_SBOOT_BARKER_6050 = 0x80000001,
270 I2400M_ACK_BARKER = 0xfeedbabe,
271 I2400M_D2H_MSG_BARKER = 0xbeefbabe,
272};
273
274
275/*
276 * Hardware payload descriptor
277 *
278 * Bitfields encoded in a struct to enforce typing semantics.
279 *
280 * Look in rx.c and tx.c for a full description of the format.
281 */
282struct i2400m_pld {
283 __le32 val;
284} __attribute__ ((packed));
285
286#define I2400M_PLD_SIZE_MASK 0x00003fff
287#define I2400M_PLD_TYPE_SHIFT 16
288#define I2400M_PLD_TYPE_MASK 0x000f0000
289
290/*
291 * Header for a TX message or RX message
292 *
293 * @barker: preamble
294 * @size: used for management of the FIFO queue buffer; before
295 * sending, this is converted to be a real preamble. This
296 * indicates the real size of the TX message that starts at this
297 * point. If the highest bit is set, then this message is to be
298 * skipped.
299 * @sequence: sequence number of this message
300 * @offset: offset where the message itself starts -- see the comments
301 * in the file header about message header and payload descriptor
302 * alignment.
303 * @num_pls: number of payloads in this message
304 * @padding: amount of padding bytes at the end of the message to make
305 * it be of block-size aligned
306 *
307 * Look in rx.c and tx.c for a full description of the format.
308 */
309struct i2400m_msg_hdr {
310 union {
311 __le32 barker;
312 __u32 size; /* same size type as barker!! */
313 };
314 union {
315 __le32 sequence;
316 __u32 offset; /* same size type as barker!! */
317 };
318 __le16 num_pls;
319 __le16 rsv1;
320 __le16 padding;
321 __le16 rsv2;
322 struct i2400m_pld pld[0];
323} __attribute__ ((packed));
324
325
326
327/*
328 * L3/L4 control protocol
329 */
330
331enum {
332 /* Interface version */
333 I2400M_L3L4_VERSION = 0x0100,
334};
335
336/* Message types */
337enum i2400m_mt {
338 I2400M_MT_RESERVED = 0x0000,
339 I2400M_MT_INVALID = 0xffff,
340 I2400M_MT_REPORT_MASK = 0x8000,
341
342 I2400M_MT_GET_SCAN_RESULT = 0x4202,
343 I2400M_MT_SET_SCAN_PARAM = 0x4402,
344 I2400M_MT_CMD_RF_CONTROL = 0x4602,
345 I2400M_MT_CMD_SCAN = 0x4603,
346 I2400M_MT_CMD_CONNECT = 0x4604,
347 I2400M_MT_CMD_DISCONNECT = 0x4605,
348 I2400M_MT_CMD_EXIT_IDLE = 0x4606,
349 I2400M_MT_GET_LM_VERSION = 0x5201,
350 I2400M_MT_GET_DEVICE_INFO = 0x5202,
351 I2400M_MT_GET_LINK_STATUS = 0x5203,
352 I2400M_MT_GET_STATISTICS = 0x5204,
353 I2400M_MT_GET_STATE = 0x5205,
354 I2400M_MT_GET_MEDIA_STATUS = 0x5206,
355 I2400M_MT_SET_INIT_CONFIG = 0x5404,
356 I2400M_MT_CMD_INIT = 0x5601,
357 I2400M_MT_CMD_TERMINATE = 0x5602,
358 I2400M_MT_CMD_MODE_OF_OP = 0x5603,
359 I2400M_MT_CMD_RESET_DEVICE = 0x5604,
360 I2400M_MT_CMD_MONITOR_CONTROL = 0x5605,
361 I2400M_MT_CMD_ENTER_POWERSAVE = 0x5606,
362 I2400M_MT_GET_TLS_OPERATION_RESULT = 0x6201,
363 I2400M_MT_SET_EAP_SUCCESS = 0x6402,
364 I2400M_MT_SET_EAP_FAIL = 0x6403,
365 I2400M_MT_SET_EAP_KEY = 0x6404,
366 I2400M_MT_CMD_SEND_EAP_RESPONSE = 0x6602,
367 I2400M_MT_REPORT_SCAN_RESULT = 0xc002,
368 I2400M_MT_REPORT_STATE = 0xd002,
369 I2400M_MT_REPORT_POWERSAVE_READY = 0xd005,
370 I2400M_MT_REPORT_EAP_REQUEST = 0xe002,
371 I2400M_MT_REPORT_EAP_RESTART = 0xe003,
372 I2400M_MT_REPORT_ALT_ACCEPT = 0xe004,
373 I2400M_MT_REPORT_KEY_REQUEST = 0xe005,
374};
375
376
377/*
378 * Message Ack Status codes
379 *
380 * When a message is replied-to, this status is reported.
381 */
382enum i2400m_ms {
383 I2400M_MS_DONE_OK = 0,
384 I2400M_MS_DONE_IN_PROGRESS = 1,
385 I2400M_MS_INVALID_OP = 2,
386 I2400M_MS_BAD_STATE = 3,
387 I2400M_MS_ILLEGAL_VALUE = 4,
388 I2400M_MS_MISSING_PARAMS = 5,
389 I2400M_MS_VERSION_ERROR = 6,
390 I2400M_MS_ACCESSIBILITY_ERROR = 7,
391 I2400M_MS_BUSY = 8,
392 I2400M_MS_CORRUPTED_TLV = 9,
393 I2400M_MS_UNINITIALIZED = 10,
394 I2400M_MS_UNKNOWN_ERROR = 11,
395 I2400M_MS_PRODUCTION_ERROR = 12,
396 I2400M_MS_NO_RF = 13,
397 I2400M_MS_NOT_READY_FOR_POWERSAVE = 14,
398 I2400M_MS_THERMAL_CRITICAL = 15,
399 I2400M_MS_MAX
400};
401
402
403/**
404 * i2400m_tlv - enumeration of the different types of TLVs
405 *
406 * TLVs stand for type-length-value and are the header for a payload
407 * composed of almost anything. Each payload has a type assigned
408 * and a length.
409 */
410enum i2400m_tlv {
411 I2400M_TLV_L4_MESSAGE_VERSIONS = 129,
412 I2400M_TLV_SYSTEM_STATE = 141,
413 I2400M_TLV_MEDIA_STATUS = 161,
414 I2400M_TLV_RF_OPERATION = 162,
415 I2400M_TLV_RF_STATUS = 163,
416 I2400M_TLV_DEVICE_RESET_TYPE = 132,
417 I2400M_TLV_CONFIG_IDLE_PARAMETERS = 601,
418 I2400M_TLV_CONFIG_IDLE_TIMEOUT = 611,
419 I2400M_TLV_CONFIG_D2H_DATA_FORMAT = 614,
420 I2400M_TLV_CONFIG_DL_HOST_REORDER = 615,
421};
422
423
424struct i2400m_tlv_hdr {
425 __le16 type;
426 __le16 length; /* payload's */
427 __u8 pl[0];
428} __attribute__((packed));
429
430
431struct i2400m_l3l4_hdr {
432 __le16 type;
433 __le16 length; /* payload's */
434 __le16 version;
435 __le16 resv1;
436 __le16 status;
437 __le16 resv2;
438 struct i2400m_tlv_hdr pl[0];
439} __attribute__((packed));
440
441
442/**
443 * i2400m_system_state - different states of the device
444 */
445enum i2400m_system_state {
446 I2400M_SS_UNINITIALIZED = 1,
447 I2400M_SS_INIT,
448 I2400M_SS_READY,
449 I2400M_SS_SCAN,
450 I2400M_SS_STANDBY,
451 I2400M_SS_CONNECTING,
452 I2400M_SS_WIMAX_CONNECTED,
453 I2400M_SS_DATA_PATH_CONNECTED,
454 I2400M_SS_IDLE,
455 I2400M_SS_DISCONNECTING,
456 I2400M_SS_OUT_OF_ZONE,
457 I2400M_SS_SLEEPACTIVE,
458 I2400M_SS_PRODUCTION,
459 I2400M_SS_CONFIG,
460 I2400M_SS_RF_OFF,
461 I2400M_SS_RF_SHUTDOWN,
462 I2400M_SS_DEVICE_DISCONNECT,
463 I2400M_SS_MAX,
464};
465
466
467/**
468 * i2400m_tlv_system_state - report on the state of the system
469 *
470 * @state: see enum i2400m_system_state
471 */
472struct i2400m_tlv_system_state {
473 struct i2400m_tlv_hdr hdr;
474 __le32 state;
475} __attribute__((packed));
476
477
478struct i2400m_tlv_l4_message_versions {
479 struct i2400m_tlv_hdr hdr;
480 __le16 major;
481 __le16 minor;
482 __le16 branch;
483 __le16 reserved;
484} __attribute__((packed));
485
486
487struct i2400m_tlv_detailed_device_info {
488 struct i2400m_tlv_hdr hdr;
489 __u8 reserved1[400];
490 __u8 mac_address[6];
491 __u8 reserved2[2];
492} __attribute__((packed));
493
494
495enum i2400m_rf_switch_status {
496 I2400M_RF_SWITCH_ON = 1,
497 I2400M_RF_SWITCH_OFF = 2,
498};
499
500struct i2400m_tlv_rf_switches_status {
501 struct i2400m_tlv_hdr hdr;
502 __u8 sw_rf_switch; /* 1 ON, 2 OFF */
503 __u8 hw_rf_switch; /* 1 ON, 2 OFF */
504 __u8 reserved[2];
505} __attribute__((packed));
506
507
508enum {
509 i2400m_rf_operation_on = 1,
510 i2400m_rf_operation_off = 2
511};
512
513struct i2400m_tlv_rf_operation {
514 struct i2400m_tlv_hdr hdr;
515 __le32 status; /* 1 ON, 2 OFF */
516} __attribute__((packed));
517
518
519enum i2400m_tlv_reset_type {
520 I2400M_RESET_TYPE_COLD = 1,
521 I2400M_RESET_TYPE_WARM
522};
523
524struct i2400m_tlv_device_reset_type {
525 struct i2400m_tlv_hdr hdr;
526 __le32 reset_type;
527} __attribute__((packed));
528
529
530struct i2400m_tlv_config_idle_parameters {
531 struct i2400m_tlv_hdr hdr;
532 __le32 idle_timeout; /* 100 to 300000 ms [5min], 100 increments
533 * 0 disabled */
534 __le32 idle_paging_interval; /* frames */
535} __attribute__((packed));
536
537
538enum i2400m_media_status {
539 I2400M_MEDIA_STATUS_LINK_UP = 1,
540 I2400M_MEDIA_STATUS_LINK_DOWN,
541 I2400M_MEDIA_STATUS_LINK_RENEW,
542};
543
544struct i2400m_tlv_media_status {
545 struct i2400m_tlv_hdr hdr;
546 __le32 media_status;
547} __attribute__((packed));
548
549
550/* New in v1.4 */
551struct i2400m_tlv_config_idle_timeout {
552 struct i2400m_tlv_hdr hdr;
553 __le32 timeout; /* 100 to 300000 ms [5min], 100 increments
554 * 0 disabled */
555} __attribute__((packed));
556
557/* New in v1.4 -- for backward compat, will be removed */
558struct i2400m_tlv_config_d2h_data_format {
559 struct i2400m_tlv_hdr hdr;
560 __u8 format; /* 0 old format, 1 enhanced */
561 __u8 reserved[3];
562} __attribute__((packed));
563
564/* New in v1.4 */
565struct i2400m_tlv_config_dl_host_reorder {
566 struct i2400m_tlv_hdr hdr;
567 __u8 reorder; /* 0 disabled, 1 enabled */
568 __u8 reserved[3];
569} __attribute__((packed));
570
571
572#endif /* #ifndef __LINUX__WIMAX__I2400M_H__ */