diff options
Diffstat (limited to 'include/linux')
48 files changed, 1802 insertions, 275 deletions
diff --git a/include/linux/arcdevice.h b/include/linux/arcdevice.h index a1916078fd08..cd4bcb6989ce 100644 --- a/include/linux/arcdevice.h +++ b/include/linux/arcdevice.h | |||
@@ -235,8 +235,6 @@ struct Outgoing { | |||
235 | 235 | ||
236 | 236 | ||
237 | struct arcnet_local { | 237 | struct arcnet_local { |
238 | struct net_device_stats stats; | ||
239 | |||
240 | uint8_t config, /* current value of CONFIG register */ | 238 | uint8_t config, /* current value of CONFIG register */ |
241 | timeout, /* Extended timeout for COM20020 */ | 239 | timeout, /* Extended timeout for COM20020 */ |
242 | backplane, /* Backplane flag for COM20020 */ | 240 | backplane, /* Backplane flag for COM20020 */ |
@@ -335,7 +333,12 @@ void arcnet_dump_skb(struct net_device *dev, struct sk_buff *skb, char *desc); | |||
335 | 333 | ||
336 | void arcnet_unregister_proto(struct ArcProto *proto); | 334 | void arcnet_unregister_proto(struct ArcProto *proto); |
337 | irqreturn_t arcnet_interrupt(int irq, void *dev_id); | 335 | irqreturn_t arcnet_interrupt(int irq, void *dev_id); |
338 | struct net_device *alloc_arcdev(char *name); | 336 | struct net_device *alloc_arcdev(const char *name); |
337 | |||
338 | int arcnet_open(struct net_device *dev); | ||
339 | int arcnet_close(struct net_device *dev); | ||
340 | int arcnet_send_packet(struct sk_buff *skb, struct net_device *dev); | ||
341 | void arcnet_timeout(struct net_device *dev); | ||
339 | 342 | ||
340 | #endif /* __KERNEL__ */ | 343 | #endif /* __KERNEL__ */ |
341 | #endif /* _LINUX_ARCDEVICE_H */ | 344 | #endif /* _LINUX_ARCDEVICE_H */ |
diff --git a/include/linux/ath9k_platform.h b/include/linux/ath9k_platform.h new file mode 100644 index 000000000000..b847fc7b93f9 --- /dev/null +++ b/include/linux/ath9k_platform.h | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2008 Atheros Communications Inc. | ||
3 | * Copyright (c) 2009 Gabor Juhos <juhosg@openwrt.org> | ||
4 | * Copyright (c) 2009 Imre Kaloz <kaloz@openwrt.org> | ||
5 | * | ||
6 | * Permission to use, copy, modify, and/or distribute this software for any | ||
7 | * purpose with or without fee is hereby granted, provided that the above | ||
8 | * copyright notice and this permission notice appear in all copies. | ||
9 | * | ||
10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
17 | */ | ||
18 | |||
19 | #ifndef _LINUX_ATH9K_PLATFORM_H | ||
20 | #define _LINUX_ATH9K_PLATFORM_H | ||
21 | |||
22 | #define ATH9K_PLAT_EEP_MAX_WORDS 2048 | ||
23 | |||
24 | struct ath9k_platform_data { | ||
25 | u16 eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS]; | ||
26 | }; | ||
27 | |||
28 | #endif /* _LINUX_ATH9K_PLATFORM_H */ | ||
diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index f88d32f8ff7c..573819ef4cc0 100644 --- a/include/linux/clocksource.h +++ b/include/linux/clocksource.h | |||
@@ -22,8 +22,109 @@ typedef u64 cycle_t; | |||
22 | struct clocksource; | 22 | struct clocksource; |
23 | 23 | ||
24 | /** | 24 | /** |
25 | * struct cyclecounter - hardware abstraction for a free running counter | ||
26 | * Provides completely state-free accessors to the underlying hardware. | ||
27 | * Depending on which hardware it reads, the cycle counter may wrap | ||
28 | * around quickly. Locking rules (if necessary) have to be defined | ||
29 | * by the implementor and user of specific instances of this API. | ||
30 | * | ||
31 | * @read: returns the current cycle value | ||
32 | * @mask: bitmask for two's complement | ||
33 | * subtraction of non 64 bit counters, | ||
34 | * see CLOCKSOURCE_MASK() helper macro | ||
35 | * @mult: cycle to nanosecond multiplier | ||
36 | * @shift: cycle to nanosecond divisor (power of two) | ||
37 | */ | ||
38 | struct cyclecounter { | ||
39 | cycle_t (*read)(const struct cyclecounter *cc); | ||
40 | cycle_t mask; | ||
41 | u32 mult; | ||
42 | u32 shift; | ||
43 | }; | ||
44 | |||
45 | /** | ||
46 | * struct timecounter - layer above a %struct cyclecounter which counts nanoseconds | ||
47 | * Contains the state needed by timecounter_read() to detect | ||
48 | * cycle counter wrap around. Initialize with | ||
49 | * timecounter_init(). Also used to convert cycle counts into the | ||
50 | * corresponding nanosecond counts with timecounter_cyc2time(). Users | ||
51 | * of this code are responsible for initializing the underlying | ||
52 | * cycle counter hardware, locking issues and reading the time | ||
53 | * more often than the cycle counter wraps around. The nanosecond | ||
54 | * counter will only wrap around after ~585 years. | ||
55 | * | ||
56 | * @cc: the cycle counter used by this instance | ||
57 | * @cycle_last: most recent cycle counter value seen by | ||
58 | * timecounter_read() | ||
59 | * @nsec: continuously increasing count | ||
60 | */ | ||
61 | struct timecounter { | ||
62 | const struct cyclecounter *cc; | ||
63 | cycle_t cycle_last; | ||
64 | u64 nsec; | ||
65 | }; | ||
66 | |||
67 | /** | ||
68 | * cyclecounter_cyc2ns - converts cycle counter cycles to nanoseconds | ||
69 | * @tc: Pointer to cycle counter. | ||
70 | * @cycles: Cycles | ||
71 | * | ||
72 | * XXX - This could use some mult_lxl_ll() asm optimization. Same code | ||
73 | * as in cyc2ns, but with unsigned result. | ||
74 | */ | ||
75 | static inline u64 cyclecounter_cyc2ns(const struct cyclecounter *cc, | ||
76 | cycle_t cycles) | ||
77 | { | ||
78 | u64 ret = (u64)cycles; | ||
79 | ret = (ret * cc->mult) >> cc->shift; | ||
80 | return ret; | ||
81 | } | ||
82 | |||
83 | /** | ||
84 | * timecounter_init - initialize a time counter | ||
85 | * @tc: Pointer to time counter which is to be initialized/reset | ||
86 | * @cc: A cycle counter, ready to be used. | ||
87 | * @start_tstamp: Arbitrary initial time stamp. | ||
88 | * | ||
89 | * After this call the current cycle register (roughly) corresponds to | ||
90 | * the initial time stamp. Every call to timecounter_read() increments | ||
91 | * the time stamp counter by the number of elapsed nanoseconds. | ||
92 | */ | ||
93 | extern void timecounter_init(struct timecounter *tc, | ||
94 | const struct cyclecounter *cc, | ||
95 | u64 start_tstamp); | ||
96 | |||
97 | /** | ||
98 | * timecounter_read - return nanoseconds elapsed since timecounter_init() | ||
99 | * plus the initial time stamp | ||
100 | * @tc: Pointer to time counter. | ||
101 | * | ||
102 | * In other words, keeps track of time since the same epoch as | ||
103 | * the function which generated the initial time stamp. | ||
104 | */ | ||
105 | extern u64 timecounter_read(struct timecounter *tc); | ||
106 | |||
107 | /** | ||
108 | * timecounter_cyc2time - convert a cycle counter to same | ||
109 | * time base as values returned by | ||
110 | * timecounter_read() | ||
111 | * @tc: Pointer to time counter. | ||
112 | * @cycle: a value returned by tc->cc->read() | ||
113 | * | ||
114 | * Cycle counts that are converted correctly as long as they | ||
115 | * fall into the interval [-1/2 max cycle count, +1/2 max cycle count], | ||
116 | * with "max cycle count" == cs->mask+1. | ||
117 | * | ||
118 | * This allows conversion of cycle counter values which were generated | ||
119 | * in the past. | ||
120 | */ | ||
121 | extern u64 timecounter_cyc2time(struct timecounter *tc, | ||
122 | cycle_t cycle_tstamp); | ||
123 | |||
124 | /** | ||
25 | * struct clocksource - hardware abstraction for a free running counter | 125 | * struct clocksource - hardware abstraction for a free running counter |
26 | * Provides mostly state-free accessors to the underlying hardware. | 126 | * Provides mostly state-free accessors to the underlying hardware. |
127 | * This is the structure used for system time. | ||
27 | * | 128 | * |
28 | * @name: ptr to clocksource name | 129 | * @name: ptr to clocksource name |
29 | * @list: list head for registration | 130 | * @list: list head for registration |
diff --git a/include/linux/com20020.h b/include/linux/com20020.h index ac6d9a43e085..5dcfb944b6ce 100644 --- a/include/linux/com20020.h +++ b/include/linux/com20020.h | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | int com20020_check(struct net_device *dev); | 30 | int com20020_check(struct net_device *dev); |
31 | int com20020_found(struct net_device *dev, int shared); | 31 | int com20020_found(struct net_device *dev, int shared); |
32 | extern const struct net_device_ops com20020_netdev_ops; | ||
32 | 33 | ||
33 | /* The number of low I/O ports used by the card. */ | 34 | /* The number of low I/O ports used by the card. */ |
34 | #define ARCNET_TOTAL_SIZE 8 | 35 | #define ARCNET_TOTAL_SIZE 8 |
diff --git a/include/linux/connector.h b/include/linux/connector.h index 34f2789d9b9b..fc65d219d88c 100644 --- a/include/linux/connector.h +++ b/include/linux/connector.h | |||
@@ -109,6 +109,12 @@ struct cn_queue_dev { | |||
109 | unsigned char name[CN_CBQ_NAMELEN]; | 109 | unsigned char name[CN_CBQ_NAMELEN]; |
110 | 110 | ||
111 | struct workqueue_struct *cn_queue; | 111 | struct workqueue_struct *cn_queue; |
112 | /* Sent to kevent to create cn_queue only when needed */ | ||
113 | struct work_struct wq_creation; | ||
114 | /* Tell if the wq_creation job is pending/completed */ | ||
115 | atomic_t wq_requested; | ||
116 | /* Wait for cn_queue to be created */ | ||
117 | wait_queue_head_t wq_created; | ||
112 | 118 | ||
113 | struct list_head queue_list; | 119 | struct list_head queue_list; |
114 | spinlock_t queue_lock; | 120 | spinlock_t queue_lock; |
@@ -164,6 +170,8 @@ int cn_netlink_send(struct cn_msg *, u32, gfp_t); | |||
164 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(void *)); | 170 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(void *)); |
165 | void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); | 171 | void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); |
166 | 172 | ||
173 | int queue_cn_work(struct cn_callback_entry *cbq, struct work_struct *work); | ||
174 | |||
167 | struct cn_queue_dev *cn_queue_alloc_dev(char *name, struct sock *); | 175 | struct cn_queue_dev *cn_queue_alloc_dev(char *name, struct sock *); |
168 | void cn_queue_free_dev(struct cn_queue_dev *dev); | 176 | void cn_queue_free_dev(struct cn_queue_dev *dev); |
169 | 177 | ||
diff --git a/include/linux/dccp.h b/include/linux/dccp.h index 61734e27abb7..7434a8353e23 100644 --- a/include/linux/dccp.h +++ b/include/linux/dccp.h | |||
@@ -355,46 +355,6 @@ static inline unsigned int dccp_hdr_len(const struct sk_buff *skb) | |||
355 | return __dccp_hdr_len(dccp_hdr(skb)); | 355 | return __dccp_hdr_len(dccp_hdr(skb)); |
356 | } | 356 | } |
357 | 357 | ||
358 | |||
359 | /* initial values for each feature */ | ||
360 | #define DCCPF_INITIAL_SEQUENCE_WINDOW 100 | ||
361 | #define DCCPF_INITIAL_ACK_RATIO 2 | ||
362 | #define DCCPF_INITIAL_CCID DCCPC_CCID2 | ||
363 | /* FIXME: for now we're default to 1 but it should really be 0 */ | ||
364 | #define DCCPF_INITIAL_SEND_NDP_COUNT 1 | ||
365 | |||
366 | /** | ||
367 | * struct dccp_minisock - Minimal DCCP connection representation | ||
368 | * | ||
369 | * Will be used to pass the state from dccp_request_sock to dccp_sock. | ||
370 | * | ||
371 | * @dccpms_sequence_window - Sequence Window Feature (section 7.5.2) | ||
372 | * @dccpms_pending - List of features being negotiated | ||
373 | * @dccpms_conf - | ||
374 | */ | ||
375 | struct dccp_minisock { | ||
376 | __u64 dccpms_sequence_window; | ||
377 | struct list_head dccpms_pending; | ||
378 | struct list_head dccpms_conf; | ||
379 | }; | ||
380 | |||
381 | struct dccp_opt_conf { | ||
382 | __u8 *dccpoc_val; | ||
383 | __u8 dccpoc_len; | ||
384 | }; | ||
385 | |||
386 | struct dccp_opt_pend { | ||
387 | struct list_head dccpop_node; | ||
388 | __u8 dccpop_type; | ||
389 | __u8 dccpop_feat; | ||
390 | __u8 *dccpop_val; | ||
391 | __u8 dccpop_len; | ||
392 | int dccpop_conf; | ||
393 | struct dccp_opt_conf *dccpop_sc; | ||
394 | }; | ||
395 | |||
396 | extern void dccp_minisock_init(struct dccp_minisock *dmsk); | ||
397 | |||
398 | /** | 358 | /** |
399 | * struct dccp_request_sock - represent DCCP-specific connection request | 359 | * struct dccp_request_sock - represent DCCP-specific connection request |
400 | * @dreq_inet_rsk: structure inherited from | 360 | * @dreq_inet_rsk: structure inherited from |
@@ -483,13 +443,14 @@ struct dccp_ackvec; | |||
483 | * @dccps_timestamp_time - time of receiving latest @dccps_timestamp_echo | 443 | * @dccps_timestamp_time - time of receiving latest @dccps_timestamp_echo |
484 | * @dccps_l_ack_ratio - feature-local Ack Ratio | 444 | * @dccps_l_ack_ratio - feature-local Ack Ratio |
485 | * @dccps_r_ack_ratio - feature-remote Ack Ratio | 445 | * @dccps_r_ack_ratio - feature-remote Ack Ratio |
446 | * @dccps_l_seq_win - local Sequence Window (influences ack number validity) | ||
447 | * @dccps_r_seq_win - remote Sequence Window (influences seq number validity) | ||
486 | * @dccps_pcslen - sender partial checksum coverage (via sockopt) | 448 | * @dccps_pcslen - sender partial checksum coverage (via sockopt) |
487 | * @dccps_pcrlen - receiver partial checksum coverage (via sockopt) | 449 | * @dccps_pcrlen - receiver partial checksum coverage (via sockopt) |
488 | * @dccps_send_ndp_count - local Send NDP Count feature (7.7.2) | 450 | * @dccps_send_ndp_count - local Send NDP Count feature (7.7.2) |
489 | * @dccps_ndp_count - number of Non Data Packets since last data packet | 451 | * @dccps_ndp_count - number of Non Data Packets since last data packet |
490 | * @dccps_mss_cache - current value of MSS (path MTU minus header sizes) | 452 | * @dccps_mss_cache - current value of MSS (path MTU minus header sizes) |
491 | * @dccps_rate_last - timestamp for rate-limiting DCCP-Sync (RFC 4340, 7.5.4) | 453 | * @dccps_rate_last - timestamp for rate-limiting DCCP-Sync (RFC 4340, 7.5.4) |
492 | * @dccps_minisock - associated minisock (accessed via dccp_msk) | ||
493 | * @dccps_featneg - tracks feature-negotiation state (mostly during handshake) | 454 | * @dccps_featneg - tracks feature-negotiation state (mostly during handshake) |
494 | * @dccps_hc_rx_ackvec - rx half connection ack vector | 455 | * @dccps_hc_rx_ackvec - rx half connection ack vector |
495 | * @dccps_hc_rx_ccid - CCID used for the receiver (or receiving half-connection) | 456 | * @dccps_hc_rx_ccid - CCID used for the receiver (or receiving half-connection) |
@@ -523,12 +484,13 @@ struct dccp_sock { | |||
523 | __u32 dccps_timestamp_time; | 484 | __u32 dccps_timestamp_time; |
524 | __u16 dccps_l_ack_ratio; | 485 | __u16 dccps_l_ack_ratio; |
525 | __u16 dccps_r_ack_ratio; | 486 | __u16 dccps_r_ack_ratio; |
487 | __u64 dccps_l_seq_win:48; | ||
488 | __u64 dccps_r_seq_win:48; | ||
526 | __u8 dccps_pcslen:4; | 489 | __u8 dccps_pcslen:4; |
527 | __u8 dccps_pcrlen:4; | 490 | __u8 dccps_pcrlen:4; |
528 | __u8 dccps_send_ndp_count:1; | 491 | __u8 dccps_send_ndp_count:1; |
529 | __u64 dccps_ndp_count:48; | 492 | __u64 dccps_ndp_count:48; |
530 | unsigned long dccps_rate_last; | 493 | unsigned long dccps_rate_last; |
531 | struct dccp_minisock dccps_minisock; | ||
532 | struct list_head dccps_featneg; | 494 | struct list_head dccps_featneg; |
533 | struct dccp_ackvec *dccps_hc_rx_ackvec; | 495 | struct dccp_ackvec *dccps_hc_rx_ackvec; |
534 | struct ccid *dccps_hc_rx_ccid; | 496 | struct ccid *dccps_hc_rx_ccid; |
@@ -546,11 +508,6 @@ static inline struct dccp_sock *dccp_sk(const struct sock *sk) | |||
546 | return (struct dccp_sock *)sk; | 508 | return (struct dccp_sock *)sk; |
547 | } | 509 | } |
548 | 510 | ||
549 | static inline struct dccp_minisock *dccp_msk(const struct sock *sk) | ||
550 | { | ||
551 | return (struct dccp_minisock *)&dccp_sk(sk)->dccps_minisock; | ||
552 | } | ||
553 | |||
554 | static inline const char *dccp_role(const struct sock *sk) | 511 | static inline const char *dccp_role(const struct sock *sk) |
555 | { | 512 | { |
556 | switch (dccp_sk(sk)->dccps_role) { | 513 | switch (dccp_sk(sk)->dccps_role) { |
diff --git a/include/linux/errqueue.h b/include/linux/errqueue.h index ceb1454b6977..ec12cc74366f 100644 --- a/include/linux/errqueue.h +++ b/include/linux/errqueue.h | |||
@@ -18,6 +18,7 @@ struct sock_extended_err | |||
18 | #define SO_EE_ORIGIN_LOCAL 1 | 18 | #define SO_EE_ORIGIN_LOCAL 1 |
19 | #define SO_EE_ORIGIN_ICMP 2 | 19 | #define SO_EE_ORIGIN_ICMP 2 |
20 | #define SO_EE_ORIGIN_ICMP6 3 | 20 | #define SO_EE_ORIGIN_ICMP6 3 |
21 | #define SO_EE_ORIGIN_TIMESTAMPING 4 | ||
21 | 22 | ||
22 | #define SO_EE_OFFENDER(ee) ((struct sockaddr*)((ee)+1)) | 23 | #define SO_EE_OFFENDER(ee) ((struct sockaddr*)((ee)+1)) |
23 | 24 | ||
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index 1cb0f0b90926..a1f17abba7dc 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h | |||
@@ -184,4 +184,25 @@ static inline unsigned compare_ether_addr_64bits(const u8 addr1[6+2], | |||
184 | } | 184 | } |
185 | #endif /* __KERNEL__ */ | 185 | #endif /* __KERNEL__ */ |
186 | 186 | ||
187 | /** | ||
188 | * compare_ether_header - Compare two Ethernet headers | ||
189 | * @a: Pointer to Ethernet header | ||
190 | * @b: Pointer to Ethernet header | ||
191 | * | ||
192 | * Compare two ethernet headers, returns 0 if equal. | ||
193 | * This assumes that the network header (i.e., IP header) is 4-byte | ||
194 | * aligned OR the platform can handle unaligned access. This is the | ||
195 | * case for all packets coming into netif_receive_skb or similar | ||
196 | * entry points. | ||
197 | */ | ||
198 | |||
199 | static inline int compare_ether_header(const void *a, const void *b) | ||
200 | { | ||
201 | u32 *a32 = (u32 *)((u8 *)a + 2); | ||
202 | u32 *b32 = (u32 *)((u8 *)b + 2); | ||
203 | |||
204 | return (*(u16 *)a ^ *(u16 *)b) | (a32[0] ^ b32[0]) | | ||
205 | (a32[1] ^ b32[1]) | (a32[2] ^ b32[2]); | ||
206 | } | ||
207 | |||
187 | #endif /* _LINUX_ETHERDEVICE_H */ | 208 | #endif /* _LINUX_ETHERDEVICE_H */ |
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index 27c67a542235..131b127b70f8 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h | |||
@@ -7,6 +7,7 @@ | |||
7 | * Portions Copyright 2002 Intel (eli.kupermann@intel.com, | 7 | * Portions Copyright 2002 Intel (eli.kupermann@intel.com, |
8 | * christopher.leech@intel.com, | 8 | * christopher.leech@intel.com, |
9 | * scott.feldman@intel.com) | 9 | * scott.feldman@intel.com) |
10 | * Portions Copyright (C) Sun Microsystems 2008 | ||
10 | */ | 11 | */ |
11 | 12 | ||
12 | #ifndef _LINUX_ETHTOOL_H | 13 | #ifndef _LINUX_ETHTOOL_H |
@@ -287,10 +288,75 @@ enum ethtool_flags { | |||
287 | ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */ | 288 | ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */ |
288 | }; | 289 | }; |
289 | 290 | ||
290 | struct ethtool_rxnfc { | 291 | /* The following structures are for supporting RX network flow |
291 | __u32 cmd; | 292 | * classification configuration. Note, all multibyte fields, e.g., |
293 | * ip4src, ip4dst, psrc, pdst, spi, etc. are expected to be in network | ||
294 | * byte order. | ||
295 | */ | ||
296 | struct ethtool_tcpip4_spec { | ||
297 | __be32 ip4src; | ||
298 | __be32 ip4dst; | ||
299 | __be16 psrc; | ||
300 | __be16 pdst; | ||
301 | __u8 tos; | ||
302 | }; | ||
303 | |||
304 | struct ethtool_ah_espip4_spec { | ||
305 | __be32 ip4src; | ||
306 | __be32 ip4dst; | ||
307 | __be32 spi; | ||
308 | __u8 tos; | ||
309 | }; | ||
310 | |||
311 | struct ethtool_rawip4_spec { | ||
312 | __be32 ip4src; | ||
313 | __be32 ip4dst; | ||
314 | __u8 hdata[64]; | ||
315 | }; | ||
316 | |||
317 | struct ethtool_ether_spec { | ||
318 | __be16 ether_type; | ||
319 | __u8 frame_size; | ||
320 | __u8 eframe[16]; | ||
321 | }; | ||
322 | |||
323 | #define ETH_RX_NFC_IP4 1 | ||
324 | #define ETH_RX_NFC_IP6 2 | ||
325 | |||
326 | struct ethtool_usrip4_spec { | ||
327 | __be32 ip4src; | ||
328 | __be32 ip4dst; | ||
329 | __be32 l4_4_bytes; | ||
330 | __u8 tos; | ||
331 | __u8 ip_ver; | ||
332 | __u8 proto; | ||
333 | }; | ||
334 | |||
335 | struct ethtool_rx_flow_spec { | ||
292 | __u32 flow_type; | 336 | __u32 flow_type; |
293 | __u64 data; | 337 | union { |
338 | struct ethtool_tcpip4_spec tcp_ip4_spec; | ||
339 | struct ethtool_tcpip4_spec udp_ip4_spec; | ||
340 | struct ethtool_tcpip4_spec sctp_ip4_spec; | ||
341 | struct ethtool_ah_espip4_spec ah_ip4_spec; | ||
342 | struct ethtool_ah_espip4_spec esp_ip4_spec; | ||
343 | struct ethtool_rawip4_spec raw_ip4_spec; | ||
344 | struct ethtool_ether_spec ether_spec; | ||
345 | struct ethtool_usrip4_spec usr_ip4_spec; | ||
346 | __u8 hdata[64]; | ||
347 | } h_u, m_u; /* entry, mask */ | ||
348 | __u64 ring_cookie; | ||
349 | __u32 location; | ||
350 | }; | ||
351 | |||
352 | struct ethtool_rxnfc { | ||
353 | __u32 cmd; | ||
354 | __u32 flow_type; | ||
355 | /* The rx flow hash value or the rule DB size */ | ||
356 | __u64 data; | ||
357 | struct ethtool_rx_flow_spec fs; | ||
358 | __u32 rule_cnt; | ||
359 | __u32 rule_locs[0]; | ||
294 | }; | 360 | }; |
295 | 361 | ||
296 | #ifdef __KERNEL__ | 362 | #ifdef __KERNEL__ |
@@ -417,8 +483,8 @@ struct ethtool_ops { | |||
417 | /* the following hooks are obsolete */ | 483 | /* the following hooks are obsolete */ |
418 | int (*self_test_count)(struct net_device *);/* use get_sset_count */ | 484 | int (*self_test_count)(struct net_device *);/* use get_sset_count */ |
419 | int (*get_stats_count)(struct net_device *);/* use get_sset_count */ | 485 | int (*get_stats_count)(struct net_device *);/* use get_sset_count */ |
420 | int (*get_rxhash)(struct net_device *, struct ethtool_rxnfc *); | 486 | int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, void *); |
421 | int (*set_rxhash)(struct net_device *, struct ethtool_rxnfc *); | 487 | int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *); |
422 | }; | 488 | }; |
423 | #endif /* __KERNEL__ */ | 489 | #endif /* __KERNEL__ */ |
424 | 490 | ||
@@ -469,6 +535,12 @@ struct ethtool_ops { | |||
469 | #define ETHTOOL_SRXFH 0x0000002a /* Set RX flow hash configuration */ | 535 | #define ETHTOOL_SRXFH 0x0000002a /* Set RX flow hash configuration */ |
470 | #define ETHTOOL_GGRO 0x0000002b /* Get GRO enable (ethtool_value) */ | 536 | #define ETHTOOL_GGRO 0x0000002b /* Get GRO enable (ethtool_value) */ |
471 | #define ETHTOOL_SGRO 0x0000002c /* Set GRO enable (ethtool_value) */ | 537 | #define ETHTOOL_SGRO 0x0000002c /* Set GRO enable (ethtool_value) */ |
538 | #define ETHTOOL_GRXRINGS 0x0000002d /* Get RX rings available for LB */ | ||
539 | #define ETHTOOL_GRXCLSRLCNT 0x0000002e /* Get RX class rule count */ | ||
540 | #define ETHTOOL_GRXCLSRULE 0x0000002f /* Get RX classification rule */ | ||
541 | #define ETHTOOL_GRXCLSRLALL 0x00000030 /* Get all RX classification rule */ | ||
542 | #define ETHTOOL_SRXCLSRLDEL 0x00000031 /* Delete RX classification rule */ | ||
543 | #define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */ | ||
472 | 544 | ||
473 | /* compatibility with older code */ | 545 | /* compatibility with older code */ |
474 | #define SPARC_ETH_GSET ETHTOOL_GSET | 546 | #define SPARC_ETH_GSET ETHTOOL_GSET |
@@ -565,9 +637,13 @@ struct ethtool_ops { | |||
565 | #define UDP_V6_FLOW 0x06 | 637 | #define UDP_V6_FLOW 0x06 |
566 | #define SCTP_V6_FLOW 0x07 | 638 | #define SCTP_V6_FLOW 0x07 |
567 | #define AH_ESP_V6_FLOW 0x08 | 639 | #define AH_ESP_V6_FLOW 0x08 |
640 | #define AH_V4_FLOW 0x09 | ||
641 | #define ESP_V4_FLOW 0x0a | ||
642 | #define AH_V6_FLOW 0x0b | ||
643 | #define ESP_V6_FLOW 0x0c | ||
644 | #define IP_USER_FLOW 0x0d | ||
568 | 645 | ||
569 | /* L3-L4 network traffic flow hash options */ | 646 | /* L3-L4 network traffic flow hash options */ |
570 | #define RXH_DEV_PORT (1 << 0) | ||
571 | #define RXH_L2DA (1 << 1) | 647 | #define RXH_L2DA (1 << 1) |
572 | #define RXH_VLAN (1 << 2) | 648 | #define RXH_VLAN (1 << 2) |
573 | #define RXH_L3_PROTO (1 << 3) | 649 | #define RXH_L3_PROTO (1 << 3) |
@@ -577,5 +653,6 @@ struct ethtool_ops { | |||
577 | #define RXH_L4_B_2_3 (1 << 7) /* dst port in case of TCP/UDP/SCTP */ | 653 | #define RXH_L4_B_2_3 (1 << 7) /* dst port in case of TCP/UDP/SCTP */ |
578 | #define RXH_DISCARD (1 << 31) | 654 | #define RXH_DISCARD (1 << 31) |
579 | 655 | ||
656 | #define RX_CLS_FLOW_DISC 0xffffffffffffffffULL | ||
580 | 657 | ||
581 | #endif /* _LINUX_ETHTOOL_H */ | 658 | #endif /* _LINUX_ETHTOOL_H */ |
diff --git a/include/linux/hdlc.h b/include/linux/hdlc.h index fd47a151665e..6a6e701f1631 100644 --- a/include/linux/hdlc.h +++ b/include/linux/hdlc.h | |||
@@ -38,6 +38,7 @@ struct hdlc_proto { | |||
38 | int (*ioctl)(struct net_device *dev, struct ifreq *ifr); | 38 | int (*ioctl)(struct net_device *dev, struct ifreq *ifr); |
39 | __be16 (*type_trans)(struct sk_buff *skb, struct net_device *dev); | 39 | __be16 (*type_trans)(struct sk_buff *skb, struct net_device *dev); |
40 | int (*netif_rx)(struct sk_buff *skb); | 40 | int (*netif_rx)(struct sk_buff *skb); |
41 | int (*xmit)(struct sk_buff *skb, struct net_device *dev); | ||
41 | struct module *module; | 42 | struct module *module; |
42 | struct hdlc_proto *next; /* next protocol in the list */ | 43 | struct hdlc_proto *next; /* next protocol in the list */ |
43 | }; | 44 | }; |
@@ -102,6 +103,10 @@ static __inline__ void debug_frame(const struct sk_buff *skb) | |||
102 | int hdlc_open(struct net_device *dev); | 103 | int hdlc_open(struct net_device *dev); |
103 | /* Must be called by hardware driver when HDLC device is being closed */ | 104 | /* Must be called by hardware driver when HDLC device is being closed */ |
104 | void hdlc_close(struct net_device *dev); | 105 | void hdlc_close(struct net_device *dev); |
106 | /* May be used by hardware driver */ | ||
107 | int hdlc_change_mtu(struct net_device *dev, int new_mtu); | ||
108 | /* Must be pointed to by hw driver's dev->netdev_ops->ndo_start_xmit */ | ||
109 | int hdlc_start_xmit(struct sk_buff *skb, struct net_device *dev); | ||
105 | 110 | ||
106 | int attach_hdlc_protocol(struct net_device *dev, struct hdlc_proto *proto, | 111 | int attach_hdlc_protocol(struct net_device *dev, struct hdlc_proto *proto, |
107 | size_t size); | 112 | size_t size); |
diff --git a/include/linux/hdlcdrv.h b/include/linux/hdlcdrv.h index bf6302f6b5f8..c010b4a785b8 100644 --- a/include/linux/hdlcdrv.h +++ b/include/linux/hdlcdrv.h | |||
@@ -215,7 +215,7 @@ struct hdlcdrv_state { | |||
215 | 215 | ||
216 | struct hdlcdrv_hdlctx { | 216 | struct hdlcdrv_hdlctx { |
217 | struct hdlcdrv_hdlcbuffer hbuf; | 217 | struct hdlcdrv_hdlcbuffer hbuf; |
218 | long in_hdlc_tx; | 218 | unsigned long in_hdlc_tx; |
219 | /* | 219 | /* |
220 | * 0 = send flags | 220 | * 0 = send flags |
221 | * 1 = send txtail (flags) | 221 | * 1 = send txtail (flags) |
@@ -241,7 +241,6 @@ struct hdlcdrv_state { | |||
241 | struct hdlcdrv_bitbuffer bitbuf_hdlc; | 241 | struct hdlcdrv_bitbuffer bitbuf_hdlc; |
242 | #endif /* HDLCDRV_DEBUG */ | 242 | #endif /* HDLCDRV_DEBUG */ |
243 | 243 | ||
244 | struct net_device_stats stats; | ||
245 | int ptt_keyed; | 244 | int ptt_keyed; |
246 | 245 | ||
247 | /* queued skb for transmission */ | 246 | /* queued skb for transmission */ |
diff --git a/include/linux/ibmtr.h b/include/linux/ibmtr.h index 1c7a0dd5536a..06695b74d405 100644 --- a/include/linux/ibmtr.h +++ b/include/linux/ibmtr.h | |||
@@ -207,7 +207,7 @@ struct tok_info { | |||
207 | unsigned short exsap_station_id; | 207 | unsigned short exsap_station_id; |
208 | unsigned short global_int_enable; | 208 | unsigned short global_int_enable; |
209 | struct sk_buff *current_skb; | 209 | struct sk_buff *current_skb; |
210 | struct net_device_stats tr_stats; | 210 | |
211 | unsigned char auto_speedsave; | 211 | unsigned char auto_speedsave; |
212 | open_state open_status, sap_status; | 212 | open_state open_status, sap_status; |
213 | enum {MANUAL, AUTOMATIC} open_mode; | 213 | enum {MANUAL, AUTOMATIC} open_mode; |
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index c4e6ca1a6306..b1bb817d1427 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h | |||
@@ -527,6 +527,8 @@ struct ieee80211_tim_ie { | |||
527 | u8 virtual_map[0]; | 527 | u8 virtual_map[0]; |
528 | } __attribute__ ((packed)); | 528 | } __attribute__ ((packed)); |
529 | 529 | ||
530 | #define WLAN_SA_QUERY_TR_ID_LEN 16 | ||
531 | |||
530 | struct ieee80211_mgmt { | 532 | struct ieee80211_mgmt { |
531 | __le16 frame_control; | 533 | __le16 frame_control; |
532 | __le16 duration; | 534 | __le16 duration; |
@@ -646,6 +648,10 @@ struct ieee80211_mgmt { | |||
646 | u8 action_code; | 648 | u8 action_code; |
647 | u8 variable[0]; | 649 | u8 variable[0]; |
648 | } __attribute__((packed)) mesh_action; | 650 | } __attribute__((packed)) mesh_action; |
651 | struct { | ||
652 | u8 action; | ||
653 | u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN]; | ||
654 | } __attribute__ ((packed)) sa_query; | ||
649 | } u; | 655 | } u; |
650 | } __attribute__ ((packed)) action; | 656 | } __attribute__ ((packed)) action; |
651 | } u; | 657 | } u; |
@@ -655,6 +661,15 @@ struct ieee80211_mgmt { | |||
655 | #define IEEE80211_MIN_ACTION_SIZE offsetof(struct ieee80211_mgmt, u.action.u) | 661 | #define IEEE80211_MIN_ACTION_SIZE offsetof(struct ieee80211_mgmt, u.action.u) |
656 | 662 | ||
657 | 663 | ||
664 | /* Management MIC information element (IEEE 802.11w) */ | ||
665 | struct ieee80211_mmie { | ||
666 | u8 element_id; | ||
667 | u8 length; | ||
668 | __le16 key_id; | ||
669 | u8 sequence_number[6]; | ||
670 | u8 mic[8]; | ||
671 | } __attribute__ ((packed)); | ||
672 | |||
658 | /* Control frames */ | 673 | /* Control frames */ |
659 | struct ieee80211_rts { | 674 | struct ieee80211_rts { |
660 | __le16 frame_control; | 675 | __le16 frame_control; |
@@ -899,6 +914,9 @@ enum ieee80211_statuscode { | |||
899 | /* 802.11g */ | 914 | /* 802.11g */ |
900 | WLAN_STATUS_ASSOC_DENIED_NOSHORTTIME = 25, | 915 | WLAN_STATUS_ASSOC_DENIED_NOSHORTTIME = 25, |
901 | WLAN_STATUS_ASSOC_DENIED_NODSSSOFDM = 26, | 916 | WLAN_STATUS_ASSOC_DENIED_NODSSSOFDM = 26, |
917 | /* 802.11w */ | ||
918 | WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY = 30, | ||
919 | WLAN_STATUS_ROBUST_MGMT_FRAME_POLICY_VIOLATION = 31, | ||
902 | /* 802.11i */ | 920 | /* 802.11i */ |
903 | WLAN_STATUS_INVALID_IE = 40, | 921 | WLAN_STATUS_INVALID_IE = 40, |
904 | WLAN_STATUS_INVALID_GROUP_CIPHER = 41, | 922 | WLAN_STATUS_INVALID_GROUP_CIPHER = 41, |
@@ -1018,6 +1036,8 @@ enum ieee80211_eid { | |||
1018 | WLAN_EID_HT_INFORMATION = 61, | 1036 | WLAN_EID_HT_INFORMATION = 61, |
1019 | /* 802.11i */ | 1037 | /* 802.11i */ |
1020 | WLAN_EID_RSN = 48, | 1038 | WLAN_EID_RSN = 48, |
1039 | WLAN_EID_TIMEOUT_INTERVAL = 56, | ||
1040 | WLAN_EID_MMIE = 76 /* 802.11w */, | ||
1021 | WLAN_EID_WPA = 221, | 1041 | WLAN_EID_WPA = 221, |
1022 | WLAN_EID_GENERIC = 221, | 1042 | WLAN_EID_GENERIC = 221, |
1023 | WLAN_EID_VENDOR_SPECIFIC = 221, | 1043 | WLAN_EID_VENDOR_SPECIFIC = 221, |
@@ -1030,6 +1050,8 @@ enum ieee80211_category { | |||
1030 | WLAN_CATEGORY_QOS = 1, | 1050 | WLAN_CATEGORY_QOS = 1, |
1031 | WLAN_CATEGORY_DLS = 2, | 1051 | WLAN_CATEGORY_DLS = 2, |
1032 | WLAN_CATEGORY_BACK = 3, | 1052 | WLAN_CATEGORY_BACK = 3, |
1053 | WLAN_CATEGORY_PUBLIC = 4, | ||
1054 | WLAN_CATEGORY_SA_QUERY = 8, | ||
1033 | WLAN_CATEGORY_WMM = 17, | 1055 | WLAN_CATEGORY_WMM = 17, |
1034 | }; | 1056 | }; |
1035 | 1057 | ||
@@ -1104,6 +1126,12 @@ struct ieee80211_country_ie_triplet { | |||
1104 | }; | 1126 | }; |
1105 | } __attribute__ ((packed)); | 1127 | } __attribute__ ((packed)); |
1106 | 1128 | ||
1129 | enum ieee80211_timeout_interval_type { | ||
1130 | WLAN_TIMEOUT_REASSOC_DEADLINE = 1 /* 802.11r */, | ||
1131 | WLAN_TIMEOUT_KEY_LIFETIME = 2 /* 802.11r */, | ||
1132 | WLAN_TIMEOUT_ASSOC_COMEBACK = 3 /* 802.11w */, | ||
1133 | }; | ||
1134 | |||
1107 | /* BACK action code */ | 1135 | /* BACK action code */ |
1108 | enum ieee80211_back_actioncode { | 1136 | enum ieee80211_back_actioncode { |
1109 | WLAN_ACTION_ADDBA_REQ = 0, | 1137 | WLAN_ACTION_ADDBA_REQ = 0, |
@@ -1118,6 +1146,13 @@ enum ieee80211_back_parties { | |||
1118 | WLAN_BACK_TIMER = 2, | 1146 | WLAN_BACK_TIMER = 2, |
1119 | }; | 1147 | }; |
1120 | 1148 | ||
1149 | /* SA Query action */ | ||
1150 | enum ieee80211_sa_query_action { | ||
1151 | WLAN_ACTION_SA_QUERY_REQUEST = 0, | ||
1152 | WLAN_ACTION_SA_QUERY_RESPONSE = 1, | ||
1153 | }; | ||
1154 | |||
1155 | |||
1121 | /* A-MSDU 802.11n */ | 1156 | /* A-MSDU 802.11n */ |
1122 | #define IEEE80211_QOS_CONTROL_A_MSDU_PRESENT 0x0080 | 1157 | #define IEEE80211_QOS_CONTROL_A_MSDU_PRESENT 0x0080 |
1123 | 1158 | ||
@@ -1128,6 +1163,7 @@ enum ieee80211_back_parties { | |||
1128 | /* reserved: 0x000FAC03 */ | 1163 | /* reserved: 0x000FAC03 */ |
1129 | #define WLAN_CIPHER_SUITE_CCMP 0x000FAC04 | 1164 | #define WLAN_CIPHER_SUITE_CCMP 0x000FAC04 |
1130 | #define WLAN_CIPHER_SUITE_WEP104 0x000FAC05 | 1165 | #define WLAN_CIPHER_SUITE_WEP104 0x000FAC05 |
1166 | #define WLAN_CIPHER_SUITE_AES_CMAC 0x000FAC06 | ||
1131 | 1167 | ||
1132 | #define WLAN_MAX_KEY_LEN 32 | 1168 | #define WLAN_MAX_KEY_LEN 32 |
1133 | 1169 | ||
@@ -1185,4 +1221,149 @@ static inline u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr) | |||
1185 | return hdr->addr1; | 1221 | return hdr->addr1; |
1186 | } | 1222 | } |
1187 | 1223 | ||
1224 | /** | ||
1225 | * ieee80211_is_robust_mgmt_frame - check if frame is a robust management frame | ||
1226 | * @hdr: the frame (buffer must include at least the first octet of payload) | ||
1227 | */ | ||
1228 | static inline bool ieee80211_is_robust_mgmt_frame(struct ieee80211_hdr *hdr) | ||
1229 | { | ||
1230 | if (ieee80211_is_disassoc(hdr->frame_control) || | ||
1231 | ieee80211_is_deauth(hdr->frame_control)) | ||
1232 | return true; | ||
1233 | |||
1234 | if (ieee80211_is_action(hdr->frame_control)) { | ||
1235 | u8 *category; | ||
1236 | |||
1237 | /* | ||
1238 | * Action frames, excluding Public Action frames, are Robust | ||
1239 | * Management Frames. However, if we are looking at a Protected | ||
1240 | * frame, skip the check since the data may be encrypted and | ||
1241 | * the frame has already been found to be a Robust Management | ||
1242 | * Frame (by the other end). | ||
1243 | */ | ||
1244 | if (ieee80211_has_protected(hdr->frame_control)) | ||
1245 | return true; | ||
1246 | category = ((u8 *) hdr) + 24; | ||
1247 | return *category != WLAN_CATEGORY_PUBLIC; | ||
1248 | } | ||
1249 | |||
1250 | return false; | ||
1251 | } | ||
1252 | |||
1253 | /** | ||
1254 | * ieee80211_fhss_chan_to_freq - get channel frequency | ||
1255 | * @channel: the FHSS channel | ||
1256 | * | ||
1257 | * Convert IEEE802.11 FHSS channel to frequency (MHz) | ||
1258 | * Ref IEEE 802.11-2007 section 14.6 | ||
1259 | */ | ||
1260 | static inline int ieee80211_fhss_chan_to_freq(int channel) | ||
1261 | { | ||
1262 | if ((channel > 1) && (channel < 96)) | ||
1263 | return channel + 2400; | ||
1264 | else | ||
1265 | return -1; | ||
1266 | } | ||
1267 | |||
1268 | /** | ||
1269 | * ieee80211_freq_to_fhss_chan - get channel | ||
1270 | * @freq: the channels frequency | ||
1271 | * | ||
1272 | * Convert frequency (MHz) to IEEE802.11 FHSS channel | ||
1273 | * Ref IEEE 802.11-2007 section 14.6 | ||
1274 | */ | ||
1275 | static inline int ieee80211_freq_to_fhss_chan(int freq) | ||
1276 | { | ||
1277 | if ((freq > 2401) && (freq < 2496)) | ||
1278 | return freq - 2400; | ||
1279 | else | ||
1280 | return -1; | ||
1281 | } | ||
1282 | |||
1283 | /** | ||
1284 | * ieee80211_dsss_chan_to_freq - get channel center frequency | ||
1285 | * @channel: the DSSS channel | ||
1286 | * | ||
1287 | * Convert IEEE802.11 DSSS channel to the center frequency (MHz). | ||
1288 | * Ref IEEE 802.11-2007 section 15.6 | ||
1289 | */ | ||
1290 | static inline int ieee80211_dsss_chan_to_freq(int channel) | ||
1291 | { | ||
1292 | if ((channel > 0) && (channel < 14)) | ||
1293 | return 2407 + (channel * 5); | ||
1294 | else if (channel == 14) | ||
1295 | return 2484; | ||
1296 | else | ||
1297 | return -1; | ||
1298 | } | ||
1299 | |||
1300 | /** | ||
1301 | * ieee80211_freq_to_dsss_chan - get channel | ||
1302 | * @freq: the frequency | ||
1303 | * | ||
1304 | * Convert frequency (MHz) to IEEE802.11 DSSS channel | ||
1305 | * Ref IEEE 802.11-2007 section 15.6 | ||
1306 | * | ||
1307 | * This routine selects the channel with the closest center frequency. | ||
1308 | */ | ||
1309 | static inline int ieee80211_freq_to_dsss_chan(int freq) | ||
1310 | { | ||
1311 | if ((freq >= 2410) && (freq < 2475)) | ||
1312 | return (freq - 2405) / 5; | ||
1313 | else if ((freq >= 2482) && (freq < 2487)) | ||
1314 | return 14; | ||
1315 | else | ||
1316 | return -1; | ||
1317 | } | ||
1318 | |||
1319 | /* Convert IEEE802.11 HR DSSS channel to frequency (MHz) and back | ||
1320 | * Ref IEEE 802.11-2007 section 18.4.6.2 | ||
1321 | * | ||
1322 | * The channels and frequencies are the same as those defined for DSSS | ||
1323 | */ | ||
1324 | #define ieee80211_hr_chan_to_freq(chan) ieee80211_dsss_chan_to_freq(chan) | ||
1325 | #define ieee80211_freq_to_hr_chan(freq) ieee80211_freq_to_dsss_chan(freq) | ||
1326 | |||
1327 | /* Convert IEEE802.11 ERP channel to frequency (MHz) and back | ||
1328 | * Ref IEEE 802.11-2007 section 19.4.2 | ||
1329 | */ | ||
1330 | #define ieee80211_erp_chan_to_freq(chan) ieee80211_hr_chan_to_freq(chan) | ||
1331 | #define ieee80211_freq_to_erp_chan(freq) ieee80211_freq_to_hr_chan(freq) | ||
1332 | |||
1333 | /** | ||
1334 | * ieee80211_ofdm_chan_to_freq - get channel center frequency | ||
1335 | * @s_freq: starting frequency == (dotChannelStartingFactor/2) MHz | ||
1336 | * @channel: the OFDM channel | ||
1337 | * | ||
1338 | * Convert IEEE802.11 OFDM channel to center frequency (MHz) | ||
1339 | * Ref IEEE 802.11-2007 section 17.3.8.3.2 | ||
1340 | */ | ||
1341 | static inline int ieee80211_ofdm_chan_to_freq(int s_freq, int channel) | ||
1342 | { | ||
1343 | if ((channel > 0) && (channel <= 200) && | ||
1344 | (s_freq >= 4000)) | ||
1345 | return s_freq + (channel * 5); | ||
1346 | else | ||
1347 | return -1; | ||
1348 | } | ||
1349 | |||
1350 | /** | ||
1351 | * ieee80211_freq_to_ofdm_channel - get channel | ||
1352 | * @s_freq: starting frequency == (dotChannelStartingFactor/2) MHz | ||
1353 | * @freq: the frequency | ||
1354 | * | ||
1355 | * Convert frequency (MHz) to IEEE802.11 OFDM channel | ||
1356 | * Ref IEEE 802.11-2007 section 17.3.8.3.2 | ||
1357 | * | ||
1358 | * This routine selects the channel with the closest center frequency. | ||
1359 | */ | ||
1360 | static inline int ieee80211_freq_to_ofdm_chan(int s_freq, int freq) | ||
1361 | { | ||
1362 | if ((freq > (s_freq + 2)) && (freq <= (s_freq + 1202)) && | ||
1363 | (s_freq >= 4000)) | ||
1364 | return (freq + 2 - s_freq) / 5; | ||
1365 | else | ||
1366 | return -1; | ||
1367 | } | ||
1368 | |||
1188 | #endif /* LINUX_IEEE80211_H */ | 1369 | #endif /* LINUX_IEEE80211_H */ |
diff --git a/include/linux/if.h b/include/linux/if.h index 2a6e29620a96..1108f3e099e3 100644 --- a/include/linux/if.h +++ b/include/linux/if.h | |||
@@ -66,6 +66,7 @@ | |||
66 | #define IFF_SLAVE_NEEDARP 0x40 /* need ARPs for validation */ | 66 | #define IFF_SLAVE_NEEDARP 0x40 /* need ARPs for validation */ |
67 | #define IFF_ISATAP 0x80 /* ISATAP interface (RFC4214) */ | 67 | #define IFF_ISATAP 0x80 /* ISATAP interface (RFC4214) */ |
68 | #define IFF_MASTER_ARPMON 0x100 /* bonding master, ARP mon in use */ | 68 | #define IFF_MASTER_ARPMON 0x100 /* bonding master, ARP mon in use */ |
69 | #define IFF_WAN_HDLC 0x200 /* WAN HDLC device */ | ||
69 | 70 | ||
70 | #define IF_GET_IFACE 0x0001 /* for querying only */ | 71 | #define IF_GET_IFACE 0x0001 /* for querying only */ |
71 | #define IF_GET_PROTO 0x0002 | 72 | #define IF_GET_PROTO 0x0002 |
diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h index 7f3c735f422b..0216e1bdbc56 100644 --- a/include/linux/if_ether.h +++ b/include/linux/if_ether.h | |||
@@ -17,7 +17,7 @@ | |||
17 | * as published by the Free Software Foundation; either version | 17 | * as published by the Free Software Foundation; either version |
18 | * 2 of the License, or (at your option) any later version. | 18 | * 2 of the License, or (at your option) any later version. |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #ifndef _LINUX_IF_ETHER_H | 21 | #ifndef _LINUX_IF_ETHER_H |
22 | #define _LINUX_IF_ETHER_H | 22 | #define _LINUX_IF_ETHER_H |
23 | 23 | ||
@@ -25,7 +25,7 @@ | |||
25 | 25 | ||
26 | /* | 26 | /* |
27 | * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble | 27 | * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble |
28 | * and FCS/CRC (frame check sequence). | 28 | * and FCS/CRC (frame check sequence). |
29 | */ | 29 | */ |
30 | 30 | ||
31 | #define ETH_ALEN 6 /* Octets in one ethernet addr */ | 31 | #define ETH_ALEN 6 /* Octets in one ethernet addr */ |
@@ -83,7 +83,7 @@ | |||
83 | /* | 83 | /* |
84 | * Non DIX types. Won't clash for 1500 types. | 84 | * Non DIX types. Won't clash for 1500 types. |
85 | */ | 85 | */ |
86 | 86 | ||
87 | #define ETH_P_802_3 0x0001 /* Dummy type for 802.3 frames */ | 87 | #define ETH_P_802_3 0x0001 /* Dummy type for 802.3 frames */ |
88 | #define ETH_P_AX25 0x0002 /* Dummy protocol id for AX.25 */ | 88 | #define ETH_P_AX25 0x0002 /* Dummy protocol id for AX.25 */ |
89 | #define ETH_P_ALL 0x0003 /* Every packet (be careful!!!) */ | 89 | #define ETH_P_ALL 0x0003 /* Every packet (be careful!!!) */ |
@@ -109,7 +109,7 @@ | |||
109 | /* | 109 | /* |
110 | * This is an Ethernet frame header. | 110 | * This is an Ethernet frame header. |
111 | */ | 111 | */ |
112 | 112 | ||
113 | struct ethhdr { | 113 | struct ethhdr { |
114 | unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ | 114 | unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ |
115 | unsigned char h_source[ETH_ALEN]; /* source ether addr */ | 115 | unsigned char h_source[ETH_ALEN]; /* source ether addr */ |
diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h index 30c88b2245ff..90b5fae5d714 100644 --- a/include/linux/if_pppox.h +++ b/include/linux/if_pppox.h | |||
@@ -95,16 +95,16 @@ struct pppoe_tag { | |||
95 | } __attribute ((packed)); | 95 | } __attribute ((packed)); |
96 | 96 | ||
97 | /* Tag identifiers */ | 97 | /* Tag identifiers */ |
98 | #define PTT_EOL __constant_htons(0x0000) | 98 | #define PTT_EOL __cpu_to_be16(0x0000) |
99 | #define PTT_SRV_NAME __constant_htons(0x0101) | 99 | #define PTT_SRV_NAME __cpu_to_be16(0x0101) |
100 | #define PTT_AC_NAME __constant_htons(0x0102) | 100 | #define PTT_AC_NAME __cpu_to_be16(0x0102) |
101 | #define PTT_HOST_UNIQ __constant_htons(0x0103) | 101 | #define PTT_HOST_UNIQ __cpu_to_be16(0x0103) |
102 | #define PTT_AC_COOKIE __constant_htons(0x0104) | 102 | #define PTT_AC_COOKIE __cpu_to_be16(0x0104) |
103 | #define PTT_VENDOR __constant_htons(0x0105) | 103 | #define PTT_VENDOR __cpu_to_be16(0x0105) |
104 | #define PTT_RELAY_SID __constant_htons(0x0110) | 104 | #define PTT_RELAY_SID __cpu_to_be16(0x0110) |
105 | #define PTT_SRV_ERR __constant_htons(0x0201) | 105 | #define PTT_SRV_ERR __cpu_to_be16(0x0201) |
106 | #define PTT_SYS_ERR __constant_htons(0x0202) | 106 | #define PTT_SYS_ERR __cpu_to_be16(0x0202) |
107 | #define PTT_GEN_ERR __constant_htons(0x0203) | 107 | #define PTT_GEN_ERR __cpu_to_be16(0x0203) |
108 | 108 | ||
109 | struct pppoe_hdr { | 109 | struct pppoe_hdr { |
110 | #if defined(__LITTLE_ENDIAN_BITFIELD) | 110 | #if defined(__LITTLE_ENDIAN_BITFIELD) |
diff --git a/include/linux/if_tun.h b/include/linux/if_tun.h index 8529f57ba263..049d6c9428db 100644 --- a/include/linux/if_tun.h +++ b/include/linux/if_tun.h | |||
@@ -46,6 +46,8 @@ | |||
46 | #define TUNSETOFFLOAD _IOW('T', 208, unsigned int) | 46 | #define TUNSETOFFLOAD _IOW('T', 208, unsigned int) |
47 | #define TUNSETTXFILTER _IOW('T', 209, unsigned int) | 47 | #define TUNSETTXFILTER _IOW('T', 209, unsigned int) |
48 | #define TUNGETIFF _IOR('T', 210, unsigned int) | 48 | #define TUNGETIFF _IOR('T', 210, unsigned int) |
49 | #define TUNGETSNDBUF _IOR('T', 211, int) | ||
50 | #define TUNSETSNDBUF _IOW('T', 212, int) | ||
49 | 51 | ||
50 | /* TUNSETIFF ifr flags */ | 52 | /* TUNSETIFF ifr flags */ |
51 | #define IFF_TUN 0x0001 | 53 | #define IFF_TUN 0x0001 |
diff --git a/include/linux/if_tunnel.h b/include/linux/if_tunnel.h index 82c43624c067..5a9aae4adb44 100644 --- a/include/linux/if_tunnel.h +++ b/include/linux/if_tunnel.h | |||
@@ -16,14 +16,14 @@ | |||
16 | #define SIOCDELPRL (SIOCDEVPRIVATE + 6) | 16 | #define SIOCDELPRL (SIOCDEVPRIVATE + 6) |
17 | #define SIOCCHGPRL (SIOCDEVPRIVATE + 7) | 17 | #define SIOCCHGPRL (SIOCDEVPRIVATE + 7) |
18 | 18 | ||
19 | #define GRE_CSUM __constant_htons(0x8000) | 19 | #define GRE_CSUM __cpu_to_be16(0x8000) |
20 | #define GRE_ROUTING __constant_htons(0x4000) | 20 | #define GRE_ROUTING __cpu_to_be16(0x4000) |
21 | #define GRE_KEY __constant_htons(0x2000) | 21 | #define GRE_KEY __cpu_to_be16(0x2000) |
22 | #define GRE_SEQ __constant_htons(0x1000) | 22 | #define GRE_SEQ __cpu_to_be16(0x1000) |
23 | #define GRE_STRICT __constant_htons(0x0800) | 23 | #define GRE_STRICT __cpu_to_be16(0x0800) |
24 | #define GRE_REC __constant_htons(0x0700) | 24 | #define GRE_REC __cpu_to_be16(0x0700) |
25 | #define GRE_FLAGS __constant_htons(0x00F8) | 25 | #define GRE_FLAGS __cpu_to_be16(0x00F8) |
26 | #define GRE_VERSION __constant_htons(0x0007) | 26 | #define GRE_VERSION __cpu_to_be16(0x0007) |
27 | 27 | ||
28 | struct ip_tunnel_parm | 28 | struct ip_tunnel_parm |
29 | { | 29 | { |
diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h index 06fcdb45106b..acef2a770b6b 100644 --- a/include/linux/inetdevice.h +++ b/include/linux/inetdevice.h | |||
@@ -108,6 +108,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev) | |||
108 | #define IN_DEV_ARPFILTER(in_dev) IN_DEV_ORCONF((in_dev), ARPFILTER) | 108 | #define IN_DEV_ARPFILTER(in_dev) IN_DEV_ORCONF((in_dev), ARPFILTER) |
109 | #define IN_DEV_ARP_ANNOUNCE(in_dev) IN_DEV_MAXCONF((in_dev), ARP_ANNOUNCE) | 109 | #define IN_DEV_ARP_ANNOUNCE(in_dev) IN_DEV_MAXCONF((in_dev), ARP_ANNOUNCE) |
110 | #define IN_DEV_ARP_IGNORE(in_dev) IN_DEV_MAXCONF((in_dev), ARP_IGNORE) | 110 | #define IN_DEV_ARP_IGNORE(in_dev) IN_DEV_MAXCONF((in_dev), ARP_IGNORE) |
111 | #define IN_DEV_ARP_NOTIFY(in_dev) IN_DEV_MAXCONF((in_dev), ARP_NOTIFY) | ||
111 | 112 | ||
112 | struct in_ifaddr | 113 | struct in_ifaddr |
113 | { | 114 | { |
diff --git a/include/linux/mroute.h b/include/linux/mroute.h index 8a455694d682..0d45b4e8d367 100644 --- a/include/linux/mroute.h +++ b/include/linux/mroute.h | |||
@@ -193,6 +193,9 @@ struct vif_device | |||
193 | struct mfc_cache | 193 | struct mfc_cache |
194 | { | 194 | { |
195 | struct mfc_cache *next; /* Next entry on cache line */ | 195 | struct mfc_cache *next; /* Next entry on cache line */ |
196 | #ifdef CONFIG_NET_NS | ||
197 | struct net *mfc_net; | ||
198 | #endif | ||
196 | __be32 mfc_mcastgrp; /* Group the entry belongs to */ | 199 | __be32 mfc_mcastgrp; /* Group the entry belongs to */ |
197 | __be32 mfc_origin; /* Source of packet */ | 200 | __be32 mfc_origin; /* Source of packet */ |
198 | vifi_t mfc_parent; /* Source interface */ | 201 | vifi_t mfc_parent; /* Source interface */ |
@@ -215,6 +218,18 @@ struct mfc_cache | |||
215 | } mfc_un; | 218 | } mfc_un; |
216 | }; | 219 | }; |
217 | 220 | ||
221 | static inline | ||
222 | struct net *mfc_net(const struct mfc_cache *mfc) | ||
223 | { | ||
224 | return read_pnet(&mfc->mfc_net); | ||
225 | } | ||
226 | |||
227 | static inline | ||
228 | void mfc_net_set(struct mfc_cache *mfc, struct net *net) | ||
229 | { | ||
230 | write_pnet(&mfc->mfc_net, hold_net(net)); | ||
231 | } | ||
232 | |||
218 | #define MFC_STATIC 1 | 233 | #define MFC_STATIC 1 |
219 | #define MFC_NOTIFY 2 | 234 | #define MFC_NOTIFY 2 |
220 | 235 | ||
@@ -241,7 +256,8 @@ struct mfc_cache | |||
241 | 256 | ||
242 | #ifdef __KERNEL__ | 257 | #ifdef __KERNEL__ |
243 | struct rtmsg; | 258 | struct rtmsg; |
244 | extern int ipmr_get_route(struct sk_buff *skb, struct rtmsg *rtm, int nowait); | 259 | extern int ipmr_get_route(struct net *net, struct sk_buff *skb, |
260 | struct rtmsg *rtm, int nowait); | ||
245 | #endif | 261 | #endif |
246 | 262 | ||
247 | #endif | 263 | #endif |
diff --git a/include/linux/ncp_no.h b/include/linux/ncp_no.h index f56a696a7cc6..cddaa48fb182 100644 --- a/include/linux/ncp_no.h +++ b/include/linux/ncp_no.h | |||
@@ -2,18 +2,18 @@ | |||
2 | #define _NCP_NO | 2 | #define _NCP_NO |
3 | 3 | ||
4 | /* these define the attribute byte as seen by NCP */ | 4 | /* these define the attribute byte as seen by NCP */ |
5 | #define aRONLY (__constant_cpu_to_le32(1)) | 5 | #define aRONLY (__cpu_to_le32(1)) |
6 | #define aHIDDEN (__constant_cpu_to_le32(2)) | 6 | #define aHIDDEN (__cpu_to_le32(2)) |
7 | #define aSYSTEM (__constant_cpu_to_le32(4)) | 7 | #define aSYSTEM (__cpu_to_le32(4)) |
8 | #define aEXECUTE (__constant_cpu_to_le32(8)) | 8 | #define aEXECUTE (__cpu_to_le32(8)) |
9 | #define aDIR (__constant_cpu_to_le32(0x10)) | 9 | #define aDIR (__cpu_to_le32(0x10)) |
10 | #define aARCH (__constant_cpu_to_le32(0x20)) | 10 | #define aARCH (__cpu_to_le32(0x20)) |
11 | #define aSHARED (__constant_cpu_to_le32(0x80)) | 11 | #define aSHARED (__cpu_to_le32(0x80)) |
12 | #define aDONTSUBALLOCATE (__constant_cpu_to_le32(1L<<11)) | 12 | #define aDONTSUBALLOCATE (__cpu_to_le32(1L<<11)) |
13 | #define aTRANSACTIONAL (__constant_cpu_to_le32(1L<<12)) | 13 | #define aTRANSACTIONAL (__cpu_to_le32(1L<<12)) |
14 | #define aPURGE (__constant_cpu_to_le32(1L<<16)) | 14 | #define aPURGE (__cpu_to_le32(1L<<16)) |
15 | #define aRENAMEINHIBIT (__constant_cpu_to_le32(1L<<17)) | 15 | #define aRENAMEINHIBIT (__cpu_to_le32(1L<<17)) |
16 | #define aDELETEINHIBIT (__constant_cpu_to_le32(1L<<18)) | 16 | #define aDELETEINHIBIT (__cpu_to_le32(1L<<18)) |
17 | #define aDONTCOMPRESS (__constant_cpu_to_le32(1L<<27)) | 17 | #define aDONTCOMPRESS (__cpu_to_le32(1L<<27)) |
18 | 18 | ||
19 | #endif /* _NCP_NO */ | 19 | #endif /* _NCP_NO */ |
diff --git a/include/linux/neighbour.h b/include/linux/neighbour.h index 8730d5dae1bc..12c9de138451 100644 --- a/include/linux/neighbour.h +++ b/include/linux/neighbour.h | |||
@@ -31,6 +31,7 @@ enum | |||
31 | * Neighbor Cache Entry Flags | 31 | * Neighbor Cache Entry Flags |
32 | */ | 32 | */ |
33 | 33 | ||
34 | #define NTF_USE 0x01 | ||
34 | #define NTF_PROXY 0x08 /* == ATF_PUBL */ | 35 | #define NTF_PROXY 0x08 /* == ATF_PUBL */ |
35 | #define NTF_ROUTER 0x80 | 36 | #define NTF_ROUTER 0x80 |
36 | 37 | ||
diff --git a/include/linux/net_tstamp.h b/include/linux/net_tstamp.h new file mode 100644 index 000000000000..a3b8546354ac --- /dev/null +++ b/include/linux/net_tstamp.h | |||
@@ -0,0 +1,104 @@ | |||
1 | /* | ||
2 | * Userspace API for hardware time stamping of network packets | ||
3 | * | ||
4 | * Copyright (C) 2008,2009 Intel Corporation | ||
5 | * Author: Patrick Ohly <patrick.ohly@intel.com> | ||
6 | * | ||
7 | */ | ||
8 | |||
9 | #ifndef _NET_TIMESTAMPING_H | ||
10 | #define _NET_TIMESTAMPING_H | ||
11 | |||
12 | #include <linux/socket.h> /* for SO_TIMESTAMPING */ | ||
13 | |||
14 | /* SO_TIMESTAMPING gets an integer bit field comprised of these values */ | ||
15 | enum { | ||
16 | SOF_TIMESTAMPING_TX_HARDWARE = (1<<0), | ||
17 | SOF_TIMESTAMPING_TX_SOFTWARE = (1<<1), | ||
18 | SOF_TIMESTAMPING_RX_HARDWARE = (1<<2), | ||
19 | SOF_TIMESTAMPING_RX_SOFTWARE = (1<<3), | ||
20 | SOF_TIMESTAMPING_SOFTWARE = (1<<4), | ||
21 | SOF_TIMESTAMPING_SYS_HARDWARE = (1<<5), | ||
22 | SOF_TIMESTAMPING_RAW_HARDWARE = (1<<6), | ||
23 | SOF_TIMESTAMPING_MASK = | ||
24 | (SOF_TIMESTAMPING_RAW_HARDWARE - 1) | | ||
25 | SOF_TIMESTAMPING_RAW_HARDWARE | ||
26 | }; | ||
27 | |||
28 | /** | ||
29 | * struct hwtstamp_config - %SIOCSHWTSTAMP parameter | ||
30 | * | ||
31 | * @flags: no flags defined right now, must be zero | ||
32 | * @tx_type: one of HWTSTAMP_TX_* | ||
33 | * @rx_type: one of one of HWTSTAMP_FILTER_* | ||
34 | * | ||
35 | * %SIOCSHWTSTAMP expects a &struct ifreq with a ifr_data pointer to | ||
36 | * this structure. dev_ifsioc() in the kernel takes care of the | ||
37 | * translation between 32 bit userspace and 64 bit kernel. The | ||
38 | * structure is intentionally chosen so that it has the same layout on | ||
39 | * 32 and 64 bit systems, don't break this! | ||
40 | */ | ||
41 | struct hwtstamp_config { | ||
42 | int flags; | ||
43 | int tx_type; | ||
44 | int rx_filter; | ||
45 | }; | ||
46 | |||
47 | /* possible values for hwtstamp_config->tx_type */ | ||
48 | enum { | ||
49 | /* | ||
50 | * No outgoing packet will need hardware time stamping; | ||
51 | * should a packet arrive which asks for it, no hardware | ||
52 | * time stamping will be done. | ||
53 | */ | ||
54 | HWTSTAMP_TX_OFF, | ||
55 | |||
56 | /* | ||
57 | * Enables hardware time stamping for outgoing packets; | ||
58 | * the sender of the packet decides which are to be | ||
59 | * time stamped by setting %SOF_TIMESTAMPING_TX_SOFTWARE | ||
60 | * before sending the packet. | ||
61 | */ | ||
62 | HWTSTAMP_TX_ON, | ||
63 | }; | ||
64 | |||
65 | /* possible values for hwtstamp_config->rx_filter */ | ||
66 | enum { | ||
67 | /* time stamp no incoming packet at all */ | ||
68 | HWTSTAMP_FILTER_NONE, | ||
69 | |||
70 | /* time stamp any incoming packet */ | ||
71 | HWTSTAMP_FILTER_ALL, | ||
72 | |||
73 | /* return value: time stamp all packets requested plus some others */ | ||
74 | HWTSTAMP_FILTER_SOME, | ||
75 | |||
76 | /* PTP v1, UDP, any kind of event packet */ | ||
77 | HWTSTAMP_FILTER_PTP_V1_L4_EVENT, | ||
78 | /* PTP v1, UDP, Sync packet */ | ||
79 | HWTSTAMP_FILTER_PTP_V1_L4_SYNC, | ||
80 | /* PTP v1, UDP, Delay_req packet */ | ||
81 | HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ, | ||
82 | /* PTP v2, UDP, any kind of event packet */ | ||
83 | HWTSTAMP_FILTER_PTP_V2_L4_EVENT, | ||
84 | /* PTP v2, UDP, Sync packet */ | ||
85 | HWTSTAMP_FILTER_PTP_V2_L4_SYNC, | ||
86 | /* PTP v2, UDP, Delay_req packet */ | ||
87 | HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ, | ||
88 | |||
89 | /* 802.AS1, Ethernet, any kind of event packet */ | ||
90 | HWTSTAMP_FILTER_PTP_V2_L2_EVENT, | ||
91 | /* 802.AS1, Ethernet, Sync packet */ | ||
92 | HWTSTAMP_FILTER_PTP_V2_L2_SYNC, | ||
93 | /* 802.AS1, Ethernet, Delay_req packet */ | ||
94 | HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ, | ||
95 | |||
96 | /* PTP v2/802.AS1, any layer, any kind of event packet */ | ||
97 | HWTSTAMP_FILTER_PTP_V2_EVENT, | ||
98 | /* PTP v2/802.AS1, any layer, Sync packet */ | ||
99 | HWTSTAMP_FILTER_PTP_V2_SYNC, | ||
100 | /* PTP v2/802.AS1, any layer, Delay_req packet */ | ||
101 | HWTSTAMP_FILTER_PTP_V2_DELAY_REQ, | ||
102 | }; | ||
103 | |||
104 | #endif /* _NET_TIMESTAMPING_H */ | ||
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 659366734f3f..493b065f76d7 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -96,7 +96,7 @@ struct wireless_dev; | |||
96 | * Compute the worst case header length according to the protocols | 96 | * Compute the worst case header length according to the protocols |
97 | * used. | 97 | * used. |
98 | */ | 98 | */ |
99 | 99 | ||
100 | #if defined(CONFIG_WLAN_80211) || defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE) | 100 | #if defined(CONFIG_WLAN_80211) || defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE) |
101 | # if defined(CONFIG_MAC80211_MESH) | 101 | # if defined(CONFIG_MAC80211_MESH) |
102 | # define LL_MAX_HEADER 128 | 102 | # define LL_MAX_HEADER 128 |
@@ -124,7 +124,7 @@ struct wireless_dev; | |||
124 | * Network device statistics. Akin to the 2.0 ether stats but | 124 | * Network device statistics. Akin to the 2.0 ether stats but |
125 | * with byte counters. | 125 | * with byte counters. |
126 | */ | 126 | */ |
127 | 127 | ||
128 | struct net_device_stats | 128 | struct net_device_stats |
129 | { | 129 | { |
130 | unsigned long rx_packets; /* total packets received */ | 130 | unsigned long rx_packets; /* total packets received */ |
@@ -285,7 +285,7 @@ enum netdev_state_t | |||
285 | 285 | ||
286 | /* | 286 | /* |
287 | * This structure holds at boot time configured netdevice settings. They | 287 | * This structure holds at boot time configured netdevice settings. They |
288 | * are then used in the device probing. | 288 | * are then used in the device probing. |
289 | */ | 289 | */ |
290 | struct netdev_boot_setup { | 290 | struct netdev_boot_setup { |
291 | char name[IFNAMSIZ]; | 291 | char name[IFNAMSIZ]; |
@@ -314,6 +314,9 @@ struct napi_struct { | |||
314 | spinlock_t poll_lock; | 314 | spinlock_t poll_lock; |
315 | int poll_owner; | 315 | int poll_owner; |
316 | #endif | 316 | #endif |
317 | |||
318 | unsigned int gro_count; | ||
319 | |||
317 | struct net_device *dev; | 320 | struct net_device *dev; |
318 | struct list_head dev_list; | 321 | struct list_head dev_list; |
319 | struct sk_buff *gro_list; | 322 | struct sk_buff *gro_list; |
@@ -740,7 +743,7 @@ struct net_device | |||
740 | void *dsa_ptr; /* dsa specific data */ | 743 | void *dsa_ptr; /* dsa specific data */ |
741 | #endif | 744 | #endif |
742 | void *atalk_ptr; /* AppleTalk link */ | 745 | void *atalk_ptr; /* AppleTalk link */ |
743 | void *ip_ptr; /* IPv4 specific data */ | 746 | void *ip_ptr; /* IPv4 specific data */ |
744 | void *dn_ptr; /* DECnet specific data */ | 747 | void *dn_ptr; /* DECnet specific data */ |
745 | void *ip6_ptr; /* IPv6 specific data */ | 748 | void *ip6_ptr; /* IPv6 specific data */ |
746 | void *ec_ptr; /* Econet specific data */ | 749 | void *ec_ptr; /* Econet specific data */ |
@@ -753,7 +756,7 @@ struct net_device | |||
753 | */ | 756 | */ |
754 | unsigned long last_rx; /* Time of last Rx */ | 757 | unsigned long last_rx; /* Time of last Rx */ |
755 | /* Interface address info used in eth_type_trans() */ | 758 | /* Interface address info used in eth_type_trans() */ |
756 | unsigned char dev_addr[MAX_ADDR_LEN]; /* hw address, (before bcast | 759 | unsigned char dev_addr[MAX_ADDR_LEN]; /* hw address, (before bcast |
757 | because most packets are unicast) */ | 760 | because most packets are unicast) */ |
758 | 761 | ||
759 | unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */ | 762 | unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */ |
@@ -984,6 +987,9 @@ void netif_napi_add(struct net_device *dev, struct napi_struct *napi, | |||
984 | void netif_napi_del(struct napi_struct *napi); | 987 | void netif_napi_del(struct napi_struct *napi); |
985 | 988 | ||
986 | struct napi_gro_cb { | 989 | struct napi_gro_cb { |
990 | /* This indicates where we are processing relative to skb->data. */ | ||
991 | int data_offset; | ||
992 | |||
987 | /* This is non-zero if the packet may be of the same flow. */ | 993 | /* This is non-zero if the packet may be of the same flow. */ |
988 | int same_flow; | 994 | int same_flow; |
989 | 995 | ||
@@ -1088,6 +1094,36 @@ extern int dev_restart(struct net_device *dev); | |||
1088 | #ifdef CONFIG_NETPOLL_TRAP | 1094 | #ifdef CONFIG_NETPOLL_TRAP |
1089 | extern int netpoll_trap(void); | 1095 | extern int netpoll_trap(void); |
1090 | #endif | 1096 | #endif |
1097 | extern void *skb_gro_header(struct sk_buff *skb, unsigned int hlen); | ||
1098 | extern int skb_gro_receive(struct sk_buff **head, | ||
1099 | struct sk_buff *skb); | ||
1100 | |||
1101 | static inline unsigned int skb_gro_offset(const struct sk_buff *skb) | ||
1102 | { | ||
1103 | return NAPI_GRO_CB(skb)->data_offset; | ||
1104 | } | ||
1105 | |||
1106 | static inline unsigned int skb_gro_len(const struct sk_buff *skb) | ||
1107 | { | ||
1108 | return skb->len - NAPI_GRO_CB(skb)->data_offset; | ||
1109 | } | ||
1110 | |||
1111 | static inline void skb_gro_pull(struct sk_buff *skb, unsigned int len) | ||
1112 | { | ||
1113 | NAPI_GRO_CB(skb)->data_offset += len; | ||
1114 | } | ||
1115 | |||
1116 | static inline void skb_gro_reset_offset(struct sk_buff *skb) | ||
1117 | { | ||
1118 | NAPI_GRO_CB(skb)->data_offset = 0; | ||
1119 | } | ||
1120 | |||
1121 | static inline void *skb_gro_mac_header(struct sk_buff *skb) | ||
1122 | { | ||
1123 | return skb_mac_header(skb) < skb->data ? skb_mac_header(skb) : | ||
1124 | page_address(skb_shinfo(skb)->frags[0].page) + | ||
1125 | skb_shinfo(skb)->frags[0].page_offset; | ||
1126 | } | ||
1091 | 1127 | ||
1092 | static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev, | 1128 | static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev, |
1093 | unsigned short type, | 1129 | unsigned short type, |
@@ -1376,12 +1412,15 @@ extern int netif_receive_skb(struct sk_buff *skb); | |||
1376 | extern void napi_gro_flush(struct napi_struct *napi); | 1412 | extern void napi_gro_flush(struct napi_struct *napi); |
1377 | extern int dev_gro_receive(struct napi_struct *napi, | 1413 | extern int dev_gro_receive(struct napi_struct *napi, |
1378 | struct sk_buff *skb); | 1414 | struct sk_buff *skb); |
1415 | extern int napi_skb_finish(int ret, struct sk_buff *skb); | ||
1379 | extern int napi_gro_receive(struct napi_struct *napi, | 1416 | extern int napi_gro_receive(struct napi_struct *napi, |
1380 | struct sk_buff *skb); | 1417 | struct sk_buff *skb); |
1381 | extern void napi_reuse_skb(struct napi_struct *napi, | 1418 | extern void napi_reuse_skb(struct napi_struct *napi, |
1382 | struct sk_buff *skb); | 1419 | struct sk_buff *skb); |
1383 | extern struct sk_buff * napi_fraginfo_skb(struct napi_struct *napi, | 1420 | extern struct sk_buff * napi_fraginfo_skb(struct napi_struct *napi, |
1384 | struct napi_gro_fraginfo *info); | 1421 | struct napi_gro_fraginfo *info); |
1422 | extern int napi_frags_finish(struct napi_struct *napi, | ||
1423 | struct sk_buff *skb, int ret); | ||
1385 | extern int napi_gro_frags(struct napi_struct *napi, | 1424 | extern int napi_gro_frags(struct napi_struct *napi, |
1386 | struct napi_gro_fraginfo *info); | 1425 | struct napi_gro_fraginfo *info); |
1387 | extern void netif_nit_deliver(struct sk_buff *skb); | 1426 | extern void netif_nit_deliver(struct sk_buff *skb); |
@@ -1575,56 +1614,6 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) | |||
1575 | return (1 << debug_value) - 1; | 1614 | return (1 << debug_value) - 1; |
1576 | } | 1615 | } |
1577 | 1616 | ||
1578 | /* Test if receive needs to be scheduled but only if up */ | ||
1579 | static inline int netif_rx_schedule_prep(struct napi_struct *napi) | ||
1580 | { | ||
1581 | return napi_schedule_prep(napi); | ||
1582 | } | ||
1583 | |||
1584 | /* Add interface to tail of rx poll list. This assumes that _prep has | ||
1585 | * already been called and returned 1. | ||
1586 | */ | ||
1587 | static inline void __netif_rx_schedule(struct napi_struct *napi) | ||
1588 | { | ||
1589 | __napi_schedule(napi); | ||
1590 | } | ||
1591 | |||
1592 | /* Try to reschedule poll. Called by irq handler. */ | ||
1593 | |||
1594 | static inline void netif_rx_schedule(struct napi_struct *napi) | ||
1595 | { | ||
1596 | if (netif_rx_schedule_prep(napi)) | ||
1597 | __netif_rx_schedule(napi); | ||
1598 | } | ||
1599 | |||
1600 | /* Try to reschedule poll. Called by dev->poll() after netif_rx_complete(). */ | ||
1601 | static inline int netif_rx_reschedule(struct napi_struct *napi) | ||
1602 | { | ||
1603 | if (napi_schedule_prep(napi)) { | ||
1604 | __netif_rx_schedule(napi); | ||
1605 | return 1; | ||
1606 | } | ||
1607 | return 0; | ||
1608 | } | ||
1609 | |||
1610 | /* same as netif_rx_complete, except that local_irq_save(flags) | ||
1611 | * has already been issued | ||
1612 | */ | ||
1613 | static inline void __netif_rx_complete(struct napi_struct *napi) | ||
1614 | { | ||
1615 | __napi_complete(napi); | ||
1616 | } | ||
1617 | |||
1618 | /* Remove interface from poll list: it must be in the poll list | ||
1619 | * on current cpu. This primitive is called by dev->poll(), when | ||
1620 | * it completes the work. The device cannot be out of poll list at this | ||
1621 | * moment, it is BUG(). | ||
1622 | */ | ||
1623 | static inline void netif_rx_complete(struct napi_struct *napi) | ||
1624 | { | ||
1625 | napi_complete(napi); | ||
1626 | } | ||
1627 | |||
1628 | static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu) | 1617 | static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu) |
1629 | { | 1618 | { |
1630 | spin_lock(&txq->_xmit_lock); | 1619 | spin_lock(&txq->_xmit_lock); |
@@ -1875,7 +1864,7 @@ static inline int skb_bond_should_drop(struct sk_buff *skb) | |||
1875 | 1864 | ||
1876 | if (dev->priv_flags & IFF_SLAVE_INACTIVE) { | 1865 | if (dev->priv_flags & IFF_SLAVE_INACTIVE) { |
1877 | if ((dev->priv_flags & IFF_SLAVE_NEEDARP) && | 1866 | if ((dev->priv_flags & IFF_SLAVE_NEEDARP) && |
1878 | skb->protocol == __constant_htons(ETH_P_ARP)) | 1867 | skb->protocol == __cpu_to_be16(ETH_P_ARP)) |
1879 | return 0; | 1868 | return 0; |
1880 | 1869 | ||
1881 | if (master->priv_flags & IFF_MASTER_ALB) { | 1870 | if (master->priv_flags & IFF_MASTER_ALB) { |
@@ -1884,7 +1873,7 @@ static inline int skb_bond_should_drop(struct sk_buff *skb) | |||
1884 | return 0; | 1873 | return 0; |
1885 | } | 1874 | } |
1886 | if (master->priv_flags & IFF_MASTER_8023AD && | 1875 | if (master->priv_flags & IFF_MASTER_8023AD && |
1887 | skb->protocol == __constant_htons(ETH_P_SLOW)) | 1876 | skb->protocol == __cpu_to_be16(ETH_P_SLOW)) |
1888 | return 0; | 1877 | return 0; |
1889 | 1878 | ||
1890 | return 1; | 1879 | return 1; |
diff --git a/include/linux/netfilter_bridge.h b/include/linux/netfilter_bridge.h index 499aa9375901..f8105e54716a 100644 --- a/include/linux/netfilter_bridge.h +++ b/include/linux/netfilter_bridge.h | |||
@@ -59,9 +59,9 @@ static inline int nf_bridge_maybe_copy_header(struct sk_buff *skb) | |||
59 | static inline unsigned int nf_bridge_encap_header_len(const struct sk_buff *skb) | 59 | static inline unsigned int nf_bridge_encap_header_len(const struct sk_buff *skb) |
60 | { | 60 | { |
61 | switch (skb->protocol) { | 61 | switch (skb->protocol) { |
62 | case __constant_htons(ETH_P_8021Q): | 62 | case __cpu_to_be16(ETH_P_8021Q): |
63 | return VLAN_HLEN; | 63 | return VLAN_HLEN; |
64 | case __constant_htons(ETH_P_PPP_SES): | 64 | case __cpu_to_be16(ETH_P_PPP_SES): |
65 | return PPPOE_SES_HLEN; | 65 | return PPPOE_SES_HLEN; |
66 | default: | 66 | default: |
67 | return 0; | 67 | return 0; |
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index 51b09a1f46c3..1e6bf995435c 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
@@ -103,6 +103,7 @@ struct nlmsgerr | |||
103 | #define NETLINK_ADD_MEMBERSHIP 1 | 103 | #define NETLINK_ADD_MEMBERSHIP 1 |
104 | #define NETLINK_DROP_MEMBERSHIP 2 | 104 | #define NETLINK_DROP_MEMBERSHIP 2 |
105 | #define NETLINK_PKTINFO 3 | 105 | #define NETLINK_PKTINFO 3 |
106 | #define NETLINK_BROADCAST_ERROR 4 | ||
106 | 107 | ||
107 | struct nl_pktinfo | 108 | struct nl_pktinfo |
108 | { | 109 | { |
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h index e86ed59f9ad5..f6e56370ea65 100644 --- a/include/linux/nl80211.h +++ b/include/linux/nl80211.h | |||
@@ -47,7 +47,7 @@ | |||
47 | * @NL80211_CMD_SET_WIPHY: set wiphy parameters, needs %NL80211_ATTR_WIPHY or | 47 | * @NL80211_CMD_SET_WIPHY: set wiphy parameters, needs %NL80211_ATTR_WIPHY or |
48 | * %NL80211_ATTR_IFINDEX; can be used to set %NL80211_ATTR_WIPHY_NAME, | 48 | * %NL80211_ATTR_IFINDEX; can be used to set %NL80211_ATTR_WIPHY_NAME, |
49 | * %NL80211_ATTR_WIPHY_TXQ_PARAMS, %NL80211_ATTR_WIPHY_FREQ, and/or | 49 | * %NL80211_ATTR_WIPHY_TXQ_PARAMS, %NL80211_ATTR_WIPHY_FREQ, and/or |
50 | * %NL80211_ATTR_WIPHY_SEC_CHAN_OFFSET. | 50 | * %NL80211_ATTR_WIPHY_CHANNEL_TYPE. |
51 | * @NL80211_CMD_NEW_WIPHY: Newly created wiphy, response to get request | 51 | * @NL80211_CMD_NEW_WIPHY: Newly created wiphy, response to get request |
52 | * or rename notification. Has attributes %NL80211_ATTR_WIPHY and | 52 | * or rename notification. Has attributes %NL80211_ATTR_WIPHY and |
53 | * %NL80211_ATTR_WIPHY_NAME. | 53 | * %NL80211_ATTR_WIPHY_NAME. |
@@ -72,8 +72,8 @@ | |||
72 | * | 72 | * |
73 | * @NL80211_CMD_GET_KEY: Get sequence counter information for a key specified | 73 | * @NL80211_CMD_GET_KEY: Get sequence counter information for a key specified |
74 | * by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC. | 74 | * by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC. |
75 | * @NL80211_CMD_SET_KEY: Set key attributes %NL80211_ATTR_KEY_DEFAULT or | 75 | * @NL80211_CMD_SET_KEY: Set key attributes %NL80211_ATTR_KEY_DEFAULT, |
76 | * %NL80211_ATTR_KEY_THRESHOLD. | 76 | * %NL80211_ATTR_KEY_DEFAULT_MGMT, or %NL80211_ATTR_KEY_THRESHOLD. |
77 | * @NL80211_CMD_NEW_KEY: add a key with given %NL80211_ATTR_KEY_DATA, | 77 | * @NL80211_CMD_NEW_KEY: add a key with given %NL80211_ATTR_KEY_DATA, |
78 | * %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC and %NL80211_ATTR_KEY_CIPHER | 78 | * %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC and %NL80211_ATTR_KEY_CIPHER |
79 | * attributes. | 79 | * attributes. |
@@ -84,7 +84,7 @@ | |||
84 | * %NL80222_CMD_NEW_BEACON message) | 84 | * %NL80222_CMD_NEW_BEACON message) |
85 | * @NL80211_CMD_SET_BEACON: set the beacon on an access point interface | 85 | * @NL80211_CMD_SET_BEACON: set the beacon on an access point interface |
86 | * using the %NL80211_ATTR_BEACON_INTERVAL, %NL80211_ATTR_DTIM_PERIOD, | 86 | * using the %NL80211_ATTR_BEACON_INTERVAL, %NL80211_ATTR_DTIM_PERIOD, |
87 | * %NL80211_BEACON_HEAD and %NL80211_BEACON_TAIL attributes. | 87 | * %NL80211_ATTR_BEACON_HEAD and %NL80211_ATTR_BEACON_TAIL attributes. |
88 | * @NL80211_CMD_NEW_BEACON: add a new beacon to an access point interface, | 88 | * @NL80211_CMD_NEW_BEACON: add a new beacon to an access point interface, |
89 | * parameters are like for %NL80211_CMD_SET_BEACON. | 89 | * parameters are like for %NL80211_CMD_SET_BEACON. |
90 | * @NL80211_CMD_DEL_BEACON: remove the beacon, stop sending it | 90 | * @NL80211_CMD_DEL_BEACON: remove the beacon, stop sending it |
@@ -113,6 +113,8 @@ | |||
113 | * @NL80211_CMD_SET_BSS: Set BSS attributes for BSS identified by | 113 | * @NL80211_CMD_SET_BSS: Set BSS attributes for BSS identified by |
114 | * %NL80211_ATTR_IFINDEX. | 114 | * %NL80211_ATTR_IFINDEX. |
115 | * | 115 | * |
116 | * @NL80211_CMD_GET_REG: ask the wireless core to send us its currently set | ||
117 | * regulatory domain. | ||
116 | * @NL80211_CMD_SET_REG: Set current regulatory domain. CRDA sends this command | 118 | * @NL80211_CMD_SET_REG: Set current regulatory domain. CRDA sends this command |
117 | * after being queried by the kernel. CRDA replies by sending a regulatory | 119 | * after being queried by the kernel. CRDA replies by sending a regulatory |
118 | * domain structure which consists of %NL80211_ATTR_REG_ALPHA set to our | 120 | * domain structure which consists of %NL80211_ATTR_REG_ALPHA set to our |
@@ -133,6 +135,21 @@ | |||
133 | * @NL80211_CMD_SET_MESH_PARAMS: Set mesh networking properties for the | 135 | * @NL80211_CMD_SET_MESH_PARAMS: Set mesh networking properties for the |
134 | * interface identified by %NL80211_ATTR_IFINDEX | 136 | * interface identified by %NL80211_ATTR_IFINDEX |
135 | * | 137 | * |
138 | * @NL80211_CMD_SET_MGMT_EXTRA_IE: Set extra IEs for management frames. The | ||
139 | * interface is identified with %NL80211_ATTR_IFINDEX and the management | ||
140 | * frame subtype with %NL80211_ATTR_MGMT_SUBTYPE. The extra IE data to be | ||
141 | * added to the end of the specified management frame is specified with | ||
142 | * %NL80211_ATTR_IE. If the command succeeds, the requested data will be | ||
143 | * added to all specified management frames generated by | ||
144 | * kernel/firmware/driver. | ||
145 | * | ||
146 | * @NL80211_CMD_GET_SCAN: get scan results | ||
147 | * @NL80211_CMD_TRIGGER_SCAN: trigger a new scan with the given parameters | ||
148 | * @NL80211_CMD_NEW_SCAN_RESULTS: scan notification (as a reply to | ||
149 | * NL80211_CMD_GET_SCAN and on the "scan" multicast group) | ||
150 | * @NL80211_CMD_SCAN_ABORTED: scan was aborted, for unspecified reasons, | ||
151 | * partial scan results may be available | ||
152 | * | ||
136 | * @NL80211_CMD_MAX: highest used command number | 153 | * @NL80211_CMD_MAX: highest used command number |
137 | * @__NL80211_CMD_AFTER_LAST: internal use | 154 | * @__NL80211_CMD_AFTER_LAST: internal use |
138 | */ | 155 | */ |
@@ -178,6 +195,15 @@ enum nl80211_commands { | |||
178 | NL80211_CMD_GET_MESH_PARAMS, | 195 | NL80211_CMD_GET_MESH_PARAMS, |
179 | NL80211_CMD_SET_MESH_PARAMS, | 196 | NL80211_CMD_SET_MESH_PARAMS, |
180 | 197 | ||
198 | NL80211_CMD_SET_MGMT_EXTRA_IE, | ||
199 | |||
200 | NL80211_CMD_GET_REG, | ||
201 | |||
202 | NL80211_CMD_GET_SCAN, | ||
203 | NL80211_CMD_TRIGGER_SCAN, | ||
204 | NL80211_CMD_NEW_SCAN_RESULTS, | ||
205 | NL80211_CMD_SCAN_ABORTED, | ||
206 | |||
181 | /* add new commands above here */ | 207 | /* add new commands above here */ |
182 | 208 | ||
183 | /* used to define NL80211_CMD_MAX below */ | 209 | /* used to define NL80211_CMD_MAX below */ |
@@ -190,6 +216,7 @@ enum nl80211_commands { | |||
190 | * here | 216 | * here |
191 | */ | 217 | */ |
192 | #define NL80211_CMD_SET_BSS NL80211_CMD_SET_BSS | 218 | #define NL80211_CMD_SET_BSS NL80211_CMD_SET_BSS |
219 | #define NL80211_CMD_SET_MGMT_EXTRA_IE NL80211_CMD_SET_MGMT_EXTRA_IE | ||
193 | 220 | ||
194 | /** | 221 | /** |
195 | * enum nl80211_attrs - nl80211 netlink attributes | 222 | * enum nl80211_attrs - nl80211 netlink attributes |
@@ -284,6 +311,24 @@ enum nl80211_commands { | |||
284 | * supported interface types, each a flag attribute with the number | 311 | * supported interface types, each a flag attribute with the number |
285 | * of the interface mode. | 312 | * of the interface mode. |
286 | * | 313 | * |
314 | * @NL80211_ATTR_MGMT_SUBTYPE: Management frame subtype for | ||
315 | * %NL80211_CMD_SET_MGMT_EXTRA_IE. | ||
316 | * | ||
317 | * @NL80211_ATTR_IE: Information element(s) data (used, e.g., with | ||
318 | * %NL80211_CMD_SET_MGMT_EXTRA_IE). | ||
319 | * | ||
320 | * @NL80211_ATTR_MAX_NUM_SCAN_SSIDS: number of SSIDs you can scan with | ||
321 | * a single scan request, a wiphy attribute. | ||
322 | * | ||
323 | * @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz) | ||
324 | * @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive | ||
325 | * scanning and include a zero-length SSID (wildcard) for wildcard scan | ||
326 | * @NL80211_ATTR_SCAN_GENERATION: the scan generation increases whenever the | ||
327 | * scan result list changes (BSS expired or added) so that applications | ||
328 | * can verify that they got a single, consistent snapshot (when all dump | ||
329 | * messages carried the same generation number) | ||
330 | * @NL80211_ATTR_BSS: scan result BSS | ||
331 | * | ||
287 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 332 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
288 | * @__NL80211_ATTR_AFTER_LAST: internal use | 333 | * @__NL80211_ATTR_AFTER_LAST: internal use |
289 | */ | 334 | */ |
@@ -346,6 +391,18 @@ enum nl80211_attrs { | |||
346 | NL80211_ATTR_WIPHY_FREQ, | 391 | NL80211_ATTR_WIPHY_FREQ, |
347 | NL80211_ATTR_WIPHY_CHANNEL_TYPE, | 392 | NL80211_ATTR_WIPHY_CHANNEL_TYPE, |
348 | 393 | ||
394 | NL80211_ATTR_KEY_DEFAULT_MGMT, | ||
395 | |||
396 | NL80211_ATTR_MGMT_SUBTYPE, | ||
397 | NL80211_ATTR_IE, | ||
398 | |||
399 | NL80211_ATTR_MAX_NUM_SCAN_SSIDS, | ||
400 | |||
401 | NL80211_ATTR_SCAN_FREQUENCIES, | ||
402 | NL80211_ATTR_SCAN_SSIDS, | ||
403 | NL80211_ATTR_SCAN_GENERATION, | ||
404 | NL80211_ATTR_BSS, | ||
405 | |||
349 | /* add attributes here, update the policy in nl80211.c */ | 406 | /* add attributes here, update the policy in nl80211.c */ |
350 | 407 | ||
351 | __NL80211_ATTR_AFTER_LAST, | 408 | __NL80211_ATTR_AFTER_LAST, |
@@ -360,7 +417,9 @@ enum nl80211_attrs { | |||
360 | #define NL80211_ATTR_BSS_BASIC_RATES NL80211_ATTR_BSS_BASIC_RATES | 417 | #define NL80211_ATTR_BSS_BASIC_RATES NL80211_ATTR_BSS_BASIC_RATES |
361 | #define NL80211_ATTR_WIPHY_TXQ_PARAMS NL80211_ATTR_WIPHY_TXQ_PARAMS | 418 | #define NL80211_ATTR_WIPHY_TXQ_PARAMS NL80211_ATTR_WIPHY_TXQ_PARAMS |
362 | #define NL80211_ATTR_WIPHY_FREQ NL80211_ATTR_WIPHY_FREQ | 419 | #define NL80211_ATTR_WIPHY_FREQ NL80211_ATTR_WIPHY_FREQ |
363 | #define NL80211_ATTR_WIPHY_SEC_CHAN_OFFSET NL80211_ATTR_WIPHY_SEC_CHAN_OFFSET | 420 | #define NL80211_ATTR_WIPHY_CHANNEL_TYPE NL80211_ATTR_WIPHY_CHANNEL_TYPE |
421 | #define NL80211_ATTR_MGMT_SUBTYPE NL80211_ATTR_MGMT_SUBTYPE | ||
422 | #define NL80211_ATTR_IE NL80211_ATTR_IE | ||
364 | 423 | ||
365 | #define NL80211_MAX_SUPP_RATES 32 | 424 | #define NL80211_MAX_SUPP_RATES 32 |
366 | #define NL80211_MAX_SUPP_REG_RULES 32 | 425 | #define NL80211_MAX_SUPP_REG_RULES 32 |
@@ -412,12 +471,14 @@ enum nl80211_iftype { | |||
412 | * @NL80211_STA_FLAG_SHORT_PREAMBLE: station is capable of receiving frames | 471 | * @NL80211_STA_FLAG_SHORT_PREAMBLE: station is capable of receiving frames |
413 | * with short barker preamble | 472 | * with short barker preamble |
414 | * @NL80211_STA_FLAG_WME: station is WME/QoS capable | 473 | * @NL80211_STA_FLAG_WME: station is WME/QoS capable |
474 | * @NL80211_STA_FLAG_MFP: station uses management frame protection | ||
415 | */ | 475 | */ |
416 | enum nl80211_sta_flags { | 476 | enum nl80211_sta_flags { |
417 | __NL80211_STA_FLAG_INVALID, | 477 | __NL80211_STA_FLAG_INVALID, |
418 | NL80211_STA_FLAG_AUTHORIZED, | 478 | NL80211_STA_FLAG_AUTHORIZED, |
419 | NL80211_STA_FLAG_SHORT_PREAMBLE, | 479 | NL80211_STA_FLAG_SHORT_PREAMBLE, |
420 | NL80211_STA_FLAG_WME, | 480 | NL80211_STA_FLAG_WME, |
481 | NL80211_STA_FLAG_MFP, | ||
421 | 482 | ||
422 | /* keep last */ | 483 | /* keep last */ |
423 | __NL80211_STA_FLAG_AFTER_LAST, | 484 | __NL80211_STA_FLAG_AFTER_LAST, |
@@ -465,6 +526,9 @@ enum nl80211_rate_info { | |||
465 | * @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm) | 526 | * @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm) |
466 | * @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute | 527 | * @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute |
467 | * containing info as possible, see &enum nl80211_sta_info_txrate. | 528 | * containing info as possible, see &enum nl80211_sta_info_txrate. |
529 | * @NL80211_STA_INFO_RX_PACKETS: total received packet (u32, from this station) | ||
530 | * @NL80211_STA_INFO_TX_PACKETS: total transmitted packets (u32, to this | ||
531 | * station) | ||
468 | */ | 532 | */ |
469 | enum nl80211_sta_info { | 533 | enum nl80211_sta_info { |
470 | __NL80211_STA_INFO_INVALID, | 534 | __NL80211_STA_INFO_INVALID, |
@@ -476,6 +540,8 @@ enum nl80211_sta_info { | |||
476 | NL80211_STA_INFO_PLINK_STATE, | 540 | NL80211_STA_INFO_PLINK_STATE, |
477 | NL80211_STA_INFO_SIGNAL, | 541 | NL80211_STA_INFO_SIGNAL, |
478 | NL80211_STA_INFO_TX_BITRATE, | 542 | NL80211_STA_INFO_TX_BITRATE, |
543 | NL80211_STA_INFO_RX_PACKETS, | ||
544 | NL80211_STA_INFO_TX_PACKETS, | ||
479 | 545 | ||
480 | /* keep last */ | 546 | /* keep last */ |
481 | __NL80211_STA_INFO_AFTER_LAST, | 547 | __NL80211_STA_INFO_AFTER_LAST, |
@@ -811,4 +877,38 @@ enum nl80211_channel_type { | |||
811 | NL80211_CHAN_HT40MINUS, | 877 | NL80211_CHAN_HT40MINUS, |
812 | NL80211_CHAN_HT40PLUS | 878 | NL80211_CHAN_HT40PLUS |
813 | }; | 879 | }; |
880 | |||
881 | /** | ||
882 | * enum nl80211_bss - netlink attributes for a BSS | ||
883 | * | ||
884 | * @__NL80211_BSS_INVALID: invalid | ||
885 | * @NL80211_BSS_FREQUENCY: frequency in MHz (u32) | ||
886 | * @NL80211_BSS_TSF: TSF of the received probe response/beacon (u64) | ||
887 | * @NL80211_BSS_BEACON_INTERVAL: beacon interval of the (I)BSS (u16) | ||
888 | * @NL80211_BSS_CAPABILITY: capability field (CPU order, u16) | ||
889 | * @NL80211_BSS_INFORMATION_ELEMENTS: binary attribute containing the | ||
890 | * raw information elements from the probe response/beacon (bin) | ||
891 | * @NL80211_BSS_SIGNAL_MBM: signal strength of probe response/beacon | ||
892 | * in mBm (100 * dBm) (s32) | ||
893 | * @NL80211_BSS_SIGNAL_UNSPEC: signal strength of the probe response/beacon | ||
894 | * in unspecified units, scaled to 0..100 (u8) | ||
895 | * @__NL80211_BSS_AFTER_LAST: internal | ||
896 | * @NL80211_BSS_MAX: highest BSS attribute | ||
897 | */ | ||
898 | enum nl80211_bss { | ||
899 | __NL80211_BSS_INVALID, | ||
900 | NL80211_BSS_BSSID, | ||
901 | NL80211_BSS_FREQUENCY, | ||
902 | NL80211_BSS_TSF, | ||
903 | NL80211_BSS_BEACON_INTERVAL, | ||
904 | NL80211_BSS_CAPABILITY, | ||
905 | NL80211_BSS_INFORMATION_ELEMENTS, | ||
906 | NL80211_BSS_SIGNAL_MBM, | ||
907 | NL80211_BSS_SIGNAL_UNSPEC, | ||
908 | |||
909 | /* keep last */ | ||
910 | __NL80211_BSS_AFTER_LAST, | ||
911 | NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1 | ||
912 | }; | ||
913 | |||
814 | #endif /* __LINUX_NL80211_H */ | 914 | #endif /* __LINUX_NL80211_H */ |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index aca8c458aa8a..3f9687a71e32 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -834,6 +834,8 @@ | |||
834 | #define PCI_DEVICE_ID_PROMISE_20276 0x5275 | 834 | #define PCI_DEVICE_ID_PROMISE_20276 0x5275 |
835 | #define PCI_DEVICE_ID_PROMISE_20277 0x7275 | 835 | #define PCI_DEVICE_ID_PROMISE_20277 0x7275 |
836 | 836 | ||
837 | #define PCI_VENDOR_ID_FOXCONN 0x105b | ||
838 | |||
837 | #define PCI_VENDOR_ID_UMC 0x1060 | 839 | #define PCI_VENDOR_ID_UMC 0x1060 |
838 | #define PCI_DEVICE_ID_UMC_UM8673F 0x0101 | 840 | #define PCI_DEVICE_ID_UMC_UM8673F 0x0101 |
839 | #define PCI_DEVICE_ID_UMC_UM8886BF 0x673a | 841 | #define PCI_DEVICE_ID_UMC_UM8886BF 0x673a |
@@ -1971,6 +1973,8 @@ | |||
1971 | 1973 | ||
1972 | #define PCI_VENDOR_ID_SAMSUNG 0x144d | 1974 | #define PCI_VENDOR_ID_SAMSUNG 0x144d |
1973 | 1975 | ||
1976 | #define PCI_VENDOR_ID_AMBIT 0x1468 | ||
1977 | |||
1974 | #define PCI_VENDOR_ID_MYRICOM 0x14c1 | 1978 | #define PCI_VENDOR_ID_MYRICOM 0x14c1 |
1975 | 1979 | ||
1976 | #define PCI_VENDOR_ID_TITAN 0x14D2 | 1980 | #define PCI_VENDOR_ID_TITAN 0x14D2 |
@@ -2215,6 +2219,8 @@ | |||
2215 | 2219 | ||
2216 | #define PCI_VENDOR_ID_TOPSPIN 0x1867 | 2220 | #define PCI_VENDOR_ID_TOPSPIN 0x1867 |
2217 | 2221 | ||
2222 | #define PCI_VENDOR_ID_SILAN 0x1904 | ||
2223 | |||
2218 | #define PCI_VENDOR_ID_TDI 0x192E | 2224 | #define PCI_VENDOR_ID_TDI 0x192E |
2219 | #define PCI_DEVICE_ID_TDI_EHCI 0x0101 | 2225 | #define PCI_DEVICE_ID_TDI_EHCI 0x0101 |
2220 | 2226 | ||
diff --git a/include/linux/pim.h b/include/linux/pim.h index 1ba0661561a4..252bf6644c51 100644 --- a/include/linux/pim.h +++ b/include/linux/pim.h | |||
@@ -4,14 +4,14 @@ | |||
4 | #include <asm/byteorder.h> | 4 | #include <asm/byteorder.h> |
5 | 5 | ||
6 | /* Message types - V1 */ | 6 | /* Message types - V1 */ |
7 | #define PIM_V1_VERSION __constant_htonl(0x10000000) | 7 | #define PIM_V1_VERSION cpu_to_be32(0x10000000) |
8 | #define PIM_V1_REGISTER 1 | 8 | #define PIM_V1_REGISTER 1 |
9 | 9 | ||
10 | /* Message types - V2 */ | 10 | /* Message types - V2 */ |
11 | #define PIM_VERSION 2 | 11 | #define PIM_VERSION 2 |
12 | #define PIM_REGISTER 1 | 12 | #define PIM_REGISTER 1 |
13 | 13 | ||
14 | #define PIM_NULL_REGISTER __constant_htonl(0x40000000) | 14 | #define PIM_NULL_REGISTER cpu_to_be32(0x40000000) |
15 | 15 | ||
16 | /* PIMv2 register message header layout (ietf-draft-idmr-pimvsm-v2-00.ps */ | 16 | /* PIMv2 register message header layout (ietf-draft-idmr-pimvsm-v2-00.ps */ |
17 | struct pimreghdr | 17 | struct pimreghdr |
diff --git a/include/linux/ppp_channel.h b/include/linux/ppp_channel.h index a942892d6dfe..9d64bdf14770 100644 --- a/include/linux/ppp_channel.h +++ b/include/linux/ppp_channel.h | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/list.h> | 22 | #include <linux/list.h> |
23 | #include <linux/skbuff.h> | 23 | #include <linux/skbuff.h> |
24 | #include <linux/poll.h> | 24 | #include <linux/poll.h> |
25 | #include <net/net_namespace.h> | ||
25 | 26 | ||
26 | struct ppp_channel; | 27 | struct ppp_channel; |
27 | 28 | ||
@@ -56,6 +57,9 @@ extern void ppp_input(struct ppp_channel *, struct sk_buff *); | |||
56 | that we may have missed a packet. */ | 57 | that we may have missed a packet. */ |
57 | extern void ppp_input_error(struct ppp_channel *, int code); | 58 | extern void ppp_input_error(struct ppp_channel *, int code); |
58 | 59 | ||
60 | /* Attach a channel to a given PPP unit in specified net. */ | ||
61 | extern int ppp_register_net_channel(struct net *, struct ppp_channel *); | ||
62 | |||
59 | /* Attach a channel to a given PPP unit. */ | 63 | /* Attach a channel to a given PPP unit. */ |
60 | extern int ppp_register_channel(struct ppp_channel *); | 64 | extern int ppp_register_channel(struct ppp_channel *); |
61 | 65 | ||
diff --git a/include/linux/rds.h b/include/linux/rds.h new file mode 100644 index 000000000000..d91dc91f5443 --- /dev/null +++ b/include/linux/rds.h | |||
@@ -0,0 +1,250 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2008 Oracle. All rights reserved. | ||
3 | * | ||
4 | * This software is available to you under a choice of one of two | ||
5 | * licenses. You may choose to be licensed under the terms of the GNU | ||
6 | * General Public License (GPL) Version 2, available from the file | ||
7 | * COPYING in the main directory of this source tree, or the | ||
8 | * OpenIB.org BSD license below: | ||
9 | * | ||
10 | * Redistribution and use in source and binary forms, with or | ||
11 | * without modification, are permitted provided that the following | ||
12 | * conditions are met: | ||
13 | * | ||
14 | * - Redistributions of source code must retain the above | ||
15 | * copyright notice, this list of conditions and the following | ||
16 | * disclaimer. | ||
17 | * | ||
18 | * - Redistributions in binary form must reproduce the above | ||
19 | * copyright notice, this list of conditions and the following | ||
20 | * disclaimer in the documentation and/or other materials | ||
21 | * provided with the distribution. | ||
22 | * | ||
23 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
24 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
25 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
26 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
27 | * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
28 | * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
29 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
30 | * SOFTWARE. | ||
31 | * | ||
32 | */ | ||
33 | |||
34 | #ifndef _LINUX_RDS_H | ||
35 | #define _LINUX_RDS_H | ||
36 | |||
37 | #include <linux/types.h> | ||
38 | |||
39 | /* These sparse annotated types shouldn't be in any user | ||
40 | * visible header file. We should clean this up rather | ||
41 | * than kludging around them. */ | ||
42 | #ifndef __KERNEL__ | ||
43 | #define __be16 u_int16_t | ||
44 | #define __be32 u_int32_t | ||
45 | #define __be64 u_int64_t | ||
46 | #endif | ||
47 | |||
48 | #define RDS_IB_ABI_VERSION 0x301 | ||
49 | |||
50 | /* | ||
51 | * setsockopt/getsockopt for SOL_RDS | ||
52 | */ | ||
53 | #define RDS_CANCEL_SENT_TO 1 | ||
54 | #define RDS_GET_MR 2 | ||
55 | #define RDS_FREE_MR 3 | ||
56 | /* deprecated: RDS_BARRIER 4 */ | ||
57 | #define RDS_RECVERR 5 | ||
58 | #define RDS_CONG_MONITOR 6 | ||
59 | |||
60 | /* | ||
61 | * Control message types for SOL_RDS. | ||
62 | * | ||
63 | * CMSG_RDMA_ARGS (sendmsg) | ||
64 | * Request a RDMA transfer to/from the specified | ||
65 | * memory ranges. | ||
66 | * The cmsg_data is a struct rds_rdma_args. | ||
67 | * RDS_CMSG_RDMA_DEST (recvmsg, sendmsg) | ||
68 | * Kernel informs application about intended | ||
69 | * source/destination of a RDMA transfer | ||
70 | * RDS_CMSG_RDMA_MAP (sendmsg) | ||
71 | * Application asks kernel to map the given | ||
72 | * memory range into a IB MR, and send the | ||
73 | * R_Key along in an RDS extension header. | ||
74 | * The cmsg_data is a struct rds_get_mr_args, | ||
75 | * the same as for the GET_MR setsockopt. | ||
76 | * RDS_CMSG_RDMA_STATUS (recvmsg) | ||
77 | * Returns the status of a completed RDMA operation. | ||
78 | */ | ||
79 | #define RDS_CMSG_RDMA_ARGS 1 | ||
80 | #define RDS_CMSG_RDMA_DEST 2 | ||
81 | #define RDS_CMSG_RDMA_MAP 3 | ||
82 | #define RDS_CMSG_RDMA_STATUS 4 | ||
83 | #define RDS_CMSG_CONG_UPDATE 5 | ||
84 | |||
85 | #define RDS_INFO_FIRST 10000 | ||
86 | #define RDS_INFO_COUNTERS 10000 | ||
87 | #define RDS_INFO_CONNECTIONS 10001 | ||
88 | /* 10002 aka RDS_INFO_FLOWS is deprecated */ | ||
89 | #define RDS_INFO_SEND_MESSAGES 10003 | ||
90 | #define RDS_INFO_RETRANS_MESSAGES 10004 | ||
91 | #define RDS_INFO_RECV_MESSAGES 10005 | ||
92 | #define RDS_INFO_SOCKETS 10006 | ||
93 | #define RDS_INFO_TCP_SOCKETS 10007 | ||
94 | #define RDS_INFO_IB_CONNECTIONS 10008 | ||
95 | #define RDS_INFO_CONNECTION_STATS 10009 | ||
96 | #define RDS_INFO_IWARP_CONNECTIONS 10010 | ||
97 | #define RDS_INFO_LAST 10010 | ||
98 | |||
99 | struct rds_info_counter { | ||
100 | u_int8_t name[32]; | ||
101 | u_int64_t value; | ||
102 | } __attribute__((packed)); | ||
103 | |||
104 | #define RDS_INFO_CONNECTION_FLAG_SENDING 0x01 | ||
105 | #define RDS_INFO_CONNECTION_FLAG_CONNECTING 0x02 | ||
106 | #define RDS_INFO_CONNECTION_FLAG_CONNECTED 0x04 | ||
107 | |||
108 | #define TRANSNAMSIZ 16 | ||
109 | |||
110 | struct rds_info_connection { | ||
111 | u_int64_t next_tx_seq; | ||
112 | u_int64_t next_rx_seq; | ||
113 | __be32 laddr; | ||
114 | __be32 faddr; | ||
115 | u_int8_t transport[TRANSNAMSIZ]; /* null term ascii */ | ||
116 | u_int8_t flags; | ||
117 | } __attribute__((packed)); | ||
118 | |||
119 | struct rds_info_flow { | ||
120 | __be32 laddr; | ||
121 | __be32 faddr; | ||
122 | u_int32_t bytes; | ||
123 | __be16 lport; | ||
124 | __be16 fport; | ||
125 | } __attribute__((packed)); | ||
126 | |||
127 | #define RDS_INFO_MESSAGE_FLAG_ACK 0x01 | ||
128 | #define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02 | ||
129 | |||
130 | struct rds_info_message { | ||
131 | u_int64_t seq; | ||
132 | u_int32_t len; | ||
133 | __be32 laddr; | ||
134 | __be32 faddr; | ||
135 | __be16 lport; | ||
136 | __be16 fport; | ||
137 | u_int8_t flags; | ||
138 | } __attribute__((packed)); | ||
139 | |||
140 | struct rds_info_socket { | ||
141 | u_int32_t sndbuf; | ||
142 | __be32 bound_addr; | ||
143 | __be32 connected_addr; | ||
144 | __be16 bound_port; | ||
145 | __be16 connected_port; | ||
146 | u_int32_t rcvbuf; | ||
147 | u_int64_t inum; | ||
148 | } __attribute__((packed)); | ||
149 | |||
150 | #define RDS_IB_GID_LEN 16 | ||
151 | struct rds_info_rdma_connection { | ||
152 | __be32 src_addr; | ||
153 | __be32 dst_addr; | ||
154 | uint8_t src_gid[RDS_IB_GID_LEN]; | ||
155 | uint8_t dst_gid[RDS_IB_GID_LEN]; | ||
156 | |||
157 | uint32_t max_send_wr; | ||
158 | uint32_t max_recv_wr; | ||
159 | uint32_t max_send_sge; | ||
160 | uint32_t rdma_mr_max; | ||
161 | uint32_t rdma_mr_size; | ||
162 | }; | ||
163 | |||
164 | /* | ||
165 | * Congestion monitoring. | ||
166 | * Congestion control in RDS happens at the host connection | ||
167 | * level by exchanging a bitmap marking congested ports. | ||
168 | * By default, a process sleeping in poll() is always woken | ||
169 | * up when the congestion map is updated. | ||
170 | * With explicit monitoring, an application can have more | ||
171 | * fine-grained control. | ||
172 | * The application installs a 64bit mask value in the socket, | ||
173 | * where each bit corresponds to a group of ports. | ||
174 | * When a congestion update arrives, RDS checks the set of | ||
175 | * ports that are now uncongested against the list bit mask | ||
176 | * installed in the socket, and if they overlap, we queue a | ||
177 | * cong_notification on the socket. | ||
178 | * | ||
179 | * To install the congestion monitor bitmask, use RDS_CONG_MONITOR | ||
180 | * with the 64bit mask. | ||
181 | * Congestion updates are received via RDS_CMSG_CONG_UPDATE | ||
182 | * control messages. | ||
183 | * | ||
184 | * The correspondence between bits and ports is | ||
185 | * 1 << (portnum % 64) | ||
186 | */ | ||
187 | #define RDS_CONG_MONITOR_SIZE 64 | ||
188 | #define RDS_CONG_MONITOR_BIT(port) (((unsigned int) port) % RDS_CONG_MONITOR_SIZE) | ||
189 | #define RDS_CONG_MONITOR_MASK(port) (1ULL << RDS_CONG_MONITOR_BIT(port)) | ||
190 | |||
191 | /* | ||
192 | * RDMA related types | ||
193 | */ | ||
194 | |||
195 | /* | ||
196 | * This encapsulates a remote memory location. | ||
197 | * In the current implementation, it contains the R_Key | ||
198 | * of the remote memory region, and the offset into it | ||
199 | * (so that the application does not have to worry about | ||
200 | * alignment). | ||
201 | */ | ||
202 | typedef u_int64_t rds_rdma_cookie_t; | ||
203 | |||
204 | struct rds_iovec { | ||
205 | u_int64_t addr; | ||
206 | u_int64_t bytes; | ||
207 | }; | ||
208 | |||
209 | struct rds_get_mr_args { | ||
210 | struct rds_iovec vec; | ||
211 | u_int64_t cookie_addr; | ||
212 | uint64_t flags; | ||
213 | }; | ||
214 | |||
215 | struct rds_free_mr_args { | ||
216 | rds_rdma_cookie_t cookie; | ||
217 | u_int64_t flags; | ||
218 | }; | ||
219 | |||
220 | struct rds_rdma_args { | ||
221 | rds_rdma_cookie_t cookie; | ||
222 | struct rds_iovec remote_vec; | ||
223 | u_int64_t local_vec_addr; | ||
224 | u_int64_t nr_local; | ||
225 | u_int64_t flags; | ||
226 | u_int64_t user_token; | ||
227 | }; | ||
228 | |||
229 | struct rds_rdma_notify { | ||
230 | u_int64_t user_token; | ||
231 | int32_t status; | ||
232 | }; | ||
233 | |||
234 | #define RDS_RDMA_SUCCESS 0 | ||
235 | #define RDS_RDMA_REMOTE_ERROR 1 | ||
236 | #define RDS_RDMA_CANCELED 2 | ||
237 | #define RDS_RDMA_DROPPED 3 | ||
238 | #define RDS_RDMA_OTHER_ERROR 4 | ||
239 | |||
240 | /* | ||
241 | * Common set of flags for all RDMA related structs | ||
242 | */ | ||
243 | #define RDS_RDMA_READWRITE 0x0001 | ||
244 | #define RDS_RDMA_FENCE 0x0002 /* use FENCE for immediate send */ | ||
245 | #define RDS_RDMA_INVALIDATE 0x0004 /* invalidate R_Key after freeing MR */ | ||
246 | #define RDS_RDMA_USE_ONCE 0x0008 /* free MR after use */ | ||
247 | #define RDS_RDMA_DONTWAIT 0x0010 /* Don't wait in SET_BARRIER */ | ||
248 | #define RDS_RDMA_NOTIFY_ME 0x0020 /* Notify when operation completes */ | ||
249 | |||
250 | #endif /* IB_RDS_H */ | ||
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h index 1e5f6730ff31..35a07c830f79 100644 --- a/include/linux/rtnetlink.h +++ b/include/linux/rtnetlink.h | |||
@@ -622,8 +622,8 @@ static __inline__ int rtattr_strcmp(const struct rtattr *rta, const char *str) | |||
622 | 622 | ||
623 | extern int rtnetlink_send(struct sk_buff *skb, struct net *net, u32 pid, u32 group, int echo); | 623 | extern int rtnetlink_send(struct sk_buff *skb, struct net *net, u32 pid, u32 group, int echo); |
624 | extern int rtnl_unicast(struct sk_buff *skb, struct net *net, u32 pid); | 624 | extern int rtnl_unicast(struct sk_buff *skb, struct net *net, u32 pid); |
625 | extern int rtnl_notify(struct sk_buff *skb, struct net *net, u32 pid, u32 group, | 625 | extern void rtnl_notify(struct sk_buff *skb, struct net *net, u32 pid, |
626 | struct nlmsghdr *nlh, gfp_t flags); | 626 | u32 group, struct nlmsghdr *nlh, gfp_t flags); |
627 | extern void rtnl_set_sk_err(struct net *net, u32 group, int error); | 627 | extern void rtnl_set_sk_err(struct net *net, u32 group, int error); |
628 | extern int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics); | 628 | extern int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics); |
629 | extern int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst, | 629 | extern int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst, |
diff --git a/include/linux/sctp.h b/include/linux/sctp.h index 8ba1c320f975..c2731bfe04d8 100644 --- a/include/linux/sctp.h +++ b/include/linux/sctp.h | |||
@@ -60,7 +60,7 @@ typedef struct sctphdr { | |||
60 | __be16 source; | 60 | __be16 source; |
61 | __be16 dest; | 61 | __be16 dest; |
62 | __be32 vtag; | 62 | __be32 vtag; |
63 | __be32 checksum; | 63 | __le32 checksum; |
64 | } __attribute__((packed)) sctp_sctphdr_t; | 64 | } __attribute__((packed)) sctp_sctphdr_t; |
65 | 65 | ||
66 | #ifdef __KERNEL__ | 66 | #ifdef __KERNEL__ |
@@ -172,35 +172,35 @@ typedef struct sctp_paramhdr { | |||
172 | typedef enum { | 172 | typedef enum { |
173 | 173 | ||
174 | /* RFC 2960 Section 3.3.5 */ | 174 | /* RFC 2960 Section 3.3.5 */ |
175 | SCTP_PARAM_HEARTBEAT_INFO = __constant_htons(1), | 175 | SCTP_PARAM_HEARTBEAT_INFO = cpu_to_be16(1), |
176 | /* RFC 2960 Section 3.3.2.1 */ | 176 | /* RFC 2960 Section 3.3.2.1 */ |
177 | SCTP_PARAM_IPV4_ADDRESS = __constant_htons(5), | 177 | SCTP_PARAM_IPV4_ADDRESS = cpu_to_be16(5), |
178 | SCTP_PARAM_IPV6_ADDRESS = __constant_htons(6), | 178 | SCTP_PARAM_IPV6_ADDRESS = cpu_to_be16(6), |
179 | SCTP_PARAM_STATE_COOKIE = __constant_htons(7), | 179 | SCTP_PARAM_STATE_COOKIE = cpu_to_be16(7), |
180 | SCTP_PARAM_UNRECOGNIZED_PARAMETERS = __constant_htons(8), | 180 | SCTP_PARAM_UNRECOGNIZED_PARAMETERS = cpu_to_be16(8), |
181 | SCTP_PARAM_COOKIE_PRESERVATIVE = __constant_htons(9), | 181 | SCTP_PARAM_COOKIE_PRESERVATIVE = cpu_to_be16(9), |
182 | SCTP_PARAM_HOST_NAME_ADDRESS = __constant_htons(11), | 182 | SCTP_PARAM_HOST_NAME_ADDRESS = cpu_to_be16(11), |
183 | SCTP_PARAM_SUPPORTED_ADDRESS_TYPES = __constant_htons(12), | 183 | SCTP_PARAM_SUPPORTED_ADDRESS_TYPES = cpu_to_be16(12), |
184 | SCTP_PARAM_ECN_CAPABLE = __constant_htons(0x8000), | 184 | SCTP_PARAM_ECN_CAPABLE = cpu_to_be16(0x8000), |
185 | 185 | ||
186 | /* AUTH Extension Section 3 */ | 186 | /* AUTH Extension Section 3 */ |
187 | SCTP_PARAM_RANDOM = __constant_htons(0x8002), | 187 | SCTP_PARAM_RANDOM = cpu_to_be16(0x8002), |
188 | SCTP_PARAM_CHUNKS = __constant_htons(0x8003), | 188 | SCTP_PARAM_CHUNKS = cpu_to_be16(0x8003), |
189 | SCTP_PARAM_HMAC_ALGO = __constant_htons(0x8004), | 189 | SCTP_PARAM_HMAC_ALGO = cpu_to_be16(0x8004), |
190 | 190 | ||
191 | /* Add-IP: Supported Extensions, Section 4.2 */ | 191 | /* Add-IP: Supported Extensions, Section 4.2 */ |
192 | SCTP_PARAM_SUPPORTED_EXT = __constant_htons(0x8008), | 192 | SCTP_PARAM_SUPPORTED_EXT = cpu_to_be16(0x8008), |
193 | 193 | ||
194 | /* PR-SCTP Sec 3.1 */ | 194 | /* PR-SCTP Sec 3.1 */ |
195 | SCTP_PARAM_FWD_TSN_SUPPORT = __constant_htons(0xc000), | 195 | SCTP_PARAM_FWD_TSN_SUPPORT = cpu_to_be16(0xc000), |
196 | 196 | ||
197 | /* Add-IP Extension. Section 3.2 */ | 197 | /* Add-IP Extension. Section 3.2 */ |
198 | SCTP_PARAM_ADD_IP = __constant_htons(0xc001), | 198 | SCTP_PARAM_ADD_IP = cpu_to_be16(0xc001), |
199 | SCTP_PARAM_DEL_IP = __constant_htons(0xc002), | 199 | SCTP_PARAM_DEL_IP = cpu_to_be16(0xc002), |
200 | SCTP_PARAM_ERR_CAUSE = __constant_htons(0xc003), | 200 | SCTP_PARAM_ERR_CAUSE = cpu_to_be16(0xc003), |
201 | SCTP_PARAM_SET_PRIMARY = __constant_htons(0xc004), | 201 | SCTP_PARAM_SET_PRIMARY = cpu_to_be16(0xc004), |
202 | SCTP_PARAM_SUCCESS_REPORT = __constant_htons(0xc005), | 202 | SCTP_PARAM_SUCCESS_REPORT = cpu_to_be16(0xc005), |
203 | SCTP_PARAM_ADAPTATION_LAYER_IND = __constant_htons(0xc006), | 203 | SCTP_PARAM_ADAPTATION_LAYER_IND = cpu_to_be16(0xc006), |
204 | 204 | ||
205 | } sctp_param_t; /* enum */ | 205 | } sctp_param_t; /* enum */ |
206 | 206 | ||
@@ -212,13 +212,13 @@ typedef enum { | |||
212 | * | 212 | * |
213 | */ | 213 | */ |
214 | typedef enum { | 214 | typedef enum { |
215 | SCTP_PARAM_ACTION_DISCARD = __constant_htons(0x0000), | 215 | SCTP_PARAM_ACTION_DISCARD = cpu_to_be16(0x0000), |
216 | SCTP_PARAM_ACTION_DISCARD_ERR = __constant_htons(0x4000), | 216 | SCTP_PARAM_ACTION_DISCARD_ERR = cpu_to_be16(0x4000), |
217 | SCTP_PARAM_ACTION_SKIP = __constant_htons(0x8000), | 217 | SCTP_PARAM_ACTION_SKIP = cpu_to_be16(0x8000), |
218 | SCTP_PARAM_ACTION_SKIP_ERR = __constant_htons(0xc000), | 218 | SCTP_PARAM_ACTION_SKIP_ERR = cpu_to_be16(0xc000), |
219 | } sctp_param_action_t; | 219 | } sctp_param_action_t; |
220 | 220 | ||
221 | enum { SCTP_PARAM_ACTION_MASK = __constant_htons(0xc000), }; | 221 | enum { SCTP_PARAM_ACTION_MASK = cpu_to_be16(0xc000), }; |
222 | 222 | ||
223 | /* RFC 2960 Section 3.3.1 Payload Data (DATA) (0) */ | 223 | /* RFC 2960 Section 3.3.1 Payload Data (DATA) (0) */ |
224 | 224 | ||
@@ -457,17 +457,17 @@ typedef struct sctp_operr_chunk { | |||
457 | */ | 457 | */ |
458 | typedef enum { | 458 | typedef enum { |
459 | 459 | ||
460 | SCTP_ERROR_NO_ERROR = __constant_htons(0x00), | 460 | SCTP_ERROR_NO_ERROR = cpu_to_be16(0x00), |
461 | SCTP_ERROR_INV_STRM = __constant_htons(0x01), | 461 | SCTP_ERROR_INV_STRM = cpu_to_be16(0x01), |
462 | SCTP_ERROR_MISS_PARAM = __constant_htons(0x02), | 462 | SCTP_ERROR_MISS_PARAM = cpu_to_be16(0x02), |
463 | SCTP_ERROR_STALE_COOKIE = __constant_htons(0x03), | 463 | SCTP_ERROR_STALE_COOKIE = cpu_to_be16(0x03), |
464 | SCTP_ERROR_NO_RESOURCE = __constant_htons(0x04), | 464 | SCTP_ERROR_NO_RESOURCE = cpu_to_be16(0x04), |
465 | SCTP_ERROR_DNS_FAILED = __constant_htons(0x05), | 465 | SCTP_ERROR_DNS_FAILED = cpu_to_be16(0x05), |
466 | SCTP_ERROR_UNKNOWN_CHUNK = __constant_htons(0x06), | 466 | SCTP_ERROR_UNKNOWN_CHUNK = cpu_to_be16(0x06), |
467 | SCTP_ERROR_INV_PARAM = __constant_htons(0x07), | 467 | SCTP_ERROR_INV_PARAM = cpu_to_be16(0x07), |
468 | SCTP_ERROR_UNKNOWN_PARAM = __constant_htons(0x08), | 468 | SCTP_ERROR_UNKNOWN_PARAM = cpu_to_be16(0x08), |
469 | SCTP_ERROR_NO_DATA = __constant_htons(0x09), | 469 | SCTP_ERROR_NO_DATA = cpu_to_be16(0x09), |
470 | SCTP_ERROR_COOKIE_IN_SHUTDOWN = __constant_htons(0x0a), | 470 | SCTP_ERROR_COOKIE_IN_SHUTDOWN = cpu_to_be16(0x0a), |
471 | 471 | ||
472 | 472 | ||
473 | /* SCTP Implementation Guide: | 473 | /* SCTP Implementation Guide: |
@@ -476,9 +476,9 @@ typedef enum { | |||
476 | * 13 Protocol Violation | 476 | * 13 Protocol Violation |
477 | */ | 477 | */ |
478 | 478 | ||
479 | SCTP_ERROR_RESTART = __constant_htons(0x0b), | 479 | SCTP_ERROR_RESTART = cpu_to_be16(0x0b), |
480 | SCTP_ERROR_USER_ABORT = __constant_htons(0x0c), | 480 | SCTP_ERROR_USER_ABORT = cpu_to_be16(0x0c), |
481 | SCTP_ERROR_PROTO_VIOLATION = __constant_htons(0x0d), | 481 | SCTP_ERROR_PROTO_VIOLATION = cpu_to_be16(0x0d), |
482 | 482 | ||
483 | /* ADDIP Section 3.3 New Error Causes | 483 | /* ADDIP Section 3.3 New Error Causes |
484 | * | 484 | * |
@@ -493,11 +493,11 @@ typedef enum { | |||
493 | * 0x0103 Association Aborted due to illegal ASCONF-ACK | 493 | * 0x0103 Association Aborted due to illegal ASCONF-ACK |
494 | * 0x0104 Request refused - no authorization. | 494 | * 0x0104 Request refused - no authorization. |
495 | */ | 495 | */ |
496 | SCTP_ERROR_DEL_LAST_IP = __constant_htons(0x0100), | 496 | SCTP_ERROR_DEL_LAST_IP = cpu_to_be16(0x0100), |
497 | SCTP_ERROR_RSRC_LOW = __constant_htons(0x0101), | 497 | SCTP_ERROR_RSRC_LOW = cpu_to_be16(0x0101), |
498 | SCTP_ERROR_DEL_SRC_IP = __constant_htons(0x0102), | 498 | SCTP_ERROR_DEL_SRC_IP = cpu_to_be16(0x0102), |
499 | SCTP_ERROR_ASCONF_ACK = __constant_htons(0x0103), | 499 | SCTP_ERROR_ASCONF_ACK = cpu_to_be16(0x0103), |
500 | SCTP_ERROR_REQ_REFUSED = __constant_htons(0x0104), | 500 | SCTP_ERROR_REQ_REFUSED = cpu_to_be16(0x0104), |
501 | 501 | ||
502 | /* AUTH Section 4. New Error Cause | 502 | /* AUTH Section 4. New Error Cause |
503 | * | 503 | * |
@@ -509,7 +509,7 @@ typedef enum { | |||
509 | * -------------------------------------------------------------- | 509 | * -------------------------------------------------------------- |
510 | * 0x0105 Unsupported HMAC Identifier | 510 | * 0x0105 Unsupported HMAC Identifier |
511 | */ | 511 | */ |
512 | SCTP_ERROR_UNSUP_HMAC = __constant_htons(0x0105) | 512 | SCTP_ERROR_UNSUP_HMAC = cpu_to_be16(0x0105) |
513 | } sctp_error_t; | 513 | } sctp_error_t; |
514 | 514 | ||
515 | 515 | ||
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 9dcf956ad18a..1f659e8c2b88 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -29,9 +29,6 @@ | |||
29 | #include <linux/dmaengine.h> | 29 | #include <linux/dmaengine.h> |
30 | #include <linux/hrtimer.h> | 30 | #include <linux/hrtimer.h> |
31 | 31 | ||
32 | #define HAVE_ALLOC_SKB /* For the drivers to know */ | ||
33 | #define HAVE_ALIGNABLE_SKB /* Ditto 8) */ | ||
34 | |||
35 | /* Don't change this without changing skb_csum_unnecessary! */ | 32 | /* Don't change this without changing skb_csum_unnecessary! */ |
36 | #define CHECKSUM_NONE 0 | 33 | #define CHECKSUM_NONE 0 |
37 | #define CHECKSUM_UNNECESSARY 1 | 34 | #define CHECKSUM_UNNECESSARY 1 |
@@ -135,6 +132,55 @@ struct skb_frag_struct { | |||
135 | __u32 size; | 132 | __u32 size; |
136 | }; | 133 | }; |
137 | 134 | ||
135 | #define HAVE_HW_TIME_STAMP | ||
136 | |||
137 | /** | ||
138 | * struct skb_shared_hwtstamps - hardware time stamps | ||
139 | * @hwtstamp: hardware time stamp transformed into duration | ||
140 | * since arbitrary point in time | ||
141 | * @syststamp: hwtstamp transformed to system time base | ||
142 | * | ||
143 | * Software time stamps generated by ktime_get_real() are stored in | ||
144 | * skb->tstamp. The relation between the different kinds of time | ||
145 | * stamps is as follows: | ||
146 | * | ||
147 | * syststamp and tstamp can be compared against each other in | ||
148 | * arbitrary combinations. The accuracy of a | ||
149 | * syststamp/tstamp/"syststamp from other device" comparison is | ||
150 | * limited by the accuracy of the transformation into system time | ||
151 | * base. This depends on the device driver and its underlying | ||
152 | * hardware. | ||
153 | * | ||
154 | * hwtstamps can only be compared against other hwtstamps from | ||
155 | * the same device. | ||
156 | * | ||
157 | * This structure is attached to packets as part of the | ||
158 | * &skb_shared_info. Use skb_hwtstamps() to get a pointer. | ||
159 | */ | ||
160 | struct skb_shared_hwtstamps { | ||
161 | ktime_t hwtstamp; | ||
162 | ktime_t syststamp; | ||
163 | }; | ||
164 | |||
165 | /** | ||
166 | * struct skb_shared_tx - instructions for time stamping of outgoing packets | ||
167 | * @hardware: generate hardware time stamp | ||
168 | * @software: generate software time stamp | ||
169 | * @in_progress: device driver is going to provide | ||
170 | * hardware time stamp | ||
171 | * | ||
172 | * These flags are attached to packets as part of the | ||
173 | * &skb_shared_info. Use skb_tx() to get a pointer. | ||
174 | */ | ||
175 | union skb_shared_tx { | ||
176 | struct { | ||
177 | __u8 hardware:1, | ||
178 | software:1, | ||
179 | in_progress:1; | ||
180 | }; | ||
181 | __u8 flags; | ||
182 | }; | ||
183 | |||
138 | /* This data is invariant across clones and lives at | 184 | /* This data is invariant across clones and lives at |
139 | * the end of the header data, ie. at skb->end. | 185 | * the end of the header data, ie. at skb->end. |
140 | */ | 186 | */ |
@@ -146,10 +192,12 @@ struct skb_shared_info { | |||
146 | unsigned short gso_segs; | 192 | unsigned short gso_segs; |
147 | unsigned short gso_type; | 193 | unsigned short gso_type; |
148 | __be32 ip6_frag_id; | 194 | __be32 ip6_frag_id; |
195 | union skb_shared_tx tx_flags; | ||
149 | #ifdef CONFIG_HAS_DMA | 196 | #ifdef CONFIG_HAS_DMA |
150 | unsigned int num_dma_maps; | 197 | unsigned int num_dma_maps; |
151 | #endif | 198 | #endif |
152 | struct sk_buff *frag_list; | 199 | struct sk_buff *frag_list; |
200 | struct skb_shared_hwtstamps hwtstamps; | ||
153 | skb_frag_t frags[MAX_SKB_FRAGS]; | 201 | skb_frag_t frags[MAX_SKB_FRAGS]; |
154 | #ifdef CONFIG_HAS_DMA | 202 | #ifdef CONFIG_HAS_DMA |
155 | dma_addr_t dma_maps[MAX_SKB_FRAGS + 1]; | 203 | dma_addr_t dma_maps[MAX_SKB_FRAGS + 1]; |
@@ -459,6 +507,16 @@ static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) | |||
459 | /* Internal */ | 507 | /* Internal */ |
460 | #define skb_shinfo(SKB) ((struct skb_shared_info *)(skb_end_pointer(SKB))) | 508 | #define skb_shinfo(SKB) ((struct skb_shared_info *)(skb_end_pointer(SKB))) |
461 | 509 | ||
510 | static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) | ||
511 | { | ||
512 | return &skb_shinfo(skb)->hwtstamps; | ||
513 | } | ||
514 | |||
515 | static inline union skb_shared_tx *skb_tx(struct sk_buff *skb) | ||
516 | { | ||
517 | return &skb_shinfo(skb)->tx_flags; | ||
518 | } | ||
519 | |||
462 | /** | 520 | /** |
463 | * skb_queue_empty - check if a queue is empty | 521 | * skb_queue_empty - check if a queue is empty |
464 | * @list: queue head | 522 | * @list: queue head |
@@ -1278,7 +1336,7 @@ static inline int skb_network_offset(const struct sk_buff *skb) | |||
1278 | * The networking layer reserves some headroom in skb data (via | 1336 | * The networking layer reserves some headroom in skb data (via |
1279 | * dev_alloc_skb). This is used to avoid having to reallocate skb data when | 1337 | * dev_alloc_skb). This is used to avoid having to reallocate skb data when |
1280 | * the header has to grow. In the default case, if the header has to grow | 1338 | * the header has to grow. In the default case, if the header has to grow |
1281 | * 16 bytes or less we avoid the reallocation. | 1339 | * 32 bytes or less we avoid the reallocation. |
1282 | * | 1340 | * |
1283 | * Unfortunately this headroom changes the DMA alignment of the resulting | 1341 | * Unfortunately this headroom changes the DMA alignment of the resulting |
1284 | * network packet. As for NET_IP_ALIGN, this unaligned DMA is expensive | 1342 | * network packet. As for NET_IP_ALIGN, this unaligned DMA is expensive |
@@ -1286,11 +1344,11 @@ static inline int skb_network_offset(const struct sk_buff *skb) | |||
1286 | * perhaps setting it to a cacheline in size (since that will maintain | 1344 | * perhaps setting it to a cacheline in size (since that will maintain |
1287 | * cacheline alignment of the DMA). It must be a power of 2. | 1345 | * cacheline alignment of the DMA). It must be a power of 2. |
1288 | * | 1346 | * |
1289 | * Various parts of the networking layer expect at least 16 bytes of | 1347 | * Various parts of the networking layer expect at least 32 bytes of |
1290 | * headroom, you should not reduce this. | 1348 | * headroom, you should not reduce this. |
1291 | */ | 1349 | */ |
1292 | #ifndef NET_SKB_PAD | 1350 | #ifndef NET_SKB_PAD |
1293 | #define NET_SKB_PAD 16 | 1351 | #define NET_SKB_PAD 32 |
1294 | #endif | 1352 | #endif |
1295 | 1353 | ||
1296 | extern int ___pskb_trim(struct sk_buff *skb, unsigned int len); | 1354 | extern int ___pskb_trim(struct sk_buff *skb, unsigned int len); |
@@ -1678,8 +1736,6 @@ extern int skb_shift(struct sk_buff *tgt, struct sk_buff *skb, | |||
1678 | int shiftlen); | 1736 | int shiftlen); |
1679 | 1737 | ||
1680 | extern struct sk_buff *skb_segment(struct sk_buff *skb, int features); | 1738 | extern struct sk_buff *skb_segment(struct sk_buff *skb, int features); |
1681 | extern int skb_gro_receive(struct sk_buff **head, | ||
1682 | struct sk_buff *skb); | ||
1683 | 1739 | ||
1684 | static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, | 1740 | static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, |
1685 | int len, void *buffer) | 1741 | int len, void *buffer) |
@@ -1726,6 +1782,11 @@ static inline void skb_copy_to_linear_data_offset(struct sk_buff *skb, | |||
1726 | 1782 | ||
1727 | extern void skb_init(void); | 1783 | extern void skb_init(void); |
1728 | 1784 | ||
1785 | static inline ktime_t skb_get_ktime(const struct sk_buff *skb) | ||
1786 | { | ||
1787 | return skb->tstamp; | ||
1788 | } | ||
1789 | |||
1729 | /** | 1790 | /** |
1730 | * skb_get_timestamp - get timestamp from a skb | 1791 | * skb_get_timestamp - get timestamp from a skb |
1731 | * @skb: skb to get stamp from | 1792 | * @skb: skb to get stamp from |
@@ -1735,11 +1796,18 @@ extern void skb_init(void); | |||
1735 | * This function converts the offset back to a struct timeval and stores | 1796 | * This function converts the offset back to a struct timeval and stores |
1736 | * it in stamp. | 1797 | * it in stamp. |
1737 | */ | 1798 | */ |
1738 | static inline void skb_get_timestamp(const struct sk_buff *skb, struct timeval *stamp) | 1799 | static inline void skb_get_timestamp(const struct sk_buff *skb, |
1800 | struct timeval *stamp) | ||
1739 | { | 1801 | { |
1740 | *stamp = ktime_to_timeval(skb->tstamp); | 1802 | *stamp = ktime_to_timeval(skb->tstamp); |
1741 | } | 1803 | } |
1742 | 1804 | ||
1805 | static inline void skb_get_timestampns(const struct sk_buff *skb, | ||
1806 | struct timespec *stamp) | ||
1807 | { | ||
1808 | *stamp = ktime_to_timespec(skb->tstamp); | ||
1809 | } | ||
1810 | |||
1743 | static inline void __net_timestamp(struct sk_buff *skb) | 1811 | static inline void __net_timestamp(struct sk_buff *skb) |
1744 | { | 1812 | { |
1745 | skb->tstamp = ktime_get_real(); | 1813 | skb->tstamp = ktime_get_real(); |
@@ -1755,6 +1823,20 @@ static inline ktime_t net_invalid_timestamp(void) | |||
1755 | return ktime_set(0, 0); | 1823 | return ktime_set(0, 0); |
1756 | } | 1824 | } |
1757 | 1825 | ||
1826 | /** | ||
1827 | * skb_tstamp_tx - queue clone of skb with send time stamps | ||
1828 | * @orig_skb: the original outgoing packet | ||
1829 | * @hwtstamps: hardware time stamps, may be NULL if not available | ||
1830 | * | ||
1831 | * If the skb has a socket associated, then this function clones the | ||
1832 | * skb (thus sharing the actual data and optional structures), stores | ||
1833 | * the optional hardware time stamping information (if non NULL) or | ||
1834 | * generates a software time stamp (otherwise), then queues the clone | ||
1835 | * to the error queue of the socket. Errors are silently ignored. | ||
1836 | */ | ||
1837 | extern void skb_tstamp_tx(struct sk_buff *orig_skb, | ||
1838 | struct skb_shared_hwtstamps *hwtstamps); | ||
1839 | |||
1758 | extern __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len); | 1840 | extern __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len); |
1759 | extern __sum16 __skb_checksum_complete(struct sk_buff *skb); | 1841 | extern __sum16 __skb_checksum_complete(struct sk_buff *skb); |
1760 | 1842 | ||
@@ -1895,6 +1977,21 @@ static inline void skb_copy_queue_mapping(struct sk_buff *to, const struct sk_bu | |||
1895 | to->queue_mapping = from->queue_mapping; | 1977 | to->queue_mapping = from->queue_mapping; |
1896 | } | 1978 | } |
1897 | 1979 | ||
1980 | static inline void skb_record_rx_queue(struct sk_buff *skb, u16 rx_queue) | ||
1981 | { | ||
1982 | skb->queue_mapping = rx_queue + 1; | ||
1983 | } | ||
1984 | |||
1985 | static inline u16 skb_get_rx_queue(struct sk_buff *skb) | ||
1986 | { | ||
1987 | return skb->queue_mapping - 1; | ||
1988 | } | ||
1989 | |||
1990 | static inline bool skb_rx_queue_recorded(struct sk_buff *skb) | ||
1991 | { | ||
1992 | return (skb->queue_mapping != 0); | ||
1993 | } | ||
1994 | |||
1898 | #ifdef CONFIG_XFRM | 1995 | #ifdef CONFIG_XFRM |
1899 | static inline struct sec_path *skb_sec_path(struct sk_buff *skb) | 1996 | static inline struct sec_path *skb_sec_path(struct sk_buff *skb) |
1900 | { | 1997 | { |
diff --git a/include/linux/smsc911x.h b/include/linux/smsc911x.h index 1cbf0313adde..b32725075d71 100644 --- a/include/linux/smsc911x.h +++ b/include/linux/smsc911x.h | |||
@@ -43,5 +43,8 @@ struct smsc911x_platform_config { | |||
43 | /* Constants for flags */ | 43 | /* Constants for flags */ |
44 | #define SMSC911X_USE_16BIT (BIT(0)) | 44 | #define SMSC911X_USE_16BIT (BIT(0)) |
45 | #define SMSC911X_USE_32BIT (BIT(1)) | 45 | #define SMSC911X_USE_32BIT (BIT(1)) |
46 | #define SMSC911X_FORCE_INTERNAL_PHY (BIT(2)) | ||
47 | #define SMSC911X_FORCE_EXTERNAL_PHY (BIT(3)) | ||
48 | #define SMSC911X_SAVE_MAC_ADDRESS (BIT(4)) | ||
46 | 49 | ||
47 | #endif /* __LINUX_SMSC911X_H__ */ | 50 | #endif /* __LINUX_SMSC911X_H__ */ |
diff --git a/include/linux/socket.h b/include/linux/socket.h index 20fc4bbfca42..9c90dc403efc 100644 --- a/include/linux/socket.h +++ b/include/linux/socket.h | |||
@@ -179,6 +179,7 @@ struct ucred { | |||
179 | #define AF_ASH 18 /* Ash */ | 179 | #define AF_ASH 18 /* Ash */ |
180 | #define AF_ECONET 19 /* Acorn Econet */ | 180 | #define AF_ECONET 19 /* Acorn Econet */ |
181 | #define AF_ATMSVC 20 /* ATM SVCs */ | 181 | #define AF_ATMSVC 20 /* ATM SVCs */ |
182 | #define AF_RDS 21 /* RDS sockets */ | ||
182 | #define AF_SNA 22 /* Linux SNA Project (nutters!) */ | 183 | #define AF_SNA 22 /* Linux SNA Project (nutters!) */ |
183 | #define AF_IRDA 23 /* IRDA sockets */ | 184 | #define AF_IRDA 23 /* IRDA sockets */ |
184 | #define AF_PPPOX 24 /* PPPoX sockets */ | 185 | #define AF_PPPOX 24 /* PPPoX sockets */ |
@@ -217,6 +218,7 @@ struct ucred { | |||
217 | #define PF_ASH AF_ASH | 218 | #define PF_ASH AF_ASH |
218 | #define PF_ECONET AF_ECONET | 219 | #define PF_ECONET AF_ECONET |
219 | #define PF_ATMSVC AF_ATMSVC | 220 | #define PF_ATMSVC AF_ATMSVC |
221 | #define PF_RDS AF_RDS | ||
220 | #define PF_SNA AF_SNA | 222 | #define PF_SNA AF_SNA |
221 | #define PF_IRDA AF_IRDA | 223 | #define PF_IRDA AF_IRDA |
222 | #define PF_PPPOX AF_PPPOX | 224 | #define PF_PPPOX AF_PPPOX |
@@ -298,6 +300,7 @@ struct ucred { | |||
298 | #define SOL_PPPOL2TP 273 | 300 | #define SOL_PPPOL2TP 273 |
299 | #define SOL_BLUETOOTH 274 | 301 | #define SOL_BLUETOOTH 274 |
300 | #define SOL_PNPIPE 275 | 302 | #define SOL_PNPIPE 275 |
303 | #define SOL_RDS 276 | ||
301 | 304 | ||
302 | /* IPX options */ | 305 | /* IPX options */ |
303 | #define IPX_TYPE 1 | 306 | #define IPX_TYPE 1 |
diff --git a/include/linux/sockios.h b/include/linux/sockios.h index abef7596655a..241f179347d9 100644 --- a/include/linux/sockios.h +++ b/include/linux/sockios.h | |||
@@ -122,6 +122,9 @@ | |||
122 | #define SIOCBRADDIF 0x89a2 /* add interface to bridge */ | 122 | #define SIOCBRADDIF 0x89a2 /* add interface to bridge */ |
123 | #define SIOCBRDELIF 0x89a3 /* remove interface from bridge */ | 123 | #define SIOCBRDELIF 0x89a3 /* remove interface from bridge */ |
124 | 124 | ||
125 | /* hardware time stamping: parameters in linux/net_tstamp.h */ | ||
126 | #define SIOCSHWTSTAMP 0x89b0 | ||
127 | |||
125 | /* Device private ioctl calls */ | 128 | /* Device private ioctl calls */ |
126 | 129 | ||
127 | /* | 130 | /* |
diff --git a/include/linux/spi/libertas_spi.h b/include/linux/spi/libertas_spi.h new file mode 100644 index 000000000000..79506f5f9e67 --- /dev/null +++ b/include/linux/spi/libertas_spi.h | |||
@@ -0,0 +1,32 @@ | |||
1 | /* | ||
2 | * board-specific data for the libertas_spi driver. | ||
3 | * | ||
4 | * Copyright 2008 Analog Devices Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or (at | ||
9 | * your option) any later version. | ||
10 | */ | ||
11 | #ifndef _LIBERTAS_SPI_H_ | ||
12 | #define _LIBERTAS_SPI_H_ | ||
13 | |||
14 | struct spi_device; | ||
15 | |||
16 | struct libertas_spi_platform_data { | ||
17 | /* There are two ways to read data from the WLAN module's SPI | ||
18 | * interface. Setting 0 or 1 here controls which one is used. | ||
19 | * | ||
20 | * Usually you want to set use_dummy_writes = 1. | ||
21 | * However, if that doesn't work or if you are using a slow SPI clock | ||
22 | * speed, you may want to use 0 here. */ | ||
23 | u16 use_dummy_writes; | ||
24 | |||
25 | /* GPIO number to use as chip select */ | ||
26 | u16 gpio_cs; | ||
27 | |||
28 | /* Board specific setup/teardown */ | ||
29 | int (*setup)(struct spi_device *spi); | ||
30 | int (*teardown)(struct spi_device *spi); | ||
31 | }; | ||
32 | #endif | ||
diff --git a/include/linux/ssb/ssb_driver_chipcommon.h b/include/linux/ssb/ssb_driver_chipcommon.h index 7d7e03dcf77c..d3b1d18922f2 100644 --- a/include/linux/ssb/ssb_driver_chipcommon.h +++ b/include/linux/ssb/ssb_driver_chipcommon.h | |||
@@ -181,6 +181,16 @@ | |||
181 | #define SSB_CHIPCO_PROG_WAITCNT 0x0124 | 181 | #define SSB_CHIPCO_PROG_WAITCNT 0x0124 |
182 | #define SSB_CHIPCO_FLASH_CFG 0x0128 | 182 | #define SSB_CHIPCO_FLASH_CFG 0x0128 |
183 | #define SSB_CHIPCO_FLASH_WAITCNT 0x012C | 183 | #define SSB_CHIPCO_FLASH_WAITCNT 0x012C |
184 | #define SSB_CHIPCO_CLKCTLST 0x01E0 /* Clock control and status (rev >= 20) */ | ||
185 | #define SSB_CHIPCO_CLKCTLST_FORCEALP 0x00000001 /* Force ALP request */ | ||
186 | #define SSB_CHIPCO_CLKCTLST_FORCEHT 0x00000002 /* Force HT request */ | ||
187 | #define SSB_CHIPCO_CLKCTLST_FORCEILP 0x00000004 /* Force ILP request */ | ||
188 | #define SSB_CHIPCO_CLKCTLST_HAVEALPREQ 0x00000008 /* ALP available request */ | ||
189 | #define SSB_CHIPCO_CLKCTLST_HAVEHTREQ 0x00000010 /* HT available request */ | ||
190 | #define SSB_CHIPCO_CLKCTLST_HWCROFF 0x00000020 /* Force HW clock request off */ | ||
191 | #define SSB_CHIPCO_CLKCTLST_HAVEHT 0x00010000 /* HT available */ | ||
192 | #define SSB_CHIPCO_CLKCTLST_HAVEALP 0x00020000 /* APL available */ | ||
193 | #define SSB_CHIPCO_HW_WORKAROUND 0x01E4 /* Hardware workaround (rev >= 20) */ | ||
184 | #define SSB_CHIPCO_UART0_DATA 0x0300 | 194 | #define SSB_CHIPCO_UART0_DATA 0x0300 |
185 | #define SSB_CHIPCO_UART0_IMR 0x0304 | 195 | #define SSB_CHIPCO_UART0_IMR 0x0304 |
186 | #define SSB_CHIPCO_UART0_FCR 0x0308 | 196 | #define SSB_CHIPCO_UART0_FCR 0x0308 |
@@ -197,6 +207,196 @@ | |||
197 | #define SSB_CHIPCO_UART1_LSR 0x0414 | 207 | #define SSB_CHIPCO_UART1_LSR 0x0414 |
198 | #define SSB_CHIPCO_UART1_MSR 0x0418 | 208 | #define SSB_CHIPCO_UART1_MSR 0x0418 |
199 | #define SSB_CHIPCO_UART1_SCRATCH 0x041C | 209 | #define SSB_CHIPCO_UART1_SCRATCH 0x041C |
210 | /* PMU registers (rev >= 20) */ | ||
211 | #define SSB_CHIPCO_PMU_CTL 0x0600 /* PMU control */ | ||
212 | #define SSB_CHIPCO_PMU_CTL_ILP_DIV 0xFFFF0000 /* ILP div mask */ | ||
213 | #define SSB_CHIPCO_PMU_CTL_ILP_DIV_SHIFT 16 | ||
214 | #define SSB_CHIPCO_PMU_CTL_NOILPONW 0x00000200 /* No ILP on wait */ | ||
215 | #define SSB_CHIPCO_PMU_CTL_HTREQEN 0x00000100 /* HT req enable */ | ||
216 | #define SSB_CHIPCO_PMU_CTL_ALPREQEN 0x00000080 /* ALP req enable */ | ||
217 | #define SSB_CHIPCO_PMU_CTL_XTALFREQ 0x0000007C /* Crystal freq */ | ||
218 | #define SSB_CHIPCO_PMU_CTL_XTALFREQ_SHIFT 2 | ||
219 | #define SSB_CHIPCO_PMU_CTL_ILPDIVEN 0x00000002 /* ILP div enable */ | ||
220 | #define SSB_CHIPCO_PMU_CTL_LPOSEL 0x00000001 /* LPO sel */ | ||
221 | #define SSB_CHIPCO_PMU_CAP 0x0604 /* PMU capabilities */ | ||
222 | #define SSB_CHIPCO_PMU_CAP_REVISION 0x000000FF /* Revision mask */ | ||
223 | #define SSB_CHIPCO_PMU_STAT 0x0608 /* PMU status */ | ||
224 | #define SSB_CHIPCO_PMU_STAT_INTPEND 0x00000040 /* Interrupt pending */ | ||
225 | #define SSB_CHIPCO_PMU_STAT_SBCLKST 0x00000030 /* Backplane clock status? */ | ||
226 | #define SSB_CHIPCO_PMU_STAT_HAVEALP 0x00000008 /* ALP available */ | ||
227 | #define SSB_CHIPCO_PMU_STAT_HAVEHT 0x00000004 /* HT available */ | ||
228 | #define SSB_CHIPCO_PMU_STAT_RESINIT 0x00000003 /* Res init */ | ||
229 | #define SSB_CHIPCO_PMU_RES_STAT 0x060C /* PMU res status */ | ||
230 | #define SSB_CHIPCO_PMU_RES_PEND 0x0610 /* PMU res pending */ | ||
231 | #define SSB_CHIPCO_PMU_TIMER 0x0614 /* PMU timer */ | ||
232 | #define SSB_CHIPCO_PMU_MINRES_MSK 0x0618 /* PMU min res mask */ | ||
233 | #define SSB_CHIPCO_PMU_MAXRES_MSK 0x061C /* PMU max res mask */ | ||
234 | #define SSB_CHIPCO_PMU_RES_TABSEL 0x0620 /* PMU res table sel */ | ||
235 | #define SSB_CHIPCO_PMU_RES_DEPMSK 0x0624 /* PMU res dep mask */ | ||
236 | #define SSB_CHIPCO_PMU_RES_UPDNTM 0x0628 /* PMU res updown timer */ | ||
237 | #define SSB_CHIPCO_PMU_RES_TIMER 0x062C /* PMU res timer */ | ||
238 | #define SSB_CHIPCO_PMU_CLKSTRETCH 0x0630 /* PMU clockstretch */ | ||
239 | #define SSB_CHIPCO_PMU_WATCHDOG 0x0634 /* PMU watchdog */ | ||
240 | #define SSB_CHIPCO_PMU_RES_REQTS 0x0640 /* PMU res req timer sel */ | ||
241 | #define SSB_CHIPCO_PMU_RES_REQT 0x0644 /* PMU res req timer */ | ||
242 | #define SSB_CHIPCO_PMU_RES_REQM 0x0648 /* PMU res req mask */ | ||
243 | #define SSB_CHIPCO_CHIPCTL_ADDR 0x0650 | ||
244 | #define SSB_CHIPCO_CHIPCTL_DATA 0x0654 | ||
245 | #define SSB_CHIPCO_REGCTL_ADDR 0x0658 | ||
246 | #define SSB_CHIPCO_REGCTL_DATA 0x065C | ||
247 | #define SSB_CHIPCO_PLLCTL_ADDR 0x0660 | ||
248 | #define SSB_CHIPCO_PLLCTL_DATA 0x0664 | ||
249 | |||
250 | |||
251 | |||
252 | /** PMU PLL registers */ | ||
253 | |||
254 | /* PMU rev 0 PLL registers */ | ||
255 | #define SSB_PMU0_PLLCTL0 0 | ||
256 | #define SSB_PMU0_PLLCTL0_PDIV_MSK 0x00000001 | ||
257 | #define SSB_PMU0_PLLCTL0_PDIV_FREQ 25000 /* kHz */ | ||
258 | #define SSB_PMU0_PLLCTL1 1 | ||
259 | #define SSB_PMU0_PLLCTL1_WILD_IMSK 0xF0000000 /* Wild int mask (low nibble) */ | ||
260 | #define SSB_PMU0_PLLCTL1_WILD_IMSK_SHIFT 28 | ||
261 | #define SSB_PMU0_PLLCTL1_WILD_FMSK 0x0FFFFF00 /* Wild frac mask */ | ||
262 | #define SSB_PMU0_PLLCTL1_WILD_FMSK_SHIFT 8 | ||
263 | #define SSB_PMU0_PLLCTL1_STOPMOD 0x00000040 /* Stop mod */ | ||
264 | #define SSB_PMU0_PLLCTL2 2 | ||
265 | #define SSB_PMU0_PLLCTL2_WILD_IMSKHI 0x0000000F /* Wild int mask (high nibble) */ | ||
266 | #define SSB_PMU0_PLLCTL2_WILD_IMSKHI_SHIFT 0 | ||
267 | |||
268 | /* PMU rev 1 PLL registers */ | ||
269 | #define SSB_PMU1_PLLCTL0 0 | ||
270 | #define SSB_PMU1_PLLCTL0_P1DIV 0x00F00000 /* P1 div */ | ||
271 | #define SSB_PMU1_PLLCTL0_P1DIV_SHIFT 20 | ||
272 | #define SSB_PMU1_PLLCTL0_P2DIV 0x0F000000 /* P2 div */ | ||
273 | #define SSB_PMU1_PLLCTL0_P2DIV_SHIFT 24 | ||
274 | #define SSB_PMU1_PLLCTL1 1 | ||
275 | #define SSB_PMU1_PLLCTL1_M1DIV 0x000000FF /* M1 div */ | ||
276 | #define SSB_PMU1_PLLCTL1_M1DIV_SHIFT 0 | ||
277 | #define SSB_PMU1_PLLCTL1_M2DIV 0x0000FF00 /* M2 div */ | ||
278 | #define SSB_PMU1_PLLCTL1_M2DIV_SHIFT 8 | ||
279 | #define SSB_PMU1_PLLCTL1_M3DIV 0x00FF0000 /* M3 div */ | ||
280 | #define SSB_PMU1_PLLCTL1_M3DIV_SHIFT 16 | ||
281 | #define SSB_PMU1_PLLCTL1_M4DIV 0xFF000000 /* M4 div */ | ||
282 | #define SSB_PMU1_PLLCTL1_M4DIV_SHIFT 24 | ||
283 | #define SSB_PMU1_PLLCTL2 2 | ||
284 | #define SSB_PMU1_PLLCTL2_M5DIV 0x000000FF /* M5 div */ | ||
285 | #define SSB_PMU1_PLLCTL2_M5DIV_SHIFT 0 | ||
286 | #define SSB_PMU1_PLLCTL2_M6DIV 0x0000FF00 /* M6 div */ | ||
287 | #define SSB_PMU1_PLLCTL2_M6DIV_SHIFT 8 | ||
288 | #define SSB_PMU1_PLLCTL2_NDIVMODE 0x000E0000 /* NDIV mode */ | ||
289 | #define SSB_PMU1_PLLCTL2_NDIVMODE_SHIFT 17 | ||
290 | #define SSB_PMU1_PLLCTL2_NDIVINT 0x1FF00000 /* NDIV int */ | ||
291 | #define SSB_PMU1_PLLCTL2_NDIVINT_SHIFT 20 | ||
292 | #define SSB_PMU1_PLLCTL3 3 | ||
293 | #define SSB_PMU1_PLLCTL3_NDIVFRAC 0x00FFFFFF /* NDIV frac */ | ||
294 | #define SSB_PMU1_PLLCTL3_NDIVFRAC_SHIFT 0 | ||
295 | #define SSB_PMU1_PLLCTL4 4 | ||
296 | #define SSB_PMU1_PLLCTL5 5 | ||
297 | #define SSB_PMU1_PLLCTL5_CLKDRV 0xFFFFFF00 /* clk drv */ | ||
298 | #define SSB_PMU1_PLLCTL5_CLKDRV_SHIFT 8 | ||
299 | |||
300 | /* BCM4312 PLL resource numbers. */ | ||
301 | #define SSB_PMURES_4312_SWITCHER_BURST 0 | ||
302 | #define SSB_PMURES_4312_SWITCHER_PWM 1 | ||
303 | #define SSB_PMURES_4312_PA_REF_LDO 2 | ||
304 | #define SSB_PMURES_4312_CORE_LDO_BURST 3 | ||
305 | #define SSB_PMURES_4312_CORE_LDO_PWM 4 | ||
306 | #define SSB_PMURES_4312_RADIO_LDO 5 | ||
307 | #define SSB_PMURES_4312_ILP_REQUEST 6 | ||
308 | #define SSB_PMURES_4312_BG_FILTBYP 7 | ||
309 | #define SSB_PMURES_4312_TX_FILTBYP 8 | ||
310 | #define SSB_PMURES_4312_RX_FILTBYP 9 | ||
311 | #define SSB_PMURES_4312_XTAL_PU 10 | ||
312 | #define SSB_PMURES_4312_ALP_AVAIL 11 | ||
313 | #define SSB_PMURES_4312_BB_PLL_FILTBYP 12 | ||
314 | #define SSB_PMURES_4312_RF_PLL_FILTBYP 13 | ||
315 | #define SSB_PMURES_4312_HT_AVAIL 14 | ||
316 | |||
317 | /* BCM4325 PLL resource numbers. */ | ||
318 | #define SSB_PMURES_4325_BUCK_BOOST_BURST 0 | ||
319 | #define SSB_PMURES_4325_CBUCK_BURST 1 | ||
320 | #define SSB_PMURES_4325_CBUCK_PWM 2 | ||
321 | #define SSB_PMURES_4325_CLDO_CBUCK_BURST 3 | ||
322 | #define SSB_PMURES_4325_CLDO_CBUCK_PWM 4 | ||
323 | #define SSB_PMURES_4325_BUCK_BOOST_PWM 5 | ||
324 | #define SSB_PMURES_4325_ILP_REQUEST 6 | ||
325 | #define SSB_PMURES_4325_ABUCK_BURST 7 | ||
326 | #define SSB_PMURES_4325_ABUCK_PWM 8 | ||
327 | #define SSB_PMURES_4325_LNLDO1_PU 9 | ||
328 | #define SSB_PMURES_4325_LNLDO2_PU 10 | ||
329 | #define SSB_PMURES_4325_LNLDO3_PU 11 | ||
330 | #define SSB_PMURES_4325_LNLDO4_PU 12 | ||
331 | #define SSB_PMURES_4325_XTAL_PU 13 | ||
332 | #define SSB_PMURES_4325_ALP_AVAIL 14 | ||
333 | #define SSB_PMURES_4325_RX_PWRSW_PU 15 | ||
334 | #define SSB_PMURES_4325_TX_PWRSW_PU 16 | ||
335 | #define SSB_PMURES_4325_RFPLL_PWRSW_PU 17 | ||
336 | #define SSB_PMURES_4325_LOGEN_PWRSW_PU 18 | ||
337 | #define SSB_PMURES_4325_AFE_PWRSW_PU 19 | ||
338 | #define SSB_PMURES_4325_BBPLL_PWRSW_PU 20 | ||
339 | #define SSB_PMURES_4325_HT_AVAIL 21 | ||
340 | |||
341 | /* BCM4328 PLL resource numbers. */ | ||
342 | #define SSB_PMURES_4328_EXT_SWITCHER_PWM 0 | ||
343 | #define SSB_PMURES_4328_BB_SWITCHER_PWM 1 | ||
344 | #define SSB_PMURES_4328_BB_SWITCHER_BURST 2 | ||
345 | #define SSB_PMURES_4328_BB_EXT_SWITCHER_BURST 3 | ||
346 | #define SSB_PMURES_4328_ILP_REQUEST 4 | ||
347 | #define SSB_PMURES_4328_RADIO_SWITCHER_PWM 5 | ||
348 | #define SSB_PMURES_4328_RADIO_SWITCHER_BURST 6 | ||
349 | #define SSB_PMURES_4328_ROM_SWITCH 7 | ||
350 | #define SSB_PMURES_4328_PA_REF_LDO 8 | ||
351 | #define SSB_PMURES_4328_RADIO_LDO 9 | ||
352 | #define SSB_PMURES_4328_AFE_LDO 10 | ||
353 | #define SSB_PMURES_4328_PLL_LDO 11 | ||
354 | #define SSB_PMURES_4328_BG_FILTBYP 12 | ||
355 | #define SSB_PMURES_4328_TX_FILTBYP 13 | ||
356 | #define SSB_PMURES_4328_RX_FILTBYP 14 | ||
357 | #define SSB_PMURES_4328_XTAL_PU 15 | ||
358 | #define SSB_PMURES_4328_XTAL_EN 16 | ||
359 | #define SSB_PMURES_4328_BB_PLL_FILTBYP 17 | ||
360 | #define SSB_PMURES_4328_RF_PLL_FILTBYP 18 | ||
361 | #define SSB_PMURES_4328_BB_PLL_PU 19 | ||
362 | |||
363 | /* BCM5354 PLL resource numbers. */ | ||
364 | #define SSB_PMURES_5354_EXT_SWITCHER_PWM 0 | ||
365 | #define SSB_PMURES_5354_BB_SWITCHER_PWM 1 | ||
366 | #define SSB_PMURES_5354_BB_SWITCHER_BURST 2 | ||
367 | #define SSB_PMURES_5354_BB_EXT_SWITCHER_BURST 3 | ||
368 | #define SSB_PMURES_5354_ILP_REQUEST 4 | ||
369 | #define SSB_PMURES_5354_RADIO_SWITCHER_PWM 5 | ||
370 | #define SSB_PMURES_5354_RADIO_SWITCHER_BURST 6 | ||
371 | #define SSB_PMURES_5354_ROM_SWITCH 7 | ||
372 | #define SSB_PMURES_5354_PA_REF_LDO 8 | ||
373 | #define SSB_PMURES_5354_RADIO_LDO 9 | ||
374 | #define SSB_PMURES_5354_AFE_LDO 10 | ||
375 | #define SSB_PMURES_5354_PLL_LDO 11 | ||
376 | #define SSB_PMURES_5354_BG_FILTBYP 12 | ||
377 | #define SSB_PMURES_5354_TX_FILTBYP 13 | ||
378 | #define SSB_PMURES_5354_RX_FILTBYP 14 | ||
379 | #define SSB_PMURES_5354_XTAL_PU 15 | ||
380 | #define SSB_PMURES_5354_XTAL_EN 16 | ||
381 | #define SSB_PMURES_5354_BB_PLL_FILTBYP 17 | ||
382 | #define SSB_PMURES_5354_RF_PLL_FILTBYP 18 | ||
383 | #define SSB_PMURES_5354_BB_PLL_PU 19 | ||
384 | |||
385 | |||
386 | |||
387 | /** Chip specific Chip-Status register contents. */ | ||
388 | #define SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL 0x00000003 | ||
389 | #define SSB_CHIPCO_CHST_4325_DEFCIS_SEL 0 /* OTP is powered up, use def. CIS, no SPROM */ | ||
390 | #define SSB_CHIPCO_CHST_4325_SPROM_SEL 1 /* OTP is powered up, SPROM is present */ | ||
391 | #define SSB_CHIPCO_CHST_4325_OTP_SEL 2 /* OTP is powered up, no SPROM */ | ||
392 | #define SSB_CHIPCO_CHST_4325_OTP_PWRDN 3 /* OTP is powered down, SPROM is present */ | ||
393 | #define SSB_CHIPCO_CHST_4325_SDIO_USB_MODE 0x00000004 | ||
394 | #define SSB_CHIPCO_CHST_4325_SDIO_USB_MODE_SHIFT 2 | ||
395 | #define SSB_CHIPCO_CHST_4325_RCAL_VALID 0x00000008 | ||
396 | #define SSB_CHIPCO_CHST_4325_RCAL_VALID_SHIFT 3 | ||
397 | #define SSB_CHIPCO_CHST_4325_RCAL_VALUE 0x000001F0 | ||
398 | #define SSB_CHIPCO_CHST_4325_RCAL_VALUE_SHIFT 4 | ||
399 | #define SSB_CHIPCO_CHST_4325_PMUTOP_2B 0x00000200 /* 1 for 2b, 0 for to 2a */ | ||
200 | 400 | ||
201 | 401 | ||
202 | 402 | ||
@@ -353,11 +553,20 @@ | |||
353 | struct ssb_device; | 553 | struct ssb_device; |
354 | struct ssb_serial_port; | 554 | struct ssb_serial_port; |
355 | 555 | ||
556 | /* Data for the PMU, if available. | ||
557 | * Check availability with ((struct ssb_chipcommon)->capabilities & SSB_CHIPCO_CAP_PMU) | ||
558 | */ | ||
559 | struct ssb_chipcommon_pmu { | ||
560 | u8 rev; /* PMU revision */ | ||
561 | u32 crystalfreq; /* The active crystal frequency (in kHz) */ | ||
562 | }; | ||
563 | |||
356 | struct ssb_chipcommon { | 564 | struct ssb_chipcommon { |
357 | struct ssb_device *dev; | 565 | struct ssb_device *dev; |
358 | u32 capabilities; | 566 | u32 capabilities; |
359 | /* Fast Powerup Delay constant */ | 567 | /* Fast Powerup Delay constant */ |
360 | u16 fast_pwrup_delay; | 568 | u16 fast_pwrup_delay; |
569 | struct ssb_chipcommon_pmu pmu; | ||
361 | }; | 570 | }; |
362 | 571 | ||
363 | static inline bool ssb_chipco_available(struct ssb_chipcommon *cc) | 572 | static inline bool ssb_chipco_available(struct ssb_chipcommon *cc) |
@@ -365,6 +574,17 @@ static inline bool ssb_chipco_available(struct ssb_chipcommon *cc) | |||
365 | return (cc->dev != NULL); | 574 | return (cc->dev != NULL); |
366 | } | 575 | } |
367 | 576 | ||
577 | /* Register access */ | ||
578 | #define chipco_read32(cc, offset) ssb_read32((cc)->dev, offset) | ||
579 | #define chipco_write32(cc, offset, val) ssb_write32((cc)->dev, offset, val) | ||
580 | |||
581 | #define chipco_mask32(cc, offset, mask) \ | ||
582 | chipco_write32(cc, offset, chipco_read32(cc, offset) & (mask)) | ||
583 | #define chipco_set32(cc, offset, set) \ | ||
584 | chipco_write32(cc, offset, chipco_read32(cc, offset) | (set)) | ||
585 | #define chipco_maskset32(cc, offset, mask, set) \ | ||
586 | chipco_write32(cc, offset, (chipco_read32(cc, offset) & (mask)) | (set)) | ||
587 | |||
368 | extern void ssb_chipcommon_init(struct ssb_chipcommon *cc); | 588 | extern void ssb_chipcommon_init(struct ssb_chipcommon *cc); |
369 | 589 | ||
370 | extern void ssb_chipco_suspend(struct ssb_chipcommon *cc); | 590 | extern void ssb_chipco_suspend(struct ssb_chipcommon *cc); |
@@ -406,4 +626,8 @@ extern int ssb_chipco_serial_init(struct ssb_chipcommon *cc, | |||
406 | struct ssb_serial_port *ports); | 626 | struct ssb_serial_port *ports); |
407 | #endif /* CONFIG_SSB_SERIAL */ | 627 | #endif /* CONFIG_SSB_SERIAL */ |
408 | 628 | ||
629 | /* PMU support */ | ||
630 | extern void ssb_pmu_init(struct ssb_chipcommon *cc); | ||
631 | |||
632 | |||
409 | #endif /* LINUX_SSB_CHIPCO_H_ */ | 633 | #endif /* LINUX_SSB_CHIPCO_H_ */ |
diff --git a/include/linux/ssb/ssb_regs.h b/include/linux/ssb/ssb_regs.h index 99a0f991e850..a01b982b5783 100644 --- a/include/linux/ssb/ssb_regs.h +++ b/include/linux/ssb/ssb_regs.h | |||
@@ -326,6 +326,42 @@ | |||
326 | #define SSB_SPROM5_GPIOB_P3 0xFF00 /* Pin 3 */ | 326 | #define SSB_SPROM5_GPIOB_P3 0xFF00 /* Pin 3 */ |
327 | #define SSB_SPROM5_GPIOB_P3_SHIFT 8 | 327 | #define SSB_SPROM5_GPIOB_P3_SHIFT 8 |
328 | 328 | ||
329 | /* SPROM Revision 8 */ | ||
330 | #define SSB_SPROM8_BFLLO 0x1084 /* Boardflags (low 16 bits) */ | ||
331 | #define SSB_SPROM8_BFLHI 0x1086 /* Boardflags Hi */ | ||
332 | #define SSB_SPROM8_IL0MAC 0x108C /* 6 byte MAC address */ | ||
333 | #define SSB_SPROM8_CCODE 0x1092 /* 2 byte country code */ | ||
334 | #define SSB_SPROM8_ANTAVAIL 0x109C /* Antenna available bitfields*/ | ||
335 | #define SSB_SPROM8_ANTAVAIL_A 0xFF00 /* A-PHY bitfield */ | ||
336 | #define SSB_SPROM8_ANTAVAIL_A_SHIFT 8 | ||
337 | #define SSB_SPROM8_ANTAVAIL_BG 0x00FF /* B-PHY and G-PHY bitfield */ | ||
338 | #define SSB_SPROM8_ANTAVAIL_BG_SHIFT 0 | ||
339 | #define SSB_SPROM8_AGAIN01 0x109E /* Antenna Gain (in dBm Q5.2) */ | ||
340 | #define SSB_SPROM8_AGAIN0 0x00FF /* Antenna 0 */ | ||
341 | #define SSB_SPROM8_AGAIN0_SHIFT 0 | ||
342 | #define SSB_SPROM8_AGAIN1 0xFF00 /* Antenna 1 */ | ||
343 | #define SSB_SPROM8_AGAIN1_SHIFT 8 | ||
344 | #define SSB_SPROM8_AGAIN23 0x10A0 | ||
345 | #define SSB_SPROM8_AGAIN2 0x00FF /* Antenna 2 */ | ||
346 | #define SSB_SPROM8_AGAIN2_SHIFT 0 | ||
347 | #define SSB_SPROM8_AGAIN3 0xFF00 /* Antenna 3 */ | ||
348 | #define SSB_SPROM8_AGAIN3_SHIFT 8 | ||
349 | #define SSB_SPROM8_GPIOA 0x1096 /*Gen. Purpose IO # 0 and 1 */ | ||
350 | #define SSB_SPROM8_GPIOA_P0 0x00FF /* Pin 0 */ | ||
351 | #define SSB_SPROM8_GPIOA_P1 0xFF00 /* Pin 1 */ | ||
352 | #define SSB_SPROM8_GPIOA_P1_SHIFT 8 | ||
353 | #define SSB_SPROM8_GPIOB 0x1098 /* Gen. Purpose IO # 2 and 3 */ | ||
354 | #define SSB_SPROM8_GPIOB_P2 0x00FF /* Pin 2 */ | ||
355 | #define SSB_SPROM8_GPIOB_P3 0xFF00 /* Pin 3 */ | ||
356 | #define SSB_SPROM8_GPIOB_P3_SHIFT 8 | ||
357 | #define SSB_SPROM8_MAXP_BG 0x10C0 /* Max Power BG in path 1 */ | ||
358 | #define SSB_SPROM8_MAXP_BG_MASK 0x00FF /* Mask for Max Power BG */ | ||
359 | #define SSB_SPROM8_ITSSI_BG 0xFF00 /* Mask for path 1 itssi_bg */ | ||
360 | #define SSB_SPROM8_ITSSI_BG_SHIFT 8 | ||
361 | #define SSB_SPROM8_MAXP_A 0x10C8 /* Max Power A in path 1 */ | ||
362 | #define SSB_SPROM8_MAXP_A_MASK 0x00FF /* Mask for Max Power A */ | ||
363 | #define SSB_SPROM8_ITSSI_A 0xFF00 /* Mask for path 1 itssi_a */ | ||
364 | #define SSB_SPROM8_ITSSI_A_SHIFT 8 | ||
329 | 365 | ||
330 | /* Values for SSB_SPROM1_BINF_CCODE */ | 366 | /* Values for SSB_SPROM1_BINF_CCODE */ |
331 | enum { | 367 | enum { |
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 39d471d1163b..e76d3b22a466 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h | |||
@@ -490,6 +490,7 @@ enum | |||
490 | NET_IPV4_CONF_ARP_IGNORE=19, | 490 | NET_IPV4_CONF_ARP_IGNORE=19, |
491 | NET_IPV4_CONF_PROMOTE_SECONDARIES=20, | 491 | NET_IPV4_CONF_PROMOTE_SECONDARIES=20, |
492 | NET_IPV4_CONF_ARP_ACCEPT=21, | 492 | NET_IPV4_CONF_ARP_ACCEPT=21, |
493 | NET_IPV4_CONF_ARP_NOTIFY=22, | ||
493 | __NET_IPV4_CONF_MAX | 494 | __NET_IPV4_CONF_MAX |
494 | }; | 495 | }; |
495 | 496 | ||
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index fe77e1499ab7..4b86ad71e054 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
@@ -69,16 +69,16 @@ union tcp_word_hdr { | |||
69 | #define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3]) | 69 | #define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3]) |
70 | 70 | ||
71 | enum { | 71 | enum { |
72 | TCP_FLAG_CWR = __constant_htonl(0x00800000), | 72 | TCP_FLAG_CWR = __cpu_to_be32(0x00800000), |
73 | TCP_FLAG_ECE = __constant_htonl(0x00400000), | 73 | TCP_FLAG_ECE = __cpu_to_be32(0x00400000), |
74 | TCP_FLAG_URG = __constant_htonl(0x00200000), | 74 | TCP_FLAG_URG = __cpu_to_be32(0x00200000), |
75 | TCP_FLAG_ACK = __constant_htonl(0x00100000), | 75 | TCP_FLAG_ACK = __cpu_to_be32(0x00100000), |
76 | TCP_FLAG_PSH = __constant_htonl(0x00080000), | 76 | TCP_FLAG_PSH = __cpu_to_be32(0x00080000), |
77 | TCP_FLAG_RST = __constant_htonl(0x00040000), | 77 | TCP_FLAG_RST = __cpu_to_be32(0x00040000), |
78 | TCP_FLAG_SYN = __constant_htonl(0x00020000), | 78 | TCP_FLAG_SYN = __cpu_to_be32(0x00020000), |
79 | TCP_FLAG_FIN = __constant_htonl(0x00010000), | 79 | TCP_FLAG_FIN = __cpu_to_be32(0x00010000), |
80 | TCP_RESERVED_BITS = __constant_htonl(0x0F000000), | 80 | TCP_RESERVED_BITS = __cpu_to_be32(0x0F000000), |
81 | TCP_DATA_OFFSET = __constant_htonl(0xF0000000) | 81 | TCP_DATA_OFFSET = __cpu_to_be32(0xF0000000) |
82 | }; | 82 | }; |
83 | 83 | ||
84 | /* TCP socket options */ | 84 | /* TCP socket options */ |
@@ -218,7 +218,6 @@ struct tcp_options_received { | |||
218 | snd_wscale : 4, /* Window scaling received from sender */ | 218 | snd_wscale : 4, /* Window scaling received from sender */ |
219 | rcv_wscale : 4; /* Window scaling to send to receiver */ | 219 | rcv_wscale : 4; /* Window scaling to send to receiver */ |
220 | /* SACKs data */ | 220 | /* SACKs data */ |
221 | u8 eff_sacks; /* Size of SACK array to send with next packet */ | ||
222 | u8 num_sacks; /* Number of SACK blocks */ | 221 | u8 num_sacks; /* Number of SACK blocks */ |
223 | u16 user_mss; /* mss requested by user in ioctl */ | 222 | u16 user_mss; /* mss requested by user in ioctl */ |
224 | u16 mss_clamp; /* Maximal mss, negotiated at connection setup */ | 223 | u16 mss_clamp; /* Maximal mss, negotiated at connection setup */ |
diff --git a/include/linux/timecompare.h b/include/linux/timecompare.h new file mode 100644 index 000000000000..546e2234e4b3 --- /dev/null +++ b/include/linux/timecompare.h | |||
@@ -0,0 +1,125 @@ | |||
1 | /* | ||
2 | * Utility code which helps transforming between two different time | ||
3 | * bases, called "source" and "target" time in this code. | ||
4 | * | ||
5 | * Source time has to be provided via the timecounter API while target | ||
6 | * time is accessed via a function callback whose prototype | ||
7 | * intentionally matches ktime_get() and ktime_get_real(). These | ||
8 | * interfaces where chosen like this so that the code serves its | ||
9 | * initial purpose without additional glue code. | ||
10 | * | ||
11 | * This purpose is synchronizing a hardware clock in a NIC with system | ||
12 | * time, in order to implement the Precision Time Protocol (PTP, | ||
13 | * IEEE1588) with more accurate hardware assisted time stamping. In | ||
14 | * that context only synchronization against system time (= | ||
15 | * ktime_get_real()) is currently needed. But this utility code might | ||
16 | * become useful in other situations, which is why it was written as | ||
17 | * general purpose utility code. | ||
18 | * | ||
19 | * The source timecounter is assumed to return monotonically | ||
20 | * increasing time (but this code does its best to compensate if that | ||
21 | * is not the case) whereas target time may jump. | ||
22 | * | ||
23 | * The target time corresponding to a source time is determined by | ||
24 | * reading target time, reading source time, reading target time | ||
25 | * again, then assuming that average target time corresponds to source | ||
26 | * time. In other words, the assumption is that reading the source | ||
27 | * time is slow and involves equal time for sending the request and | ||
28 | * receiving the reply, whereas reading target time is assumed to be | ||
29 | * fast. | ||
30 | * | ||
31 | * Copyright (C) 2009 Intel Corporation. | ||
32 | * Author: Patrick Ohly <patrick.ohly@intel.com> | ||
33 | * | ||
34 | * This program is free software; you can redistribute it and/or modify it | ||
35 | * under the terms and conditions of the GNU General Public License, | ||
36 | * version 2, as published by the Free Software Foundation. | ||
37 | * | ||
38 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
39 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
40 | * FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for | ||
41 | * more details. | ||
42 | * | ||
43 | * You should have received a copy of the GNU General Public License along with | ||
44 | * this program; if not, write to the Free Software Foundation, Inc., | ||
45 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
46 | */ | ||
47 | #ifndef _LINUX_TIMECOMPARE_H | ||
48 | #define _LINUX_TIMECOMPARE_H | ||
49 | |||
50 | #include <linux/clocksource.h> | ||
51 | #include <linux/ktime.h> | ||
52 | |||
53 | /** | ||
54 | * struct timecompare - stores state and configuration for the two clocks | ||
55 | * | ||
56 | * Initialize to zero, then set source/target/num_samples. | ||
57 | * | ||
58 | * Transformation between source time and target time is done with: | ||
59 | * target_time = source_time + offset + | ||
60 | * (source_time - last_update) * skew / | ||
61 | * TIMECOMPARE_SKEW_RESOLUTION | ||
62 | * | ||
63 | * @source: used to get source time stamps via timecounter_read() | ||
64 | * @target: function returning target time (for example, ktime_get | ||
65 | * for monotonic time, or ktime_get_real for wall clock) | ||
66 | * @num_samples: number of times that source time and target time are to | ||
67 | * be compared when determining their offset | ||
68 | * @offset: (target time - source time) at the time of the last update | ||
69 | * @skew: average (target time - source time) / delta source time * | ||
70 | * TIMECOMPARE_SKEW_RESOLUTION | ||
71 | * @last_update: last source time stamp when time offset was measured | ||
72 | */ | ||
73 | struct timecompare { | ||
74 | struct timecounter *source; | ||
75 | ktime_t (*target)(void); | ||
76 | int num_samples; | ||
77 | |||
78 | s64 offset; | ||
79 | s64 skew; | ||
80 | u64 last_update; | ||
81 | }; | ||
82 | |||
83 | /** | ||
84 | * timecompare_transform - transform source time stamp into target time base | ||
85 | * @sync: context for time sync | ||
86 | * @source_tstamp: the result of timecounter_read() or | ||
87 | * timecounter_cyc2time() | ||
88 | */ | ||
89 | extern ktime_t timecompare_transform(struct timecompare *sync, | ||
90 | u64 source_tstamp); | ||
91 | |||
92 | /** | ||
93 | * timecompare_offset - measure current (target time - source time) offset | ||
94 | * @sync: context for time sync | ||
95 | * @offset: average offset during sample period returned here | ||
96 | * @source_tstamp: average source time during sample period returned here | ||
97 | * | ||
98 | * Returns number of samples used. Might be zero (= no result) in the | ||
99 | * unlikely case that target time was monotonically decreasing for all | ||
100 | * samples (= broken). | ||
101 | */ | ||
102 | extern int timecompare_offset(struct timecompare *sync, | ||
103 | s64 *offset, | ||
104 | u64 *source_tstamp); | ||
105 | |||
106 | extern void __timecompare_update(struct timecompare *sync, | ||
107 | u64 source_tstamp); | ||
108 | |||
109 | /** | ||
110 | * timecompare_update - update offset and skew by measuring current offset | ||
111 | * @sync: context for time sync | ||
112 | * @source_tstamp: the result of timecounter_read() or | ||
113 | * timecounter_cyc2time(), pass zero to force update | ||
114 | * | ||
115 | * Updates are only done at most once per second. | ||
116 | */ | ||
117 | static inline void timecompare_update(struct timecompare *sync, | ||
118 | u64 source_tstamp) | ||
119 | { | ||
120 | if (!source_tstamp || | ||
121 | (s64)(source_tstamp - sync->last_update) >= NSEC_PER_SEC) | ||
122 | __timecompare_update(sync, source_tstamp); | ||
123 | } | ||
124 | |||
125 | #endif /* _LINUX_TIMECOMPARE_H */ | ||
diff --git a/include/linux/usb/rndis_host.h b/include/linux/usb/rndis_host.h index 0a6e6d4b929a..37836b937d97 100644 --- a/include/linux/usb/rndis_host.h +++ b/include/linux/usb/rndis_host.h | |||
@@ -49,48 +49,45 @@ struct rndis_msg_hdr { | |||
49 | */ | 49 | */ |
50 | #define RNDIS_CONTROL_TIMEOUT_MS (5 * 1000) | 50 | #define RNDIS_CONTROL_TIMEOUT_MS (5 * 1000) |
51 | 51 | ||
52 | 52 | #define RNDIS_MSG_COMPLETION cpu_to_le32(0x80000000) | |
53 | #define ccpu2 __constant_cpu_to_le32 | ||
54 | |||
55 | #define RNDIS_MSG_COMPLETION ccpu2(0x80000000) | ||
56 | 53 | ||
57 | /* codes for "msg_type" field of rndis messages; | 54 | /* codes for "msg_type" field of rndis messages; |
58 | * only the data channel uses packet messages (maybe batched); | 55 | * only the data channel uses packet messages (maybe batched); |
59 | * everything else goes on the control channel. | 56 | * everything else goes on the control channel. |
60 | */ | 57 | */ |
61 | #define RNDIS_MSG_PACKET ccpu2(0x00000001) /* 1-N packets */ | 58 | #define RNDIS_MSG_PACKET cpu_to_le32(0x00000001) /* 1-N packets */ |
62 | #define RNDIS_MSG_INIT ccpu2(0x00000002) | 59 | #define RNDIS_MSG_INIT cpu_to_le32(0x00000002) |
63 | #define RNDIS_MSG_INIT_C (RNDIS_MSG_INIT|RNDIS_MSG_COMPLETION) | 60 | #define RNDIS_MSG_INIT_C (RNDIS_MSG_INIT|RNDIS_MSG_COMPLETION) |
64 | #define RNDIS_MSG_HALT ccpu2(0x00000003) | 61 | #define RNDIS_MSG_HALT cpu_to_le32(0x00000003) |
65 | #define RNDIS_MSG_QUERY ccpu2(0x00000004) | 62 | #define RNDIS_MSG_QUERY cpu_to_le32(0x00000004) |
66 | #define RNDIS_MSG_QUERY_C (RNDIS_MSG_QUERY|RNDIS_MSG_COMPLETION) | 63 | #define RNDIS_MSG_QUERY_C (RNDIS_MSG_QUERY|RNDIS_MSG_COMPLETION) |
67 | #define RNDIS_MSG_SET ccpu2(0x00000005) | 64 | #define RNDIS_MSG_SET cpu_to_le32(0x00000005) |
68 | #define RNDIS_MSG_SET_C (RNDIS_MSG_SET|RNDIS_MSG_COMPLETION) | 65 | #define RNDIS_MSG_SET_C (RNDIS_MSG_SET|RNDIS_MSG_COMPLETION) |
69 | #define RNDIS_MSG_RESET ccpu2(0x00000006) | 66 | #define RNDIS_MSG_RESET cpu_to_le32(0x00000006) |
70 | #define RNDIS_MSG_RESET_C (RNDIS_MSG_RESET|RNDIS_MSG_COMPLETION) | 67 | #define RNDIS_MSG_RESET_C (RNDIS_MSG_RESET|RNDIS_MSG_COMPLETION) |
71 | #define RNDIS_MSG_INDICATE ccpu2(0x00000007) | 68 | #define RNDIS_MSG_INDICATE cpu_to_le32(0x00000007) |
72 | #define RNDIS_MSG_KEEPALIVE ccpu2(0x00000008) | 69 | #define RNDIS_MSG_KEEPALIVE cpu_to_le32(0x00000008) |
73 | #define RNDIS_MSG_KEEPALIVE_C (RNDIS_MSG_KEEPALIVE|RNDIS_MSG_COMPLETION) | 70 | #define RNDIS_MSG_KEEPALIVE_C (RNDIS_MSG_KEEPALIVE|RNDIS_MSG_COMPLETION) |
74 | 71 | ||
75 | /* codes for "status" field of completion messages */ | 72 | /* codes for "status" field of completion messages */ |
76 | #define RNDIS_STATUS_SUCCESS ccpu2(0x00000000) | 73 | #define RNDIS_STATUS_SUCCESS cpu_to_le32(0x00000000) |
77 | #define RNDIS_STATUS_FAILURE ccpu2(0xc0000001) | 74 | #define RNDIS_STATUS_FAILURE cpu_to_le32(0xc0000001) |
78 | #define RNDIS_STATUS_INVALID_DATA ccpu2(0xc0010015) | 75 | #define RNDIS_STATUS_INVALID_DATA cpu_to_le32(0xc0010015) |
79 | #define RNDIS_STATUS_NOT_SUPPORTED ccpu2(0xc00000bb) | 76 | #define RNDIS_STATUS_NOT_SUPPORTED cpu_to_le32(0xc00000bb) |
80 | #define RNDIS_STATUS_MEDIA_CONNECT ccpu2(0x4001000b) | 77 | #define RNDIS_STATUS_MEDIA_CONNECT cpu_to_le32(0x4001000b) |
81 | #define RNDIS_STATUS_MEDIA_DISCONNECT ccpu2(0x4001000c) | 78 | #define RNDIS_STATUS_MEDIA_DISCONNECT cpu_to_le32(0x4001000c) |
82 | 79 | ||
83 | /* codes for OID_GEN_PHYSICAL_MEDIUM */ | 80 | /* codes for OID_GEN_PHYSICAL_MEDIUM */ |
84 | #define RNDIS_PHYSICAL_MEDIUM_UNSPECIFIED ccpu2(0x00000000) | 81 | #define RNDIS_PHYSICAL_MEDIUM_UNSPECIFIED cpu_to_le32(0x00000000) |
85 | #define RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN ccpu2(0x00000001) | 82 | #define RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN cpu_to_le32(0x00000001) |
86 | #define RNDIS_PHYSICAL_MEDIUM_CABLE_MODEM ccpu2(0x00000002) | 83 | #define RNDIS_PHYSICAL_MEDIUM_CABLE_MODEM cpu_to_le32(0x00000002) |
87 | #define RNDIS_PHYSICAL_MEDIUM_PHONE_LINE ccpu2(0x00000003) | 84 | #define RNDIS_PHYSICAL_MEDIUM_PHONE_LINE cpu_to_le32(0x00000003) |
88 | #define RNDIS_PHYSICAL_MEDIUM_POWER_LINE ccpu2(0x00000004) | 85 | #define RNDIS_PHYSICAL_MEDIUM_POWER_LINE cpu_to_le32(0x00000004) |
89 | #define RNDIS_PHYSICAL_MEDIUM_DSL ccpu2(0x00000005) | 86 | #define RNDIS_PHYSICAL_MEDIUM_DSL cpu_to_le32(0x00000005) |
90 | #define RNDIS_PHYSICAL_MEDIUM_FIBRE_CHANNEL ccpu2(0x00000006) | 87 | #define RNDIS_PHYSICAL_MEDIUM_FIBRE_CHANNEL cpu_to_le32(0x00000006) |
91 | #define RNDIS_PHYSICAL_MEDIUM_1394 ccpu2(0x00000007) | 88 | #define RNDIS_PHYSICAL_MEDIUM_1394 cpu_to_le32(0x00000007) |
92 | #define RNDIS_PHYSICAL_MEDIUM_WIRELESS_WAN ccpu2(0x00000008) | 89 | #define RNDIS_PHYSICAL_MEDIUM_WIRELESS_WAN cpu_to_le32(0x00000008) |
93 | #define RNDIS_PHYSICAL_MEDIUM_MAX ccpu2(0x00000009) | 90 | #define RNDIS_PHYSICAL_MEDIUM_MAX cpu_to_le32(0x00000009) |
94 | 91 | ||
95 | struct rndis_data_hdr { | 92 | struct rndis_data_hdr { |
96 | __le32 msg_type; /* RNDIS_MSG_PACKET */ | 93 | __le32 msg_type; /* RNDIS_MSG_PACKET */ |
@@ -228,24 +225,24 @@ struct rndis_keepalive_c { /* IN (optionally OUT) */ | |||
228 | * there are gobs more that may optionally be supported. We'll avoid as much | 225 | * there are gobs more that may optionally be supported. We'll avoid as much |
229 | * of that mess as possible. | 226 | * of that mess as possible. |
230 | */ | 227 | */ |
231 | #define OID_802_3_PERMANENT_ADDRESS ccpu2(0x01010101) | 228 | #define OID_802_3_PERMANENT_ADDRESS cpu_to_le32(0x01010101) |
232 | #define OID_GEN_MAXIMUM_FRAME_SIZE ccpu2(0x00010106) | 229 | #define OID_GEN_MAXIMUM_FRAME_SIZE cpu_to_le32(0x00010106) |
233 | #define OID_GEN_CURRENT_PACKET_FILTER ccpu2(0x0001010e) | 230 | #define OID_GEN_CURRENT_PACKET_FILTER cpu_to_le32(0x0001010e) |
234 | #define OID_GEN_PHYSICAL_MEDIUM ccpu2(0x00010202) | 231 | #define OID_GEN_PHYSICAL_MEDIUM cpu_to_le32(0x00010202) |
235 | 232 | ||
236 | /* packet filter bits used by OID_GEN_CURRENT_PACKET_FILTER */ | 233 | /* packet filter bits used by OID_GEN_CURRENT_PACKET_FILTER */ |
237 | #define RNDIS_PACKET_TYPE_DIRECTED ccpu2(0x00000001) | 234 | #define RNDIS_PACKET_TYPE_DIRECTED cpu_to_le32(0x00000001) |
238 | #define RNDIS_PACKET_TYPE_MULTICAST ccpu2(0x00000002) | 235 | #define RNDIS_PACKET_TYPE_MULTICAST cpu_to_le32(0x00000002) |
239 | #define RNDIS_PACKET_TYPE_ALL_MULTICAST ccpu2(0x00000004) | 236 | #define RNDIS_PACKET_TYPE_ALL_MULTICAST cpu_to_le32(0x00000004) |
240 | #define RNDIS_PACKET_TYPE_BROADCAST ccpu2(0x00000008) | 237 | #define RNDIS_PACKET_TYPE_BROADCAST cpu_to_le32(0x00000008) |
241 | #define RNDIS_PACKET_TYPE_SOURCE_ROUTING ccpu2(0x00000010) | 238 | #define RNDIS_PACKET_TYPE_SOURCE_ROUTING cpu_to_le32(0x00000010) |
242 | #define RNDIS_PACKET_TYPE_PROMISCUOUS ccpu2(0x00000020) | 239 | #define RNDIS_PACKET_TYPE_PROMISCUOUS cpu_to_le32(0x00000020) |
243 | #define RNDIS_PACKET_TYPE_SMT ccpu2(0x00000040) | 240 | #define RNDIS_PACKET_TYPE_SMT cpu_to_le32(0x00000040) |
244 | #define RNDIS_PACKET_TYPE_ALL_LOCAL ccpu2(0x00000080) | 241 | #define RNDIS_PACKET_TYPE_ALL_LOCAL cpu_to_le32(0x00000080) |
245 | #define RNDIS_PACKET_TYPE_GROUP ccpu2(0x00001000) | 242 | #define RNDIS_PACKET_TYPE_GROUP cpu_to_le32(0x00001000) |
246 | #define RNDIS_PACKET_TYPE_ALL_FUNCTIONAL ccpu2(0x00002000) | 243 | #define RNDIS_PACKET_TYPE_ALL_FUNCTIONAL cpu_to_le32(0x00002000) |
247 | #define RNDIS_PACKET_TYPE_FUNCTIONAL ccpu2(0x00004000) | 244 | #define RNDIS_PACKET_TYPE_FUNCTIONAL cpu_to_le32(0x00004000) |
248 | #define RNDIS_PACKET_TYPE_MAC_FRAME ccpu2(0x00008000) | 245 | #define RNDIS_PACKET_TYPE_MAC_FRAME cpu_to_le32(0x00008000) |
249 | 246 | ||
250 | /* default filter used with RNDIS devices */ | 247 | /* default filter used with RNDIS devices */ |
251 | #define RNDIS_DEFAULT_FILTER ( \ | 248 | #define RNDIS_DEFAULT_FILTER ( \ |
diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h index 3efa86c3ecb3..242348bb3766 100644 --- a/include/linux/virtio_net.h +++ b/include/linux/virtio_net.h | |||
@@ -22,11 +22,19 @@ | |||
22 | #define VIRTIO_NET_F_HOST_ECN 13 /* Host can handle TSO[6] w/ ECN in. */ | 22 | #define VIRTIO_NET_F_HOST_ECN 13 /* Host can handle TSO[6] w/ ECN in. */ |
23 | #define VIRTIO_NET_F_HOST_UFO 14 /* Host can handle UFO in. */ | 23 | #define VIRTIO_NET_F_HOST_UFO 14 /* Host can handle UFO in. */ |
24 | #define VIRTIO_NET_F_MRG_RXBUF 15 /* Host can merge receive buffers. */ | 24 | #define VIRTIO_NET_F_MRG_RXBUF 15 /* Host can merge receive buffers. */ |
25 | #define VIRTIO_NET_F_STATUS 16 /* virtio_net_config.status available */ | ||
26 | #define VIRTIO_NET_F_CTRL_VQ 17 /* Control channel available */ | ||
27 | #define VIRTIO_NET_F_CTRL_RX 18 /* Control channel RX mode support */ | ||
28 | #define VIRTIO_NET_F_CTRL_VLAN 19 /* Control channel VLAN filtering */ | ||
29 | |||
30 | #define VIRTIO_NET_S_LINK_UP 1 /* Link is up */ | ||
25 | 31 | ||
26 | struct virtio_net_config | 32 | struct virtio_net_config |
27 | { | 33 | { |
28 | /* The config defining mac address (if VIRTIO_NET_F_MAC) */ | 34 | /* The config defining mac address (if VIRTIO_NET_F_MAC) */ |
29 | __u8 mac[6]; | 35 | __u8 mac[6]; |
36 | /* See VIRTIO_NET_F_STATUS and VIRTIO_NET_S_* above */ | ||
37 | __u16 status; | ||
30 | } __attribute__((packed)); | 38 | } __attribute__((packed)); |
31 | 39 | ||
32 | /* This is the first element of the scatter-gather list. If you don't | 40 | /* This is the first element of the scatter-gather list. If you don't |
@@ -54,4 +62,67 @@ struct virtio_net_hdr_mrg_rxbuf { | |||
54 | __u16 num_buffers; /* Number of merged rx buffers */ | 62 | __u16 num_buffers; /* Number of merged rx buffers */ |
55 | }; | 63 | }; |
56 | 64 | ||
65 | /* | ||
66 | * Control virtqueue data structures | ||
67 | * | ||
68 | * The control virtqueue expects a header in the first sg entry | ||
69 | * and an ack/status response in the last entry. Data for the | ||
70 | * command goes in between. | ||
71 | */ | ||
72 | struct virtio_net_ctrl_hdr { | ||
73 | __u8 class; | ||
74 | __u8 cmd; | ||
75 | } __attribute__((packed)); | ||
76 | |||
77 | typedef __u8 virtio_net_ctrl_ack; | ||
78 | |||
79 | #define VIRTIO_NET_OK 0 | ||
80 | #define VIRTIO_NET_ERR 1 | ||
81 | |||
82 | /* | ||
83 | * Control the RX mode, ie. promisucous and allmulti. PROMISC and | ||
84 | * ALLMULTI commands require an "out" sg entry containing a 1 byte | ||
85 | * state value, zero = disable, non-zero = enable. These commands | ||
86 | * are supported with the VIRTIO_NET_F_CTRL_RX feature. | ||
87 | */ | ||
88 | #define VIRTIO_NET_CTRL_RX 0 | ||
89 | #define VIRTIO_NET_CTRL_RX_PROMISC 0 | ||
90 | #define VIRTIO_NET_CTRL_RX_ALLMULTI 1 | ||
91 | |||
92 | /* | ||
93 | * Control the MAC filter table. | ||
94 | * | ||
95 | * The MAC filter table is managed by the hypervisor, the guest should | ||
96 | * assume the size is infinite. Filtering should be considered | ||
97 | * non-perfect, ie. based on hypervisor resources, the guest may | ||
98 | * received packets from sources not specified in the filter list. | ||
99 | * | ||
100 | * In addition to the class/cmd header, the TABLE_SET command requires | ||
101 | * two out scatterlists. Each contains a 4 byte count of entries followed | ||
102 | * by a concatenated byte stream of the ETH_ALEN MAC addresses. The | ||
103 | * first sg list contains unicast addresses, the second is for multicast. | ||
104 | * This functionality is present if the VIRTIO_NET_F_CTRL_RX feature | ||
105 | * is available. | ||
106 | */ | ||
107 | struct virtio_net_ctrl_mac { | ||
108 | __u32 entries; | ||
109 | __u8 macs[][ETH_ALEN]; | ||
110 | } __attribute__((packed)); | ||
111 | |||
112 | #define VIRTIO_NET_CTRL_MAC 1 | ||
113 | #define VIRTIO_NET_CTRL_MAC_TABLE_SET 0 | ||
114 | |||
115 | /* | ||
116 | * Control VLAN filtering | ||
117 | * | ||
118 | * The VLAN filter table is controlled via a simple ADD/DEL interface. | ||
119 | * VLAN IDs not added may be filterd by the hypervisor. Del is the | ||
120 | * opposite of add. Both commands expect an out entry containing a 2 | ||
121 | * byte VLAN ID. VLAN filterting is available with the | ||
122 | * VIRTIO_NET_F_CTRL_VLAN feature bit. | ||
123 | */ | ||
124 | #define VIRTIO_NET_CTRL_VLAN 2 | ||
125 | #define VIRTIO_NET_CTRL_VLAN_ADD 0 | ||
126 | #define VIRTIO_NET_CTRL_VLAN_DEL 1 | ||
127 | |||
57 | #endif /* _LINUX_VIRTIO_NET_H */ | 128 | #endif /* _LINUX_VIRTIO_NET_H */ |
diff --git a/include/linux/wimax/debug.h b/include/linux/wimax/debug.h index ba0c49399a83..c703e0340423 100644 --- a/include/linux/wimax/debug.h +++ b/include/linux/wimax/debug.h | |||
@@ -178,7 +178,7 @@ void __d_head(char *head, size_t head_size, | |||
178 | WARN_ON(1); | 178 | WARN_ON(1); |
179 | } else | 179 | } else |
180 | snprintf(head, head_size, "%s %s: ", | 180 | snprintf(head, head_size, "%s %s: ", |
181 | dev_driver_string(dev), dev->bus_id); | 181 | dev_driver_string(dev), dev_name(dev)); |
182 | } | 182 | } |
183 | 183 | ||
184 | 184 | ||
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 | */ | ||
236 | struct i2400m_pl_edata_hdr { | ||
237 | __le32 reorder; /* bits defined in i2400m_ro */ | ||
238 | __u8 cs; | ||
239 | __u8 reserved[11]; | ||
240 | } __attribute__((packed)); | ||
241 | |||
242 | enum i2400m_cs { | ||
243 | I2400M_CS_IPV4_0 = 0, | ||
244 | I2400M_CS_IPV4 = 2, | ||
245 | }; | ||
246 | |||
247 | enum 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 | |||
259 | enum 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 */ |
225 | enum { | 268 | enum { |
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 */ | ||
560 | struct 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 */ | ||
567 | struct 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 */ | ||
574 | struct 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__ */ |
diff --git a/include/linux/wireless.h b/include/linux/wireless.h index d7958f9b52cb..cb24204851f7 100644 --- a/include/linux/wireless.h +++ b/include/linux/wireless.h | |||
@@ -577,18 +577,22 @@ | |||
577 | #define IW_AUTH_RX_UNENCRYPTED_EAPOL 8 | 577 | #define IW_AUTH_RX_UNENCRYPTED_EAPOL 8 |
578 | #define IW_AUTH_ROAMING_CONTROL 9 | 578 | #define IW_AUTH_ROAMING_CONTROL 9 |
579 | #define IW_AUTH_PRIVACY_INVOKED 10 | 579 | #define IW_AUTH_PRIVACY_INVOKED 10 |
580 | #define IW_AUTH_CIPHER_GROUP_MGMT 11 | ||
581 | #define IW_AUTH_MFP 12 | ||
580 | 582 | ||
581 | /* IW_AUTH_WPA_VERSION values (bit field) */ | 583 | /* IW_AUTH_WPA_VERSION values (bit field) */ |
582 | #define IW_AUTH_WPA_VERSION_DISABLED 0x00000001 | 584 | #define IW_AUTH_WPA_VERSION_DISABLED 0x00000001 |
583 | #define IW_AUTH_WPA_VERSION_WPA 0x00000002 | 585 | #define IW_AUTH_WPA_VERSION_WPA 0x00000002 |
584 | #define IW_AUTH_WPA_VERSION_WPA2 0x00000004 | 586 | #define IW_AUTH_WPA_VERSION_WPA2 0x00000004 |
585 | 587 | ||
586 | /* IW_AUTH_PAIRWISE_CIPHER and IW_AUTH_GROUP_CIPHER values (bit field) */ | 588 | /* IW_AUTH_PAIRWISE_CIPHER, IW_AUTH_GROUP_CIPHER, and IW_AUTH_CIPHER_GROUP_MGMT |
589 | * values (bit field) */ | ||
587 | #define IW_AUTH_CIPHER_NONE 0x00000001 | 590 | #define IW_AUTH_CIPHER_NONE 0x00000001 |
588 | #define IW_AUTH_CIPHER_WEP40 0x00000002 | 591 | #define IW_AUTH_CIPHER_WEP40 0x00000002 |
589 | #define IW_AUTH_CIPHER_TKIP 0x00000004 | 592 | #define IW_AUTH_CIPHER_TKIP 0x00000004 |
590 | #define IW_AUTH_CIPHER_CCMP 0x00000008 | 593 | #define IW_AUTH_CIPHER_CCMP 0x00000008 |
591 | #define IW_AUTH_CIPHER_WEP104 0x00000010 | 594 | #define IW_AUTH_CIPHER_WEP104 0x00000010 |
595 | #define IW_AUTH_CIPHER_AES_CMAC 0x00000020 | ||
592 | 596 | ||
593 | /* IW_AUTH_KEY_MGMT values (bit field) */ | 597 | /* IW_AUTH_KEY_MGMT values (bit field) */ |
594 | #define IW_AUTH_KEY_MGMT_802_1X 1 | 598 | #define IW_AUTH_KEY_MGMT_802_1X 1 |
@@ -604,6 +608,11 @@ | |||
604 | #define IW_AUTH_ROAMING_DISABLE 1 /* user space program used for roaming | 608 | #define IW_AUTH_ROAMING_DISABLE 1 /* user space program used for roaming |
605 | * control */ | 609 | * control */ |
606 | 610 | ||
611 | /* IW_AUTH_MFP (management frame protection) values */ | ||
612 | #define IW_AUTH_MFP_DISABLED 0 /* MFP disabled */ | ||
613 | #define IW_AUTH_MFP_OPTIONAL 1 /* MFP optional */ | ||
614 | #define IW_AUTH_MFP_REQUIRED 2 /* MFP required */ | ||
615 | |||
607 | /* SIOCSIWENCODEEXT definitions */ | 616 | /* SIOCSIWENCODEEXT definitions */ |
608 | #define IW_ENCODE_SEQ_MAX_SIZE 8 | 617 | #define IW_ENCODE_SEQ_MAX_SIZE 8 |
609 | /* struct iw_encode_ext ->alg */ | 618 | /* struct iw_encode_ext ->alg */ |
@@ -612,6 +621,7 @@ | |||
612 | #define IW_ENCODE_ALG_TKIP 2 | 621 | #define IW_ENCODE_ALG_TKIP 2 |
613 | #define IW_ENCODE_ALG_CCMP 3 | 622 | #define IW_ENCODE_ALG_CCMP 3 |
614 | #define IW_ENCODE_ALG_PMK 4 | 623 | #define IW_ENCODE_ALG_PMK 4 |
624 | #define IW_ENCODE_ALG_AES_CMAC 5 | ||
615 | /* struct iw_encode_ext ->ext_flags */ | 625 | /* struct iw_encode_ext ->ext_flags */ |
616 | #define IW_ENCODE_EXT_TX_SEQ_VALID 0x00000001 | 626 | #define IW_ENCODE_EXT_TX_SEQ_VALID 0x00000001 |
617 | #define IW_ENCODE_EXT_RX_SEQ_VALID 0x00000002 | 627 | #define IW_ENCODE_EXT_RX_SEQ_VALID 0x00000002 |