diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-23 14:47:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-23 14:47:02 -0400 |
commit | 5f05647dd81c11a6a165ccc8f0c1370b16f3bcb0 (patch) | |
tree | 7851ef1c93aa1aba7ef327ca4b75fd35e6d10f29 /include/linux | |
parent | 02f36038c568111ad4fc433f6fa760ff5e38fab4 (diff) | |
parent | ec37a48d1d16c30b655ac5280209edf52a6775d4 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1699 commits)
bnx2/bnx2x: Unsupported Ethtool operations should return -EINVAL.
vlan: Calling vlan_hwaccel_do_receive() is always valid.
tproxy: use the interface primary IP address as a default value for --on-ip
tproxy: added IPv6 support to the socket match
cxgb3: function namespace cleanup
tproxy: added IPv6 support to the TPROXY target
tproxy: added IPv6 socket lookup function to nf_tproxy_core
be2net: Changes to use only priority codes allowed by f/w
tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled
tproxy: added tproxy sockopt interface in the IPV6 layer
tproxy: added udp6_lib_lookup function
tproxy: added const specifiers to udp lookup functions
tproxy: split off ipv6 defragmentation to a separate module
l2tp: small cleanup
nf_nat: restrict ICMP translation for embedded header
can: mcp251x: fix generation of error frames
can: mcp251x: fix endless loop in interrupt handler if CANINTF_MERRF is set
can-raw: add msg_flags to distinguish local traffic
9p: client code cleanup
rds: make local functions/variables static
...
Fix up conflicts in net/core/dev.c, drivers/net/pcmcia/smc91c92_cs.c and
drivers/net/wireless/ath/ath9k/debug.c as per David
Diffstat (limited to 'include/linux')
51 files changed, 1020 insertions, 473 deletions
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index 4e8ea8c8ec1e..831c4634162c 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -301,6 +301,7 @@ header-y += quota.h | |||
301 | header-y += radeonfb.h | 301 | header-y += radeonfb.h |
302 | header-y += random.h | 302 | header-y += random.h |
303 | header-y += raw.h | 303 | header-y += raw.h |
304 | header-y += rds.h | ||
304 | header-y += reboot.h | 305 | header-y += reboot.h |
305 | header-y += reiserfs_fs.h | 306 | header-y += reiserfs_fs.h |
306 | header-y += reiserfs_xattr.h | 307 | header-y += reiserfs_xattr.h |
diff --git a/include/linux/atmdev.h b/include/linux/atmdev.h index f6481daf6e52..a8e4e832cdbb 100644 --- a/include/linux/atmdev.h +++ b/include/linux/atmdev.h | |||
@@ -449,7 +449,7 @@ void vcc_insert_socket(struct sock *sk); | |||
449 | 449 | ||
450 | static inline int atm_guess_pdu2truesize(int size) | 450 | static inline int atm_guess_pdu2truesize(int size) |
451 | { | 451 | { |
452 | return (SKB_DATA_ALIGN(size) + sizeof(struct skb_shared_info)); | 452 | return SKB_DATA_ALIGN(size) + sizeof(struct skb_shared_info); |
453 | } | 453 | } |
454 | 454 | ||
455 | 455 | ||
diff --git a/include/linux/can/platform/mcp251x.h b/include/linux/can/platform/mcp251x.h index dba28268e651..8e20540043f5 100644 --- a/include/linux/can/platform/mcp251x.h +++ b/include/linux/can/platform/mcp251x.h | |||
@@ -12,7 +12,6 @@ | |||
12 | /** | 12 | /** |
13 | * struct mcp251x_platform_data - MCP251X SPI CAN controller platform data | 13 | * struct mcp251x_platform_data - MCP251X SPI CAN controller platform data |
14 | * @oscillator_frequency: - oscillator frequency in Hz | 14 | * @oscillator_frequency: - oscillator frequency in Hz |
15 | * @model: - actual type of chip | ||
16 | * @board_specific_setup: - called before probing the chip (power,reset) | 15 | * @board_specific_setup: - called before probing the chip (power,reset) |
17 | * @transceiver_enable: - called to power on/off the transceiver | 16 | * @transceiver_enable: - called to power on/off the transceiver |
18 | * @power_enable: - called to power on/off the mcp *and* the | 17 | * @power_enable: - called to power on/off the mcp *and* the |
@@ -25,9 +24,6 @@ | |||
25 | 24 | ||
26 | struct mcp251x_platform_data { | 25 | struct mcp251x_platform_data { |
27 | unsigned long oscillator_frequency; | 26 | unsigned long oscillator_frequency; |
28 | int model; | ||
29 | #define CAN_MCP251X_MCP2510 0x2510 | ||
30 | #define CAN_MCP251X_MCP2515 0x2515 | ||
31 | int (*board_specific_setup)(struct spi_device *spi); | 27 | int (*board_specific_setup)(struct spi_device *spi); |
32 | int (*transceiver_enable)(int enable); | 28 | int (*transceiver_enable)(int enable); |
33 | int (*power_enable) (int enable); | 29 | int (*power_enable) (int enable); |
diff --git a/include/linux/dccp.h b/include/linux/dccp.h index 7434a8353e23..7187bd8a75f6 100644 --- a/include/linux/dccp.h +++ b/include/linux/dccp.h | |||
@@ -165,8 +165,10 @@ enum { | |||
165 | DCCPO_TIMESTAMP_ECHO = 42, | 165 | DCCPO_TIMESTAMP_ECHO = 42, |
166 | DCCPO_ELAPSED_TIME = 43, | 166 | DCCPO_ELAPSED_TIME = 43, |
167 | DCCPO_MAX = 45, | 167 | DCCPO_MAX = 45, |
168 | DCCPO_MIN_CCID_SPECIFIC = 128, | 168 | DCCPO_MIN_RX_CCID_SPECIFIC = 128, /* from sender to receiver */ |
169 | DCCPO_MAX_CCID_SPECIFIC = 255, | 169 | DCCPO_MAX_RX_CCID_SPECIFIC = 191, |
170 | DCCPO_MIN_TX_CCID_SPECIFIC = 192, /* from receiver to sender */ | ||
171 | DCCPO_MAX_TX_CCID_SPECIFIC = 255, | ||
170 | }; | 172 | }; |
171 | /* maximum size of a single TLV-encoded DCCP option (sans type/len bytes) */ | 173 | /* maximum size of a single TLV-encoded DCCP option (sans type/len bytes) */ |
172 | #define DCCP_SINGLE_OPT_MAXLEN 253 | 174 | #define DCCP_SINGLE_OPT_MAXLEN 253 |
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index 2308fbb4523a..f16a01081e15 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h | |||
@@ -71,7 +71,7 @@ static inline int is_zero_ether_addr(const u8 *addr) | |||
71 | */ | 71 | */ |
72 | static inline int is_multicast_ether_addr(const u8 *addr) | 72 | static inline int is_multicast_ether_addr(const u8 *addr) |
73 | { | 73 | { |
74 | return (0x01 & addr[0]); | 74 | return 0x01 & addr[0]; |
75 | } | 75 | } |
76 | 76 | ||
77 | /** | 77 | /** |
@@ -82,7 +82,7 @@ static inline int is_multicast_ether_addr(const u8 *addr) | |||
82 | */ | 82 | */ |
83 | static inline int is_local_ether_addr(const u8 *addr) | 83 | static inline int is_local_ether_addr(const u8 *addr) |
84 | { | 84 | { |
85 | return (0x02 & addr[0]); | 85 | return 0x02 & addr[0]; |
86 | } | 86 | } |
87 | 87 | ||
88 | /** | 88 | /** |
@@ -237,13 +237,29 @@ static inline bool is_etherdev_addr(const struct net_device *dev, | |||
237 | * entry points. | 237 | * entry points. |
238 | */ | 238 | */ |
239 | 239 | ||
240 | static inline int compare_ether_header(const void *a, const void *b) | 240 | static inline unsigned long compare_ether_header(const void *a, const void *b) |
241 | { | 241 | { |
242 | #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) && BITS_PER_LONG == 64 | ||
243 | unsigned long fold; | ||
244 | |||
245 | /* | ||
246 | * We want to compare 14 bytes: | ||
247 | * [a0 ... a13] ^ [b0 ... b13] | ||
248 | * Use two long XOR, ORed together, with an overlap of two bytes. | ||
249 | * [a0 a1 a2 a3 a4 a5 a6 a7 ] ^ [b0 b1 b2 b3 b4 b5 b6 b7 ] | | ||
250 | * [a6 a7 a8 a9 a10 a11 a12 a13] ^ [b6 b7 b8 b9 b10 b11 b12 b13] | ||
251 | * This means the [a6 a7] ^ [b6 b7] part is done two times. | ||
252 | */ | ||
253 | fold = *(unsigned long *)a ^ *(unsigned long *)b; | ||
254 | fold |= *(unsigned long *)(a + 6) ^ *(unsigned long *)(b + 6); | ||
255 | return fold; | ||
256 | #else | ||
242 | u32 *a32 = (u32 *)((u8 *)a + 2); | 257 | u32 *a32 = (u32 *)((u8 *)a + 2); |
243 | u32 *b32 = (u32 *)((u8 *)b + 2); | 258 | u32 *b32 = (u32 *)((u8 *)b + 2); |
244 | 259 | ||
245 | return (*(u16 *)a ^ *(u16 *)b) | (a32[0] ^ b32[0]) | | 260 | return (*(u16 *)a ^ *(u16 *)b) | (a32[0] ^ b32[0]) | |
246 | (a32[1] ^ b32[1]) | (a32[2] ^ b32[2]); | 261 | (a32[1] ^ b32[1]) | (a32[2] ^ b32[2]); |
262 | #endif | ||
247 | } | 263 | } |
248 | 264 | ||
249 | #endif /* _LINUX_ETHERDEVICE_H */ | 265 | #endif /* _LINUX_ETHERDEVICE_H */ |
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index 991269e5b152..6628a507fd3b 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h | |||
@@ -14,6 +14,7 @@ | |||
14 | #define _LINUX_ETHTOOL_H | 14 | #define _LINUX_ETHTOOL_H |
15 | 15 | ||
16 | #include <linux/types.h> | 16 | #include <linux/types.h> |
17 | #include <linux/if_ether.h> | ||
17 | 18 | ||
18 | /* This should work for both 32 and 64 bit userland. */ | 19 | /* This should work for both 32 and 64 bit userland. */ |
19 | struct ethtool_cmd { | 20 | struct ethtool_cmd { |
@@ -308,15 +309,28 @@ struct ethtool_perm_addr { | |||
308 | * flag differs from the read-only value. | 309 | * flag differs from the read-only value. |
309 | */ | 310 | */ |
310 | enum ethtool_flags { | 311 | enum ethtool_flags { |
312 | ETH_FLAG_TXVLAN = (1 << 7), /* TX VLAN offload enabled */ | ||
313 | ETH_FLAG_RXVLAN = (1 << 8), /* RX VLAN offload enabled */ | ||
311 | ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */ | 314 | ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */ |
312 | ETH_FLAG_NTUPLE = (1 << 27), /* N-tuple filters enabled */ | 315 | ETH_FLAG_NTUPLE = (1 << 27), /* N-tuple filters enabled */ |
313 | ETH_FLAG_RXHASH = (1 << 28), | 316 | ETH_FLAG_RXHASH = (1 << 28), |
314 | }; | 317 | }; |
315 | 318 | ||
316 | /* The following structures are for supporting RX network flow | 319 | /* The following structures are for supporting RX network flow |
317 | * classification configuration. Note, all multibyte fields, e.g., | 320 | * classification and RX n-tuple configuration. Note, all multibyte |
318 | * ip4src, ip4dst, psrc, pdst, spi, etc. are expected to be in network | 321 | * fields, e.g., ip4src, ip4dst, psrc, pdst, spi, etc. are expected to |
319 | * byte order. | 322 | * be in network byte order. |
323 | */ | ||
324 | |||
325 | /** | ||
326 | * struct ethtool_tcpip4_spec - flow specification for TCP/IPv4 etc. | ||
327 | * @ip4src: Source host | ||
328 | * @ip4dst: Destination host | ||
329 | * @psrc: Source port | ||
330 | * @pdst: Destination port | ||
331 | * @tos: Type-of-service | ||
332 | * | ||
333 | * This can be used to specify a TCP/IPv4, UDP/IPv4 or SCTP/IPv4 flow. | ||
320 | */ | 334 | */ |
321 | struct ethtool_tcpip4_spec { | 335 | struct ethtool_tcpip4_spec { |
322 | __be32 ip4src; | 336 | __be32 ip4src; |
@@ -326,6 +340,15 @@ struct ethtool_tcpip4_spec { | |||
326 | __u8 tos; | 340 | __u8 tos; |
327 | }; | 341 | }; |
328 | 342 | ||
343 | /** | ||
344 | * struct ethtool_ah_espip4_spec - flow specification for IPsec/IPv4 | ||
345 | * @ip4src: Source host | ||
346 | * @ip4dst: Destination host | ||
347 | * @spi: Security parameters index | ||
348 | * @tos: Type-of-service | ||
349 | * | ||
350 | * This can be used to specify an IPsec transport or tunnel over IPv4. | ||
351 | */ | ||
329 | struct ethtool_ah_espip4_spec { | 352 | struct ethtool_ah_espip4_spec { |
330 | __be32 ip4src; | 353 | __be32 ip4src; |
331 | __be32 ip4dst; | 354 | __be32 ip4dst; |
@@ -333,21 +356,17 @@ struct ethtool_ah_espip4_spec { | |||
333 | __u8 tos; | 356 | __u8 tos; |
334 | }; | 357 | }; |
335 | 358 | ||
336 | struct ethtool_rawip4_spec { | ||
337 | __be32 ip4src; | ||
338 | __be32 ip4dst; | ||
339 | __u8 hdata[64]; | ||
340 | }; | ||
341 | |||
342 | struct ethtool_ether_spec { | ||
343 | __be16 ether_type; | ||
344 | __u8 frame_size; | ||
345 | __u8 eframe[16]; | ||
346 | }; | ||
347 | |||
348 | #define ETH_RX_NFC_IP4 1 | 359 | #define ETH_RX_NFC_IP4 1 |
349 | #define ETH_RX_NFC_IP6 2 | ||
350 | 360 | ||
361 | /** | ||
362 | * struct ethtool_usrip4_spec - general flow specification for IPv4 | ||
363 | * @ip4src: Source host | ||
364 | * @ip4dst: Destination host | ||
365 | * @l4_4_bytes: First 4 bytes of transport (layer 4) header | ||
366 | * @tos: Type-of-service | ||
367 | * @ip_ver: Value must be %ETH_RX_NFC_IP4; mask must be 0 | ||
368 | * @proto: Transport protocol number; mask must be 0 | ||
369 | */ | ||
351 | struct ethtool_usrip4_spec { | 370 | struct ethtool_usrip4_spec { |
352 | __be32 ip4src; | 371 | __be32 ip4src; |
353 | __be32 ip4dst; | 372 | __be32 ip4dst; |
@@ -357,6 +376,15 @@ struct ethtool_usrip4_spec { | |||
357 | __u8 proto; | 376 | __u8 proto; |
358 | }; | 377 | }; |
359 | 378 | ||
379 | /** | ||
380 | * struct ethtool_rx_flow_spec - specification for RX flow filter | ||
381 | * @flow_type: Type of match to perform, e.g. %TCP_V4_FLOW | ||
382 | * @h_u: Flow fields to match (dependent on @flow_type) | ||
383 | * @m_u: Masks for flow field bits to be ignored | ||
384 | * @ring_cookie: RX ring/queue index to deliver to, or %RX_CLS_FLOW_DISC | ||
385 | * if packets should be discarded | ||
386 | * @location: Index of filter in hardware table | ||
387 | */ | ||
360 | struct ethtool_rx_flow_spec { | 388 | struct ethtool_rx_flow_spec { |
361 | __u32 flow_type; | 389 | __u32 flow_type; |
362 | union { | 390 | union { |
@@ -365,36 +393,91 @@ struct ethtool_rx_flow_spec { | |||
365 | struct ethtool_tcpip4_spec sctp_ip4_spec; | 393 | struct ethtool_tcpip4_spec sctp_ip4_spec; |
366 | struct ethtool_ah_espip4_spec ah_ip4_spec; | 394 | struct ethtool_ah_espip4_spec ah_ip4_spec; |
367 | struct ethtool_ah_espip4_spec esp_ip4_spec; | 395 | struct ethtool_ah_espip4_spec esp_ip4_spec; |
368 | struct ethtool_rawip4_spec raw_ip4_spec; | ||
369 | struct ethtool_ether_spec ether_spec; | ||
370 | struct ethtool_usrip4_spec usr_ip4_spec; | 396 | struct ethtool_usrip4_spec usr_ip4_spec; |
371 | __u8 hdata[64]; | 397 | struct ethhdr ether_spec; |
372 | } h_u, m_u; /* entry, mask */ | 398 | __u8 hdata[72]; |
399 | } h_u, m_u; | ||
373 | __u64 ring_cookie; | 400 | __u64 ring_cookie; |
374 | __u32 location; | 401 | __u32 location; |
375 | }; | 402 | }; |
376 | 403 | ||
404 | /** | ||
405 | * struct ethtool_rxnfc - command to get or set RX flow classification rules | ||
406 | * @cmd: Specific command number - %ETHTOOL_GRXFH, %ETHTOOL_SRXFH, | ||
407 | * %ETHTOOL_GRXRINGS, %ETHTOOL_GRXCLSRLCNT, %ETHTOOL_GRXCLSRULE, | ||
408 | * %ETHTOOL_GRXCLSRLALL, %ETHTOOL_SRXCLSRLDEL or %ETHTOOL_SRXCLSRLINS | ||
409 | * @flow_type: Type of flow to be affected, e.g. %TCP_V4_FLOW | ||
410 | * @data: Command-dependent value | ||
411 | * @fs: Flow filter specification | ||
412 | * @rule_cnt: Number of rules to be affected | ||
413 | * @rule_locs: Array of valid rule indices | ||
414 | * | ||
415 | * For %ETHTOOL_GRXFH and %ETHTOOL_SRXFH, @data is a bitmask indicating | ||
416 | * the fields included in the flow hash, e.g. %RXH_IP_SRC. The following | ||
417 | * structure fields must not be used. | ||
418 | * | ||
419 | * For %ETHTOOL_GRXRINGS, @data is set to the number of RX rings/queues | ||
420 | * on return. | ||
421 | * | ||
422 | * For %ETHTOOL_GRXCLSRLCNT, @rule_cnt is set to the number of defined | ||
423 | * rules on return. | ||
424 | * | ||
425 | * For %ETHTOOL_GRXCLSRULE, @fs.@location specifies the index of an | ||
426 | * existing filter rule on entry and @fs contains the rule on return. | ||
427 | * | ||
428 | * For %ETHTOOL_GRXCLSRLALL, @rule_cnt specifies the array size of the | ||
429 | * user buffer for @rule_locs on entry. On return, @data is the size | ||
430 | * of the filter table and @rule_locs contains the indices of the | ||
431 | * defined rules. | ||
432 | * | ||
433 | * For %ETHTOOL_SRXCLSRLINS, @fs specifies the filter rule to add or | ||
434 | * update. @fs.@location specifies the index to use and must not be | ||
435 | * ignored. | ||
436 | * | ||
437 | * For %ETHTOOL_SRXCLSRLDEL, @fs.@location specifies the index of an | ||
438 | * existing filter rule on entry. | ||
439 | * | ||
440 | * Implementation of indexed classification rules generally requires a | ||
441 | * TCAM. | ||
442 | */ | ||
377 | struct ethtool_rxnfc { | 443 | struct ethtool_rxnfc { |
378 | __u32 cmd; | 444 | __u32 cmd; |
379 | __u32 flow_type; | 445 | __u32 flow_type; |
380 | /* The rx flow hash value or the rule DB size */ | ||
381 | __u64 data; | 446 | __u64 data; |
382 | /* The following fields are not valid and must not be used for | ||
383 | * the ETHTOOL_{G,X}RXFH commands. */ | ||
384 | struct ethtool_rx_flow_spec fs; | 447 | struct ethtool_rx_flow_spec fs; |
385 | __u32 rule_cnt; | 448 | __u32 rule_cnt; |
386 | __u32 rule_locs[0]; | 449 | __u32 rule_locs[0]; |
387 | }; | 450 | }; |
388 | 451 | ||
452 | /** | ||
453 | * struct ethtool_rxfh_indir - command to get or set RX flow hash indirection | ||
454 | * @cmd: Specific command number - %ETHTOOL_GRXFHINDIR or %ETHTOOL_SRXFHINDIR | ||
455 | * @size: On entry, the array size of the user buffer. On return from | ||
456 | * %ETHTOOL_GRXFHINDIR, the array size of the hardware indirection table. | ||
457 | * @ring_index: RX ring/queue index for each hash value | ||
458 | */ | ||
389 | struct ethtool_rxfh_indir { | 459 | struct ethtool_rxfh_indir { |
390 | __u32 cmd; | 460 | __u32 cmd; |
391 | /* On entry, this is the array size of the user buffer. On | ||
392 | * return from ETHTOOL_GRXFHINDIR, this is the array size of | ||
393 | * the hardware indirection table. */ | ||
394 | __u32 size; | 461 | __u32 size; |
395 | __u32 ring_index[0]; /* ring/queue index for each hash value */ | 462 | __u32 ring_index[0]; |
396 | }; | 463 | }; |
397 | 464 | ||
465 | /** | ||
466 | * struct ethtool_rx_ntuple_flow_spec - specification for RX flow filter | ||
467 | * @flow_type: Type of match to perform, e.g. %TCP_V4_FLOW | ||
468 | * @h_u: Flow field values to match (dependent on @flow_type) | ||
469 | * @m_u: Masks for flow field value bits to be ignored | ||
470 | * @vlan_tag: VLAN tag to match | ||
471 | * @vlan_tag_mask: Mask for VLAN tag bits to be ignored | ||
472 | * @data: Driver-dependent data to match | ||
473 | * @data_mask: Mask for driver-dependent data bits to be ignored | ||
474 | * @action: RX ring/queue index to deliver to (non-negative) or other action | ||
475 | * (negative, e.g. %ETHTOOL_RXNTUPLE_ACTION_DROP) | ||
476 | * | ||
477 | * For flow types %TCP_V4_FLOW, %UDP_V4_FLOW and %SCTP_V4_FLOW, where | ||
478 | * a field value and mask are both zero this is treated as if all mask | ||
479 | * bits are set i.e. the field is ignored. | ||
480 | */ | ||
398 | struct ethtool_rx_ntuple_flow_spec { | 481 | struct ethtool_rx_ntuple_flow_spec { |
399 | __u32 flow_type; | 482 | __u32 flow_type; |
400 | union { | 483 | union { |
@@ -403,22 +486,26 @@ struct ethtool_rx_ntuple_flow_spec { | |||
403 | struct ethtool_tcpip4_spec sctp_ip4_spec; | 486 | struct ethtool_tcpip4_spec sctp_ip4_spec; |
404 | struct ethtool_ah_espip4_spec ah_ip4_spec; | 487 | struct ethtool_ah_espip4_spec ah_ip4_spec; |
405 | struct ethtool_ah_espip4_spec esp_ip4_spec; | 488 | struct ethtool_ah_espip4_spec esp_ip4_spec; |
406 | struct ethtool_rawip4_spec raw_ip4_spec; | ||
407 | struct ethtool_ether_spec ether_spec; | ||
408 | struct ethtool_usrip4_spec usr_ip4_spec; | 489 | struct ethtool_usrip4_spec usr_ip4_spec; |
409 | __u8 hdata[64]; | 490 | struct ethhdr ether_spec; |
410 | } h_u, m_u; /* entry, mask */ | 491 | __u8 hdata[72]; |
492 | } h_u, m_u; | ||
411 | 493 | ||
412 | __u16 vlan_tag; | 494 | __u16 vlan_tag; |
413 | __u16 vlan_tag_mask; | 495 | __u16 vlan_tag_mask; |
414 | __u64 data; /* user-defined flow spec data */ | 496 | __u64 data; |
415 | __u64 data_mask; /* user-defined flow spec mask */ | 497 | __u64 data_mask; |
416 | 498 | ||
417 | /* signed to distinguish between queue and actions (DROP) */ | ||
418 | __s32 action; | 499 | __s32 action; |
419 | #define ETHTOOL_RXNTUPLE_ACTION_DROP -1 | 500 | #define ETHTOOL_RXNTUPLE_ACTION_DROP (-1) /* drop packet */ |
501 | #define ETHTOOL_RXNTUPLE_ACTION_CLEAR (-2) /* clear filter */ | ||
420 | }; | 502 | }; |
421 | 503 | ||
504 | /** | ||
505 | * struct ethtool_rx_ntuple - command to set or clear RX flow filter | ||
506 | * @cmd: Command number - %ETHTOOL_SRXNTUPLE | ||
507 | * @fs: Flow filter specification | ||
508 | */ | ||
422 | struct ethtool_rx_ntuple { | 509 | struct ethtool_rx_ntuple { |
423 | __u32 cmd; | 510 | __u32 cmd; |
424 | struct ethtool_rx_ntuple_flow_spec fs; | 511 | struct ethtool_rx_ntuple_flow_spec fs; |
@@ -759,22 +846,23 @@ struct ethtool_ops { | |||
759 | #define WAKE_MAGIC (1 << 5) | 846 | #define WAKE_MAGIC (1 << 5) |
760 | #define WAKE_MAGICSECURE (1 << 6) /* only meaningful if WAKE_MAGIC */ | 847 | #define WAKE_MAGICSECURE (1 << 6) /* only meaningful if WAKE_MAGIC */ |
761 | 848 | ||
762 | /* L3-L4 network traffic flow types */ | 849 | /* L2-L4 network traffic flow types */ |
763 | #define TCP_V4_FLOW 0x01 | 850 | #define TCP_V4_FLOW 0x01 /* hash or spec (tcp_ip4_spec) */ |
764 | #define UDP_V4_FLOW 0x02 | 851 | #define UDP_V4_FLOW 0x02 /* hash or spec (udp_ip4_spec) */ |
765 | #define SCTP_V4_FLOW 0x03 | 852 | #define SCTP_V4_FLOW 0x03 /* hash or spec (sctp_ip4_spec) */ |
766 | #define AH_ESP_V4_FLOW 0x04 | 853 | #define AH_ESP_V4_FLOW 0x04 /* hash only */ |
767 | #define TCP_V6_FLOW 0x05 | 854 | #define TCP_V6_FLOW 0x05 /* hash only */ |
768 | #define UDP_V6_FLOW 0x06 | 855 | #define UDP_V6_FLOW 0x06 /* hash only */ |
769 | #define SCTP_V6_FLOW 0x07 | 856 | #define SCTP_V6_FLOW 0x07 /* hash only */ |
770 | #define AH_ESP_V6_FLOW 0x08 | 857 | #define AH_ESP_V6_FLOW 0x08 /* hash only */ |
771 | #define AH_V4_FLOW 0x09 | 858 | #define AH_V4_FLOW 0x09 /* hash or spec (ah_ip4_spec) */ |
772 | #define ESP_V4_FLOW 0x0a | 859 | #define ESP_V4_FLOW 0x0a /* hash or spec (esp_ip4_spec) */ |
773 | #define AH_V6_FLOW 0x0b | 860 | #define AH_V6_FLOW 0x0b /* hash only */ |
774 | #define ESP_V6_FLOW 0x0c | 861 | #define ESP_V6_FLOW 0x0c /* hash only */ |
775 | #define IP_USER_FLOW 0x0d | 862 | #define IP_USER_FLOW 0x0d /* spec only (usr_ip4_spec) */ |
776 | #define IPV4_FLOW 0x10 | 863 | #define IPV4_FLOW 0x10 /* hash only */ |
777 | #define IPV6_FLOW 0x11 | 864 | #define IPV6_FLOW 0x11 /* hash only */ |
865 | #define ETHER_FLOW 0x12 /* spec only (ether_spec) */ | ||
778 | 866 | ||
779 | /* L3-L4 network traffic flow hash options */ | 867 | /* L3-L4 network traffic flow hash options */ |
780 | #define RXH_L2DA (1 << 1) | 868 | #define RXH_L2DA (1 << 1) |
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 97b2eae6a22c..ed5a03cbe184 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h | |||
@@ -986,6 +986,7 @@ struct ieee80211_ht_info { | |||
986 | #define WLAN_AUTH_OPEN 0 | 986 | #define WLAN_AUTH_OPEN 0 |
987 | #define WLAN_AUTH_SHARED_KEY 1 | 987 | #define WLAN_AUTH_SHARED_KEY 1 |
988 | #define WLAN_AUTH_FT 2 | 988 | #define WLAN_AUTH_FT 2 |
989 | #define WLAN_AUTH_SAE 3 | ||
989 | #define WLAN_AUTH_LEAP 128 | 990 | #define WLAN_AUTH_LEAP 128 |
990 | 991 | ||
991 | #define WLAN_AUTH_CHALLENGE_LEN 128 | 992 | #define WLAN_AUTH_CHALLENGE_LEN 128 |
@@ -1072,6 +1073,10 @@ enum ieee80211_statuscode { | |||
1072 | WLAN_STATUS_NO_DIRECT_LINK = 48, | 1073 | WLAN_STATUS_NO_DIRECT_LINK = 48, |
1073 | WLAN_STATUS_STA_NOT_PRESENT = 49, | 1074 | WLAN_STATUS_STA_NOT_PRESENT = 49, |
1074 | WLAN_STATUS_STA_NOT_QSTA = 50, | 1075 | WLAN_STATUS_STA_NOT_QSTA = 50, |
1076 | /* 802.11s */ | ||
1077 | WLAN_STATUS_ANTI_CLOG_REQUIRED = 76, | ||
1078 | WLAN_STATUS_FCG_NOT_SUPP = 78, | ||
1079 | WLAN_STATUS_STA_NO_TBTT = 78, | ||
1075 | }; | 1080 | }; |
1076 | 1081 | ||
1077 | 1082 | ||
@@ -1112,6 +1117,22 @@ enum ieee80211_reasoncode { | |||
1112 | WLAN_REASON_QSTA_REQUIRE_SETUP = 38, | 1117 | WLAN_REASON_QSTA_REQUIRE_SETUP = 38, |
1113 | WLAN_REASON_QSTA_TIMEOUT = 39, | 1118 | WLAN_REASON_QSTA_TIMEOUT = 39, |
1114 | WLAN_REASON_QSTA_CIPHER_NOT_SUPP = 45, | 1119 | WLAN_REASON_QSTA_CIPHER_NOT_SUPP = 45, |
1120 | /* 802.11s */ | ||
1121 | WLAN_REASON_MESH_PEER_CANCELED = 52, | ||
1122 | WLAN_REASON_MESH_MAX_PEERS = 53, | ||
1123 | WLAN_REASON_MESH_CONFIG = 54, | ||
1124 | WLAN_REASON_MESH_CLOSE = 55, | ||
1125 | WLAN_REASON_MESH_MAX_RETRIES = 56, | ||
1126 | WLAN_REASON_MESH_CONFIRM_TIMEOUT = 57, | ||
1127 | WLAN_REASON_MESH_INVALID_GTK = 58, | ||
1128 | WLAN_REASON_MESH_INCONSISTENT_PARAM = 59, | ||
1129 | WLAN_REASON_MESH_INVALID_SECURITY = 60, | ||
1130 | WLAN_REASON_MESH_PATH_ERROR = 61, | ||
1131 | WLAN_REASON_MESH_PATH_NOFORWARD = 62, | ||
1132 | WLAN_REASON_MESH_PATH_DEST_UNREACHABLE = 63, | ||
1133 | WLAN_REASON_MAC_EXISTS_IN_MBSS = 64, | ||
1134 | WLAN_REASON_MESH_CHAN_REGULATORY = 65, | ||
1135 | WLAN_REASON_MESH_CHAN = 66, | ||
1115 | }; | 1136 | }; |
1116 | 1137 | ||
1117 | 1138 | ||
@@ -1139,20 +1160,33 @@ enum ieee80211_eid { | |||
1139 | WLAN_EID_TS_DELAY = 43, | 1160 | WLAN_EID_TS_DELAY = 43, |
1140 | WLAN_EID_TCLAS_PROCESSING = 44, | 1161 | WLAN_EID_TCLAS_PROCESSING = 44, |
1141 | WLAN_EID_QOS_CAPA = 46, | 1162 | WLAN_EID_QOS_CAPA = 46, |
1142 | /* 802.11s | 1163 | /* 802.11s */ |
1143 | * | 1164 | WLAN_EID_MESH_CONFIG = 113, |
1144 | * All mesh EID numbers are pending IEEE 802.11 ANA approval. | 1165 | WLAN_EID_MESH_ID = 114, |
1145 | * The numbers have been incremented from those suggested in | 1166 | WLAN_EID_LINK_METRIC_REPORT = 115, |
1146 | * 802.11s/D2.0 so that MESH_CONFIG does not conflict with | 1167 | WLAN_EID_CONGESTION_NOTIFICATION = 116, |
1147 | * EXT_SUPP_RATES. | 1168 | /* Note that the Peer Link IE has been replaced with the similar |
1169 | * Peer Management IE. We will keep the former definition until mesh | ||
1170 | * code is changed to comply with latest 802.11s drafts. | ||
1148 | */ | 1171 | */ |
1149 | WLAN_EID_MESH_CONFIG = 51, | 1172 | WLAN_EID_PEER_LINK = 55, /* no longer in 802.11s drafts */ |
1150 | WLAN_EID_MESH_ID = 52, | 1173 | WLAN_EID_PEER_MGMT = 117, |
1151 | WLAN_EID_PEER_LINK = 55, | 1174 | WLAN_EID_CHAN_SWITCH_PARAM = 118, |
1152 | WLAN_EID_PREQ = 68, | 1175 | WLAN_EID_MESH_AWAKE_WINDOW = 119, |
1153 | WLAN_EID_PREP = 69, | 1176 | WLAN_EID_BEACON_TIMING = 120, |
1154 | WLAN_EID_PERR = 70, | 1177 | WLAN_EID_MCCAOP_SETUP_REQ = 121, |
1155 | WLAN_EID_RANN = 49, /* compatible with FreeBSD */ | 1178 | WLAN_EID_MCCAOP_SETUP_RESP = 122, |
1179 | WLAN_EID_MCCAOP_ADVERT = 123, | ||
1180 | WLAN_EID_MCCAOP_TEARDOWN = 124, | ||
1181 | WLAN_EID_GANN = 125, | ||
1182 | WLAN_EID_RANN = 126, | ||
1183 | WLAN_EID_PREQ = 130, | ||
1184 | WLAN_EID_PREP = 131, | ||
1185 | WLAN_EID_PERR = 132, | ||
1186 | WLAN_EID_PXU = 137, | ||
1187 | WLAN_EID_PXUC = 138, | ||
1188 | WLAN_EID_AUTH_MESH_PEER_EXCH = 139, | ||
1189 | WLAN_EID_MIC = 140, | ||
1156 | 1190 | ||
1157 | WLAN_EID_PWR_CONSTRAINT = 32, | 1191 | WLAN_EID_PWR_CONSTRAINT = 32, |
1158 | WLAN_EID_PWR_CAPABILITY = 33, | 1192 | WLAN_EID_PWR_CAPABILITY = 33, |
@@ -1211,9 +1245,14 @@ enum ieee80211_category { | |||
1211 | WLAN_CATEGORY_HT = 7, | 1245 | WLAN_CATEGORY_HT = 7, |
1212 | WLAN_CATEGORY_SA_QUERY = 8, | 1246 | WLAN_CATEGORY_SA_QUERY = 8, |
1213 | WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9, | 1247 | WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9, |
1248 | WLAN_CATEGORY_MESH_ACTION = 13, | ||
1249 | WLAN_CATEGORY_MULTIHOP_ACTION = 14, | ||
1250 | WLAN_CATEGORY_SELF_PROTECTED = 15, | ||
1214 | WLAN_CATEGORY_WMM = 17, | 1251 | WLAN_CATEGORY_WMM = 17, |
1215 | WLAN_CATEGORY_MESH_PLINK = 30, /* Pending ANA approval */ | 1252 | /* TODO: remove MESH_PLINK and MESH_PATH_SEL after */ |
1216 | WLAN_CATEGORY_MESH_PATH_SEL = 32, /* Pending ANA approval */ | 1253 | /* mesh is updated to current 802.11s draft */ |
1254 | WLAN_CATEGORY_MESH_PLINK = 30, | ||
1255 | WLAN_CATEGORY_MESH_PATH_SEL = 32, | ||
1217 | WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126, | 1256 | WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126, |
1218 | WLAN_CATEGORY_VENDOR_SPECIFIC = 127, | 1257 | WLAN_CATEGORY_VENDOR_SPECIFIC = 127, |
1219 | }; | 1258 | }; |
@@ -1351,6 +1390,8 @@ enum ieee80211_sa_query_action { | |||
1351 | /* AKM suite selectors */ | 1390 | /* AKM suite selectors */ |
1352 | #define WLAN_AKM_SUITE_8021X 0x000FAC01 | 1391 | #define WLAN_AKM_SUITE_8021X 0x000FAC01 |
1353 | #define WLAN_AKM_SUITE_PSK 0x000FAC02 | 1392 | #define WLAN_AKM_SUITE_PSK 0x000FAC02 |
1393 | #define WLAN_AKM_SUITE_SAE 0x000FAC08 | ||
1394 | #define WLAN_AKM_SUITE_FT_OVER_SAE 0x000FAC09 | ||
1354 | 1395 | ||
1355 | #define WLAN_MAX_KEY_LEN 32 | 1396 | #define WLAN_MAX_KEY_LEN 32 |
1356 | 1397 | ||
diff --git a/include/linux/if.h b/include/linux/if.h index 53558ec59e1b..123959927745 100644 --- a/include/linux/if.h +++ b/include/linux/if.h | |||
@@ -75,6 +75,8 @@ | |||
75 | #define IFF_DISABLE_NETPOLL 0x2000 /* disable netpoll at run-time */ | 75 | #define IFF_DISABLE_NETPOLL 0x2000 /* disable netpoll at run-time */ |
76 | #define IFF_MACVLAN_PORT 0x4000 /* device used as macvlan port */ | 76 | #define IFF_MACVLAN_PORT 0x4000 /* device used as macvlan port */ |
77 | #define IFF_BRIDGE_PORT 0x8000 /* device used as bridge port */ | 77 | #define IFF_BRIDGE_PORT 0x8000 /* device used as bridge port */ |
78 | #define IFF_OVS_DATAPATH 0x10000 /* device used as Open vSwitch | ||
79 | * datapath port */ | ||
78 | 80 | ||
79 | #define IF_GET_IFACE 0x0001 /* for querying only */ | 81 | #define IF_GET_IFACE 0x0001 /* for querying only */ |
80 | #define IF_GET_PROTO 0x0002 | 82 | #define IF_GET_PROTO 0x0002 |
diff --git a/include/linux/if_bonding.h b/include/linux/if_bonding.h index 2c7994372bde..a17edda8a781 100644 --- a/include/linux/if_bonding.h +++ b/include/linux/if_bonding.h | |||
@@ -84,6 +84,9 @@ | |||
84 | #define BOND_DEFAULT_MAX_BONDS 1 /* Default maximum number of devices to support */ | 84 | #define BOND_DEFAULT_MAX_BONDS 1 /* Default maximum number of devices to support */ |
85 | 85 | ||
86 | #define BOND_DEFAULT_TX_QUEUES 16 /* Default number of tx queues per device */ | 86 | #define BOND_DEFAULT_TX_QUEUES 16 /* Default number of tx queues per device */ |
87 | |||
88 | #define BOND_DEFAULT_RESEND_IGMP 1 /* Default number of IGMP membership reports */ | ||
89 | |||
87 | /* hashing types */ | 90 | /* hashing types */ |
88 | #define BOND_XMIT_POLICY_LAYER2 0 /* layer 2 (MAC only), default */ | 91 | #define BOND_XMIT_POLICY_LAYER2 0 /* layer 2 (MAC only), default */ |
89 | #define BOND_XMIT_POLICY_LAYER34 1 /* layer 3+4 (IP ^ (TCP || UDP)) */ | 92 | #define BOND_XMIT_POLICY_LAYER34 1 /* layer 3+4 (IP ^ (TCP || UDP)) */ |
diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h index bed7a4682b90..f9c3df03db0f 100644 --- a/include/linux/if_ether.h +++ b/include/linux/if_ether.h | |||
@@ -137,8 +137,6 @@ extern struct ctl_table ether_table[]; | |||
137 | 137 | ||
138 | extern ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len); | 138 | extern ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len); |
139 | 139 | ||
140 | #define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" | ||
141 | |||
142 | #endif | 140 | #endif |
143 | 141 | ||
144 | #endif /* _LINUX_IF_ETHER_H */ | 142 | #endif /* _LINUX_IF_ETHER_H */ |
diff --git a/include/linux/if_macvlan.h b/include/linux/if_macvlan.h index 35280b302290..8a2fd66a8b5f 100644 --- a/include/linux/if_macvlan.h +++ b/include/linux/if_macvlan.h | |||
@@ -40,6 +40,12 @@ struct macvlan_rx_stats { | |||
40 | unsigned long rx_errors; | 40 | unsigned long rx_errors; |
41 | }; | 41 | }; |
42 | 42 | ||
43 | /* | ||
44 | * Maximum times a macvtap device can be opened. This can be used to | ||
45 | * configure the number of receive queue, e.g. for multiqueue virtio. | ||
46 | */ | ||
47 | #define MAX_MACVTAP_QUEUES (NR_CPUS < 16 ? NR_CPUS : 16) | ||
48 | |||
43 | struct macvlan_dev { | 49 | struct macvlan_dev { |
44 | struct net_device *dev; | 50 | struct net_device *dev; |
45 | struct list_head list; | 51 | struct list_head list; |
@@ -50,7 +56,8 @@ struct macvlan_dev { | |||
50 | enum macvlan_mode mode; | 56 | enum macvlan_mode mode; |
51 | int (*receive)(struct sk_buff *skb); | 57 | int (*receive)(struct sk_buff *skb); |
52 | int (*forward)(struct net_device *dev, struct sk_buff *skb); | 58 | int (*forward)(struct net_device *dev, struct sk_buff *skb); |
53 | struct macvtap_queue *tap; | 59 | struct macvtap_queue *taps[MAX_MACVTAP_QUEUES]; |
60 | int numvtaps; | ||
54 | }; | 61 | }; |
55 | 62 | ||
56 | static inline void macvlan_count_rx(const struct macvlan_dev *vlan, | 63 | static inline void macvlan_count_rx(const struct macvlan_dev *vlan, |
diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h index 27741e05446f..397921b09ef9 100644 --- a/include/linux/if_pppox.h +++ b/include/linux/if_pppox.h | |||
@@ -40,25 +40,35 @@ | |||
40 | * PPPoE addressing definition | 40 | * PPPoE addressing definition |
41 | */ | 41 | */ |
42 | typedef __be16 sid_t; | 42 | typedef __be16 sid_t; |
43 | struct pppoe_addr{ | 43 | struct pppoe_addr { |
44 | sid_t sid; /* Session identifier */ | 44 | sid_t sid; /* Session identifier */ |
45 | unsigned char remote[ETH_ALEN]; /* Remote address */ | 45 | unsigned char remote[ETH_ALEN]; /* Remote address */ |
46 | char dev[IFNAMSIZ]; /* Local device to use */ | 46 | char dev[IFNAMSIZ]; /* Local device to use */ |
47 | }; | 47 | }; |
48 | 48 | ||
49 | /************************************************************************ | 49 | /************************************************************************ |
50 | * Protocols supported by AF_PPPOX | 50 | * PPTP addressing definition |
51 | */ | 51 | */ |
52 | struct pptp_addr { | ||
53 | __be16 call_id; | ||
54 | struct in_addr sin_addr; | ||
55 | }; | ||
56 | |||
57 | /************************************************************************ | ||
58 | * Protocols supported by AF_PPPOX | ||
59 | */ | ||
52 | #define PX_PROTO_OE 0 /* Currently just PPPoE */ | 60 | #define PX_PROTO_OE 0 /* Currently just PPPoE */ |
53 | #define PX_PROTO_OL2TP 1 /* Now L2TP also */ | 61 | #define PX_PROTO_OL2TP 1 /* Now L2TP also */ |
54 | #define PX_MAX_PROTO 2 | 62 | #define PX_PROTO_PPTP 2 |
55 | 63 | #define PX_MAX_PROTO 3 | |
56 | struct sockaddr_pppox { | 64 | |
57 | sa_family_t sa_family; /* address family, AF_PPPOX */ | 65 | struct sockaddr_pppox { |
58 | unsigned int sa_protocol; /* protocol identifier */ | 66 | sa_family_t sa_family; /* address family, AF_PPPOX */ |
59 | union{ | 67 | unsigned int sa_protocol; /* protocol identifier */ |
60 | struct pppoe_addr pppoe; | 68 | union { |
61 | }sa_addr; | 69 | struct pppoe_addr pppoe; |
70 | struct pptp_addr pptp; | ||
71 | } sa_addr; | ||
62 | } __attribute__((packed)); | 72 | } __attribute__((packed)); |
63 | 73 | ||
64 | /* The use of the above union isn't viable because the size of this | 74 | /* The use of the above union isn't viable because the size of this |
@@ -150,15 +160,23 @@ struct pppoe_opt { | |||
150 | relayed to (PPPoE relaying) */ | 160 | relayed to (PPPoE relaying) */ |
151 | }; | 161 | }; |
152 | 162 | ||
163 | struct pptp_opt { | ||
164 | struct pptp_addr src_addr; | ||
165 | struct pptp_addr dst_addr; | ||
166 | u32 ack_sent, ack_recv; | ||
167 | u32 seq_sent, seq_recv; | ||
168 | int ppp_flags; | ||
169 | }; | ||
153 | #include <net/sock.h> | 170 | #include <net/sock.h> |
154 | 171 | ||
155 | struct pppox_sock { | 172 | struct pppox_sock { |
156 | /* struct sock must be the first member of pppox_sock */ | 173 | /* struct sock must be the first member of pppox_sock */ |
157 | struct sock sk; | 174 | struct sock sk; |
158 | struct ppp_channel chan; | 175 | struct ppp_channel chan; |
159 | struct pppox_sock *next; /* for hash table */ | 176 | struct pppox_sock *next; /* for hash table */ |
160 | union { | 177 | union { |
161 | struct pppoe_opt pppoe; | 178 | struct pppoe_opt pppoe; |
179 | struct pptp_opt pptp; | ||
162 | } proto; | 180 | } proto; |
163 | __be16 num; | 181 | __be16 num; |
164 | }; | 182 | }; |
@@ -186,7 +204,7 @@ struct pppox_proto { | |||
186 | struct module *owner; | 204 | struct module *owner; |
187 | }; | 205 | }; |
188 | 206 | ||
189 | extern int register_pppox_proto(int proto_num, struct pppox_proto *pp); | 207 | extern int register_pppox_proto(int proto_num, const struct pppox_proto *pp); |
190 | extern void unregister_pppox_proto(int proto_num); | 208 | extern void unregister_pppox_proto(int proto_num); |
191 | extern void pppox_unbind_sock(struct sock *sk);/* delete ppp-channel binding */ | 209 | extern void pppox_unbind_sock(struct sock *sk);/* delete ppp-channel binding */ |
192 | extern int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg); | 210 | extern int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg); |
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h index 3d870fda8c4f..c2f3a72712ce 100644 --- a/include/linux/if_vlan.h +++ b/include/linux/if_vlan.h | |||
@@ -16,6 +16,7 @@ | |||
16 | #ifdef __KERNEL__ | 16 | #ifdef __KERNEL__ |
17 | #include <linux/netdevice.h> | 17 | #include <linux/netdevice.h> |
18 | #include <linux/etherdevice.h> | 18 | #include <linux/etherdevice.h> |
19 | #include <linux/rtnetlink.h> | ||
19 | 20 | ||
20 | #define VLAN_HLEN 4 /* The additional bytes (on top of the Ethernet header) | 21 | #define VLAN_HLEN 4 /* The additional bytes (on top of the Ethernet header) |
21 | * that VLAN requires. | 22 | * that VLAN requires. |
@@ -68,6 +69,7 @@ static inline struct vlan_ethhdr *vlan_eth_hdr(const struct sk_buff *skb) | |||
68 | #define VLAN_CFI_MASK 0x1000 /* Canonical Format Indicator */ | 69 | #define VLAN_CFI_MASK 0x1000 /* Canonical Format Indicator */ |
69 | #define VLAN_TAG_PRESENT VLAN_CFI_MASK | 70 | #define VLAN_TAG_PRESENT VLAN_CFI_MASK |
70 | #define VLAN_VID_MASK 0x0fff /* VLAN Identifier */ | 71 | #define VLAN_VID_MASK 0x0fff /* VLAN Identifier */ |
72 | #define VLAN_N_VID 4096 | ||
71 | 73 | ||
72 | /* found in socket.c */ | 74 | /* found in socket.c */ |
73 | extern void vlan_ioctl_set(int (*hook)(struct net *, void __user *)); | 75 | extern void vlan_ioctl_set(int (*hook)(struct net *, void __user *)); |
@@ -76,9 +78,8 @@ extern void vlan_ioctl_set(int (*hook)(struct net *, void __user *)); | |||
76 | * depends on completely exhausting the VLAN identifier space. Thus | 78 | * depends on completely exhausting the VLAN identifier space. Thus |
77 | * it gives constant time look-up, but in many cases it wastes memory. | 79 | * it gives constant time look-up, but in many cases it wastes memory. |
78 | */ | 80 | */ |
79 | #define VLAN_GROUP_ARRAY_LEN 4096 | ||
80 | #define VLAN_GROUP_ARRAY_SPLIT_PARTS 8 | 81 | #define VLAN_GROUP_ARRAY_SPLIT_PARTS 8 |
81 | #define VLAN_GROUP_ARRAY_PART_LEN (VLAN_GROUP_ARRAY_LEN/VLAN_GROUP_ARRAY_SPLIT_PARTS) | 82 | #define VLAN_GROUP_ARRAY_PART_LEN (VLAN_N_VID/VLAN_GROUP_ARRAY_SPLIT_PARTS) |
82 | 83 | ||
83 | struct vlan_group { | 84 | struct vlan_group { |
84 | struct net_device *real_dev; /* The ethernet(like) device | 85 | struct net_device *real_dev; /* The ethernet(like) device |
@@ -114,12 +115,24 @@ static inline void vlan_group_set_device(struct vlan_group *vg, | |||
114 | #define vlan_tx_tag_get(__skb) ((__skb)->vlan_tci & ~VLAN_TAG_PRESENT) | 115 | #define vlan_tx_tag_get(__skb) ((__skb)->vlan_tci & ~VLAN_TAG_PRESENT) |
115 | 116 | ||
116 | #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) | 117 | #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) |
118 | /* Must be invoked with rcu_read_lock or with RTNL. */ | ||
119 | static inline struct net_device *vlan_find_dev(struct net_device *real_dev, | ||
120 | u16 vlan_id) | ||
121 | { | ||
122 | struct vlan_group *grp = rcu_dereference_rtnl(real_dev->vlgrp); | ||
123 | |||
124 | if (grp) | ||
125 | return vlan_group_get_device(grp, vlan_id); | ||
126 | |||
127 | return NULL; | ||
128 | } | ||
129 | |||
117 | extern struct net_device *vlan_dev_real_dev(const struct net_device *dev); | 130 | extern struct net_device *vlan_dev_real_dev(const struct net_device *dev); |
118 | extern u16 vlan_dev_vlan_id(const struct net_device *dev); | 131 | extern u16 vlan_dev_vlan_id(const struct net_device *dev); |
119 | 132 | ||
120 | extern int __vlan_hwaccel_rx(struct sk_buff *skb, struct vlan_group *grp, | 133 | extern int __vlan_hwaccel_rx(struct sk_buff *skb, struct vlan_group *grp, |
121 | u16 vlan_tci, int polling); | 134 | u16 vlan_tci, int polling); |
122 | extern int vlan_hwaccel_do_receive(struct sk_buff *skb); | 135 | extern bool vlan_hwaccel_do_receive(struct sk_buff **skb); |
123 | extern gro_result_t | 136 | extern gro_result_t |
124 | vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp, | 137 | vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp, |
125 | unsigned int vlan_tci, struct sk_buff *skb); | 138 | unsigned int vlan_tci, struct sk_buff *skb); |
@@ -128,6 +141,12 @@ vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp, | |||
128 | unsigned int vlan_tci); | 141 | unsigned int vlan_tci); |
129 | 142 | ||
130 | #else | 143 | #else |
144 | static inline struct net_device *vlan_find_dev(struct net_device *real_dev, | ||
145 | u16 vlan_id) | ||
146 | { | ||
147 | return NULL; | ||
148 | } | ||
149 | |||
131 | static inline struct net_device *vlan_dev_real_dev(const struct net_device *dev) | 150 | static inline struct net_device *vlan_dev_real_dev(const struct net_device *dev) |
132 | { | 151 | { |
133 | BUG(); | 152 | BUG(); |
@@ -147,9 +166,11 @@ static inline int __vlan_hwaccel_rx(struct sk_buff *skb, struct vlan_group *grp, | |||
147 | return NET_XMIT_SUCCESS; | 166 | return NET_XMIT_SUCCESS; |
148 | } | 167 | } |
149 | 168 | ||
150 | static inline int vlan_hwaccel_do_receive(struct sk_buff *skb) | 169 | static inline bool vlan_hwaccel_do_receive(struct sk_buff **skb) |
151 | { | 170 | { |
152 | return 0; | 171 | if ((*skb)->vlan_tci & VLAN_VID_MASK) |
172 | (*skb)->pkt_type = PACKET_OTHERHOST; | ||
173 | return false; | ||
153 | } | 174 | } |
154 | 175 | ||
155 | static inline gro_result_t | 176 | static inline gro_result_t |
diff --git a/include/linux/in.h b/include/linux/in.h index 41d88a4689af..beeb6dee2b49 100644 --- a/include/linux/in.h +++ b/include/linux/in.h | |||
@@ -250,6 +250,25 @@ struct sockaddr_in { | |||
250 | 250 | ||
251 | #ifdef __KERNEL__ | 251 | #ifdef __KERNEL__ |
252 | 252 | ||
253 | #include <linux/errno.h> | ||
254 | |||
255 | static inline int proto_ports_offset(int proto) | ||
256 | { | ||
257 | switch (proto) { | ||
258 | case IPPROTO_TCP: | ||
259 | case IPPROTO_UDP: | ||
260 | case IPPROTO_DCCP: | ||
261 | case IPPROTO_ESP: /* SPI */ | ||
262 | case IPPROTO_SCTP: | ||
263 | case IPPROTO_UDPLITE: | ||
264 | return 0; | ||
265 | case IPPROTO_AH: /* SPI */ | ||
266 | return 4; | ||
267 | default: | ||
268 | return -EINVAL; | ||
269 | } | ||
270 | } | ||
271 | |||
253 | static inline bool ipv4_is_loopback(__be32 addr) | 272 | static inline bool ipv4_is_loopback(__be32 addr) |
254 | { | 273 | { |
255 | return (addr & htonl(0xff000000)) == htonl(0x7f000000); | 274 | return (addr & htonl(0xff000000)) == htonl(0x7f000000); |
diff --git a/include/linux/in6.h b/include/linux/in6.h index c4bf46f764bf..097a34b55560 100644 --- a/include/linux/in6.h +++ b/include/linux/in6.h | |||
@@ -268,6 +268,10 @@ struct in6_flowlabel_req { | |||
268 | /* RFC5082: Generalized Ttl Security Mechanism */ | 268 | /* RFC5082: Generalized Ttl Security Mechanism */ |
269 | #define IPV6_MINHOPCOUNT 73 | 269 | #define IPV6_MINHOPCOUNT 73 |
270 | 270 | ||
271 | #define IPV6_ORIGDSTADDR 74 | ||
272 | #define IPV6_RECVORIGDSTADDR IPV6_ORIGDSTADDR | ||
273 | #define IPV6_TRANSPARENT 75 | ||
274 | |||
271 | /* | 275 | /* |
272 | * Multicast Routing: | 276 | * Multicast Routing: |
273 | * see include/linux/mroute6.h. | 277 | * see include/linux/mroute6.h. |
diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h index 2be1a1a2beb9..ccd5b07d678d 100644 --- a/include/linux/inetdevice.h +++ b/include/linux/inetdevice.h | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <linux/rcupdate.h> | 9 | #include <linux/rcupdate.h> |
10 | #include <linux/timer.h> | 10 | #include <linux/timer.h> |
11 | #include <linux/sysctl.h> | 11 | #include <linux/sysctl.h> |
12 | #include <linux/rtnetlink.h> | ||
12 | 13 | ||
13 | enum | 14 | enum |
14 | { | 15 | { |
@@ -158,7 +159,12 @@ struct in_ifaddr { | |||
158 | extern int register_inetaddr_notifier(struct notifier_block *nb); | 159 | extern int register_inetaddr_notifier(struct notifier_block *nb); |
159 | extern int unregister_inetaddr_notifier(struct notifier_block *nb); | 160 | extern int unregister_inetaddr_notifier(struct notifier_block *nb); |
160 | 161 | ||
161 | extern struct net_device *ip_dev_find(struct net *net, __be32 addr); | 162 | extern struct net_device *__ip_dev_find(struct net *net, __be32 addr, bool devref); |
163 | static inline struct net_device *ip_dev_find(struct net *net, __be32 addr) | ||
164 | { | ||
165 | return __ip_dev_find(net, addr, true); | ||
166 | } | ||
167 | |||
162 | extern int inet_addr_onlink(struct in_device *in_dev, __be32 a, __be32 b); | 168 | extern int inet_addr_onlink(struct in_device *in_dev, __be32 a, __be32 b); |
163 | extern int devinet_ioctl(struct net *net, unsigned int cmd, void __user *); | 169 | extern int devinet_ioctl(struct net *net, unsigned int cmd, void __user *); |
164 | extern void devinet_init(void); | 170 | extern void devinet_init(void); |
@@ -198,14 +204,10 @@ static __inline__ int bad_mask(__be32 mask, __be32 addr) | |||
198 | 204 | ||
199 | static inline struct in_device *__in_dev_get_rcu(const struct net_device *dev) | 205 | static inline struct in_device *__in_dev_get_rcu(const struct net_device *dev) |
200 | { | 206 | { |
201 | struct in_device *in_dev = dev->ip_ptr; | 207 | return rcu_dereference(dev->ip_ptr); |
202 | if (in_dev) | ||
203 | in_dev = rcu_dereference(in_dev); | ||
204 | return in_dev; | ||
205 | } | 208 | } |
206 | 209 | ||
207 | static __inline__ struct in_device * | 210 | static inline struct in_device *in_dev_get(const struct net_device *dev) |
208 | in_dev_get(const struct net_device *dev) | ||
209 | { | 211 | { |
210 | struct in_device *in_dev; | 212 | struct in_device *in_dev; |
211 | 213 | ||
@@ -217,10 +219,9 @@ in_dev_get(const struct net_device *dev) | |||
217 | return in_dev; | 219 | return in_dev; |
218 | } | 220 | } |
219 | 221 | ||
220 | static __inline__ struct in_device * | 222 | static inline struct in_device *__in_dev_get_rtnl(const struct net_device *dev) |
221 | __in_dev_get_rtnl(const struct net_device *dev) | ||
222 | { | 223 | { |
223 | return (struct in_device*)dev->ip_ptr; | 224 | return rcu_dereference_check(dev->ip_ptr, lockdep_rtnl_is_held()); |
224 | } | 225 | } |
225 | 226 | ||
226 | extern void in_dev_finish_destroy(struct in_device *idev); | 227 | extern void in_dev_finish_destroy(struct in_device *idev); |
diff --git a/include/linux/ip_vs.h b/include/linux/ip_vs.h index 9708de265bb1..5f43a3b2e3ad 100644 --- a/include/linux/ip_vs.h +++ b/include/linux/ip_vs.h | |||
@@ -70,6 +70,7 @@ | |||
70 | 70 | ||
71 | /* | 71 | /* |
72 | * IPVS Connection Flags | 72 | * IPVS Connection Flags |
73 | * Only flags 0..15 are sent to backup server | ||
73 | */ | 74 | */ |
74 | #define IP_VS_CONN_F_FWD_MASK 0x0007 /* mask for the fwd methods */ | 75 | #define IP_VS_CONN_F_FWD_MASK 0x0007 /* mask for the fwd methods */ |
75 | #define IP_VS_CONN_F_MASQ 0x0000 /* masquerading/NAT */ | 76 | #define IP_VS_CONN_F_MASQ 0x0000 /* masquerading/NAT */ |
@@ -88,9 +89,20 @@ | |||
88 | #define IP_VS_CONN_F_TEMPLATE 0x1000 /* template, not connection */ | 89 | #define IP_VS_CONN_F_TEMPLATE 0x1000 /* template, not connection */ |
89 | #define IP_VS_CONN_F_ONE_PACKET 0x2000 /* forward only one packet */ | 90 | #define IP_VS_CONN_F_ONE_PACKET 0x2000 /* forward only one packet */ |
90 | 91 | ||
92 | /* Flags that are not sent to backup server start from bit 16 */ | ||
93 | #define IP_VS_CONN_F_NFCT (1 << 16) /* use netfilter conntrack */ | ||
94 | |||
95 | /* Connection flags from destination that can be changed by user space */ | ||
96 | #define IP_VS_CONN_F_DEST_MASK (IP_VS_CONN_F_FWD_MASK | \ | ||
97 | IP_VS_CONN_F_ONE_PACKET | \ | ||
98 | IP_VS_CONN_F_NFCT | \ | ||
99 | 0) | ||
100 | |||
91 | #define IP_VS_SCHEDNAME_MAXLEN 16 | 101 | #define IP_VS_SCHEDNAME_MAXLEN 16 |
102 | #define IP_VS_PENAME_MAXLEN 16 | ||
92 | #define IP_VS_IFNAME_MAXLEN 16 | 103 | #define IP_VS_IFNAME_MAXLEN 16 |
93 | 104 | ||
105 | #define IP_VS_PEDATA_MAXLEN 255 | ||
94 | 106 | ||
95 | /* | 107 | /* |
96 | * The struct ip_vs_service_user and struct ip_vs_dest_user are | 108 | * The struct ip_vs_service_user and struct ip_vs_dest_user are |
@@ -324,6 +336,9 @@ enum { | |||
324 | IPVS_SVC_ATTR_NETMASK, /* persistent netmask */ | 336 | IPVS_SVC_ATTR_NETMASK, /* persistent netmask */ |
325 | 337 | ||
326 | IPVS_SVC_ATTR_STATS, /* nested attribute for service stats */ | 338 | IPVS_SVC_ATTR_STATS, /* nested attribute for service stats */ |
339 | |||
340 | IPVS_SVC_ATTR_PE_NAME, /* name of ct retriever */ | ||
341 | |||
327 | __IPVS_SVC_ATTR_MAX, | 342 | __IPVS_SVC_ATTR_MAX, |
328 | }; | 343 | }; |
329 | 344 | ||
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index e62683ba88e6..8e429d0e0405 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
@@ -341,7 +341,9 @@ struct ipv6_pinfo { | |||
341 | odstopts:1, | 341 | odstopts:1, |
342 | rxflow:1, | 342 | rxflow:1, |
343 | rxtclass:1, | 343 | rxtclass:1, |
344 | rxpmtu:1; | 344 | rxpmtu:1, |
345 | rxorigdstaddr:1; | ||
346 | /* 2 bits hole */ | ||
345 | } bits; | 347 | } bits; |
346 | __u16 all; | 348 | __u16 all; |
347 | } rxopt; | 349 | } rxopt; |
diff --git a/include/linux/mlx4/cmd.h b/include/linux/mlx4/cmd.h index 0f82293a82ed..78a1b9671752 100644 --- a/include/linux/mlx4/cmd.h +++ b/include/linux/mlx4/cmd.h | |||
@@ -56,6 +56,7 @@ enum { | |||
56 | MLX4_CMD_QUERY_HCA = 0xb, | 56 | MLX4_CMD_QUERY_HCA = 0xb, |
57 | MLX4_CMD_QUERY_PORT = 0x43, | 57 | MLX4_CMD_QUERY_PORT = 0x43, |
58 | MLX4_CMD_SENSE_PORT = 0x4d, | 58 | MLX4_CMD_SENSE_PORT = 0x4d, |
59 | MLX4_CMD_HW_HEALTH_CHECK = 0x50, | ||
59 | MLX4_CMD_SET_PORT = 0xc, | 60 | MLX4_CMD_SET_PORT = 0xc, |
60 | MLX4_CMD_ACCESS_DDR = 0x2e, | 61 | MLX4_CMD_ACCESS_DDR = 0x2e, |
61 | MLX4_CMD_MAP_ICM = 0xffa, | 62 | MLX4_CMD_MAP_ICM = 0xffa, |
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index 7a7f9c1e679a..7338654c02b4 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h | |||
@@ -186,6 +186,10 @@ struct mlx4_caps { | |||
186 | int eth_mtu_cap[MLX4_MAX_PORTS + 1]; | 186 | int eth_mtu_cap[MLX4_MAX_PORTS + 1]; |
187 | int gid_table_len[MLX4_MAX_PORTS + 1]; | 187 | int gid_table_len[MLX4_MAX_PORTS + 1]; |
188 | int pkey_table_len[MLX4_MAX_PORTS + 1]; | 188 | int pkey_table_len[MLX4_MAX_PORTS + 1]; |
189 | int trans_type[MLX4_MAX_PORTS + 1]; | ||
190 | int vendor_oui[MLX4_MAX_PORTS + 1]; | ||
191 | int wavelength[MLX4_MAX_PORTS + 1]; | ||
192 | u64 trans_code[MLX4_MAX_PORTS + 1]; | ||
189 | int local_ca_ack_delay; | 193 | int local_ca_ack_delay; |
190 | int num_uars; | 194 | int num_uars; |
191 | int bf_reg_size; | 195 | int bf_reg_size; |
@@ -229,6 +233,8 @@ struct mlx4_caps { | |||
229 | u32 bmme_flags; | 233 | u32 bmme_flags; |
230 | u32 reserved_lkey; | 234 | u32 reserved_lkey; |
231 | u16 stat_rate_support; | 235 | u16 stat_rate_support; |
236 | int udp_rss; | ||
237 | int loopback_support; | ||
232 | u8 port_width_cap[MLX4_MAX_PORTS + 1]; | 238 | u8 port_width_cap[MLX4_MAX_PORTS + 1]; |
233 | int max_gso_sz; | 239 | int max_gso_sz; |
234 | int reserved_qps_cnt[MLX4_NUM_QP_REGION]; | 240 | int reserved_qps_cnt[MLX4_NUM_QP_REGION]; |
@@ -480,5 +486,6 @@ void mlx4_fmr_unmap(struct mlx4_dev *dev, struct mlx4_fmr *fmr, | |||
480 | u32 *lkey, u32 *rkey); | 486 | u32 *lkey, u32 *rkey); |
481 | int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr); | 487 | int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr); |
482 | int mlx4_SYNC_TPT(struct mlx4_dev *dev); | 488 | int mlx4_SYNC_TPT(struct mlx4_dev *dev); |
489 | int mlx4_test_interrupts(struct mlx4_dev *dev); | ||
483 | 490 | ||
484 | #endif /* MLX4_DEVICE_H */ | 491 | #endif /* MLX4_DEVICE_H */ |
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h index 33b2ea09a4ad..a36ab3bc7b03 100644 --- a/include/linux/mmc/sdio_ids.h +++ b/include/linux/mmc/sdio_ids.h | |||
@@ -18,6 +18,7 @@ | |||
18 | #define SDIO_CLASS_PHS 0x06 /* PHS standard interface */ | 18 | #define SDIO_CLASS_PHS 0x06 /* PHS standard interface */ |
19 | #define SDIO_CLASS_WLAN 0x07 /* WLAN interface */ | 19 | #define SDIO_CLASS_WLAN 0x07 /* WLAN interface */ |
20 | #define SDIO_CLASS_ATA 0x08 /* Embedded SDIO-ATA std interface */ | 20 | #define SDIO_CLASS_ATA 0x08 /* Embedded SDIO-ATA std interface */ |
21 | #define SDIO_CLASS_BT_AMP 0x09 /* Type-A Bluetooth AMP interface */ | ||
21 | 22 | ||
22 | /* | 23 | /* |
23 | * Vendors and devices. Sort key: vendor first, device next. | 24 | * Vendors and devices. Sort key: vendor first, device next. |
diff --git a/include/linux/mroute.h b/include/linux/mroute.h index fa04b246c9ae..0fa7a3a874c8 100644 --- a/include/linux/mroute.h +++ b/include/linux/mroute.h | |||
@@ -213,6 +213,7 @@ struct mfc_cache { | |||
213 | unsigned char ttls[MAXVIFS]; /* TTL thresholds */ | 213 | unsigned char ttls[MAXVIFS]; /* TTL thresholds */ |
214 | } res; | 214 | } res; |
215 | } mfc_un; | 215 | } mfc_un; |
216 | struct rcu_head rcu; | ||
216 | }; | 217 | }; |
217 | 218 | ||
218 | #define MFC_STATIC 1 | 219 | #define MFC_STATIC 1 |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 46c36ffe20ee..fcd3dda86322 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -228,9 +228,9 @@ struct netdev_hw_addr { | |||
228 | #define NETDEV_HW_ADDR_T_SLAVE 3 | 228 | #define NETDEV_HW_ADDR_T_SLAVE 3 |
229 | #define NETDEV_HW_ADDR_T_UNICAST 4 | 229 | #define NETDEV_HW_ADDR_T_UNICAST 4 |
230 | #define NETDEV_HW_ADDR_T_MULTICAST 5 | 230 | #define NETDEV_HW_ADDR_T_MULTICAST 5 |
231 | int refcount; | ||
232 | bool synced; | 231 | bool synced; |
233 | bool global_use; | 232 | bool global_use; |
233 | int refcount; | ||
234 | struct rcu_head rcu_head; | 234 | struct rcu_head rcu_head; |
235 | }; | 235 | }; |
236 | 236 | ||
@@ -281,6 +281,12 @@ struct hh_cache { | |||
281 | unsigned long hh_data[HH_DATA_ALIGN(LL_MAX_HEADER) / sizeof(long)]; | 281 | unsigned long hh_data[HH_DATA_ALIGN(LL_MAX_HEADER) / sizeof(long)]; |
282 | }; | 282 | }; |
283 | 283 | ||
284 | static inline void hh_cache_put(struct hh_cache *hh) | ||
285 | { | ||
286 | if (atomic_dec_and_test(&hh->hh_refcnt)) | ||
287 | kfree(hh); | ||
288 | } | ||
289 | |||
284 | /* Reserve HH_DATA_MOD byte aligned hard_header_len, but at least that much. | 290 | /* Reserve HH_DATA_MOD byte aligned hard_header_len, but at least that much. |
285 | * Alternative is: | 291 | * Alternative is: |
286 | * dev->hard_header_len ? (dev->hard_header_len + | 292 | * dev->hard_header_len ? (dev->hard_header_len + |
@@ -884,6 +890,9 @@ struct net_device { | |||
884 | int iflink; | 890 | int iflink; |
885 | 891 | ||
886 | struct net_device_stats stats; | 892 | struct net_device_stats stats; |
893 | atomic_long_t rx_dropped; /* dropped packets by core network | ||
894 | * Do not use this in drivers. | ||
895 | */ | ||
887 | 896 | ||
888 | #ifdef CONFIG_WIRELESS_EXT | 897 | #ifdef CONFIG_WIRELESS_EXT |
889 | /* List of functions to handle Wireless Extensions (instead of ioctl). | 898 | /* List of functions to handle Wireless Extensions (instead of ioctl). |
@@ -901,7 +910,7 @@ struct net_device { | |||
901 | 910 | ||
902 | unsigned int flags; /* interface flags (a la BSD) */ | 911 | unsigned int flags; /* interface flags (a la BSD) */ |
903 | unsigned short gflags; | 912 | unsigned short gflags; |
904 | unsigned short priv_flags; /* Like 'flags' but invisible to userspace. */ | 913 | unsigned int priv_flags; /* Like 'flags' but invisible to userspace. */ |
905 | unsigned short padded; /* How much padding added by alloc_netdev() */ | 914 | unsigned short padded; /* How much padding added by alloc_netdev() */ |
906 | 915 | ||
907 | unsigned char operstate; /* RFC2863 operstate */ | 916 | unsigned char operstate; /* RFC2863 operstate */ |
@@ -918,10 +927,6 @@ struct net_device { | |||
918 | unsigned short needed_headroom; | 927 | unsigned short needed_headroom; |
919 | unsigned short needed_tailroom; | 928 | unsigned short needed_tailroom; |
920 | 929 | ||
921 | struct net_device *master; /* Pointer to master device of a group, | ||
922 | * which this device is member of. | ||
923 | */ | ||
924 | |||
925 | /* Interface address info. */ | 930 | /* Interface address info. */ |
926 | unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */ | 931 | unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */ |
927 | unsigned char addr_assign_type; /* hw address assignment type */ | 932 | unsigned char addr_assign_type; /* hw address assignment type */ |
@@ -937,12 +942,15 @@ struct net_device { | |||
937 | 942 | ||
938 | 943 | ||
939 | /* Protocol specific pointers */ | 944 | /* Protocol specific pointers */ |
940 | 945 | ||
946 | #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) | ||
947 | struct vlan_group *vlgrp; /* VLAN group */ | ||
948 | #endif | ||
941 | #ifdef CONFIG_NET_DSA | 949 | #ifdef CONFIG_NET_DSA |
942 | void *dsa_ptr; /* dsa specific data */ | 950 | void *dsa_ptr; /* dsa specific data */ |
943 | #endif | 951 | #endif |
944 | void *atalk_ptr; /* AppleTalk link */ | 952 | void *atalk_ptr; /* AppleTalk link */ |
945 | void *ip_ptr; /* IPv4 specific data */ | 953 | struct in_device __rcu *ip_ptr; /* IPv4 specific data */ |
946 | void *dn_ptr; /* DECnet specific data */ | 954 | void *dn_ptr; /* DECnet specific data */ |
947 | void *ip6_ptr; /* IPv6 specific data */ | 955 | void *ip6_ptr; /* IPv6 specific data */ |
948 | void *ec_ptr; /* Econet specific data */ | 956 | void *ec_ptr; /* Econet specific data */ |
@@ -951,9 +959,20 @@ struct net_device { | |||
951 | assign before registering */ | 959 | assign before registering */ |
952 | 960 | ||
953 | /* | 961 | /* |
954 | * Cache line mostly used on receive path (including eth_type_trans()) | 962 | * Cache lines mostly used on receive path (including eth_type_trans()) |
955 | */ | 963 | */ |
956 | unsigned long last_rx; /* Time of last Rx */ | 964 | unsigned long last_rx; /* Time of last Rx |
965 | * This should not be set in | ||
966 | * drivers, unless really needed, | ||
967 | * because network stack (bonding) | ||
968 | * use it if/when necessary, to | ||
969 | * avoid dirtying this cache line. | ||
970 | */ | ||
971 | |||
972 | struct net_device *master; /* Pointer to master device of a group, | ||
973 | * which this device is member of. | ||
974 | */ | ||
975 | |||
957 | /* Interface address info used in eth_type_trans() */ | 976 | /* Interface address info used in eth_type_trans() */ |
958 | unsigned char *dev_addr; /* hw address, (before bcast | 977 | unsigned char *dev_addr; /* hw address, (before bcast |
959 | because most packets are | 978 | because most packets are |
@@ -969,14 +988,21 @@ struct net_device { | |||
969 | 988 | ||
970 | struct netdev_rx_queue *_rx; | 989 | struct netdev_rx_queue *_rx; |
971 | 990 | ||
972 | /* Number of RX queues allocated at alloc_netdev_mq() time */ | 991 | /* Number of RX queues allocated at register_netdev() time */ |
973 | unsigned int num_rx_queues; | 992 | unsigned int num_rx_queues; |
993 | |||
994 | /* Number of RX queues currently active in device */ | ||
995 | unsigned int real_num_rx_queues; | ||
974 | #endif | 996 | #endif |
975 | 997 | ||
976 | struct netdev_queue rx_queue; | ||
977 | rx_handler_func_t *rx_handler; | 998 | rx_handler_func_t *rx_handler; |
978 | void *rx_handler_data; | 999 | void *rx_handler_data; |
979 | 1000 | ||
1001 | struct netdev_queue __rcu *ingress_queue; | ||
1002 | |||
1003 | /* | ||
1004 | * Cache lines mostly used on transmit path | ||
1005 | */ | ||
980 | struct netdev_queue *_tx ____cacheline_aligned_in_smp; | 1006 | struct netdev_queue *_tx ____cacheline_aligned_in_smp; |
981 | 1007 | ||
982 | /* Number of TX queues allocated at alloc_netdev_mq() time */ | 1008 | /* Number of TX queues allocated at alloc_netdev_mq() time */ |
@@ -990,9 +1016,7 @@ struct net_device { | |||
990 | 1016 | ||
991 | unsigned long tx_queue_len; /* Max frames per queue allowed */ | 1017 | unsigned long tx_queue_len; /* Max frames per queue allowed */ |
992 | spinlock_t tx_global_lock; | 1018 | spinlock_t tx_global_lock; |
993 | /* | 1019 | |
994 | * One part is mostly used on xmit path (device) | ||
995 | */ | ||
996 | /* These may be needed for future network-power-down code. */ | 1020 | /* These may be needed for future network-power-down code. */ |
997 | 1021 | ||
998 | /* | 1022 | /* |
@@ -1005,7 +1029,7 @@ struct net_device { | |||
1005 | struct timer_list watchdog_timer; | 1029 | struct timer_list watchdog_timer; |
1006 | 1030 | ||
1007 | /* Number of references to this device */ | 1031 | /* Number of references to this device */ |
1008 | atomic_t refcnt ____cacheline_aligned_in_smp; | 1032 | int __percpu *pcpu_refcnt; |
1009 | 1033 | ||
1010 | /* delayed register/unregister */ | 1034 | /* delayed register/unregister */ |
1011 | struct list_head todo_list; | 1035 | struct list_head todo_list; |
@@ -1041,8 +1065,12 @@ struct net_device { | |||
1041 | #endif | 1065 | #endif |
1042 | 1066 | ||
1043 | /* mid-layer private */ | 1067 | /* mid-layer private */ |
1044 | void *ml_priv; | 1068 | union { |
1045 | 1069 | void *ml_priv; | |
1070 | struct pcpu_lstats __percpu *lstats; /* loopback stats */ | ||
1071 | struct pcpu_tstats __percpu *tstats; /* tunnel stats */ | ||
1072 | struct pcpu_dstats __percpu *dstats; /* dummy stats */ | ||
1073 | }; | ||
1046 | /* GARP */ | 1074 | /* GARP */ |
1047 | struct garp_port *garp_port; | 1075 | struct garp_port *garp_port; |
1048 | 1076 | ||
@@ -1305,6 +1333,7 @@ static inline void unregister_netdevice(struct net_device *dev) | |||
1305 | unregister_netdevice_queue(dev, NULL); | 1333 | unregister_netdevice_queue(dev, NULL); |
1306 | } | 1334 | } |
1307 | 1335 | ||
1336 | extern int netdev_refcnt_read(const struct net_device *dev); | ||
1308 | extern void free_netdev(struct net_device *dev); | 1337 | extern void free_netdev(struct net_device *dev); |
1309 | extern void synchronize_net(void); | 1338 | extern void synchronize_net(void); |
1310 | extern int register_netdevice_notifier(struct notifier_block *nb); | 1339 | extern int register_netdevice_notifier(struct notifier_block *nb); |
@@ -1667,11 +1696,34 @@ static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index) | |||
1667 | */ | 1696 | */ |
1668 | static inline int netif_is_multiqueue(const struct net_device *dev) | 1697 | static inline int netif_is_multiqueue(const struct net_device *dev) |
1669 | { | 1698 | { |
1670 | return (dev->num_tx_queues > 1); | 1699 | return dev->num_tx_queues > 1; |
1671 | } | 1700 | } |
1672 | 1701 | ||
1673 | extern void netif_set_real_num_tx_queues(struct net_device *dev, | 1702 | extern int netif_set_real_num_tx_queues(struct net_device *dev, |
1674 | unsigned int txq); | 1703 | unsigned int txq); |
1704 | |||
1705 | #ifdef CONFIG_RPS | ||
1706 | extern int netif_set_real_num_rx_queues(struct net_device *dev, | ||
1707 | unsigned int rxq); | ||
1708 | #else | ||
1709 | static inline int netif_set_real_num_rx_queues(struct net_device *dev, | ||
1710 | unsigned int rxq) | ||
1711 | { | ||
1712 | return 0; | ||
1713 | } | ||
1714 | #endif | ||
1715 | |||
1716 | static inline int netif_copy_real_num_queues(struct net_device *to_dev, | ||
1717 | const struct net_device *from_dev) | ||
1718 | { | ||
1719 | netif_set_real_num_tx_queues(to_dev, from_dev->real_num_tx_queues); | ||
1720 | #ifdef CONFIG_RPS | ||
1721 | return netif_set_real_num_rx_queues(to_dev, | ||
1722 | from_dev->real_num_rx_queues); | ||
1723 | #else | ||
1724 | return 0; | ||
1725 | #endif | ||
1726 | } | ||
1675 | 1727 | ||
1676 | /* Use this variant when it is known for sure that it | 1728 | /* Use this variant when it is known for sure that it |
1677 | * is executing from hardware interrupt context or with hardware interrupts | 1729 | * is executing from hardware interrupt context or with hardware interrupts |
@@ -1695,8 +1747,7 @@ extern gro_result_t dev_gro_receive(struct napi_struct *napi, | |||
1695 | extern gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb); | 1747 | extern gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb); |
1696 | extern gro_result_t napi_gro_receive(struct napi_struct *napi, | 1748 | extern gro_result_t napi_gro_receive(struct napi_struct *napi, |
1697 | struct sk_buff *skb); | 1749 | struct sk_buff *skb); |
1698 | extern void napi_reuse_skb(struct napi_struct *napi, | 1750 | extern void napi_gro_flush(struct napi_struct *napi); |
1699 | struct sk_buff *skb); | ||
1700 | extern struct sk_buff * napi_get_frags(struct napi_struct *napi); | 1751 | extern struct sk_buff * napi_get_frags(struct napi_struct *napi); |
1701 | extern gro_result_t napi_frags_finish(struct napi_struct *napi, | 1752 | extern gro_result_t napi_frags_finish(struct napi_struct *napi, |
1702 | struct sk_buff *skb, | 1753 | struct sk_buff *skb, |
@@ -1715,7 +1766,6 @@ extern int netdev_rx_handler_register(struct net_device *dev, | |||
1715 | void *rx_handler_data); | 1766 | void *rx_handler_data); |
1716 | extern void netdev_rx_handler_unregister(struct net_device *dev); | 1767 | extern void netdev_rx_handler_unregister(struct net_device *dev); |
1717 | 1768 | ||
1718 | extern void netif_nit_deliver(struct sk_buff *skb); | ||
1719 | extern int dev_valid_name(const char *name); | 1769 | extern int dev_valid_name(const char *name); |
1720 | extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *); | 1770 | extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *); |
1721 | extern int dev_ethtool(struct net *net, struct ifreq *); | 1771 | extern int dev_ethtool(struct net *net, struct ifreq *); |
@@ -1749,7 +1799,7 @@ extern void netdev_run_todo(void); | |||
1749 | */ | 1799 | */ |
1750 | static inline void dev_put(struct net_device *dev) | 1800 | static inline void dev_put(struct net_device *dev) |
1751 | { | 1801 | { |
1752 | atomic_dec(&dev->refcnt); | 1802 | irqsafe_cpu_dec(*dev->pcpu_refcnt); |
1753 | } | 1803 | } |
1754 | 1804 | ||
1755 | /** | 1805 | /** |
@@ -1760,7 +1810,7 @@ static inline void dev_put(struct net_device *dev) | |||
1760 | */ | 1810 | */ |
1761 | static inline void dev_hold(struct net_device *dev) | 1811 | static inline void dev_hold(struct net_device *dev) |
1762 | { | 1812 | { |
1763 | atomic_inc(&dev->refcnt); | 1813 | irqsafe_cpu_inc(*dev->pcpu_refcnt); |
1764 | } | 1814 | } |
1765 | 1815 | ||
1766 | /* Carrier loss detection, dial on demand. The functions netif_carrier_on | 1816 | /* Carrier loss detection, dial on demand. The functions netif_carrier_on |
@@ -2171,6 +2221,8 @@ extern void dev_seq_stop(struct seq_file *seq, void *v); | |||
2171 | extern int netdev_class_create_file(struct class_attribute *class_attr); | 2221 | extern int netdev_class_create_file(struct class_attribute *class_attr); |
2172 | extern void netdev_class_remove_file(struct class_attribute *class_attr); | 2222 | extern void netdev_class_remove_file(struct class_attribute *class_attr); |
2173 | 2223 | ||
2224 | extern struct kobj_ns_type_operations net_ns_type_operations; | ||
2225 | |||
2174 | extern char *netdev_drivername(const struct net_device *dev, char *buffer, int len); | 2226 | extern char *netdev_drivername(const struct net_device *dev, char *buffer, int len); |
2175 | 2227 | ||
2176 | extern void linkwatch_run_queue(void); | 2228 | extern void linkwatch_run_queue(void); |
@@ -2191,14 +2243,22 @@ static inline int net_gso_ok(int features, int gso_type) | |||
2191 | static inline int skb_gso_ok(struct sk_buff *skb, int features) | 2243 | static inline int skb_gso_ok(struct sk_buff *skb, int features) |
2192 | { | 2244 | { |
2193 | return net_gso_ok(features, skb_shinfo(skb)->gso_type) && | 2245 | return net_gso_ok(features, skb_shinfo(skb)->gso_type) && |
2194 | (!skb_has_frags(skb) || (features & NETIF_F_FRAGLIST)); | 2246 | (!skb_has_frag_list(skb) || (features & NETIF_F_FRAGLIST)); |
2195 | } | 2247 | } |
2196 | 2248 | ||
2197 | static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb) | 2249 | static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb) |
2198 | { | 2250 | { |
2199 | return skb_is_gso(skb) && | 2251 | if (skb_is_gso(skb)) { |
2200 | (!skb_gso_ok(skb, dev->features) || | 2252 | int features = dev->features; |
2201 | unlikely(skb->ip_summed != CHECKSUM_PARTIAL)); | 2253 | |
2254 | if (skb->protocol == htons(ETH_P_8021Q) || skb->vlan_tci) | ||
2255 | features &= dev->vlan_features; | ||
2256 | |||
2257 | return (!skb_gso_ok(skb, features) || | ||
2258 | unlikely(skb->ip_summed != CHECKSUM_PARTIAL)); | ||
2259 | } | ||
2260 | |||
2261 | return 0; | ||
2202 | } | 2262 | } |
2203 | 2263 | ||
2204 | static inline void netif_set_gso_max_size(struct net_device *dev, | 2264 | static inline void netif_set_gso_max_size(struct net_device *dev, |
diff --git a/include/linux/netfilter/nf_conntrack_common.h b/include/linux/netfilter/nf_conntrack_common.h index 1afd18c855ec..50cdc2559a5a 100644 --- a/include/linux/netfilter/nf_conntrack_common.h +++ b/include/linux/netfilter/nf_conntrack_common.h | |||
@@ -98,8 +98,14 @@ enum ip_conntrack_events { | |||
98 | 98 | ||
99 | enum ip_conntrack_expect_events { | 99 | enum ip_conntrack_expect_events { |
100 | IPEXP_NEW, /* new expectation */ | 100 | IPEXP_NEW, /* new expectation */ |
101 | IPEXP_DESTROY, /* destroyed expectation */ | ||
101 | }; | 102 | }; |
102 | 103 | ||
104 | /* expectation flags */ | ||
105 | #define NF_CT_EXPECT_PERMANENT 0x1 | ||
106 | #define NF_CT_EXPECT_INACTIVE 0x2 | ||
107 | #define NF_CT_EXPECT_USERSPACE 0x4 | ||
108 | |||
103 | #ifdef __KERNEL__ | 109 | #ifdef __KERNEL__ |
104 | struct ip_conntrack_stat { | 110 | struct ip_conntrack_stat { |
105 | unsigned int searched; | 111 | unsigned int searched; |
diff --git a/include/linux/netfilter/nf_conntrack_sip.h b/include/linux/netfilter/nf_conntrack_sip.h index ff8cfbcf3b81..0ce91d56a5f2 100644 --- a/include/linux/netfilter/nf_conntrack_sip.h +++ b/include/linux/netfilter/nf_conntrack_sip.h | |||
@@ -89,6 +89,7 @@ enum sip_header_types { | |||
89 | SIP_HDR_VIA_TCP, | 89 | SIP_HDR_VIA_TCP, |
90 | SIP_HDR_EXPIRES, | 90 | SIP_HDR_EXPIRES, |
91 | SIP_HDR_CONTENT_LENGTH, | 91 | SIP_HDR_CONTENT_LENGTH, |
92 | SIP_HDR_CALL_ID, | ||
92 | }; | 93 | }; |
93 | 94 | ||
94 | enum sdp_header_types { | 95 | enum sdp_header_types { |
diff --git a/include/linux/netfilter/nfnetlink_conntrack.h b/include/linux/netfilter/nfnetlink_conntrack.h index 70cd0603911c..19711e3ffd42 100644 --- a/include/linux/netfilter/nfnetlink_conntrack.h +++ b/include/linux/netfilter/nfnetlink_conntrack.h | |||
@@ -162,6 +162,7 @@ enum ctattr_expect { | |||
162 | CTA_EXPECT_ID, | 162 | CTA_EXPECT_ID, |
163 | CTA_EXPECT_HELP_NAME, | 163 | CTA_EXPECT_HELP_NAME, |
164 | CTA_EXPECT_ZONE, | 164 | CTA_EXPECT_ZONE, |
165 | CTA_EXPECT_FLAGS, | ||
165 | __CTA_EXPECT_MAX | 166 | __CTA_EXPECT_MAX |
166 | }; | 167 | }; |
167 | #define CTA_EXPECT_MAX (__CTA_EXPECT_MAX - 1) | 168 | #define CTA_EXPECT_MAX (__CTA_EXPECT_MAX - 1) |
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h index 24e5d01d27d0..742bec051440 100644 --- a/include/linux/netfilter/x_tables.h +++ b/include/linux/netfilter/x_tables.h | |||
@@ -66,6 +66,11 @@ struct xt_standard_target { | |||
66 | int verdict; | 66 | int verdict; |
67 | }; | 67 | }; |
68 | 68 | ||
69 | struct xt_error_target { | ||
70 | struct xt_entry_target target; | ||
71 | char errorname[XT_FUNCTION_MAXNAMELEN]; | ||
72 | }; | ||
73 | |||
69 | /* The argument to IPT_SO_GET_REVISION_*. Returns highest revision | 74 | /* The argument to IPT_SO_GET_REVISION_*. Returns highest revision |
70 | * kernel supports, if >= revision. */ | 75 | * kernel supports, if >= revision. */ |
71 | struct xt_get_revision { | 76 | struct xt_get_revision { |
diff --git a/include/linux/netfilter/xt_TPROXY.h b/include/linux/netfilter/xt_TPROXY.h index 152e8f97132b..3f3d69361289 100644 --- a/include/linux/netfilter/xt_TPROXY.h +++ b/include/linux/netfilter/xt_TPROXY.h | |||
@@ -1,5 +1,5 @@ | |||
1 | #ifndef _XT_TPROXY_H_target | 1 | #ifndef _XT_TPROXY_H |
2 | #define _XT_TPROXY_H_target | 2 | #define _XT_TPROXY_H |
3 | 3 | ||
4 | /* TPROXY target is capable of marking the packet to perform | 4 | /* TPROXY target is capable of marking the packet to perform |
5 | * redirection. We can get rid of that whenever we get support for | 5 | * redirection. We can get rid of that whenever we get support for |
@@ -11,4 +11,11 @@ struct xt_tproxy_target_info { | |||
11 | __be16 lport; | 11 | __be16 lport; |
12 | }; | 12 | }; |
13 | 13 | ||
14 | #endif /* _XT_TPROXY_H_target */ | 14 | struct xt_tproxy_target_info_v1 { |
15 | u_int32_t mark_mask; | ||
16 | u_int32_t mark_value; | ||
17 | union nf_inet_addr laddr; | ||
18 | __be16 lport; | ||
19 | }; | ||
20 | |||
21 | #endif /* _XT_TPROXY_H */ | ||
diff --git a/include/linux/netfilter_arp/arp_tables.h b/include/linux/netfilter_arp/arp_tables.h index e9948c0560f6..adbf4bff87ed 100644 --- a/include/linux/netfilter_arp/arp_tables.h +++ b/include/linux/netfilter_arp/arp_tables.h | |||
@@ -21,8 +21,21 @@ | |||
21 | 21 | ||
22 | #include <linux/netfilter/x_tables.h> | 22 | #include <linux/netfilter/x_tables.h> |
23 | 23 | ||
24 | #ifndef __KERNEL__ | ||
24 | #define ARPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN | 25 | #define ARPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN |
25 | #define ARPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN | 26 | #define ARPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN |
27 | #define arpt_entry_target xt_entry_target | ||
28 | #define arpt_standard_target xt_standard_target | ||
29 | #define arpt_error_target xt_error_target | ||
30 | #define ARPT_CONTINUE XT_CONTINUE | ||
31 | #define ARPT_RETURN XT_RETURN | ||
32 | #define arpt_counters_info xt_counters_info | ||
33 | #define arpt_counters xt_counters | ||
34 | #define ARPT_STANDARD_TARGET XT_STANDARD_TARGET | ||
35 | #define ARPT_ERROR_TARGET XT_ERROR_TARGET | ||
36 | #define ARPT_ENTRY_ITERATE(entries, size, fn, args...) \ | ||
37 | XT_ENTRY_ITERATE(struct arpt_entry, entries, size, fn, ## args) | ||
38 | #endif | ||
26 | 39 | ||
27 | #define ARPT_DEV_ADDR_LEN_MAX 16 | 40 | #define ARPT_DEV_ADDR_LEN_MAX 16 |
28 | 41 | ||
@@ -63,9 +76,6 @@ struct arpt_arp { | |||
63 | u_int16_t invflags; | 76 | u_int16_t invflags; |
64 | }; | 77 | }; |
65 | 78 | ||
66 | #define arpt_entry_target xt_entry_target | ||
67 | #define arpt_standard_target xt_standard_target | ||
68 | |||
69 | /* Values for "flag" field in struct arpt_ip (general arp structure). | 79 | /* Values for "flag" field in struct arpt_ip (general arp structure). |
70 | * No flags defined yet. | 80 | * No flags defined yet. |
71 | */ | 81 | */ |
@@ -125,16 +135,10 @@ struct arpt_entry | |||
125 | #define ARPT_SO_GET_REVISION_TARGET (ARPT_BASE_CTL + 3) | 135 | #define ARPT_SO_GET_REVISION_TARGET (ARPT_BASE_CTL + 3) |
126 | #define ARPT_SO_GET_MAX (ARPT_SO_GET_REVISION_TARGET) | 136 | #define ARPT_SO_GET_MAX (ARPT_SO_GET_REVISION_TARGET) |
127 | 137 | ||
128 | /* CONTINUE verdict for targets */ | ||
129 | #define ARPT_CONTINUE XT_CONTINUE | ||
130 | |||
131 | /* For standard target */ | ||
132 | #define ARPT_RETURN XT_RETURN | ||
133 | |||
134 | /* The argument to ARPT_SO_GET_INFO */ | 138 | /* The argument to ARPT_SO_GET_INFO */ |
135 | struct arpt_getinfo { | 139 | struct arpt_getinfo { |
136 | /* Which table: caller fills this in. */ | 140 | /* Which table: caller fills this in. */ |
137 | char name[ARPT_TABLE_MAXNAMELEN]; | 141 | char name[XT_TABLE_MAXNAMELEN]; |
138 | 142 | ||
139 | /* Kernel fills these in. */ | 143 | /* Kernel fills these in. */ |
140 | /* Which hook entry points are valid: bitmask */ | 144 | /* Which hook entry points are valid: bitmask */ |
@@ -156,7 +160,7 @@ struct arpt_getinfo { | |||
156 | /* The argument to ARPT_SO_SET_REPLACE. */ | 160 | /* The argument to ARPT_SO_SET_REPLACE. */ |
157 | struct arpt_replace { | 161 | struct arpt_replace { |
158 | /* Which table. */ | 162 | /* Which table. */ |
159 | char name[ARPT_TABLE_MAXNAMELEN]; | 163 | char name[XT_TABLE_MAXNAMELEN]; |
160 | 164 | ||
161 | /* Which hook entry points are valid: bitmask. You can't | 165 | /* Which hook entry points are valid: bitmask. You can't |
162 | change this. */ | 166 | change this. */ |
@@ -184,14 +188,10 @@ struct arpt_replace { | |||
184 | struct arpt_entry entries[0]; | 188 | struct arpt_entry entries[0]; |
185 | }; | 189 | }; |
186 | 190 | ||
187 | /* The argument to ARPT_SO_ADD_COUNTERS. */ | ||
188 | #define arpt_counters_info xt_counters_info | ||
189 | #define arpt_counters xt_counters | ||
190 | |||
191 | /* The argument to ARPT_SO_GET_ENTRIES. */ | 191 | /* The argument to ARPT_SO_GET_ENTRIES. */ |
192 | struct arpt_get_entries { | 192 | struct arpt_get_entries { |
193 | /* Which table: user fills this in. */ | 193 | /* Which table: user fills this in. */ |
194 | char name[ARPT_TABLE_MAXNAMELEN]; | 194 | char name[XT_TABLE_MAXNAMELEN]; |
195 | 195 | ||
196 | /* User fills this in: total entry size. */ | 196 | /* User fills this in: total entry size. */ |
197 | unsigned int size; | 197 | unsigned int size; |
@@ -200,23 +200,12 @@ struct arpt_get_entries { | |||
200 | struct arpt_entry entrytable[0]; | 200 | struct arpt_entry entrytable[0]; |
201 | }; | 201 | }; |
202 | 202 | ||
203 | /* Standard return verdict, or do jump. */ | ||
204 | #define ARPT_STANDARD_TARGET XT_STANDARD_TARGET | ||
205 | /* Error verdict. */ | ||
206 | #define ARPT_ERROR_TARGET XT_ERROR_TARGET | ||
207 | |||
208 | /* Helper functions */ | 203 | /* Helper functions */ |
209 | static __inline__ struct arpt_entry_target *arpt_get_target(struct arpt_entry *e) | 204 | static __inline__ struct xt_entry_target *arpt_get_target(struct arpt_entry *e) |
210 | { | 205 | { |
211 | return (void *)e + e->target_offset; | 206 | return (void *)e + e->target_offset; |
212 | } | 207 | } |
213 | 208 | ||
214 | #ifndef __KERNEL__ | ||
215 | /* fn returns 0 to continue iteration */ | ||
216 | #define ARPT_ENTRY_ITERATE(entries, size, fn, args...) \ | ||
217 | XT_ENTRY_ITERATE(struct arpt_entry, entries, size, fn, ## args) | ||
218 | #endif | ||
219 | |||
220 | /* | 209 | /* |
221 | * Main firewall chains definitions and global var's definitions. | 210 | * Main firewall chains definitions and global var's definitions. |
222 | */ | 211 | */ |
@@ -225,17 +214,12 @@ static __inline__ struct arpt_entry_target *arpt_get_target(struct arpt_entry *e | |||
225 | /* Standard entry. */ | 214 | /* Standard entry. */ |
226 | struct arpt_standard { | 215 | struct arpt_standard { |
227 | struct arpt_entry entry; | 216 | struct arpt_entry entry; |
228 | struct arpt_standard_target target; | 217 | struct xt_standard_target target; |
229 | }; | ||
230 | |||
231 | struct arpt_error_target { | ||
232 | struct arpt_entry_target target; | ||
233 | char errorname[ARPT_FUNCTION_MAXNAMELEN]; | ||
234 | }; | 218 | }; |
235 | 219 | ||
236 | struct arpt_error { | 220 | struct arpt_error { |
237 | struct arpt_entry entry; | 221 | struct arpt_entry entry; |
238 | struct arpt_error_target target; | 222 | struct xt_error_target target; |
239 | }; | 223 | }; |
240 | 224 | ||
241 | #define ARPT_ENTRY_INIT(__size) \ | 225 | #define ARPT_ENTRY_INIT(__size) \ |
@@ -247,16 +231,16 @@ struct arpt_error { | |||
247 | #define ARPT_STANDARD_INIT(__verdict) \ | 231 | #define ARPT_STANDARD_INIT(__verdict) \ |
248 | { \ | 232 | { \ |
249 | .entry = ARPT_ENTRY_INIT(sizeof(struct arpt_standard)), \ | 233 | .entry = ARPT_ENTRY_INIT(sizeof(struct arpt_standard)), \ |
250 | .target = XT_TARGET_INIT(ARPT_STANDARD_TARGET, \ | 234 | .target = XT_TARGET_INIT(XT_STANDARD_TARGET, \ |
251 | sizeof(struct arpt_standard_target)), \ | 235 | sizeof(struct xt_standard_target)), \ |
252 | .target.verdict = -(__verdict) - 1, \ | 236 | .target.verdict = -(__verdict) - 1, \ |
253 | } | 237 | } |
254 | 238 | ||
255 | #define ARPT_ERROR_INIT \ | 239 | #define ARPT_ERROR_INIT \ |
256 | { \ | 240 | { \ |
257 | .entry = ARPT_ENTRY_INIT(sizeof(struct arpt_error)), \ | 241 | .entry = ARPT_ENTRY_INIT(sizeof(struct arpt_error)), \ |
258 | .target = XT_TARGET_INIT(ARPT_ERROR_TARGET, \ | 242 | .target = XT_TARGET_INIT(XT_ERROR_TARGET, \ |
259 | sizeof(struct arpt_error_target)), \ | 243 | sizeof(struct xt_error_target)), \ |
260 | .target.errorname = "ERROR", \ | 244 | .target.errorname = "ERROR", \ |
261 | } | 245 | } |
262 | 246 | ||
@@ -271,8 +255,6 @@ extern unsigned int arpt_do_table(struct sk_buff *skb, | |||
271 | const struct net_device *out, | 255 | const struct net_device *out, |
272 | struct xt_table *table); | 256 | struct xt_table *table); |
273 | 257 | ||
274 | #define ARPT_ALIGN(s) XT_ALIGN(s) | ||
275 | |||
276 | #ifdef CONFIG_COMPAT | 258 | #ifdef CONFIG_COMPAT |
277 | #include <net/compat.h> | 259 | #include <net/compat.h> |
278 | 260 | ||
@@ -285,14 +267,12 @@ struct compat_arpt_entry { | |||
285 | unsigned char elems[0]; | 267 | unsigned char elems[0]; |
286 | }; | 268 | }; |
287 | 269 | ||
288 | static inline struct arpt_entry_target * | 270 | static inline struct xt_entry_target * |
289 | compat_arpt_get_target(struct compat_arpt_entry *e) | 271 | compat_arpt_get_target(struct compat_arpt_entry *e) |
290 | { | 272 | { |
291 | return (void *)e + e->target_offset; | 273 | return (void *)e + e->target_offset; |
292 | } | 274 | } |
293 | 275 | ||
294 | #define COMPAT_ARPT_ALIGN(s) COMPAT_XT_ALIGN(s) | ||
295 | |||
296 | #endif /* CONFIG_COMPAT */ | 276 | #endif /* CONFIG_COMPAT */ |
297 | #endif /*__KERNEL__*/ | 277 | #endif /*__KERNEL__*/ |
298 | #endif /* _ARPTABLES_H */ | 278 | #endif /* _ARPTABLES_H */ |
diff --git a/include/linux/netfilter_bridge/Kbuild b/include/linux/netfilter_bridge/Kbuild index d4d78672873e..e48f1a3f5a4a 100644 --- a/include/linux/netfilter_bridge/Kbuild +++ b/include/linux/netfilter_bridge/Kbuild | |||
@@ -3,11 +3,13 @@ header-y += ebt_among.h | |||
3 | header-y += ebt_arp.h | 3 | header-y += ebt_arp.h |
4 | header-y += ebt_arpreply.h | 4 | header-y += ebt_arpreply.h |
5 | header-y += ebt_ip.h | 5 | header-y += ebt_ip.h |
6 | header-y += ebt_ip6.h | ||
6 | header-y += ebt_limit.h | 7 | header-y += ebt_limit.h |
7 | header-y += ebt_log.h | 8 | header-y += ebt_log.h |
8 | header-y += ebt_mark_m.h | 9 | header-y += ebt_mark_m.h |
9 | header-y += ebt_mark_t.h | 10 | header-y += ebt_mark_t.h |
10 | header-y += ebt_nat.h | 11 | header-y += ebt_nat.h |
12 | header-y += ebt_nflog.h | ||
11 | header-y += ebt_pkttype.h | 13 | header-y += ebt_pkttype.h |
12 | header-y += ebt_redirect.h | 14 | header-y += ebt_redirect.h |
13 | header-y += ebt_stp.h | 15 | header-y += ebt_stp.h |
diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/linux/netfilter_ipv4/ip_tables.h index 704a7b6e8169..64a5d95c58e8 100644 --- a/include/linux/netfilter_ipv4/ip_tables.h +++ b/include/linux/netfilter_ipv4/ip_tables.h | |||
@@ -27,12 +27,49 @@ | |||
27 | 27 | ||
28 | #include <linux/netfilter/x_tables.h> | 28 | #include <linux/netfilter/x_tables.h> |
29 | 29 | ||
30 | #ifndef __KERNEL__ | ||
30 | #define IPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN | 31 | #define IPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN |
31 | #define IPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN | 32 | #define IPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN |
32 | #define ipt_match xt_match | 33 | #define ipt_match xt_match |
33 | #define ipt_target xt_target | 34 | #define ipt_target xt_target |
34 | #define ipt_table xt_table | 35 | #define ipt_table xt_table |
35 | #define ipt_get_revision xt_get_revision | 36 | #define ipt_get_revision xt_get_revision |
37 | #define ipt_entry_match xt_entry_match | ||
38 | #define ipt_entry_target xt_entry_target | ||
39 | #define ipt_standard_target xt_standard_target | ||
40 | #define ipt_error_target xt_error_target | ||
41 | #define ipt_counters xt_counters | ||
42 | #define IPT_CONTINUE XT_CONTINUE | ||
43 | #define IPT_RETURN XT_RETURN | ||
44 | |||
45 | /* This group is older than old (iptables < v1.4.0-rc1~89) */ | ||
46 | #include <linux/netfilter/xt_tcpudp.h> | ||
47 | #define ipt_udp xt_udp | ||
48 | #define ipt_tcp xt_tcp | ||
49 | #define IPT_TCP_INV_SRCPT XT_TCP_INV_SRCPT | ||
50 | #define IPT_TCP_INV_DSTPT XT_TCP_INV_DSTPT | ||
51 | #define IPT_TCP_INV_FLAGS XT_TCP_INV_FLAGS | ||
52 | #define IPT_TCP_INV_OPTION XT_TCP_INV_OPTION | ||
53 | #define IPT_TCP_INV_MASK XT_TCP_INV_MASK | ||
54 | #define IPT_UDP_INV_SRCPT XT_UDP_INV_SRCPT | ||
55 | #define IPT_UDP_INV_DSTPT XT_UDP_INV_DSTPT | ||
56 | #define IPT_UDP_INV_MASK XT_UDP_INV_MASK | ||
57 | |||
58 | /* The argument to IPT_SO_ADD_COUNTERS. */ | ||
59 | #define ipt_counters_info xt_counters_info | ||
60 | /* Standard return verdict, or do jump. */ | ||
61 | #define IPT_STANDARD_TARGET XT_STANDARD_TARGET | ||
62 | /* Error verdict. */ | ||
63 | #define IPT_ERROR_TARGET XT_ERROR_TARGET | ||
64 | |||
65 | /* fn returns 0 to continue iteration */ | ||
66 | #define IPT_MATCH_ITERATE(e, fn, args...) \ | ||
67 | XT_MATCH_ITERATE(struct ipt_entry, e, fn, ## args) | ||
68 | |||
69 | /* fn returns 0 to continue iteration */ | ||
70 | #define IPT_ENTRY_ITERATE(entries, size, fn, args...) \ | ||
71 | XT_ENTRY_ITERATE(struct ipt_entry, entries, size, fn, ## args) | ||
72 | #endif | ||
36 | 73 | ||
37 | /* Yes, Virginia, you have to zero the padding. */ | 74 | /* Yes, Virginia, you have to zero the padding. */ |
38 | struct ipt_ip { | 75 | struct ipt_ip { |
@@ -52,12 +89,6 @@ struct ipt_ip { | |||
52 | u_int8_t invflags; | 89 | u_int8_t invflags; |
53 | }; | 90 | }; |
54 | 91 | ||
55 | #define ipt_entry_match xt_entry_match | ||
56 | #define ipt_entry_target xt_entry_target | ||
57 | #define ipt_standard_target xt_standard_target | ||
58 | |||
59 | #define ipt_counters xt_counters | ||
60 | |||
61 | /* Values for "flag" field in struct ipt_ip (general ip structure). */ | 92 | /* Values for "flag" field in struct ipt_ip (general ip structure). */ |
62 | #define IPT_F_FRAG 0x01 /* Set if rule is a fragment rule */ | 93 | #define IPT_F_FRAG 0x01 /* Set if rule is a fragment rule */ |
63 | #define IPT_F_GOTO 0x02 /* Set if jump is a goto */ | 94 | #define IPT_F_GOTO 0x02 /* Set if jump is a goto */ |
@@ -116,23 +147,6 @@ struct ipt_entry { | |||
116 | #define IPT_SO_GET_REVISION_TARGET (IPT_BASE_CTL + 3) | 147 | #define IPT_SO_GET_REVISION_TARGET (IPT_BASE_CTL + 3) |
117 | #define IPT_SO_GET_MAX IPT_SO_GET_REVISION_TARGET | 148 | #define IPT_SO_GET_MAX IPT_SO_GET_REVISION_TARGET |
118 | 149 | ||
119 | #define IPT_CONTINUE XT_CONTINUE | ||
120 | #define IPT_RETURN XT_RETURN | ||
121 | |||
122 | #include <linux/netfilter/xt_tcpudp.h> | ||
123 | #define ipt_udp xt_udp | ||
124 | #define ipt_tcp xt_tcp | ||
125 | |||
126 | #define IPT_TCP_INV_SRCPT XT_TCP_INV_SRCPT | ||
127 | #define IPT_TCP_INV_DSTPT XT_TCP_INV_DSTPT | ||
128 | #define IPT_TCP_INV_FLAGS XT_TCP_INV_FLAGS | ||
129 | #define IPT_TCP_INV_OPTION XT_TCP_INV_OPTION | ||
130 | #define IPT_TCP_INV_MASK XT_TCP_INV_MASK | ||
131 | |||
132 | #define IPT_UDP_INV_SRCPT XT_UDP_INV_SRCPT | ||
133 | #define IPT_UDP_INV_DSTPT XT_UDP_INV_DSTPT | ||
134 | #define IPT_UDP_INV_MASK XT_UDP_INV_MASK | ||
135 | |||
136 | /* ICMP matching stuff */ | 150 | /* ICMP matching stuff */ |
137 | struct ipt_icmp { | 151 | struct ipt_icmp { |
138 | u_int8_t type; /* type to match */ | 152 | u_int8_t type; /* type to match */ |
@@ -146,7 +160,7 @@ struct ipt_icmp { | |||
146 | /* The argument to IPT_SO_GET_INFO */ | 160 | /* The argument to IPT_SO_GET_INFO */ |
147 | struct ipt_getinfo { | 161 | struct ipt_getinfo { |
148 | /* Which table: caller fills this in. */ | 162 | /* Which table: caller fills this in. */ |
149 | char name[IPT_TABLE_MAXNAMELEN]; | 163 | char name[XT_TABLE_MAXNAMELEN]; |
150 | 164 | ||
151 | /* Kernel fills these in. */ | 165 | /* Kernel fills these in. */ |
152 | /* Which hook entry points are valid: bitmask */ | 166 | /* Which hook entry points are valid: bitmask */ |
@@ -168,7 +182,7 @@ struct ipt_getinfo { | |||
168 | /* The argument to IPT_SO_SET_REPLACE. */ | 182 | /* The argument to IPT_SO_SET_REPLACE. */ |
169 | struct ipt_replace { | 183 | struct ipt_replace { |
170 | /* Which table. */ | 184 | /* Which table. */ |
171 | char name[IPT_TABLE_MAXNAMELEN]; | 185 | char name[XT_TABLE_MAXNAMELEN]; |
172 | 186 | ||
173 | /* Which hook entry points are valid: bitmask. You can't | 187 | /* Which hook entry points are valid: bitmask. You can't |
174 | change this. */ | 188 | change this. */ |
@@ -196,13 +210,10 @@ struct ipt_replace { | |||
196 | struct ipt_entry entries[0]; | 210 | struct ipt_entry entries[0]; |
197 | }; | 211 | }; |
198 | 212 | ||
199 | /* The argument to IPT_SO_ADD_COUNTERS. */ | ||
200 | #define ipt_counters_info xt_counters_info | ||
201 | |||
202 | /* The argument to IPT_SO_GET_ENTRIES. */ | 213 | /* The argument to IPT_SO_GET_ENTRIES. */ |
203 | struct ipt_get_entries { | 214 | struct ipt_get_entries { |
204 | /* Which table: user fills this in. */ | 215 | /* Which table: user fills this in. */ |
205 | char name[IPT_TABLE_MAXNAMELEN]; | 216 | char name[XT_TABLE_MAXNAMELEN]; |
206 | 217 | ||
207 | /* User fills this in: total entry size. */ | 218 | /* User fills this in: total entry size. */ |
208 | unsigned int size; | 219 | unsigned int size; |
@@ -211,28 +222,13 @@ struct ipt_get_entries { | |||
211 | struct ipt_entry entrytable[0]; | 222 | struct ipt_entry entrytable[0]; |
212 | }; | 223 | }; |
213 | 224 | ||
214 | /* Standard return verdict, or do jump. */ | ||
215 | #define IPT_STANDARD_TARGET XT_STANDARD_TARGET | ||
216 | /* Error verdict. */ | ||
217 | #define IPT_ERROR_TARGET XT_ERROR_TARGET | ||
218 | |||
219 | /* Helper functions */ | 225 | /* Helper functions */ |
220 | static __inline__ struct ipt_entry_target * | 226 | static __inline__ struct xt_entry_target * |
221 | ipt_get_target(struct ipt_entry *e) | 227 | ipt_get_target(struct ipt_entry *e) |
222 | { | 228 | { |
223 | return (void *)e + e->target_offset; | 229 | return (void *)e + e->target_offset; |
224 | } | 230 | } |
225 | 231 | ||
226 | #ifndef __KERNEL__ | ||
227 | /* fn returns 0 to continue iteration */ | ||
228 | #define IPT_MATCH_ITERATE(e, fn, args...) \ | ||
229 | XT_MATCH_ITERATE(struct ipt_entry, e, fn, ## args) | ||
230 | |||
231 | /* fn returns 0 to continue iteration */ | ||
232 | #define IPT_ENTRY_ITERATE(entries, size, fn, args...) \ | ||
233 | XT_ENTRY_ITERATE(struct ipt_entry, entries, size, fn, ## args) | ||
234 | #endif | ||
235 | |||
236 | /* | 232 | /* |
237 | * Main firewall chains definitions and global var's definitions. | 233 | * Main firewall chains definitions and global var's definitions. |
238 | */ | 234 | */ |
@@ -249,17 +245,12 @@ extern void ipt_unregister_table(struct net *net, struct xt_table *table); | |||
249 | /* Standard entry. */ | 245 | /* Standard entry. */ |
250 | struct ipt_standard { | 246 | struct ipt_standard { |
251 | struct ipt_entry entry; | 247 | struct ipt_entry entry; |
252 | struct ipt_standard_target target; | 248 | struct xt_standard_target target; |
253 | }; | ||
254 | |||
255 | struct ipt_error_target { | ||
256 | struct ipt_entry_target target; | ||
257 | char errorname[IPT_FUNCTION_MAXNAMELEN]; | ||
258 | }; | 249 | }; |
259 | 250 | ||
260 | struct ipt_error { | 251 | struct ipt_error { |
261 | struct ipt_entry entry; | 252 | struct ipt_entry entry; |
262 | struct ipt_error_target target; | 253 | struct xt_error_target target; |
263 | }; | 254 | }; |
264 | 255 | ||
265 | #define IPT_ENTRY_INIT(__size) \ | 256 | #define IPT_ENTRY_INIT(__size) \ |
@@ -271,7 +262,7 @@ struct ipt_error { | |||
271 | #define IPT_STANDARD_INIT(__verdict) \ | 262 | #define IPT_STANDARD_INIT(__verdict) \ |
272 | { \ | 263 | { \ |
273 | .entry = IPT_ENTRY_INIT(sizeof(struct ipt_standard)), \ | 264 | .entry = IPT_ENTRY_INIT(sizeof(struct ipt_standard)), \ |
274 | .target = XT_TARGET_INIT(IPT_STANDARD_TARGET, \ | 265 | .target = XT_TARGET_INIT(XT_STANDARD_TARGET, \ |
275 | sizeof(struct xt_standard_target)), \ | 266 | sizeof(struct xt_standard_target)), \ |
276 | .target.verdict = -(__verdict) - 1, \ | 267 | .target.verdict = -(__verdict) - 1, \ |
277 | } | 268 | } |
@@ -279,8 +270,8 @@ struct ipt_error { | |||
279 | #define IPT_ERROR_INIT \ | 270 | #define IPT_ERROR_INIT \ |
280 | { \ | 271 | { \ |
281 | .entry = IPT_ENTRY_INIT(sizeof(struct ipt_error)), \ | 272 | .entry = IPT_ENTRY_INIT(sizeof(struct ipt_error)), \ |
282 | .target = XT_TARGET_INIT(IPT_ERROR_TARGET, \ | 273 | .target = XT_TARGET_INIT(XT_ERROR_TARGET, \ |
283 | sizeof(struct ipt_error_target)), \ | 274 | sizeof(struct xt_error_target)), \ |
284 | .target.errorname = "ERROR", \ | 275 | .target.errorname = "ERROR", \ |
285 | } | 276 | } |
286 | 277 | ||
@@ -291,8 +282,6 @@ extern unsigned int ipt_do_table(struct sk_buff *skb, | |||
291 | const struct net_device *out, | 282 | const struct net_device *out, |
292 | struct xt_table *table); | 283 | struct xt_table *table); |
293 | 284 | ||
294 | #define IPT_ALIGN(s) XT_ALIGN(s) | ||
295 | |||
296 | #ifdef CONFIG_COMPAT | 285 | #ifdef CONFIG_COMPAT |
297 | #include <net/compat.h> | 286 | #include <net/compat.h> |
298 | 287 | ||
@@ -307,14 +296,12 @@ struct compat_ipt_entry { | |||
307 | }; | 296 | }; |
308 | 297 | ||
309 | /* Helper functions */ | 298 | /* Helper functions */ |
310 | static inline struct ipt_entry_target * | 299 | static inline struct xt_entry_target * |
311 | compat_ipt_get_target(struct compat_ipt_entry *e) | 300 | compat_ipt_get_target(struct compat_ipt_entry *e) |
312 | { | 301 | { |
313 | return (void *)e + e->target_offset; | 302 | return (void *)e + e->target_offset; |
314 | } | 303 | } |
315 | 304 | ||
316 | #define COMPAT_IPT_ALIGN(s) COMPAT_XT_ALIGN(s) | ||
317 | |||
318 | #endif /* CONFIG_COMPAT */ | 305 | #endif /* CONFIG_COMPAT */ |
319 | #endif /*__KERNEL__*/ | 306 | #endif /*__KERNEL__*/ |
320 | #endif /* _IPTABLES_H */ | 307 | #endif /* _IPTABLES_H */ |
diff --git a/include/linux/netfilter_ipv6/ip6_tables.h b/include/linux/netfilter_ipv6/ip6_tables.h index 18442ff19c07..c9784f7a9c1f 100644 --- a/include/linux/netfilter_ipv6/ip6_tables.h +++ b/include/linux/netfilter_ipv6/ip6_tables.h | |||
@@ -27,13 +27,42 @@ | |||
27 | 27 | ||
28 | #include <linux/netfilter/x_tables.h> | 28 | #include <linux/netfilter/x_tables.h> |
29 | 29 | ||
30 | #ifndef __KERNEL__ | ||
30 | #define IP6T_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN | 31 | #define IP6T_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN |
31 | #define IP6T_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN | 32 | #define IP6T_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN |
32 | |||
33 | #define ip6t_match xt_match | 33 | #define ip6t_match xt_match |
34 | #define ip6t_target xt_target | 34 | #define ip6t_target xt_target |
35 | #define ip6t_table xt_table | 35 | #define ip6t_table xt_table |
36 | #define ip6t_get_revision xt_get_revision | 36 | #define ip6t_get_revision xt_get_revision |
37 | #define ip6t_entry_match xt_entry_match | ||
38 | #define ip6t_entry_target xt_entry_target | ||
39 | #define ip6t_standard_target xt_standard_target | ||
40 | #define ip6t_error_target xt_error_target | ||
41 | #define ip6t_counters xt_counters | ||
42 | #define IP6T_CONTINUE XT_CONTINUE | ||
43 | #define IP6T_RETURN XT_RETURN | ||
44 | |||
45 | /* Pre-iptables-1.4.0 */ | ||
46 | #include <linux/netfilter/xt_tcpudp.h> | ||
47 | #define ip6t_tcp xt_tcp | ||
48 | #define ip6t_udp xt_udp | ||
49 | #define IP6T_TCP_INV_SRCPT XT_TCP_INV_SRCPT | ||
50 | #define IP6T_TCP_INV_DSTPT XT_TCP_INV_DSTPT | ||
51 | #define IP6T_TCP_INV_FLAGS XT_TCP_INV_FLAGS | ||
52 | #define IP6T_TCP_INV_OPTION XT_TCP_INV_OPTION | ||
53 | #define IP6T_TCP_INV_MASK XT_TCP_INV_MASK | ||
54 | #define IP6T_UDP_INV_SRCPT XT_UDP_INV_SRCPT | ||
55 | #define IP6T_UDP_INV_DSTPT XT_UDP_INV_DSTPT | ||
56 | #define IP6T_UDP_INV_MASK XT_UDP_INV_MASK | ||
57 | |||
58 | #define ip6t_counters_info xt_counters_info | ||
59 | #define IP6T_STANDARD_TARGET XT_STANDARD_TARGET | ||
60 | #define IP6T_ERROR_TARGET XT_ERROR_TARGET | ||
61 | #define IP6T_MATCH_ITERATE(e, fn, args...) \ | ||
62 | XT_MATCH_ITERATE(struct ip6t_entry, e, fn, ## args) | ||
63 | #define IP6T_ENTRY_ITERATE(entries, size, fn, args...) \ | ||
64 | XT_ENTRY_ITERATE(struct ip6t_entry, entries, size, fn, ## args) | ||
65 | #endif | ||
37 | 66 | ||
38 | /* Yes, Virginia, you have to zero the padding. */ | 67 | /* Yes, Virginia, you have to zero the padding. */ |
39 | struct ip6t_ip6 { | 68 | struct ip6t_ip6 { |
@@ -62,12 +91,6 @@ struct ip6t_ip6 { | |||
62 | u_int8_t invflags; | 91 | u_int8_t invflags; |
63 | }; | 92 | }; |
64 | 93 | ||
65 | #define ip6t_entry_match xt_entry_match | ||
66 | #define ip6t_entry_target xt_entry_target | ||
67 | #define ip6t_standard_target xt_standard_target | ||
68 | |||
69 | #define ip6t_counters xt_counters | ||
70 | |||
71 | /* Values for "flag" field in struct ip6t_ip6 (general ip6 structure). */ | 94 | /* Values for "flag" field in struct ip6t_ip6 (general ip6 structure). */ |
72 | #define IP6T_F_PROTO 0x01 /* Set if rule cares about upper | 95 | #define IP6T_F_PROTO 0x01 /* Set if rule cares about upper |
73 | protocols */ | 96 | protocols */ |
@@ -112,17 +135,12 @@ struct ip6t_entry { | |||
112 | /* Standard entry */ | 135 | /* Standard entry */ |
113 | struct ip6t_standard { | 136 | struct ip6t_standard { |
114 | struct ip6t_entry entry; | 137 | struct ip6t_entry entry; |
115 | struct ip6t_standard_target target; | 138 | struct xt_standard_target target; |
116 | }; | ||
117 | |||
118 | struct ip6t_error_target { | ||
119 | struct ip6t_entry_target target; | ||
120 | char errorname[IP6T_FUNCTION_MAXNAMELEN]; | ||
121 | }; | 139 | }; |
122 | 140 | ||
123 | struct ip6t_error { | 141 | struct ip6t_error { |
124 | struct ip6t_entry entry; | 142 | struct ip6t_entry entry; |
125 | struct ip6t_error_target target; | 143 | struct xt_error_target target; |
126 | }; | 144 | }; |
127 | 145 | ||
128 | #define IP6T_ENTRY_INIT(__size) \ | 146 | #define IP6T_ENTRY_INIT(__size) \ |
@@ -134,16 +152,16 @@ struct ip6t_error { | |||
134 | #define IP6T_STANDARD_INIT(__verdict) \ | 152 | #define IP6T_STANDARD_INIT(__verdict) \ |
135 | { \ | 153 | { \ |
136 | .entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_standard)), \ | 154 | .entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_standard)), \ |
137 | .target = XT_TARGET_INIT(IP6T_STANDARD_TARGET, \ | 155 | .target = XT_TARGET_INIT(XT_STANDARD_TARGET, \ |
138 | sizeof(struct ip6t_standard_target)), \ | 156 | sizeof(struct xt_standard_target)), \ |
139 | .target.verdict = -(__verdict) - 1, \ | 157 | .target.verdict = -(__verdict) - 1, \ |
140 | } | 158 | } |
141 | 159 | ||
142 | #define IP6T_ERROR_INIT \ | 160 | #define IP6T_ERROR_INIT \ |
143 | { \ | 161 | { \ |
144 | .entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_error)), \ | 162 | .entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_error)), \ |
145 | .target = XT_TARGET_INIT(IP6T_ERROR_TARGET, \ | 163 | .target = XT_TARGET_INIT(XT_ERROR_TARGET, \ |
146 | sizeof(struct ip6t_error_target)), \ | 164 | sizeof(struct xt_error_target)), \ |
147 | .target.errorname = "ERROR", \ | 165 | .target.errorname = "ERROR", \ |
148 | } | 166 | } |
149 | 167 | ||
@@ -166,30 +184,6 @@ struct ip6t_error { | |||
166 | #define IP6T_SO_GET_REVISION_TARGET (IP6T_BASE_CTL + 5) | 184 | #define IP6T_SO_GET_REVISION_TARGET (IP6T_BASE_CTL + 5) |
167 | #define IP6T_SO_GET_MAX IP6T_SO_GET_REVISION_TARGET | 185 | #define IP6T_SO_GET_MAX IP6T_SO_GET_REVISION_TARGET |
168 | 186 | ||
169 | /* CONTINUE verdict for targets */ | ||
170 | #define IP6T_CONTINUE XT_CONTINUE | ||
171 | |||
172 | /* For standard target */ | ||
173 | #define IP6T_RETURN XT_RETURN | ||
174 | |||
175 | /* TCP/UDP matching stuff */ | ||
176 | #include <linux/netfilter/xt_tcpudp.h> | ||
177 | |||
178 | #define ip6t_tcp xt_tcp | ||
179 | #define ip6t_udp xt_udp | ||
180 | |||
181 | /* Values for "inv" field in struct ipt_tcp. */ | ||
182 | #define IP6T_TCP_INV_SRCPT XT_TCP_INV_SRCPT | ||
183 | #define IP6T_TCP_INV_DSTPT XT_TCP_INV_DSTPT | ||
184 | #define IP6T_TCP_INV_FLAGS XT_TCP_INV_FLAGS | ||
185 | #define IP6T_TCP_INV_OPTION XT_TCP_INV_OPTION | ||
186 | #define IP6T_TCP_INV_MASK XT_TCP_INV_MASK | ||
187 | |||
188 | /* Values for "invflags" field in struct ipt_udp. */ | ||
189 | #define IP6T_UDP_INV_SRCPT XT_UDP_INV_SRCPT | ||
190 | #define IP6T_UDP_INV_DSTPT XT_UDP_INV_DSTPT | ||
191 | #define IP6T_UDP_INV_MASK XT_UDP_INV_MASK | ||
192 | |||
193 | /* ICMP matching stuff */ | 187 | /* ICMP matching stuff */ |
194 | struct ip6t_icmp { | 188 | struct ip6t_icmp { |
195 | u_int8_t type; /* type to match */ | 189 | u_int8_t type; /* type to match */ |
@@ -203,7 +197,7 @@ struct ip6t_icmp { | |||
203 | /* The argument to IP6T_SO_GET_INFO */ | 197 | /* The argument to IP6T_SO_GET_INFO */ |
204 | struct ip6t_getinfo { | 198 | struct ip6t_getinfo { |
205 | /* Which table: caller fills this in. */ | 199 | /* Which table: caller fills this in. */ |
206 | char name[IP6T_TABLE_MAXNAMELEN]; | 200 | char name[XT_TABLE_MAXNAMELEN]; |
207 | 201 | ||
208 | /* Kernel fills these in. */ | 202 | /* Kernel fills these in. */ |
209 | /* Which hook entry points are valid: bitmask */ | 203 | /* Which hook entry points are valid: bitmask */ |
@@ -225,7 +219,7 @@ struct ip6t_getinfo { | |||
225 | /* The argument to IP6T_SO_SET_REPLACE. */ | 219 | /* The argument to IP6T_SO_SET_REPLACE. */ |
226 | struct ip6t_replace { | 220 | struct ip6t_replace { |
227 | /* Which table. */ | 221 | /* Which table. */ |
228 | char name[IP6T_TABLE_MAXNAMELEN]; | 222 | char name[XT_TABLE_MAXNAMELEN]; |
229 | 223 | ||
230 | /* Which hook entry points are valid: bitmask. You can't | 224 | /* Which hook entry points are valid: bitmask. You can't |
231 | change this. */ | 225 | change this. */ |
@@ -253,13 +247,10 @@ struct ip6t_replace { | |||
253 | struct ip6t_entry entries[0]; | 247 | struct ip6t_entry entries[0]; |
254 | }; | 248 | }; |
255 | 249 | ||
256 | /* The argument to IP6T_SO_ADD_COUNTERS. */ | ||
257 | #define ip6t_counters_info xt_counters_info | ||
258 | |||
259 | /* The argument to IP6T_SO_GET_ENTRIES. */ | 250 | /* The argument to IP6T_SO_GET_ENTRIES. */ |
260 | struct ip6t_get_entries { | 251 | struct ip6t_get_entries { |
261 | /* Which table: user fills this in. */ | 252 | /* Which table: user fills this in. */ |
262 | char name[IP6T_TABLE_MAXNAMELEN]; | 253 | char name[XT_TABLE_MAXNAMELEN]; |
263 | 254 | ||
264 | /* User fills this in: total entry size. */ | 255 | /* User fills this in: total entry size. */ |
265 | unsigned int size; | 256 | unsigned int size; |
@@ -268,28 +259,13 @@ struct ip6t_get_entries { | |||
268 | struct ip6t_entry entrytable[0]; | 259 | struct ip6t_entry entrytable[0]; |
269 | }; | 260 | }; |
270 | 261 | ||
271 | /* Standard return verdict, or do jump. */ | ||
272 | #define IP6T_STANDARD_TARGET XT_STANDARD_TARGET | ||
273 | /* Error verdict. */ | ||
274 | #define IP6T_ERROR_TARGET XT_ERROR_TARGET | ||
275 | |||
276 | /* Helper functions */ | 262 | /* Helper functions */ |
277 | static __inline__ struct ip6t_entry_target * | 263 | static __inline__ struct xt_entry_target * |
278 | ip6t_get_target(struct ip6t_entry *e) | 264 | ip6t_get_target(struct ip6t_entry *e) |
279 | { | 265 | { |
280 | return (void *)e + e->target_offset; | 266 | return (void *)e + e->target_offset; |
281 | } | 267 | } |
282 | 268 | ||
283 | #ifndef __KERNEL__ | ||
284 | /* fn returns 0 to continue iteration */ | ||
285 | #define IP6T_MATCH_ITERATE(e, fn, args...) \ | ||
286 | XT_MATCH_ITERATE(struct ip6t_entry, e, fn, ## args) | ||
287 | |||
288 | /* fn returns 0 to continue iteration */ | ||
289 | #define IP6T_ENTRY_ITERATE(entries, size, fn, args...) \ | ||
290 | XT_ENTRY_ITERATE(struct ip6t_entry, entries, size, fn, ## args) | ||
291 | #endif | ||
292 | |||
293 | /* | 269 | /* |
294 | * Main firewall chains definitions and global var's definitions. | 270 | * Main firewall chains definitions and global var's definitions. |
295 | */ | 271 | */ |
@@ -316,8 +292,6 @@ extern int ip6t_ext_hdr(u8 nexthdr); | |||
316 | extern int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset, | 292 | extern int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset, |
317 | int target, unsigned short *fragoff); | 293 | int target, unsigned short *fragoff); |
318 | 294 | ||
319 | #define IP6T_ALIGN(s) XT_ALIGN(s) | ||
320 | |||
321 | #ifdef CONFIG_COMPAT | 295 | #ifdef CONFIG_COMPAT |
322 | #include <net/compat.h> | 296 | #include <net/compat.h> |
323 | 297 | ||
@@ -331,14 +305,12 @@ struct compat_ip6t_entry { | |||
331 | unsigned char elems[0]; | 305 | unsigned char elems[0]; |
332 | }; | 306 | }; |
333 | 307 | ||
334 | static inline struct ip6t_entry_target * | 308 | static inline struct xt_entry_target * |
335 | compat_ip6t_get_target(struct compat_ip6t_entry *e) | 309 | compat_ip6t_get_target(struct compat_ip6t_entry *e) |
336 | { | 310 | { |
337 | return (void *)e + e->target_offset; | 311 | return (void *)e + e->target_offset; |
338 | } | 312 | } |
339 | 313 | ||
340 | #define COMPAT_IP6T_ALIGN(s) COMPAT_XT_ALIGN(s) | ||
341 | |||
342 | #endif /* CONFIG_COMPAT */ | 314 | #endif /* CONFIG_COMPAT */ |
343 | #endif /*__KERNEL__*/ | 315 | #endif /*__KERNEL__*/ |
344 | #endif /* _IP6_TABLES_H */ | 316 | #endif /* _IP6_TABLES_H */ |
diff --git a/include/linux/netpoll.h b/include/linux/netpoll.h index 50d8009be86c..79358bb712c6 100644 --- a/include/linux/netpoll.h +++ b/include/linux/netpoll.h | |||
@@ -14,7 +14,6 @@ | |||
14 | 14 | ||
15 | struct netpoll { | 15 | struct netpoll { |
16 | struct net_device *dev; | 16 | struct net_device *dev; |
17 | struct net_device *real_dev; | ||
18 | char dev_name[IFNAMSIZ]; | 17 | char dev_name[IFNAMSIZ]; |
19 | const char *name; | 18 | const char *name; |
20 | void (*rx_hook)(struct netpoll *, int, char *, int); | 19 | void (*rx_hook)(struct netpoll *, int, char *, int); |
@@ -53,7 +52,13 @@ void netpoll_set_trap(int trap); | |||
53 | void __netpoll_cleanup(struct netpoll *np); | 52 | void __netpoll_cleanup(struct netpoll *np); |
54 | void netpoll_cleanup(struct netpoll *np); | 53 | void netpoll_cleanup(struct netpoll *np); |
55 | int __netpoll_rx(struct sk_buff *skb); | 54 | int __netpoll_rx(struct sk_buff *skb); |
56 | void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb); | 55 | void netpoll_send_skb_on_dev(struct netpoll *np, struct sk_buff *skb, |
56 | struct net_device *dev); | ||
57 | static inline void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb) | ||
58 | { | ||
59 | netpoll_send_skb_on_dev(np, skb, np->dev); | ||
60 | } | ||
61 | |||
57 | 62 | ||
58 | 63 | ||
59 | #ifdef CONFIG_NETPOLL | 64 | #ifdef CONFIG_NETPOLL |
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h index 2c8701687336..0edb2566c14c 100644 --- a/include/linux/nl80211.h +++ b/include/linux/nl80211.h | |||
@@ -40,6 +40,43 @@ | |||
40 | */ | 40 | */ |
41 | 41 | ||
42 | /** | 42 | /** |
43 | * DOC: Frame transmission/registration support | ||
44 | * | ||
45 | * Frame transmission and registration support exists to allow userspace | ||
46 | * management entities such as wpa_supplicant react to management frames | ||
47 | * that are not being handled by the kernel. This includes, for example, | ||
48 | * certain classes of action frames that cannot be handled in the kernel | ||
49 | * for various reasons. | ||
50 | * | ||
51 | * Frame registration is done on a per-interface basis and registrations | ||
52 | * cannot be removed other than by closing the socket. It is possible to | ||
53 | * specify a registration filter to register, for example, only for a | ||
54 | * certain type of action frame. In particular with action frames, those | ||
55 | * that userspace registers for will not be returned as unhandled by the | ||
56 | * driver, so that the registered application has to take responsibility | ||
57 | * for doing that. | ||
58 | * | ||
59 | * The type of frame that can be registered for is also dependent on the | ||
60 | * driver and interface type. The frame types are advertised in wiphy | ||
61 | * attributes so applications know what to expect. | ||
62 | * | ||
63 | * NOTE: When an interface changes type while registrations are active, | ||
64 | * these registrations are ignored until the interface type is | ||
65 | * changed again. This means that changing the interface type can | ||
66 | * lead to a situation that couldn't otherwise be produced, but | ||
67 | * any such registrations will be dormant in the sense that they | ||
68 | * will not be serviced, i.e. they will not receive any frames. | ||
69 | * | ||
70 | * Frame transmission allows userspace to send for example the required | ||
71 | * responses to action frames. It is subject to some sanity checking, | ||
72 | * but many frames can be transmitted. When a frame was transmitted, its | ||
73 | * status is indicated to the sending socket. | ||
74 | * | ||
75 | * For more technical details, see the corresponding command descriptions | ||
76 | * below. | ||
77 | */ | ||
78 | |||
79 | /** | ||
43 | * enum nl80211_commands - supported nl80211 commands | 80 | * enum nl80211_commands - supported nl80211 commands |
44 | * | 81 | * |
45 | * @NL80211_CMD_UNSPEC: unspecified command to catch errors | 82 | * @NL80211_CMD_UNSPEC: unspecified command to catch errors |
@@ -258,7 +295,9 @@ | |||
258 | * auth and assoc steps. For this, you need to specify the SSID in a | 295 | * auth and assoc steps. For this, you need to specify the SSID in a |
259 | * %NL80211_ATTR_SSID attribute, and can optionally specify the association | 296 | * %NL80211_ATTR_SSID attribute, and can optionally specify the association |
260 | * IEs in %NL80211_ATTR_IE, %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_MAC, | 297 | * IEs in %NL80211_ATTR_IE, %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_MAC, |
261 | * %NL80211_ATTR_WIPHY_FREQ and %NL80211_ATTR_CONTROL_PORT. | 298 | * %NL80211_ATTR_WIPHY_FREQ, %NL80211_ATTR_CONTROL_PORT, |
299 | * %NL80211_ATTR_CONTROL_PORT_ETHERTYPE and | ||
300 | * %NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT. | ||
262 | * It is also sent as an event, with the BSSID and response IEs when the | 301 | * It is also sent as an event, with the BSSID and response IEs when the |
263 | * connection is established or failed to be established. This can be | 302 | * connection is established or failed to be established. This can be |
264 | * determined by the STATUS_CODE attribute. | 303 | * determined by the STATUS_CODE attribute. |
@@ -276,8 +315,8 @@ | |||
276 | * channel for the specified amount of time. This can be used to do | 315 | * channel for the specified amount of time. This can be used to do |
277 | * off-channel operations like transmit a Public Action frame and wait for | 316 | * off-channel operations like transmit a Public Action frame and wait for |
278 | * a response while being associated to an AP on another channel. | 317 | * a response while being associated to an AP on another channel. |
279 | * %NL80211_ATTR_WIPHY or %NL80211_ATTR_IFINDEX is used to specify which | 318 | * %NL80211_ATTR_IFINDEX is used to specify which interface (and thus |
280 | * radio is used. %NL80211_ATTR_WIPHY_FREQ is used to specify the | 319 | * radio) is used. %NL80211_ATTR_WIPHY_FREQ is used to specify the |
281 | * frequency for the operation and %NL80211_ATTR_WIPHY_CHANNEL_TYPE may be | 320 | * frequency for the operation and %NL80211_ATTR_WIPHY_CHANNEL_TYPE may be |
282 | * optionally used to specify additional channel parameters. | 321 | * optionally used to specify additional channel parameters. |
283 | * %NL80211_ATTR_DURATION is used to specify the duration in milliseconds | 322 | * %NL80211_ATTR_DURATION is used to specify the duration in milliseconds |
@@ -301,16 +340,20 @@ | |||
301 | * rate selection. %NL80211_ATTR_IFINDEX is used to specify the interface | 340 | * rate selection. %NL80211_ATTR_IFINDEX is used to specify the interface |
302 | * and @NL80211_ATTR_TX_RATES the set of allowed rates. | 341 | * and @NL80211_ATTR_TX_RATES the set of allowed rates. |
303 | * | 342 | * |
304 | * @NL80211_CMD_REGISTER_ACTION: Register for receiving certain action frames | 343 | * @NL80211_CMD_REGISTER_FRAME: Register for receiving certain mgmt frames |
305 | * (via @NL80211_CMD_ACTION) for processing in userspace. This command | 344 | * (via @NL80211_CMD_FRAME) for processing in userspace. This command |
306 | * requires an interface index and a match attribute containing the first | 345 | * requires an interface index, a frame type attribute (optional for |
307 | * few bytes of the frame that should match, e.g. a single byte for only | 346 | * backward compatibility reasons, if not given assumes action frames) |
308 | * a category match or four bytes for vendor frames including the OUI. | 347 | * and a match attribute containing the first few bytes of the frame |
309 | * The registration cannot be dropped, but is removed automatically | 348 | * that should match, e.g. a single byte for only a category match or |
310 | * when the netlink socket is closed. Multiple registrations can be made. | 349 | * four bytes for vendor frames including the OUI. The registration |
311 | * @NL80211_CMD_ACTION: Action frame TX request and RX notification. This | 350 | * cannot be dropped, but is removed automatically when the netlink |
312 | * command is used both as a request to transmit an Action frame and as an | 351 | * socket is closed. Multiple registrations can be made. |
313 | * event indicating reception of an Action frame that was not processed in | 352 | * @NL80211_CMD_REGISTER_ACTION: Alias for @NL80211_CMD_REGISTER_FRAME for |
353 | * backward compatibility | ||
354 | * @NL80211_CMD_FRAME: Management frame TX request and RX notification. This | ||
355 | * command is used both as a request to transmit a management frame and | ||
356 | * as an event indicating reception of a frame that was not processed in | ||
314 | * kernel code, but is for us (i.e., which may need to be processed in a | 357 | * kernel code, but is for us (i.e., which may need to be processed in a |
315 | * user space application). %NL80211_ATTR_FRAME is used to specify the | 358 | * user space application). %NL80211_ATTR_FRAME is used to specify the |
316 | * frame contents (including header). %NL80211_ATTR_WIPHY_FREQ (and | 359 | * frame contents (including header). %NL80211_ATTR_WIPHY_FREQ (and |
@@ -320,11 +363,14 @@ | |||
320 | * operational channel). When called, this operation returns a cookie | 363 | * operational channel). When called, this operation returns a cookie |
321 | * (%NL80211_ATTR_COOKIE) that will be included with the TX status event | 364 | * (%NL80211_ATTR_COOKIE) that will be included with the TX status event |
322 | * pertaining to the TX request. | 365 | * pertaining to the TX request. |
323 | * @NL80211_CMD_ACTION_TX_STATUS: Report TX status of an Action frame | 366 | * @NL80211_CMD_ACTION: Alias for @NL80211_CMD_FRAME for backward compatibility. |
324 | * transmitted with %NL80211_CMD_ACTION. %NL80211_ATTR_COOKIE identifies | 367 | * @NL80211_CMD_FRAME_TX_STATUS: Report TX status of a management frame |
368 | * transmitted with %NL80211_CMD_FRAME. %NL80211_ATTR_COOKIE identifies | ||
325 | * the TX command and %NL80211_ATTR_FRAME includes the contents of the | 369 | * the TX command and %NL80211_ATTR_FRAME includes the contents of the |
326 | * frame. %NL80211_ATTR_ACK flag is included if the recipient acknowledged | 370 | * frame. %NL80211_ATTR_ACK flag is included if the recipient acknowledged |
327 | * the frame. | 371 | * the frame. |
372 | * @NL80211_CMD_ACTION_TX_STATUS: Alias for @NL80211_CMD_FRAME_TX_STATUS for | ||
373 | * backward compatibility. | ||
328 | * @NL80211_CMD_SET_CQM: Connection quality monitor configuration. This command | 374 | * @NL80211_CMD_SET_CQM: Connection quality monitor configuration. This command |
329 | * is used to configure connection quality monitoring notification trigger | 375 | * is used to configure connection quality monitoring notification trigger |
330 | * levels. | 376 | * levels. |
@@ -341,6 +387,8 @@ | |||
341 | * of any other interfaces, and other interfaces will again take | 387 | * of any other interfaces, and other interfaces will again take |
342 | * precedence when they are used. | 388 | * precedence when they are used. |
343 | * | 389 | * |
390 | * @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface. | ||
391 | * | ||
344 | * @NL80211_CMD_MAX: highest used command number | 392 | * @NL80211_CMD_MAX: highest used command number |
345 | * @__NL80211_CMD_AFTER_LAST: internal use | 393 | * @__NL80211_CMD_AFTER_LAST: internal use |
346 | */ | 394 | */ |
@@ -429,9 +477,12 @@ enum nl80211_commands { | |||
429 | 477 | ||
430 | NL80211_CMD_SET_TX_BITRATE_MASK, | 478 | NL80211_CMD_SET_TX_BITRATE_MASK, |
431 | 479 | ||
432 | NL80211_CMD_REGISTER_ACTION, | 480 | NL80211_CMD_REGISTER_FRAME, |
433 | NL80211_CMD_ACTION, | 481 | NL80211_CMD_REGISTER_ACTION = NL80211_CMD_REGISTER_FRAME, |
434 | NL80211_CMD_ACTION_TX_STATUS, | 482 | NL80211_CMD_FRAME, |
483 | NL80211_CMD_ACTION = NL80211_CMD_FRAME, | ||
484 | NL80211_CMD_FRAME_TX_STATUS, | ||
485 | NL80211_CMD_ACTION_TX_STATUS = NL80211_CMD_FRAME_TX_STATUS, | ||
435 | 486 | ||
436 | NL80211_CMD_SET_POWER_SAVE, | 487 | NL80211_CMD_SET_POWER_SAVE, |
437 | NL80211_CMD_GET_POWER_SAVE, | 488 | NL80211_CMD_GET_POWER_SAVE, |
@@ -440,6 +491,7 @@ enum nl80211_commands { | |||
440 | NL80211_CMD_NOTIFY_CQM, | 491 | NL80211_CMD_NOTIFY_CQM, |
441 | 492 | ||
442 | NL80211_CMD_SET_CHANNEL, | 493 | NL80211_CMD_SET_CHANNEL, |
494 | NL80211_CMD_SET_WDS_PEER, | ||
443 | 495 | ||
444 | /* add new commands above here */ | 496 | /* add new commands above here */ |
445 | 497 | ||
@@ -639,6 +691,15 @@ enum nl80211_commands { | |||
639 | * request, the driver will assume that the port is unauthorized until | 691 | * request, the driver will assume that the port is unauthorized until |
640 | * authorized by user space. Otherwise, port is marked authorized by | 692 | * authorized by user space. Otherwise, port is marked authorized by |
641 | * default in station mode. | 693 | * default in station mode. |
694 | * @NL80211_ATTR_CONTROL_PORT_ETHERTYPE: A 16-bit value indicating the | ||
695 | * ethertype that will be used for key negotiation. It can be | ||
696 | * specified with the associate and connect commands. If it is not | ||
697 | * specified, the value defaults to 0x888E (PAE, 802.1X). This | ||
698 | * attribute is also used as a flag in the wiphy information to | ||
699 | * indicate that protocols other than PAE are supported. | ||
700 | * @NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT: When included along with | ||
701 | * %NL80211_ATTR_CONTROL_PORT_ETHERTYPE, indicates that the custom | ||
702 | * ethertype frames used for key negotiation must not be encrypted. | ||
642 | * | 703 | * |
643 | * @NL80211_ATTR_TESTDATA: Testmode data blob, passed through to the driver. | 704 | * @NL80211_ATTR_TESTDATA: Testmode data blob, passed through to the driver. |
644 | * We recommend using nested, driver-specific attributes within this. | 705 | * We recommend using nested, driver-specific attributes within this. |
@@ -708,7 +769,16 @@ enum nl80211_commands { | |||
708 | * is used with %NL80211_CMD_SET_TX_BITRATE_MASK. | 769 | * is used with %NL80211_CMD_SET_TX_BITRATE_MASK. |
709 | * | 770 | * |
710 | * @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain | 771 | * @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain |
711 | * at least one byte, currently used with @NL80211_CMD_REGISTER_ACTION. | 772 | * at least one byte, currently used with @NL80211_CMD_REGISTER_FRAME. |
773 | * @NL80211_ATTR_FRAME_TYPE: A u16 indicating the frame type/subtype for the | ||
774 | * @NL80211_CMD_REGISTER_FRAME command. | ||
775 | * @NL80211_ATTR_TX_FRAME_TYPES: wiphy capability attribute, which is a | ||
776 | * nested attribute of %NL80211_ATTR_FRAME_TYPE attributes, containing | ||
777 | * information about which frame types can be transmitted with | ||
778 | * %NL80211_CMD_FRAME. | ||
779 | * @NL80211_ATTR_RX_FRAME_TYPES: wiphy capability attribute, which is a | ||
780 | * nested attribute of %NL80211_ATTR_FRAME_TYPE attributes, containing | ||
781 | * information about which frame types can be registered for RX. | ||
712 | * | 782 | * |
713 | * @NL80211_ATTR_ACK: Flag attribute indicating that the frame was | 783 | * @NL80211_ATTR_ACK: Flag attribute indicating that the frame was |
714 | * acknowledged by the recipient. | 784 | * acknowledged by the recipient. |
@@ -731,6 +801,9 @@ enum nl80211_commands { | |||
731 | * This is used in association with @NL80211_ATTR_WIPHY_TX_POWER_SETTING | 801 | * This is used in association with @NL80211_ATTR_WIPHY_TX_POWER_SETTING |
732 | * for non-automatic settings. | 802 | * for non-automatic settings. |
733 | * | 803 | * |
804 | * @NL80211_ATTR_SUPPORT_IBSS_RSN: The device supports IBSS RSN, which mostly | ||
805 | * means support for per-station GTKs. | ||
806 | * | ||
734 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 807 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
735 | * @__NL80211_ATTR_AFTER_LAST: internal use | 808 | * @__NL80211_ATTR_AFTER_LAST: internal use |
736 | */ | 809 | */ |
@@ -891,6 +964,15 @@ enum nl80211_attrs { | |||
891 | NL80211_ATTR_WIPHY_TX_POWER_SETTING, | 964 | NL80211_ATTR_WIPHY_TX_POWER_SETTING, |
892 | NL80211_ATTR_WIPHY_TX_POWER_LEVEL, | 965 | NL80211_ATTR_WIPHY_TX_POWER_LEVEL, |
893 | 966 | ||
967 | NL80211_ATTR_TX_FRAME_TYPES, | ||
968 | NL80211_ATTR_RX_FRAME_TYPES, | ||
969 | NL80211_ATTR_FRAME_TYPE, | ||
970 | |||
971 | NL80211_ATTR_CONTROL_PORT_ETHERTYPE, | ||
972 | NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT, | ||
973 | |||
974 | NL80211_ATTR_SUPPORT_IBSS_RSN, | ||
975 | |||
894 | /* add attributes here, update the policy in nl80211.c */ | 976 | /* add attributes here, update the policy in nl80211.c */ |
895 | 977 | ||
896 | __NL80211_ATTR_AFTER_LAST, | 978 | __NL80211_ATTR_AFTER_LAST, |
@@ -946,8 +1028,10 @@ enum nl80211_attrs { | |||
946 | * @NL80211_IFTYPE_WDS: wireless distribution interface | 1028 | * @NL80211_IFTYPE_WDS: wireless distribution interface |
947 | * @NL80211_IFTYPE_MONITOR: monitor interface receiving all frames | 1029 | * @NL80211_IFTYPE_MONITOR: monitor interface receiving all frames |
948 | * @NL80211_IFTYPE_MESH_POINT: mesh point | 1030 | * @NL80211_IFTYPE_MESH_POINT: mesh point |
1031 | * @NL80211_IFTYPE_P2P_CLIENT: P2P client | ||
1032 | * @NL80211_IFTYPE_P2P_GO: P2P group owner | ||
949 | * @NL80211_IFTYPE_MAX: highest interface type number currently defined | 1033 | * @NL80211_IFTYPE_MAX: highest interface type number currently defined |
950 | * @__NL80211_IFTYPE_AFTER_LAST: internal use | 1034 | * @NUM_NL80211_IFTYPES: number of defined interface types |
951 | * | 1035 | * |
952 | * These values are used with the %NL80211_ATTR_IFTYPE | 1036 | * These values are used with the %NL80211_ATTR_IFTYPE |
953 | * to set the type of an interface. | 1037 | * to set the type of an interface. |
@@ -962,10 +1046,12 @@ enum nl80211_iftype { | |||
962 | NL80211_IFTYPE_WDS, | 1046 | NL80211_IFTYPE_WDS, |
963 | NL80211_IFTYPE_MONITOR, | 1047 | NL80211_IFTYPE_MONITOR, |
964 | NL80211_IFTYPE_MESH_POINT, | 1048 | NL80211_IFTYPE_MESH_POINT, |
1049 | NL80211_IFTYPE_P2P_CLIENT, | ||
1050 | NL80211_IFTYPE_P2P_GO, | ||
965 | 1051 | ||
966 | /* keep last */ | 1052 | /* keep last */ |
967 | __NL80211_IFTYPE_AFTER_LAST, | 1053 | NUM_NL80211_IFTYPES, |
968 | NL80211_IFTYPE_MAX = __NL80211_IFTYPE_AFTER_LAST - 1 | 1054 | NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1 |
969 | }; | 1055 | }; |
970 | 1056 | ||
971 | /** | 1057 | /** |
@@ -974,11 +1060,14 @@ enum nl80211_iftype { | |||
974 | * Station flags. When a station is added to an AP interface, it is | 1060 | * Station flags. When a station is added to an AP interface, it is |
975 | * assumed to be already associated (and hence authenticated.) | 1061 | * assumed to be already associated (and hence authenticated.) |
976 | * | 1062 | * |
1063 | * @__NL80211_STA_FLAG_INVALID: attribute number 0 is reserved | ||
977 | * @NL80211_STA_FLAG_AUTHORIZED: station is authorized (802.1X) | 1064 | * @NL80211_STA_FLAG_AUTHORIZED: station is authorized (802.1X) |
978 | * @NL80211_STA_FLAG_SHORT_PREAMBLE: station is capable of receiving frames | 1065 | * @NL80211_STA_FLAG_SHORT_PREAMBLE: station is capable of receiving frames |
979 | * with short barker preamble | 1066 | * with short barker preamble |
980 | * @NL80211_STA_FLAG_WME: station is WME/QoS capable | 1067 | * @NL80211_STA_FLAG_WME: station is WME/QoS capable |
981 | * @NL80211_STA_FLAG_MFP: station uses management frame protection | 1068 | * @NL80211_STA_FLAG_MFP: station uses management frame protection |
1069 | * @NL80211_STA_FLAG_MAX: highest station flag number currently defined | ||
1070 | * @__NL80211_STA_FLAG_AFTER_LAST: internal use | ||
982 | */ | 1071 | */ |
983 | enum nl80211_sta_flags { | 1072 | enum nl80211_sta_flags { |
984 | __NL80211_STA_FLAG_INVALID, | 1073 | __NL80211_STA_FLAG_INVALID, |
@@ -1048,6 +1137,8 @@ enum nl80211_rate_info { | |||
1048 | * @NL80211_STA_INFO_RX_PACKETS: total received packet (u32, from this station) | 1137 | * @NL80211_STA_INFO_RX_PACKETS: total received packet (u32, from this station) |
1049 | * @NL80211_STA_INFO_TX_PACKETS: total transmitted packets (u32, to this | 1138 | * @NL80211_STA_INFO_TX_PACKETS: total transmitted packets (u32, to this |
1050 | * station) | 1139 | * station) |
1140 | * @NL80211_STA_INFO_TX_RETRIES: total retries (u32, to this station) | ||
1141 | * @NL80211_STA_INFO_TX_FAILED: total failed packets (u32, to this station) | ||
1051 | */ | 1142 | */ |
1052 | enum nl80211_sta_info { | 1143 | enum nl80211_sta_info { |
1053 | __NL80211_STA_INFO_INVALID, | 1144 | __NL80211_STA_INFO_INVALID, |
@@ -1061,6 +1152,8 @@ enum nl80211_sta_info { | |||
1061 | NL80211_STA_INFO_TX_BITRATE, | 1152 | NL80211_STA_INFO_TX_BITRATE, |
1062 | NL80211_STA_INFO_RX_PACKETS, | 1153 | NL80211_STA_INFO_RX_PACKETS, |
1063 | NL80211_STA_INFO_TX_PACKETS, | 1154 | NL80211_STA_INFO_TX_PACKETS, |
1155 | NL80211_STA_INFO_TX_RETRIES, | ||
1156 | NL80211_STA_INFO_TX_FAILED, | ||
1064 | 1157 | ||
1065 | /* keep last */ | 1158 | /* keep last */ |
1066 | __NL80211_STA_INFO_AFTER_LAST, | 1159 | __NL80211_STA_INFO_AFTER_LAST, |
@@ -1091,14 +1184,17 @@ enum nl80211_mpath_flags { | |||
1091 | * information about a mesh path. | 1184 | * information about a mesh path. |
1092 | * | 1185 | * |
1093 | * @__NL80211_MPATH_INFO_INVALID: attribute number 0 is reserved | 1186 | * @__NL80211_MPATH_INFO_INVALID: attribute number 0 is reserved |
1094 | * @NL80211_ATTR_MPATH_FRAME_QLEN: number of queued frames for this destination | 1187 | * @NL80211_MPATH_INFO_FRAME_QLEN: number of queued frames for this destination |
1095 | * @NL80211_ATTR_MPATH_SN: destination sequence number | 1188 | * @NL80211_MPATH_INFO_SN: destination sequence number |
1096 | * @NL80211_ATTR_MPATH_METRIC: metric (cost) of this mesh path | 1189 | * @NL80211_MPATH_INFO_METRIC: metric (cost) of this mesh path |
1097 | * @NL80211_ATTR_MPATH_EXPTIME: expiration time for the path, in msec from now | 1190 | * @NL80211_MPATH_INFO_EXPTIME: expiration time for the path, in msec from now |
1098 | * @NL80211_ATTR_MPATH_FLAGS: mesh path flags, enumerated in | 1191 | * @NL80211_MPATH_INFO_FLAGS: mesh path flags, enumerated in |
1099 | * &enum nl80211_mpath_flags; | 1192 | * &enum nl80211_mpath_flags; |
1100 | * @NL80211_ATTR_MPATH_DISCOVERY_TIMEOUT: total path discovery timeout, in msec | 1193 | * @NL80211_MPATH_INFO_DISCOVERY_TIMEOUT: total path discovery timeout, in msec |
1101 | * @NL80211_ATTR_MPATH_DISCOVERY_RETRIES: mesh path discovery retries | 1194 | * @NL80211_MPATH_INFO_DISCOVERY_RETRIES: mesh path discovery retries |
1195 | * @NL80211_MPATH_INFO_MAX: highest mesh path information attribute number | ||
1196 | * currently defind | ||
1197 | * @__NL80211_MPATH_INFO_AFTER_LAST: internal use | ||
1102 | */ | 1198 | */ |
1103 | enum nl80211_mpath_info { | 1199 | enum nl80211_mpath_info { |
1104 | __NL80211_MPATH_INFO_INVALID, | 1200 | __NL80211_MPATH_INFO_INVALID, |
@@ -1127,6 +1223,8 @@ enum nl80211_mpath_info { | |||
1127 | * @NL80211_BAND_ATTR_HT_CAPA: HT capabilities, as in the HT information IE | 1223 | * @NL80211_BAND_ATTR_HT_CAPA: HT capabilities, as in the HT information IE |
1128 | * @NL80211_BAND_ATTR_HT_AMPDU_FACTOR: A-MPDU factor, as in 11n | 1224 | * @NL80211_BAND_ATTR_HT_AMPDU_FACTOR: A-MPDU factor, as in 11n |
1129 | * @NL80211_BAND_ATTR_HT_AMPDU_DENSITY: A-MPDU density, as in 11n | 1225 | * @NL80211_BAND_ATTR_HT_AMPDU_DENSITY: A-MPDU density, as in 11n |
1226 | * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined | ||
1227 | * @__NL80211_BAND_ATTR_AFTER_LAST: internal use | ||
1130 | */ | 1228 | */ |
1131 | enum nl80211_band_attr { | 1229 | enum nl80211_band_attr { |
1132 | __NL80211_BAND_ATTR_INVALID, | 1230 | __NL80211_BAND_ATTR_INVALID, |
@@ -1147,6 +1245,7 @@ enum nl80211_band_attr { | |||
1147 | 1245 | ||
1148 | /** | 1246 | /** |
1149 | * enum nl80211_frequency_attr - frequency attributes | 1247 | * enum nl80211_frequency_attr - frequency attributes |
1248 | * @__NL80211_FREQUENCY_ATTR_INVALID: attribute number 0 is reserved | ||
1150 | * @NL80211_FREQUENCY_ATTR_FREQ: Frequency in MHz | 1249 | * @NL80211_FREQUENCY_ATTR_FREQ: Frequency in MHz |
1151 | * @NL80211_FREQUENCY_ATTR_DISABLED: Channel is disabled in current | 1250 | * @NL80211_FREQUENCY_ATTR_DISABLED: Channel is disabled in current |
1152 | * regulatory domain. | 1251 | * regulatory domain. |
@@ -1158,6 +1257,9 @@ enum nl80211_band_attr { | |||
1158 | * on this channel in current regulatory domain. | 1257 | * on this channel in current regulatory domain. |
1159 | * @NL80211_FREQUENCY_ATTR_MAX_TX_POWER: Maximum transmission power in mBm | 1258 | * @NL80211_FREQUENCY_ATTR_MAX_TX_POWER: Maximum transmission power in mBm |
1160 | * (100 * dBm). | 1259 | * (100 * dBm). |
1260 | * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number | ||
1261 | * currently defined | ||
1262 | * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use | ||
1161 | */ | 1263 | */ |
1162 | enum nl80211_frequency_attr { | 1264 | enum nl80211_frequency_attr { |
1163 | __NL80211_FREQUENCY_ATTR_INVALID, | 1265 | __NL80211_FREQUENCY_ATTR_INVALID, |
@@ -1177,9 +1279,13 @@ enum nl80211_frequency_attr { | |||
1177 | 1279 | ||
1178 | /** | 1280 | /** |
1179 | * enum nl80211_bitrate_attr - bitrate attributes | 1281 | * enum nl80211_bitrate_attr - bitrate attributes |
1282 | * @__NL80211_BITRATE_ATTR_INVALID: attribute number 0 is reserved | ||
1180 | * @NL80211_BITRATE_ATTR_RATE: Bitrate in units of 100 kbps | 1283 | * @NL80211_BITRATE_ATTR_RATE: Bitrate in units of 100 kbps |
1181 | * @NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE: Short preamble supported | 1284 | * @NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE: Short preamble supported |
1182 | * in 2.4 GHz band. | 1285 | * in 2.4 GHz band. |
1286 | * @NL80211_BITRATE_ATTR_MAX: highest bitrate attribute number | ||
1287 | * currently defined | ||
1288 | * @__NL80211_BITRATE_ATTR_AFTER_LAST: internal use | ||
1183 | */ | 1289 | */ |
1184 | enum nl80211_bitrate_attr { | 1290 | enum nl80211_bitrate_attr { |
1185 | __NL80211_BITRATE_ATTR_INVALID, | 1291 | __NL80211_BITRATE_ATTR_INVALID, |
@@ -1235,6 +1341,7 @@ enum nl80211_reg_type { | |||
1235 | 1341 | ||
1236 | /** | 1342 | /** |
1237 | * enum nl80211_reg_rule_attr - regulatory rule attributes | 1343 | * enum nl80211_reg_rule_attr - regulatory rule attributes |
1344 | * @__NL80211_REG_RULE_ATTR_INVALID: attribute number 0 is reserved | ||
1238 | * @NL80211_ATTR_REG_RULE_FLAGS: a set of flags which specify additional | 1345 | * @NL80211_ATTR_REG_RULE_FLAGS: a set of flags which specify additional |
1239 | * considerations for a given frequency range. These are the | 1346 | * considerations for a given frequency range. These are the |
1240 | * &enum nl80211_reg_rule_flags. | 1347 | * &enum nl80211_reg_rule_flags. |
@@ -1251,6 +1358,9 @@ enum nl80211_reg_type { | |||
1251 | * If you don't have one then don't send this. | 1358 | * If you don't have one then don't send this. |
1252 | * @NL80211_ATTR_POWER_RULE_MAX_EIRP: the maximum allowed EIRP for | 1359 | * @NL80211_ATTR_POWER_RULE_MAX_EIRP: the maximum allowed EIRP for |
1253 | * a given frequency range. The value is in mBm (100 * dBm). | 1360 | * a given frequency range. The value is in mBm (100 * dBm). |
1361 | * @NL80211_REG_RULE_ATTR_MAX: highest regulatory rule attribute number | ||
1362 | * currently defined | ||
1363 | * @__NL80211_REG_RULE_ATTR_AFTER_LAST: internal use | ||
1254 | */ | 1364 | */ |
1255 | enum nl80211_reg_rule_attr { | 1365 | enum nl80211_reg_rule_attr { |
1256 | __NL80211_REG_RULE_ATTR_INVALID, | 1366 | __NL80211_REG_RULE_ATTR_INVALID, |
@@ -1302,11 +1412,31 @@ enum nl80211_reg_rule_flags { | |||
1302 | * @__NL80211_SURVEY_INFO_INVALID: attribute number 0 is reserved | 1412 | * @__NL80211_SURVEY_INFO_INVALID: attribute number 0 is reserved |
1303 | * @NL80211_SURVEY_INFO_FREQUENCY: center frequency of channel | 1413 | * @NL80211_SURVEY_INFO_FREQUENCY: center frequency of channel |
1304 | * @NL80211_SURVEY_INFO_NOISE: noise level of channel (u8, dBm) | 1414 | * @NL80211_SURVEY_INFO_NOISE: noise level of channel (u8, dBm) |
1415 | * @NL80211_SURVEY_INFO_IN_USE: channel is currently being used | ||
1416 | * @NL80211_SURVEY_INFO_CHANNEL_TIME: amount of time (in ms) that the radio | ||
1417 | * spent on this channel | ||
1418 | * @NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY: amount of the time the primary | ||
1419 | * channel was sensed busy (either due to activity or energy detect) | ||
1420 | * @NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY: amount of time the extension | ||
1421 | * channel was sensed busy | ||
1422 | * @NL80211_SURVEY_INFO_CHANNEL_TIME_RX: amount of time the radio spent | ||
1423 | * receiving data | ||
1424 | * @NL80211_SURVEY_INFO_CHANNEL_TIME_TX: amount of time the radio spent | ||
1425 | * transmitting data | ||
1426 | * @NL80211_SURVEY_INFO_MAX: highest survey info attribute number | ||
1427 | * currently defined | ||
1428 | * @__NL80211_SURVEY_INFO_AFTER_LAST: internal use | ||
1305 | */ | 1429 | */ |
1306 | enum nl80211_survey_info { | 1430 | enum nl80211_survey_info { |
1307 | __NL80211_SURVEY_INFO_INVALID, | 1431 | __NL80211_SURVEY_INFO_INVALID, |
1308 | NL80211_SURVEY_INFO_FREQUENCY, | 1432 | NL80211_SURVEY_INFO_FREQUENCY, |
1309 | NL80211_SURVEY_INFO_NOISE, | 1433 | NL80211_SURVEY_INFO_NOISE, |
1434 | NL80211_SURVEY_INFO_IN_USE, | ||
1435 | NL80211_SURVEY_INFO_CHANNEL_TIME, | ||
1436 | NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY, | ||
1437 | NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY, | ||
1438 | NL80211_SURVEY_INFO_CHANNEL_TIME_RX, | ||
1439 | NL80211_SURVEY_INFO_CHANNEL_TIME_TX, | ||
1310 | 1440 | ||
1311 | /* keep last */ | 1441 | /* keep last */ |
1312 | __NL80211_SURVEY_INFO_AFTER_LAST, | 1442 | __NL80211_SURVEY_INFO_AFTER_LAST, |
@@ -1466,6 +1596,7 @@ enum nl80211_channel_type { | |||
1466 | * enum nl80211_bss - netlink attributes for a BSS | 1596 | * enum nl80211_bss - netlink attributes for a BSS |
1467 | * | 1597 | * |
1468 | * @__NL80211_BSS_INVALID: invalid | 1598 | * @__NL80211_BSS_INVALID: invalid |
1599 | * @NL80211_BSS_BSSID: BSSID of the BSS (6 octets) | ||
1469 | * @NL80211_BSS_FREQUENCY: frequency in MHz (u32) | 1600 | * @NL80211_BSS_FREQUENCY: frequency in MHz (u32) |
1470 | * @NL80211_BSS_TSF: TSF of the received probe response/beacon (u64) | 1601 | * @NL80211_BSS_TSF: TSF of the received probe response/beacon (u64) |
1471 | * @NL80211_BSS_BEACON_INTERVAL: beacon interval of the (I)BSS (u16) | 1602 | * @NL80211_BSS_BEACON_INTERVAL: beacon interval of the (I)BSS (u16) |
@@ -1509,6 +1640,12 @@ enum nl80211_bss { | |||
1509 | 1640 | ||
1510 | /** | 1641 | /** |
1511 | * enum nl80211_bss_status - BSS "status" | 1642 | * enum nl80211_bss_status - BSS "status" |
1643 | * @NL80211_BSS_STATUS_AUTHENTICATED: Authenticated with this BSS. | ||
1644 | * @NL80211_BSS_STATUS_ASSOCIATED: Associated with this BSS. | ||
1645 | * @NL80211_BSS_STATUS_IBSS_JOINED: Joined to this IBSS. | ||
1646 | * | ||
1647 | * The BSS status is a BSS attribute in scan dumps, which | ||
1648 | * indicates the status the interface has wrt. this BSS. | ||
1512 | */ | 1649 | */ |
1513 | enum nl80211_bss_status { | 1650 | enum nl80211_bss_status { |
1514 | NL80211_BSS_STATUS_AUTHENTICATED, | 1651 | NL80211_BSS_STATUS_AUTHENTICATED, |
@@ -1546,11 +1683,14 @@ enum nl80211_auth_type { | |||
1546 | * @NL80211_KEYTYPE_GROUP: Group (broadcast/multicast) key | 1683 | * @NL80211_KEYTYPE_GROUP: Group (broadcast/multicast) key |
1547 | * @NL80211_KEYTYPE_PAIRWISE: Pairwise (unicast/individual) key | 1684 | * @NL80211_KEYTYPE_PAIRWISE: Pairwise (unicast/individual) key |
1548 | * @NL80211_KEYTYPE_PEERKEY: PeerKey (DLS) | 1685 | * @NL80211_KEYTYPE_PEERKEY: PeerKey (DLS) |
1686 | * @NUM_NL80211_KEYTYPES: number of defined key types | ||
1549 | */ | 1687 | */ |
1550 | enum nl80211_key_type { | 1688 | enum nl80211_key_type { |
1551 | NL80211_KEYTYPE_GROUP, | 1689 | NL80211_KEYTYPE_GROUP, |
1552 | NL80211_KEYTYPE_PAIRWISE, | 1690 | NL80211_KEYTYPE_PAIRWISE, |
1553 | NL80211_KEYTYPE_PEERKEY, | 1691 | NL80211_KEYTYPE_PEERKEY, |
1692 | |||
1693 | NUM_NL80211_KEYTYPES | ||
1554 | }; | 1694 | }; |
1555 | 1695 | ||
1556 | /** | 1696 | /** |
@@ -1581,6 +1721,9 @@ enum nl80211_wpa_versions { | |||
1581 | * CCMP keys, each six bytes in little endian | 1721 | * CCMP keys, each six bytes in little endian |
1582 | * @NL80211_KEY_DEFAULT: flag indicating default key | 1722 | * @NL80211_KEY_DEFAULT: flag indicating default key |
1583 | * @NL80211_KEY_DEFAULT_MGMT: flag indicating default management key | 1723 | * @NL80211_KEY_DEFAULT_MGMT: flag indicating default management key |
1724 | * @NL80211_KEY_TYPE: the key type from enum nl80211_key_type, if not | ||
1725 | * specified the default depends on whether a MAC address was | ||
1726 | * given with the command using the key or not (u32) | ||
1584 | * @__NL80211_KEY_AFTER_LAST: internal | 1727 | * @__NL80211_KEY_AFTER_LAST: internal |
1585 | * @NL80211_KEY_MAX: highest key attribute | 1728 | * @NL80211_KEY_MAX: highest key attribute |
1586 | */ | 1729 | */ |
@@ -1592,6 +1735,7 @@ enum nl80211_key_attributes { | |||
1592 | NL80211_KEY_SEQ, | 1735 | NL80211_KEY_SEQ, |
1593 | NL80211_KEY_DEFAULT, | 1736 | NL80211_KEY_DEFAULT, |
1594 | NL80211_KEY_DEFAULT_MGMT, | 1737 | NL80211_KEY_DEFAULT_MGMT, |
1738 | NL80211_KEY_TYPE, | ||
1595 | 1739 | ||
1596 | /* keep last */ | 1740 | /* keep last */ |
1597 | __NL80211_KEY_AFTER_LAST, | 1741 | __NL80211_KEY_AFTER_LAST, |
@@ -1619,8 +1763,8 @@ enum nl80211_tx_rate_attributes { | |||
1619 | 1763 | ||
1620 | /** | 1764 | /** |
1621 | * enum nl80211_band - Frequency band | 1765 | * enum nl80211_band - Frequency band |
1622 | * @NL80211_BAND_2GHZ - 2.4 GHz ISM band | 1766 | * @NL80211_BAND_2GHZ: 2.4 GHz ISM band |
1623 | * @NL80211_BAND_5GHZ - around 5 GHz band (4.9 - 5.7 GHz) | 1767 | * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz) |
1624 | */ | 1768 | */ |
1625 | enum nl80211_band { | 1769 | enum nl80211_band { |
1626 | NL80211_BAND_2GHZ, | 1770 | NL80211_BAND_2GHZ, |
@@ -1658,9 +1802,9 @@ enum nl80211_attr_cqm { | |||
1658 | 1802 | ||
1659 | /** | 1803 | /** |
1660 | * enum nl80211_cqm_rssi_threshold_event - RSSI threshold event | 1804 | * enum nl80211_cqm_rssi_threshold_event - RSSI threshold event |
1661 | * @NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW - The RSSI level is lower than the | 1805 | * @NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW: The RSSI level is lower than the |
1662 | * configured threshold | 1806 | * configured threshold |
1663 | * @NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH - The RSSI is higher than the | 1807 | * @NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH: The RSSI is higher than the |
1664 | * configured threshold | 1808 | * configured threshold |
1665 | */ | 1809 | */ |
1666 | enum nl80211_cqm_rssi_threshold_event { | 1810 | enum nl80211_cqm_rssi_threshold_event { |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index e4471b27c396..90c038c0ad96 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -2194,6 +2194,9 @@ | |||
2194 | #define PCI_VENDOR_ID_ARIMA 0x161f | 2194 | #define PCI_VENDOR_ID_ARIMA 0x161f |
2195 | 2195 | ||
2196 | #define PCI_VENDOR_ID_BROCADE 0x1657 | 2196 | #define PCI_VENDOR_ID_BROCADE 0x1657 |
2197 | #define PCI_DEVICE_ID_BROCADE_CT 0x0014 | ||
2198 | #define PCI_DEVICE_ID_BROCADE_FC_8G1P 0x0017 | ||
2199 | #define PCI_DEVICE_ID_BROCADE_CT_FC 0x0021 | ||
2197 | 2200 | ||
2198 | #define PCI_VENDOR_ID_SIBYTE 0x166d | 2201 | #define PCI_VENDOR_ID_SIBYTE 0x166d |
2199 | #define PCI_DEVICE_ID_BCM1250_PCI 0x0001 | 2202 | #define PCI_DEVICE_ID_BCM1250_PCI 0x0001 |
diff --git a/include/linux/phonet.h b/include/linux/phonet.h index 76edadf046d3..26c8df786918 100644 --- a/include/linux/phonet.h +++ b/include/linux/phonet.h | |||
@@ -36,6 +36,9 @@ | |||
36 | /* Socket options for SOL_PNPIPE level */ | 36 | /* Socket options for SOL_PNPIPE level */ |
37 | #define PNPIPE_ENCAP 1 | 37 | #define PNPIPE_ENCAP 1 |
38 | #define PNPIPE_IFINDEX 2 | 38 | #define PNPIPE_IFINDEX 2 |
39 | #define PNPIPE_PIPE_HANDLE 3 | ||
40 | #define PNPIPE_ENABLE 4 | ||
41 | /* unused slot */ | ||
39 | 42 | ||
40 | #define PNADDR_ANY 0 | 43 | #define PNADDR_ANY 0 |
41 | #define PNADDR_BROADCAST 0xFC | 44 | #define PNADDR_BROADCAST 0xFC |
@@ -47,6 +50,8 @@ | |||
47 | 50 | ||
48 | /* ioctls */ | 51 | /* ioctls */ |
49 | #define SIOCPNGETOBJECT (SIOCPROTOPRIVATE + 0) | 52 | #define SIOCPNGETOBJECT (SIOCPROTOPRIVATE + 0) |
53 | #define SIOCPNADDRESOURCE (SIOCPROTOPRIVATE + 14) | ||
54 | #define SIOCPNDELRESOURCE (SIOCPROTOPRIVATE + 15) | ||
50 | 55 | ||
51 | /* Phonet protocol header */ | 56 | /* Phonet protocol header */ |
52 | struct phonethdr { | 57 | struct phonethdr { |
diff --git a/include/linux/phy.h b/include/linux/phy.h index 6b0a782c6224..a6e047a04f79 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h | |||
@@ -116,7 +116,7 @@ struct mii_bus { | |||
116 | /* list of all PHYs on bus */ | 116 | /* list of all PHYs on bus */ |
117 | struct phy_device *phy_map[PHY_MAX_ADDR]; | 117 | struct phy_device *phy_map[PHY_MAX_ADDR]; |
118 | 118 | ||
119 | /* Phy addresses to be ignored when probing */ | 119 | /* PHY addresses to be ignored when probing */ |
120 | u32 phy_mask; | 120 | u32 phy_mask; |
121 | 121 | ||
122 | /* | 122 | /* |
@@ -283,7 +283,7 @@ struct phy_device { | |||
283 | 283 | ||
284 | phy_interface_t interface; | 284 | phy_interface_t interface; |
285 | 285 | ||
286 | /* Bus address of the PHY (0-32) */ | 286 | /* Bus address of the PHY (0-31) */ |
287 | int addr; | 287 | int addr; |
288 | 288 | ||
289 | /* | 289 | /* |
diff --git a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h index 7f6ba8658abe..defbde203d07 100644 --- a/include/linux/pkt_cls.h +++ b/include/linux/pkt_cls.h | |||
@@ -332,6 +332,7 @@ enum { | |||
332 | FLOW_KEY_SKUID, | 332 | FLOW_KEY_SKUID, |
333 | FLOW_KEY_SKGID, | 333 | FLOW_KEY_SKGID, |
334 | FLOW_KEY_VLAN_TAG, | 334 | FLOW_KEY_VLAN_TAG, |
335 | FLOW_KEY_RXHASH, | ||
335 | __FLOW_KEY_MAX, | 336 | __FLOW_KEY_MAX, |
336 | }; | 337 | }; |
337 | 338 | ||
diff --git a/include/linux/rds.h b/include/linux/rds.h index 24bce3ded9ea..91950950aa59 100644 --- a/include/linux/rds.h +++ b/include/linux/rds.h | |||
@@ -36,15 +36,6 @@ | |||
36 | 36 | ||
37 | #include <linux/types.h> | 37 | #include <linux/types.h> |
38 | 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 | 39 | #define RDS_IB_ABI_VERSION 0x301 |
49 | 40 | ||
50 | /* | 41 | /* |
@@ -82,6 +73,10 @@ | |||
82 | #define RDS_CMSG_RDMA_MAP 3 | 73 | #define RDS_CMSG_RDMA_MAP 3 |
83 | #define RDS_CMSG_RDMA_STATUS 4 | 74 | #define RDS_CMSG_RDMA_STATUS 4 |
84 | #define RDS_CMSG_CONG_UPDATE 5 | 75 | #define RDS_CMSG_CONG_UPDATE 5 |
76 | #define RDS_CMSG_ATOMIC_FADD 6 | ||
77 | #define RDS_CMSG_ATOMIC_CSWP 7 | ||
78 | #define RDS_CMSG_MASKED_ATOMIC_FADD 8 | ||
79 | #define RDS_CMSG_MASKED_ATOMIC_CSWP 9 | ||
85 | 80 | ||
86 | #define RDS_INFO_FIRST 10000 | 81 | #define RDS_INFO_FIRST 10000 |
87 | #define RDS_INFO_COUNTERS 10000 | 82 | #define RDS_INFO_COUNTERS 10000 |
@@ -98,9 +93,9 @@ | |||
98 | #define RDS_INFO_LAST 10010 | 93 | #define RDS_INFO_LAST 10010 |
99 | 94 | ||
100 | struct rds_info_counter { | 95 | struct rds_info_counter { |
101 | u_int8_t name[32]; | 96 | uint8_t name[32]; |
102 | u_int64_t value; | 97 | uint64_t value; |
103 | } __packed; | 98 | } __attribute__((packed)); |
104 | 99 | ||
105 | #define RDS_INFO_CONNECTION_FLAG_SENDING 0x01 | 100 | #define RDS_INFO_CONNECTION_FLAG_SENDING 0x01 |
106 | #define RDS_INFO_CONNECTION_FLAG_CONNECTING 0x02 | 101 | #define RDS_INFO_CONNECTION_FLAG_CONNECTING 0x02 |
@@ -109,56 +104,48 @@ struct rds_info_counter { | |||
109 | #define TRANSNAMSIZ 16 | 104 | #define TRANSNAMSIZ 16 |
110 | 105 | ||
111 | struct rds_info_connection { | 106 | struct rds_info_connection { |
112 | u_int64_t next_tx_seq; | 107 | uint64_t next_tx_seq; |
113 | u_int64_t next_rx_seq; | 108 | uint64_t next_rx_seq; |
114 | __be32 laddr; | ||
115 | __be32 faddr; | ||
116 | u_int8_t transport[TRANSNAMSIZ]; /* null term ascii */ | ||
117 | u_int8_t flags; | ||
118 | } __packed; | ||
119 | |||
120 | struct rds_info_flow { | ||
121 | __be32 laddr; | 109 | __be32 laddr; |
122 | __be32 faddr; | 110 | __be32 faddr; |
123 | u_int32_t bytes; | 111 | uint8_t transport[TRANSNAMSIZ]; /* null term ascii */ |
124 | __be16 lport; | 112 | uint8_t flags; |
125 | __be16 fport; | 113 | } __attribute__((packed)); |
126 | } __packed; | ||
127 | 114 | ||
128 | #define RDS_INFO_MESSAGE_FLAG_ACK 0x01 | 115 | #define RDS_INFO_MESSAGE_FLAG_ACK 0x01 |
129 | #define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02 | 116 | #define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02 |
130 | 117 | ||
131 | struct rds_info_message { | 118 | struct rds_info_message { |
132 | u_int64_t seq; | 119 | uint64_t seq; |
133 | u_int32_t len; | 120 | uint32_t len; |
134 | __be32 laddr; | 121 | __be32 laddr; |
135 | __be32 faddr; | 122 | __be32 faddr; |
136 | __be16 lport; | 123 | __be16 lport; |
137 | __be16 fport; | 124 | __be16 fport; |
138 | u_int8_t flags; | 125 | uint8_t flags; |
139 | } __packed; | 126 | } __attribute__((packed)); |
140 | 127 | ||
141 | struct rds_info_socket { | 128 | struct rds_info_socket { |
142 | u_int32_t sndbuf; | 129 | uint32_t sndbuf; |
143 | __be32 bound_addr; | 130 | __be32 bound_addr; |
144 | __be32 connected_addr; | 131 | __be32 connected_addr; |
145 | __be16 bound_port; | 132 | __be16 bound_port; |
146 | __be16 connected_port; | 133 | __be16 connected_port; |
147 | u_int32_t rcvbuf; | 134 | uint32_t rcvbuf; |
148 | u_int64_t inum; | 135 | uint64_t inum; |
149 | } __packed; | 136 | } __attribute__((packed)); |
150 | 137 | ||
151 | struct rds_info_tcp_socket { | 138 | struct rds_info_tcp_socket { |
152 | __be32 local_addr; | 139 | __be32 local_addr; |
153 | __be16 local_port; | 140 | __be16 local_port; |
154 | __be32 peer_addr; | 141 | __be32 peer_addr; |
155 | __be16 peer_port; | 142 | __be16 peer_port; |
156 | u_int64_t hdr_rem; | 143 | uint64_t hdr_rem; |
157 | u_int64_t data_rem; | 144 | uint64_t data_rem; |
158 | u_int32_t last_sent_nxt; | 145 | uint32_t last_sent_nxt; |
159 | u_int32_t last_expected_una; | 146 | uint32_t last_expected_una; |
160 | u_int32_t last_seen_una; | 147 | uint32_t last_seen_una; |
161 | } __packed; | 148 | } __attribute__((packed)); |
162 | 149 | ||
163 | #define RDS_IB_GID_LEN 16 | 150 | #define RDS_IB_GID_LEN 16 |
164 | struct rds_info_rdma_connection { | 151 | struct rds_info_rdma_connection { |
@@ -212,42 +199,69 @@ struct rds_info_rdma_connection { | |||
212 | * (so that the application does not have to worry about | 199 | * (so that the application does not have to worry about |
213 | * alignment). | 200 | * alignment). |
214 | */ | 201 | */ |
215 | typedef u_int64_t rds_rdma_cookie_t; | 202 | typedef uint64_t rds_rdma_cookie_t; |
216 | 203 | ||
217 | struct rds_iovec { | 204 | struct rds_iovec { |
218 | u_int64_t addr; | 205 | uint64_t addr; |
219 | u_int64_t bytes; | 206 | uint64_t bytes; |
220 | }; | 207 | }; |
221 | 208 | ||
222 | struct rds_get_mr_args { | 209 | struct rds_get_mr_args { |
223 | struct rds_iovec vec; | 210 | struct rds_iovec vec; |
224 | u_int64_t cookie_addr; | 211 | uint64_t cookie_addr; |
225 | uint64_t flags; | 212 | uint64_t flags; |
226 | }; | 213 | }; |
227 | 214 | ||
228 | struct rds_get_mr_for_dest_args { | 215 | struct rds_get_mr_for_dest_args { |
229 | struct sockaddr_storage dest_addr; | 216 | struct sockaddr_storage dest_addr; |
230 | struct rds_iovec vec; | 217 | struct rds_iovec vec; |
231 | u_int64_t cookie_addr; | 218 | uint64_t cookie_addr; |
232 | uint64_t flags; | 219 | uint64_t flags; |
233 | }; | 220 | }; |
234 | 221 | ||
235 | struct rds_free_mr_args { | 222 | struct rds_free_mr_args { |
236 | rds_rdma_cookie_t cookie; | 223 | rds_rdma_cookie_t cookie; |
237 | u_int64_t flags; | 224 | uint64_t flags; |
238 | }; | 225 | }; |
239 | 226 | ||
240 | struct rds_rdma_args { | 227 | struct rds_rdma_args { |
241 | rds_rdma_cookie_t cookie; | 228 | rds_rdma_cookie_t cookie; |
242 | struct rds_iovec remote_vec; | 229 | struct rds_iovec remote_vec; |
243 | u_int64_t local_vec_addr; | 230 | uint64_t local_vec_addr; |
244 | u_int64_t nr_local; | 231 | uint64_t nr_local; |
245 | u_int64_t flags; | 232 | uint64_t flags; |
246 | u_int64_t user_token; | 233 | uint64_t user_token; |
234 | }; | ||
235 | |||
236 | struct rds_atomic_args { | ||
237 | rds_rdma_cookie_t cookie; | ||
238 | uint64_t local_addr; | ||
239 | uint64_t remote_addr; | ||
240 | union { | ||
241 | struct { | ||
242 | uint64_t compare; | ||
243 | uint64_t swap; | ||
244 | } cswp; | ||
245 | struct { | ||
246 | uint64_t add; | ||
247 | } fadd; | ||
248 | struct { | ||
249 | uint64_t compare; | ||
250 | uint64_t swap; | ||
251 | uint64_t compare_mask; | ||
252 | uint64_t swap_mask; | ||
253 | } m_cswp; | ||
254 | struct { | ||
255 | uint64_t add; | ||
256 | uint64_t nocarry_mask; | ||
257 | } m_fadd; | ||
258 | }; | ||
259 | uint64_t flags; | ||
260 | uint64_t user_token; | ||
247 | }; | 261 | }; |
248 | 262 | ||
249 | struct rds_rdma_notify { | 263 | struct rds_rdma_notify { |
250 | u_int64_t user_token; | 264 | uint64_t user_token; |
251 | int32_t status; | 265 | int32_t status; |
252 | }; | 266 | }; |
253 | 267 | ||
@@ -266,5 +280,6 @@ struct rds_rdma_notify { | |||
266 | #define RDS_RDMA_USE_ONCE 0x0008 /* free MR after use */ | 280 | #define RDS_RDMA_USE_ONCE 0x0008 /* free MR after use */ |
267 | #define RDS_RDMA_DONTWAIT 0x0010 /* Don't wait in SET_BARRIER */ | 281 | #define RDS_RDMA_DONTWAIT 0x0010 /* Don't wait in SET_BARRIER */ |
268 | #define RDS_RDMA_NOTIFY_ME 0x0020 /* Notify when operation completes */ | 282 | #define RDS_RDMA_NOTIFY_ME 0x0020 /* Notify when operation completes */ |
283 | #define RDS_RDMA_SILENT 0x0040 /* Do not interrupt remote */ | ||
269 | 284 | ||
270 | #endif /* IB_RDS_H */ | 285 | #endif /* IB_RDS_H */ |
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h index 58d44491880f..d42f274418b8 100644 --- a/include/linux/rtnetlink.h +++ b/include/linux/rtnetlink.h | |||
@@ -6,6 +6,7 @@ | |||
6 | #include <linux/if_link.h> | 6 | #include <linux/if_link.h> |
7 | #include <linux/if_addr.h> | 7 | #include <linux/if_addr.h> |
8 | #include <linux/neighbour.h> | 8 | #include <linux/neighbour.h> |
9 | #include <linux/netdevice.h> | ||
9 | 10 | ||
10 | /* rtnetlink families. Values up to 127 are reserved for real address | 11 | /* rtnetlink families. Values up to 127 are reserved for real address |
11 | * families, values above 128 may be used arbitrarily. | 12 | * families, values above 128 may be used arbitrarily. |
@@ -749,6 +750,35 @@ extern int rtnl_is_locked(void); | |||
749 | extern int lockdep_rtnl_is_held(void); | 750 | extern int lockdep_rtnl_is_held(void); |
750 | #endif /* #ifdef CONFIG_PROVE_LOCKING */ | 751 | #endif /* #ifdef CONFIG_PROVE_LOCKING */ |
751 | 752 | ||
753 | /** | ||
754 | * rcu_dereference_rtnl - rcu_dereference with debug checking | ||
755 | * @p: The pointer to read, prior to dereferencing | ||
756 | * | ||
757 | * Do an rcu_dereference(p), but check caller either holds rcu_read_lock() | ||
758 | * or RTNL. Note : Please prefer rtnl_dereference() or rcu_dereference() | ||
759 | */ | ||
760 | #define rcu_dereference_rtnl(p) \ | ||
761 | rcu_dereference_check(p, rcu_read_lock_held() || \ | ||
762 | lockdep_rtnl_is_held()) | ||
763 | |||
764 | /** | ||
765 | * rtnl_dereference - fetch RCU pointer when updates are prevented by RTNL | ||
766 | * @p: The pointer to read, prior to dereferencing | ||
767 | * | ||
768 | * Return the value of the specified RCU-protected pointer, but omit | ||
769 | * both the smp_read_barrier_depends() and the ACCESS_ONCE(), because | ||
770 | * caller holds RTNL. | ||
771 | */ | ||
772 | #define rtnl_dereference(p) \ | ||
773 | rcu_dereference_protected(p, lockdep_rtnl_is_held()) | ||
774 | |||
775 | static inline struct netdev_queue *dev_ingress_queue(struct net_device *dev) | ||
776 | { | ||
777 | return rtnl_dereference(dev->ingress_queue); | ||
778 | } | ||
779 | |||
780 | extern struct netdev_queue *dev_ingress_queue_create(struct net_device *dev); | ||
781 | |||
752 | extern void rtnetlink_init(void); | 782 | extern void rtnetlink_init(void); |
753 | extern void __rtnl_unlock(void); | 783 | extern void __rtnl_unlock(void); |
754 | 784 | ||
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 77eb60d2b496..e6ba898de61c 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -129,8 +129,13 @@ typedef struct skb_frag_struct skb_frag_t; | |||
129 | 129 | ||
130 | struct skb_frag_struct { | 130 | struct skb_frag_struct { |
131 | struct page *page; | 131 | struct page *page; |
132 | #if (BITS_PER_LONG > 32) || (PAGE_SIZE >= 65536) | ||
132 | __u32 page_offset; | 133 | __u32 page_offset; |
133 | __u32 size; | 134 | __u32 size; |
135 | #else | ||
136 | __u16 page_offset; | ||
137 | __u16 size; | ||
138 | #endif | ||
134 | }; | 139 | }; |
135 | 140 | ||
136 | #define HAVE_HW_TIME_STAMP | 141 | #define HAVE_HW_TIME_STAMP |
@@ -163,26 +168,19 @@ struct skb_shared_hwtstamps { | |||
163 | ktime_t syststamp; | 168 | ktime_t syststamp; |
164 | }; | 169 | }; |
165 | 170 | ||
166 | /** | 171 | /* Definitions for tx_flags in struct skb_shared_info */ |
167 | * struct skb_shared_tx - instructions for time stamping of outgoing packets | 172 | enum { |
168 | * @hardware: generate hardware time stamp | 173 | /* generate hardware time stamp */ |
169 | * @software: generate software time stamp | 174 | SKBTX_HW_TSTAMP = 1 << 0, |
170 | * @in_progress: device driver is going to provide | 175 | |
171 | * hardware time stamp | 176 | /* generate software time stamp */ |
172 | * @prevent_sk_orphan: make sk reference available on driver level | 177 | SKBTX_SW_TSTAMP = 1 << 1, |
173 | * @flags: all shared_tx flags | 178 | |
174 | * | 179 | /* device driver is going to provide hardware time stamp */ |
175 | * These flags are attached to packets as part of the | 180 | SKBTX_IN_PROGRESS = 1 << 2, |
176 | * &skb_shared_info. Use skb_tx() to get a pointer. | 181 | |
177 | */ | 182 | /* ensure the originating sk reference is available on driver level */ |
178 | union skb_shared_tx { | 183 | SKBTX_DRV_NEEDS_SK_REF = 1 << 3, |
179 | struct { | ||
180 | __u8 hardware:1, | ||
181 | software:1, | ||
182 | in_progress:1, | ||
183 | prevent_sk_orphan:1; | ||
184 | }; | ||
185 | __u8 flags; | ||
186 | }; | 184 | }; |
187 | 185 | ||
188 | /* This data is invariant across clones and lives at | 186 | /* This data is invariant across clones and lives at |
@@ -195,7 +193,7 @@ struct skb_shared_info { | |||
195 | unsigned short gso_segs; | 193 | unsigned short gso_segs; |
196 | unsigned short gso_type; | 194 | unsigned short gso_type; |
197 | __be32 ip6_frag_id; | 195 | __be32 ip6_frag_id; |
198 | union skb_shared_tx tx_flags; | 196 | __u8 tx_flags; |
199 | struct sk_buff *frag_list; | 197 | struct sk_buff *frag_list; |
200 | struct skb_shared_hwtstamps hwtstamps; | 198 | struct skb_shared_hwtstamps hwtstamps; |
201 | 199 | ||
@@ -462,19 +460,7 @@ static inline void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst) | |||
462 | skb->_skb_refdst = (unsigned long)dst; | 460 | skb->_skb_refdst = (unsigned long)dst; |
463 | } | 461 | } |
464 | 462 | ||
465 | /** | 463 | extern void skb_dst_set_noref(struct sk_buff *skb, struct dst_entry *dst); |
466 | * skb_dst_set_noref - sets skb dst, without a reference | ||
467 | * @skb: buffer | ||
468 | * @dst: dst entry | ||
469 | * | ||
470 | * Sets skb dst, assuming a reference was not taken on dst | ||
471 | * skb_dst_drop() should not dst_release() this dst | ||
472 | */ | ||
473 | static inline void skb_dst_set_noref(struct sk_buff *skb, struct dst_entry *dst) | ||
474 | { | ||
475 | WARN_ON(!rcu_read_lock_held() && !rcu_read_lock_bh_held()); | ||
476 | skb->_skb_refdst = (unsigned long)dst | SKB_DST_NOREF; | ||
477 | } | ||
478 | 464 | ||
479 | /** | 465 | /** |
480 | * skb_dst_is_noref - Test if skb dst isnt refcounted | 466 | * skb_dst_is_noref - Test if skb dst isnt refcounted |
@@ -498,13 +484,13 @@ extern struct sk_buff *__alloc_skb(unsigned int size, | |||
498 | static inline struct sk_buff *alloc_skb(unsigned int size, | 484 | static inline struct sk_buff *alloc_skb(unsigned int size, |
499 | gfp_t priority) | 485 | gfp_t priority) |
500 | { | 486 | { |
501 | return __alloc_skb(size, priority, 0, -1); | 487 | return __alloc_skb(size, priority, 0, NUMA_NO_NODE); |
502 | } | 488 | } |
503 | 489 | ||
504 | static inline struct sk_buff *alloc_skb_fclone(unsigned int size, | 490 | static inline struct sk_buff *alloc_skb_fclone(unsigned int size, |
505 | gfp_t priority) | 491 | gfp_t priority) |
506 | { | 492 | { |
507 | return __alloc_skb(size, priority, 1, -1); | 493 | return __alloc_skb(size, priority, 1, NUMA_NO_NODE); |
508 | } | 494 | } |
509 | 495 | ||
510 | extern bool skb_recycle_check(struct sk_buff *skb, int skb_size); | 496 | extern bool skb_recycle_check(struct sk_buff *skb, int skb_size); |
@@ -558,6 +544,15 @@ extern unsigned int skb_find_text(struct sk_buff *skb, unsigned int from, | |||
558 | unsigned int to, struct ts_config *config, | 544 | unsigned int to, struct ts_config *config, |
559 | struct ts_state *state); | 545 | struct ts_state *state); |
560 | 546 | ||
547 | extern __u32 __skb_get_rxhash(struct sk_buff *skb); | ||
548 | static inline __u32 skb_get_rxhash(struct sk_buff *skb) | ||
549 | { | ||
550 | if (!skb->rxhash) | ||
551 | skb->rxhash = __skb_get_rxhash(skb); | ||
552 | |||
553 | return skb->rxhash; | ||
554 | } | ||
555 | |||
561 | #ifdef NET_SKBUFF_DATA_USES_OFFSET | 556 | #ifdef NET_SKBUFF_DATA_USES_OFFSET |
562 | static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) | 557 | static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) |
563 | { | 558 | { |
@@ -578,11 +573,6 @@ static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) | |||
578 | return &skb_shinfo(skb)->hwtstamps; | 573 | return &skb_shinfo(skb)->hwtstamps; |
579 | } | 574 | } |
580 | 575 | ||
581 | static inline union skb_shared_tx *skb_tx(struct sk_buff *skb) | ||
582 | { | ||
583 | return &skb_shinfo(skb)->tx_flags; | ||
584 | } | ||
585 | |||
586 | /** | 576 | /** |
587 | * skb_queue_empty - check if a queue is empty | 577 | * skb_queue_empty - check if a queue is empty |
588 | * @list: queue head | 578 | * @list: queue head |
@@ -604,7 +594,7 @@ static inline int skb_queue_empty(const struct sk_buff_head *list) | |||
604 | static inline bool skb_queue_is_last(const struct sk_buff_head *list, | 594 | static inline bool skb_queue_is_last(const struct sk_buff_head *list, |
605 | const struct sk_buff *skb) | 595 | const struct sk_buff *skb) |
606 | { | 596 | { |
607 | return (skb->next == (struct sk_buff *) list); | 597 | return skb->next == (struct sk_buff *)list; |
608 | } | 598 | } |
609 | 599 | ||
610 | /** | 600 | /** |
@@ -617,7 +607,7 @@ static inline bool skb_queue_is_last(const struct sk_buff_head *list, | |||
617 | static inline bool skb_queue_is_first(const struct sk_buff_head *list, | 607 | static inline bool skb_queue_is_first(const struct sk_buff_head *list, |
618 | const struct sk_buff *skb) | 608 | const struct sk_buff *skb) |
619 | { | 609 | { |
620 | return (skb->prev == (struct sk_buff *) list); | 610 | return skb->prev == (struct sk_buff *)list; |
621 | } | 611 | } |
622 | 612 | ||
623 | /** | 613 | /** |
@@ -1123,7 +1113,7 @@ extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, | |||
1123 | int off, int size); | 1113 | int off, int size); |
1124 | 1114 | ||
1125 | #define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags) | 1115 | #define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags) |
1126 | #define SKB_FRAG_ASSERT(skb) BUG_ON(skb_has_frags(skb)) | 1116 | #define SKB_FRAG_ASSERT(skb) BUG_ON(skb_has_frag_list(skb)) |
1127 | #define SKB_LINEAR_ASSERT(skb) BUG_ON(skb_is_nonlinear(skb)) | 1117 | #define SKB_LINEAR_ASSERT(skb) BUG_ON(skb_is_nonlinear(skb)) |
1128 | 1118 | ||
1129 | #ifdef NET_SKBUFF_DATA_USES_OFFSET | 1119 | #ifdef NET_SKBUFF_DATA_USES_OFFSET |
@@ -1561,13 +1551,25 @@ static inline struct sk_buff *netdev_alloc_skb_ip_align(struct net_device *dev, | |||
1561 | return skb; | 1551 | return skb; |
1562 | } | 1552 | } |
1563 | 1553 | ||
1564 | extern struct page *__netdev_alloc_page(struct net_device *dev, gfp_t gfp_mask); | 1554 | /** |
1555 | * __netdev_alloc_page - allocate a page for ps-rx on a specific device | ||
1556 | * @dev: network device to receive on | ||
1557 | * @gfp_mask: alloc_pages_node mask | ||
1558 | * | ||
1559 | * Allocate a new page. dev currently unused. | ||
1560 | * | ||
1561 | * %NULL is returned if there is no free memory. | ||
1562 | */ | ||
1563 | static inline struct page *__netdev_alloc_page(struct net_device *dev, gfp_t gfp_mask) | ||
1564 | { | ||
1565 | return alloc_pages_node(NUMA_NO_NODE, gfp_mask, 0); | ||
1566 | } | ||
1565 | 1567 | ||
1566 | /** | 1568 | /** |
1567 | * netdev_alloc_page - allocate a page for ps-rx on a specific device | 1569 | * netdev_alloc_page - allocate a page for ps-rx on a specific device |
1568 | * @dev: network device to receive on | 1570 | * @dev: network device to receive on |
1569 | * | 1571 | * |
1570 | * Allocate a new page node local to the specified device. | 1572 | * Allocate a new page. dev currently unused. |
1571 | * | 1573 | * |
1572 | * %NULL is returned if there is no free memory. | 1574 | * %NULL is returned if there is no free memory. |
1573 | */ | 1575 | */ |
@@ -1787,7 +1789,7 @@ static inline int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len) | |||
1787 | skb = skb->prev) | 1789 | skb = skb->prev) |
1788 | 1790 | ||
1789 | 1791 | ||
1790 | static inline bool skb_has_frags(const struct sk_buff *skb) | 1792 | static inline bool skb_has_frag_list(const struct sk_buff *skb) |
1791 | { | 1793 | { |
1792 | return skb_shinfo(skb)->frag_list != NULL; | 1794 | return skb_shinfo(skb)->frag_list != NULL; |
1793 | } | 1795 | } |
@@ -1987,8 +1989,8 @@ extern void skb_tstamp_tx(struct sk_buff *orig_skb, | |||
1987 | 1989 | ||
1988 | static inline void sw_tx_timestamp(struct sk_buff *skb) | 1990 | static inline void sw_tx_timestamp(struct sk_buff *skb) |
1989 | { | 1991 | { |
1990 | union skb_shared_tx *shtx = skb_tx(skb); | 1992 | if (skb_shinfo(skb)->tx_flags & SKBTX_SW_TSTAMP && |
1991 | if (shtx->software && !shtx->in_progress) | 1993 | !(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS)) |
1992 | skb_tstamp_tx(skb, NULL); | 1994 | skb_tstamp_tx(skb, NULL); |
1993 | } | 1995 | } |
1994 | 1996 | ||
@@ -2159,7 +2161,7 @@ static inline u16 skb_get_rx_queue(const struct sk_buff *skb) | |||
2159 | 2161 | ||
2160 | static inline bool skb_rx_queue_recorded(const struct sk_buff *skb) | 2162 | static inline bool skb_rx_queue_recorded(const struct sk_buff *skb) |
2161 | { | 2163 | { |
2162 | return (skb->queue_mapping != 0); | 2164 | return skb->queue_mapping != 0; |
2163 | } | 2165 | } |
2164 | 2166 | ||
2165 | extern u16 skb_tx_hash(const struct net_device *dev, | 2167 | extern u16 skb_tx_hash(const struct net_device *dev, |
@@ -2209,6 +2211,21 @@ static inline void skb_forward_csum(struct sk_buff *skb) | |||
2209 | skb->ip_summed = CHECKSUM_NONE; | 2211 | skb->ip_summed = CHECKSUM_NONE; |
2210 | } | 2212 | } |
2211 | 2213 | ||
2214 | /** | ||
2215 | * skb_checksum_none_assert - make sure skb ip_summed is CHECKSUM_NONE | ||
2216 | * @skb: skb to check | ||
2217 | * | ||
2218 | * fresh skbs have their ip_summed set to CHECKSUM_NONE. | ||
2219 | * Instead of forcing ip_summed to CHECKSUM_NONE, we can | ||
2220 | * use this helper, to document places where we make this assertion. | ||
2221 | */ | ||
2222 | static inline void skb_checksum_none_assert(struct sk_buff *skb) | ||
2223 | { | ||
2224 | #ifdef DEBUG | ||
2225 | BUG_ON(skb->ip_summed != CHECKSUM_NONE); | ||
2226 | #endif | ||
2227 | } | ||
2228 | |||
2212 | bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off); | 2229 | bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off); |
2213 | #endif /* __KERNEL__ */ | 2230 | #endif /* __KERNEL__ */ |
2214 | #endif /* _LINUX_SKBUFF_H */ | 2231 | #endif /* _LINUX_SKBUFF_H */ |
diff --git a/include/linux/socket.h b/include/linux/socket.h index a8f56e1ec760..5146b50202ce 100644 --- a/include/linux/socket.h +++ b/include/linux/socket.h | |||
@@ -326,7 +326,6 @@ extern long verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *a | |||
326 | extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len); | 326 | extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len); |
327 | extern int memcpy_toiovecend(const struct iovec *v, unsigned char *kdata, | 327 | extern int memcpy_toiovecend(const struct iovec *v, unsigned char *kdata, |
328 | int offset, int len); | 328 | int offset, int len); |
329 | extern int move_addr_to_user(struct sockaddr *kaddr, int klen, void __user *uaddr, int __user *ulen); | ||
330 | extern int move_addr_to_kernel(void __user *uaddr, int ulen, struct sockaddr *kaddr); | 329 | extern int move_addr_to_kernel(void __user *uaddr, int ulen, struct sockaddr *kaddr); |
331 | extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data); | 330 | extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data); |
332 | 331 | ||
diff --git a/include/linux/ssb/ssb_regs.h b/include/linux/ssb/ssb_regs.h index a6d5225b9275..11daf9c140e7 100644 --- a/include/linux/ssb/ssb_regs.h +++ b/include/linux/ssb/ssb_regs.h | |||
@@ -97,6 +97,7 @@ | |||
97 | #define SSB_TMSLOW_RESET 0x00000001 /* Reset */ | 97 | #define SSB_TMSLOW_RESET 0x00000001 /* Reset */ |
98 | #define SSB_TMSLOW_REJECT_22 0x00000002 /* Reject (Backplane rev 2.2) */ | 98 | #define SSB_TMSLOW_REJECT_22 0x00000002 /* Reject (Backplane rev 2.2) */ |
99 | #define SSB_TMSLOW_REJECT_23 0x00000004 /* Reject (Backplane rev 2.3) */ | 99 | #define SSB_TMSLOW_REJECT_23 0x00000004 /* Reject (Backplane rev 2.3) */ |
100 | #define SSB_TMSLOW_PHYCLK 0x00000010 /* MAC PHY Clock Control Enable */ | ||
100 | #define SSB_TMSLOW_CLOCK 0x00010000 /* Clock Enable */ | 101 | #define SSB_TMSLOW_CLOCK 0x00010000 /* Clock Enable */ |
101 | #define SSB_TMSLOW_FGC 0x00020000 /* Force Gated Clocks On */ | 102 | #define SSB_TMSLOW_FGC 0x00020000 /* Force Gated Clocks On */ |
102 | #define SSB_TMSLOW_PE 0x40000000 /* Power Management Enable */ | 103 | #define SSB_TMSLOW_PE 0x40000000 /* Power Management Enable */ |
diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h index 632ff7c03280..d66c61774d95 100644 --- a/include/linux/stmmac.h +++ b/include/linux/stmmac.h | |||
@@ -32,10 +32,14 @@ | |||
32 | struct plat_stmmacenet_data { | 32 | struct plat_stmmacenet_data { |
33 | int bus_id; | 33 | int bus_id; |
34 | int pbl; | 34 | int pbl; |
35 | int clk_csr; | ||
35 | int has_gmac; | 36 | int has_gmac; |
36 | int enh_desc; | 37 | int enh_desc; |
38 | int tx_coe; | ||
39 | int bugged_jumbo; | ||
40 | int pmt; | ||
37 | void (*fix_mac_speed)(void *priv, unsigned int speed); | 41 | void (*fix_mac_speed)(void *priv, unsigned int speed); |
38 | void (*bus_setup)(unsigned long ioaddr); | 42 | void (*bus_setup)(void __iomem *ioaddr); |
39 | #ifdef CONFIG_STM_DRIVERS | 43 | #ifdef CONFIG_STM_DRIVERS |
40 | struct stm_pad_config *pad_config; | 44 | struct stm_pad_config *pad_config; |
41 | #endif | 45 | #endif |
diff --git a/include/linux/tc_act/Kbuild b/include/linux/tc_act/Kbuild index 76990937f4c9..67b501c302b2 100644 --- a/include/linux/tc_act/Kbuild +++ b/include/linux/tc_act/Kbuild | |||
@@ -4,3 +4,4 @@ header-y += tc_mirred.h | |||
4 | header-y += tc_pedit.h | 4 | header-y += tc_pedit.h |
5 | header-y += tc_nat.h | 5 | header-y += tc_nat.h |
6 | header-y += tc_skbedit.h | 6 | header-y += tc_skbedit.h |
7 | header-y += tc_csum.h | ||
diff --git a/include/linux/tc_act/tc_csum.h b/include/linux/tc_act/tc_csum.h new file mode 100644 index 000000000000..a047c49a3153 --- /dev/null +++ b/include/linux/tc_act/tc_csum.h | |||
@@ -0,0 +1,32 @@ | |||
1 | #ifndef __LINUX_TC_CSUM_H | ||
2 | #define __LINUX_TC_CSUM_H | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | #include <linux/pkt_cls.h> | ||
6 | |||
7 | #define TCA_ACT_CSUM 16 | ||
8 | |||
9 | enum { | ||
10 | TCA_CSUM_UNSPEC, | ||
11 | TCA_CSUM_PARMS, | ||
12 | TCA_CSUM_TM, | ||
13 | __TCA_CSUM_MAX | ||
14 | }; | ||
15 | #define TCA_CSUM_MAX (__TCA_CSUM_MAX - 1) | ||
16 | |||
17 | enum { | ||
18 | TCA_CSUM_UPDATE_FLAG_IPV4HDR = 1, | ||
19 | TCA_CSUM_UPDATE_FLAG_ICMP = 2, | ||
20 | TCA_CSUM_UPDATE_FLAG_IGMP = 4, | ||
21 | TCA_CSUM_UPDATE_FLAG_TCP = 8, | ||
22 | TCA_CSUM_UPDATE_FLAG_UDP = 16, | ||
23 | TCA_CSUM_UPDATE_FLAG_UDPLITE = 32 | ||
24 | }; | ||
25 | |||
26 | struct tc_csum { | ||
27 | tc_gen; | ||
28 | |||
29 | __u32 update_flags; | ||
30 | }; | ||
31 | |||
32 | #endif /* __LINUX_TC_CSUM_H */ | ||
diff --git a/include/linux/tc_ematch/tc_em_meta.h b/include/linux/tc_ematch/tc_em_meta.h index 0864206ec1a3..7138962664f8 100644 --- a/include/linux/tc_ematch/tc_em_meta.h +++ b/include/linux/tc_ematch/tc_em_meta.h | |||
@@ -79,6 +79,7 @@ enum { | |||
79 | TCF_META_ID_SK_SENDMSG_OFF, | 79 | TCF_META_ID_SK_SENDMSG_OFF, |
80 | TCF_META_ID_SK_WRITE_PENDING, | 80 | TCF_META_ID_SK_WRITE_PENDING, |
81 | TCF_META_ID_VLAN_TAG, | 81 | TCF_META_ID_VLAN_TAG, |
82 | TCF_META_ID_RXHASH, | ||
82 | __TCF_META_ID_MAX | 83 | __TCF_META_ID_MAX |
83 | }; | 84 | }; |
84 | #define TCF_META_ID_MAX (__TCF_META_ID_MAX - 1) | 85 | #define TCF_META_ID_MAX (__TCF_META_ID_MAX - 1) |
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index a778ee024590..e64f4c67d0ef 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
@@ -105,6 +105,7 @@ enum { | |||
105 | #define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */ | 105 | #define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */ |
106 | #define TCP_THIN_LINEAR_TIMEOUTS 16 /* Use linear timeouts for thin streams*/ | 106 | #define TCP_THIN_LINEAR_TIMEOUTS 16 /* Use linear timeouts for thin streams*/ |
107 | #define TCP_THIN_DUPACK 17 /* Fast retrans. after 1 dupack */ | 107 | #define TCP_THIN_DUPACK 17 /* Fast retrans. after 1 dupack */ |
108 | #define TCP_USER_TIMEOUT 18 /* How long for loss retry before timeout */ | ||
108 | 109 | ||
109 | /* for TCP_INFO socket option */ | 110 | /* for TCP_INFO socket option */ |
110 | #define TCPI_OPT_TIMESTAMPS 1 | 111 | #define TCPI_OPT_TIMESTAMPS 1 |
diff --git a/include/linux/tipc.h b/include/linux/tipc.h index 181c8d0e6f73..d10614b29d59 100644 --- a/include/linux/tipc.h +++ b/include/linux/tipc.h | |||
@@ -127,17 +127,23 @@ static inline unsigned int tipc_node(__u32 addr) | |||
127 | * TIPC topology subscription service definitions | 127 | * TIPC topology subscription service definitions |
128 | */ | 128 | */ |
129 | 129 | ||
130 | #define TIPC_SUB_SERVICE 0x00 /* Filter for service availability */ | 130 | #define TIPC_SUB_PORTS 0x01 /* filter for port availability */ |
131 | #define TIPC_SUB_PORTS 0x01 /* Filter for port availability */ | 131 | #define TIPC_SUB_SERVICE 0x02 /* filter for service availability */ |
132 | #define TIPC_SUB_CANCEL 0x04 /* Cancel a subscription */ | 132 | #define TIPC_SUB_CANCEL 0x04 /* cancel a subscription */ |
133 | #if 0 | ||
134 | /* The following filter options are not currently implemented */ | ||
135 | #define TIPC_SUB_NO_BIND_EVTS 0x04 /* filter out "publish" events */ | ||
136 | #define TIPC_SUB_NO_UNBIND_EVTS 0x08 /* filter out "withdraw" events */ | ||
137 | #define TIPC_SUB_SINGLE_EVT 0x10 /* expire after first event */ | ||
138 | #endif | ||
133 | 139 | ||
134 | #define TIPC_WAIT_FOREVER ~0 /* timeout for permanent subscription */ | 140 | #define TIPC_WAIT_FOREVER ~0 /* timeout for permanent subscription */ |
135 | 141 | ||
136 | struct tipc_subscr { | 142 | struct tipc_subscr { |
137 | struct tipc_name_seq seq; /* NBO. Name sequence of interest */ | 143 | struct tipc_name_seq seq; /* name sequence of interest */ |
138 | __u32 timeout; /* NBO. Subscription duration (in ms) */ | 144 | __u32 timeout; /* subscription duration (in ms) */ |
139 | __u32 filter; /* NBO. Bitmask of filter options */ | 145 | __u32 filter; /* bitmask of filter options */ |
140 | char usr_handle[8]; /* Opaque. Available for subscriber use */ | 146 | char usr_handle[8]; /* available for subscriber use */ |
141 | }; | 147 | }; |
142 | 148 | ||
143 | #define TIPC_PUBLISHED 1 /* publication event */ | 149 | #define TIPC_PUBLISHED 1 /* publication event */ |
@@ -145,11 +151,11 @@ struct tipc_subscr { | |||
145 | #define TIPC_SUBSCR_TIMEOUT 3 /* subscription timeout event */ | 151 | #define TIPC_SUBSCR_TIMEOUT 3 /* subscription timeout event */ |
146 | 152 | ||
147 | struct tipc_event { | 153 | struct tipc_event { |
148 | __u32 event; /* NBO. Event type, as defined above */ | 154 | __u32 event; /* event type */ |
149 | __u32 found_lower; /* NBO. Matching name seq instances */ | 155 | __u32 found_lower; /* matching name seq instances */ |
150 | __u32 found_upper; /* " " " " " */ | 156 | __u32 found_upper; /* " " " " */ |
151 | struct tipc_portid port; /* NBO. Associated port */ | 157 | struct tipc_portid port; /* associated port */ |
152 | struct tipc_subscr s; /* Original, associated subscription */ | 158 | struct tipc_subscr s; /* associated subscription */ |
153 | }; | 159 | }; |
154 | 160 | ||
155 | /* | 161 | /* |
diff --git a/include/linux/wireless.h b/include/linux/wireless.h index e6827eedf18b..4395b28bb86c 100644 --- a/include/linux/wireless.h +++ b/include/linux/wireless.h | |||
@@ -1157,6 +1157,6 @@ struct __compat_iw_event { | |||
1157 | #define IW_EV_PARAM_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct iw_param)) | 1157 | #define IW_EV_PARAM_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct iw_param)) |
1158 | #define IW_EV_ADDR_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct sockaddr)) | 1158 | #define IW_EV_ADDR_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct sockaddr)) |
1159 | #define IW_EV_QUAL_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct iw_quality)) | 1159 | #define IW_EV_QUAL_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct iw_quality)) |
1160 | #define IW_EV_POINT_PK_LEN (IW_EV_LCP_LEN + 4) | 1160 | #define IW_EV_POINT_PK_LEN (IW_EV_LCP_PK_LEN + 4) |
1161 | 1161 | ||
1162 | #endif /* _LINUX_WIRELESS_H */ | 1162 | #endif /* _LINUX_WIRELESS_H */ |
diff --git a/include/linux/spi/wl12xx.h b/include/linux/wl12xx.h index a223ecbc71ef..4f902e1908aa 100644 --- a/include/linux/spi/wl12xx.h +++ b/include/linux/wl12xx.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * Copyright (C) 2009 Nokia Corporation | 4 | * Copyright (C) 2009 Nokia Corporation |
5 | * | 5 | * |
6 | * Contact: Kalle Valo <kalle.valo@nokia.com> | 6 | * Contact: Luciano Coelho <luciano.coelho@nokia.com> |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or | 8 | * This program is free software; you can redistribute it and/or |
9 | * modify it under the terms of the GNU General Public License | 9 | * modify it under the terms of the GNU General Public License |
@@ -21,14 +21,31 @@ | |||
21 | * | 21 | * |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #ifndef _LINUX_SPI_WL12XX_H | 24 | #ifndef _LINUX_WL12XX_H |
25 | #define _LINUX_SPI_WL12XX_H | 25 | #define _LINUX_WL12XX_H |
26 | 26 | ||
27 | struct wl12xx_platform_data { | 27 | struct wl12xx_platform_data { |
28 | void (*set_power)(bool enable); | 28 | void (*set_power)(bool enable); |
29 | /* SDIO only: IRQ number if WLAN_IRQ line is used, 0 for SDIO IRQs */ | 29 | /* SDIO only: IRQ number if WLAN_IRQ line is used, 0 for SDIO IRQs */ |
30 | int irq; | 30 | int irq; |
31 | bool use_eeprom; | 31 | bool use_eeprom; |
32 | int board_ref_clock; | ||
32 | }; | 33 | }; |
33 | 34 | ||
35 | #ifdef CONFIG_WL12XX_PLATFORM_DATA | ||
36 | |||
37 | int wl12xx_set_platform_data(const struct wl12xx_platform_data *data); | ||
38 | |||
39 | #else | ||
40 | |||
41 | static inline | ||
42 | int wl12xx_set_platform_data(const struct wl12xx_platform_data *data) | ||
43 | { | ||
44 | return -ENOSYS; | ||
45 | } | ||
46 | |||
47 | #endif | ||
48 | |||
49 | const struct wl12xx_platform_data *wl12xx_get_platform_data(void); | ||
50 | |||
34 | #endif | 51 | #endif |