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
This commit is contained in:
@@ -301,6 +301,7 @@ header-y += quota.h
|
||||
header-y += radeonfb.h
|
||||
header-y += random.h
|
||||
header-y += raw.h
|
||||
header-y += rds.h
|
||||
header-y += reboot.h
|
||||
header-y += reiserfs_fs.h
|
||||
header-y += reiserfs_xattr.h
|
||||
|
||||
@@ -449,7 +449,7 @@ void vcc_insert_socket(struct sock *sk);
|
||||
|
||||
static inline int atm_guess_pdu2truesize(int size)
|
||||
{
|
||||
return (SKB_DATA_ALIGN(size) + sizeof(struct skb_shared_info));
|
||||
return SKB_DATA_ALIGN(size) + sizeof(struct skb_shared_info);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
/**
|
||||
* struct mcp251x_platform_data - MCP251X SPI CAN controller platform data
|
||||
* @oscillator_frequency: - oscillator frequency in Hz
|
||||
* @model: - actual type of chip
|
||||
* @board_specific_setup: - called before probing the chip (power,reset)
|
||||
* @transceiver_enable: - called to power on/off the transceiver
|
||||
* @power_enable: - called to power on/off the mcp *and* the
|
||||
@@ -25,9 +24,6 @@
|
||||
|
||||
struct mcp251x_platform_data {
|
||||
unsigned long oscillator_frequency;
|
||||
int model;
|
||||
#define CAN_MCP251X_MCP2510 0x2510
|
||||
#define CAN_MCP251X_MCP2515 0x2515
|
||||
int (*board_specific_setup)(struct spi_device *spi);
|
||||
int (*transceiver_enable)(int enable);
|
||||
int (*power_enable) (int enable);
|
||||
|
||||
@@ -165,8 +165,10 @@ enum {
|
||||
DCCPO_TIMESTAMP_ECHO = 42,
|
||||
DCCPO_ELAPSED_TIME = 43,
|
||||
DCCPO_MAX = 45,
|
||||
DCCPO_MIN_CCID_SPECIFIC = 128,
|
||||
DCCPO_MAX_CCID_SPECIFIC = 255,
|
||||
DCCPO_MIN_RX_CCID_SPECIFIC = 128, /* from sender to receiver */
|
||||
DCCPO_MAX_RX_CCID_SPECIFIC = 191,
|
||||
DCCPO_MIN_TX_CCID_SPECIFIC = 192, /* from receiver to sender */
|
||||
DCCPO_MAX_TX_CCID_SPECIFIC = 255,
|
||||
};
|
||||
/* maximum size of a single TLV-encoded DCCP option (sans type/len bytes) */
|
||||
#define DCCP_SINGLE_OPT_MAXLEN 253
|
||||
|
||||
@@ -71,7 +71,7 @@ static inline int is_zero_ether_addr(const u8 *addr)
|
||||
*/
|
||||
static inline int is_multicast_ether_addr(const u8 *addr)
|
||||
{
|
||||
return (0x01 & addr[0]);
|
||||
return 0x01 & addr[0];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -82,7 +82,7 @@ static inline int is_multicast_ether_addr(const u8 *addr)
|
||||
*/
|
||||
static inline int is_local_ether_addr(const u8 *addr)
|
||||
{
|
||||
return (0x02 & addr[0]);
|
||||
return 0x02 & addr[0];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -237,13 +237,29 @@ static inline bool is_etherdev_addr(const struct net_device *dev,
|
||||
* entry points.
|
||||
*/
|
||||
|
||||
static inline int compare_ether_header(const void *a, const void *b)
|
||||
static inline unsigned long compare_ether_header(const void *a, const void *b)
|
||||
{
|
||||
#if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) && BITS_PER_LONG == 64
|
||||
unsigned long fold;
|
||||
|
||||
/*
|
||||
* We want to compare 14 bytes:
|
||||
* [a0 ... a13] ^ [b0 ... b13]
|
||||
* Use two long XOR, ORed together, with an overlap of two bytes.
|
||||
* [a0 a1 a2 a3 a4 a5 a6 a7 ] ^ [b0 b1 b2 b3 b4 b5 b6 b7 ] |
|
||||
* [a6 a7 a8 a9 a10 a11 a12 a13] ^ [b6 b7 b8 b9 b10 b11 b12 b13]
|
||||
* This means the [a6 a7] ^ [b6 b7] part is done two times.
|
||||
*/
|
||||
fold = *(unsigned long *)a ^ *(unsigned long *)b;
|
||||
fold |= *(unsigned long *)(a + 6) ^ *(unsigned long *)(b + 6);
|
||||
return fold;
|
||||
#else
|
||||
u32 *a32 = (u32 *)((u8 *)a + 2);
|
||||
u32 *b32 = (u32 *)((u8 *)b + 2);
|
||||
|
||||
return (*(u16 *)a ^ *(u16 *)b) | (a32[0] ^ b32[0]) |
|
||||
(a32[1] ^ b32[1]) | (a32[2] ^ b32[2]);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* _LINUX_ETHERDEVICE_H */
|
||||
|
||||
+139
-51
@@ -14,6 +14,7 @@
|
||||
#define _LINUX_ETHTOOL_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/if_ether.h>
|
||||
|
||||
/* This should work for both 32 and 64 bit userland. */
|
||||
struct ethtool_cmd {
|
||||
@@ -308,15 +309,28 @@ struct ethtool_perm_addr {
|
||||
* flag differs from the read-only value.
|
||||
*/
|
||||
enum ethtool_flags {
|
||||
ETH_FLAG_TXVLAN = (1 << 7), /* TX VLAN offload enabled */
|
||||
ETH_FLAG_RXVLAN = (1 << 8), /* RX VLAN offload enabled */
|
||||
ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */
|
||||
ETH_FLAG_NTUPLE = (1 << 27), /* N-tuple filters enabled */
|
||||
ETH_FLAG_RXHASH = (1 << 28),
|
||||
};
|
||||
|
||||
/* The following structures are for supporting RX network flow
|
||||
* classification configuration. Note, all multibyte fields, e.g.,
|
||||
* ip4src, ip4dst, psrc, pdst, spi, etc. are expected to be in network
|
||||
* byte order.
|
||||
* classification and RX n-tuple configuration. Note, all multibyte
|
||||
* fields, e.g., ip4src, ip4dst, psrc, pdst, spi, etc. are expected to
|
||||
* be in network byte order.
|
||||
*/
|
||||
|
||||
/**
|
||||
* struct ethtool_tcpip4_spec - flow specification for TCP/IPv4 etc.
|
||||
* @ip4src: Source host
|
||||
* @ip4dst: Destination host
|
||||
* @psrc: Source port
|
||||
* @pdst: Destination port
|
||||
* @tos: Type-of-service
|
||||
*
|
||||
* This can be used to specify a TCP/IPv4, UDP/IPv4 or SCTP/IPv4 flow.
|
||||
*/
|
||||
struct ethtool_tcpip4_spec {
|
||||
__be32 ip4src;
|
||||
@@ -326,6 +340,15 @@ struct ethtool_tcpip4_spec {
|
||||
__u8 tos;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_ah_espip4_spec - flow specification for IPsec/IPv4
|
||||
* @ip4src: Source host
|
||||
* @ip4dst: Destination host
|
||||
* @spi: Security parameters index
|
||||
* @tos: Type-of-service
|
||||
*
|
||||
* This can be used to specify an IPsec transport or tunnel over IPv4.
|
||||
*/
|
||||
struct ethtool_ah_espip4_spec {
|
||||
__be32 ip4src;
|
||||
__be32 ip4dst;
|
||||
@@ -333,21 +356,17 @@ struct ethtool_ah_espip4_spec {
|
||||
__u8 tos;
|
||||
};
|
||||
|
||||
struct ethtool_rawip4_spec {
|
||||
__be32 ip4src;
|
||||
__be32 ip4dst;
|
||||
__u8 hdata[64];
|
||||
};
|
||||
|
||||
struct ethtool_ether_spec {
|
||||
__be16 ether_type;
|
||||
__u8 frame_size;
|
||||
__u8 eframe[16];
|
||||
};
|
||||
|
||||
#define ETH_RX_NFC_IP4 1
|
||||
#define ETH_RX_NFC_IP6 2
|
||||
|
||||
/**
|
||||
* struct ethtool_usrip4_spec - general flow specification for IPv4
|
||||
* @ip4src: Source host
|
||||
* @ip4dst: Destination host
|
||||
* @l4_4_bytes: First 4 bytes of transport (layer 4) header
|
||||
* @tos: Type-of-service
|
||||
* @ip_ver: Value must be %ETH_RX_NFC_IP4; mask must be 0
|
||||
* @proto: Transport protocol number; mask must be 0
|
||||
*/
|
||||
struct ethtool_usrip4_spec {
|
||||
__be32 ip4src;
|
||||
__be32 ip4dst;
|
||||
@@ -357,6 +376,15 @@ struct ethtool_usrip4_spec {
|
||||
__u8 proto;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_rx_flow_spec - specification for RX flow filter
|
||||
* @flow_type: Type of match to perform, e.g. %TCP_V4_FLOW
|
||||
* @h_u: Flow fields to match (dependent on @flow_type)
|
||||
* @m_u: Masks for flow field bits to be ignored
|
||||
* @ring_cookie: RX ring/queue index to deliver to, or %RX_CLS_FLOW_DISC
|
||||
* if packets should be discarded
|
||||
* @location: Index of filter in hardware table
|
||||
*/
|
||||
struct ethtool_rx_flow_spec {
|
||||
__u32 flow_type;
|
||||
union {
|
||||
@@ -365,36 +393,91 @@ struct ethtool_rx_flow_spec {
|
||||
struct ethtool_tcpip4_spec sctp_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec ah_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec esp_ip4_spec;
|
||||
struct ethtool_rawip4_spec raw_ip4_spec;
|
||||
struct ethtool_ether_spec ether_spec;
|
||||
struct ethtool_usrip4_spec usr_ip4_spec;
|
||||
__u8 hdata[64];
|
||||
} h_u, m_u; /* entry, mask */
|
||||
struct ethhdr ether_spec;
|
||||
__u8 hdata[72];
|
||||
} h_u, m_u;
|
||||
__u64 ring_cookie;
|
||||
__u32 location;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_rxnfc - command to get or set RX flow classification rules
|
||||
* @cmd: Specific command number - %ETHTOOL_GRXFH, %ETHTOOL_SRXFH,
|
||||
* %ETHTOOL_GRXRINGS, %ETHTOOL_GRXCLSRLCNT, %ETHTOOL_GRXCLSRULE,
|
||||
* %ETHTOOL_GRXCLSRLALL, %ETHTOOL_SRXCLSRLDEL or %ETHTOOL_SRXCLSRLINS
|
||||
* @flow_type: Type of flow to be affected, e.g. %TCP_V4_FLOW
|
||||
* @data: Command-dependent value
|
||||
* @fs: Flow filter specification
|
||||
* @rule_cnt: Number of rules to be affected
|
||||
* @rule_locs: Array of valid rule indices
|
||||
*
|
||||
* For %ETHTOOL_GRXFH and %ETHTOOL_SRXFH, @data is a bitmask indicating
|
||||
* the fields included in the flow hash, e.g. %RXH_IP_SRC. The following
|
||||
* structure fields must not be used.
|
||||
*
|
||||
* For %ETHTOOL_GRXRINGS, @data is set to the number of RX rings/queues
|
||||
* on return.
|
||||
*
|
||||
* For %ETHTOOL_GRXCLSRLCNT, @rule_cnt is set to the number of defined
|
||||
* rules on return.
|
||||
*
|
||||
* For %ETHTOOL_GRXCLSRULE, @fs.@location specifies the index of an
|
||||
* existing filter rule on entry and @fs contains the rule on return.
|
||||
*
|
||||
* For %ETHTOOL_GRXCLSRLALL, @rule_cnt specifies the array size of the
|
||||
* user buffer for @rule_locs on entry. On return, @data is the size
|
||||
* of the filter table and @rule_locs contains the indices of the
|
||||
* defined rules.
|
||||
*
|
||||
* For %ETHTOOL_SRXCLSRLINS, @fs specifies the filter rule to add or
|
||||
* update. @fs.@location specifies the index to use and must not be
|
||||
* ignored.
|
||||
*
|
||||
* For %ETHTOOL_SRXCLSRLDEL, @fs.@location specifies the index of an
|
||||
* existing filter rule on entry.
|
||||
*
|
||||
* Implementation of indexed classification rules generally requires a
|
||||
* TCAM.
|
||||
*/
|
||||
struct ethtool_rxnfc {
|
||||
__u32 cmd;
|
||||
__u32 flow_type;
|
||||
/* The rx flow hash value or the rule DB size */
|
||||
__u64 data;
|
||||
/* The following fields are not valid and must not be used for
|
||||
* the ETHTOOL_{G,X}RXFH commands. */
|
||||
struct ethtool_rx_flow_spec fs;
|
||||
__u32 rule_cnt;
|
||||
__u32 rule_locs[0];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_rxfh_indir - command to get or set RX flow hash indirection
|
||||
* @cmd: Specific command number - %ETHTOOL_GRXFHINDIR or %ETHTOOL_SRXFHINDIR
|
||||
* @size: On entry, the array size of the user buffer. On return from
|
||||
* %ETHTOOL_GRXFHINDIR, the array size of the hardware indirection table.
|
||||
* @ring_index: RX ring/queue index for each hash value
|
||||
*/
|
||||
struct ethtool_rxfh_indir {
|
||||
__u32 cmd;
|
||||
/* On entry, this is the array size of the user buffer. On
|
||||
* return from ETHTOOL_GRXFHINDIR, this is the array size of
|
||||
* the hardware indirection table. */
|
||||
__u32 size;
|
||||
__u32 ring_index[0]; /* ring/queue index for each hash value */
|
||||
__u32 ring_index[0];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_rx_ntuple_flow_spec - specification for RX flow filter
|
||||
* @flow_type: Type of match to perform, e.g. %TCP_V4_FLOW
|
||||
* @h_u: Flow field values to match (dependent on @flow_type)
|
||||
* @m_u: Masks for flow field value bits to be ignored
|
||||
* @vlan_tag: VLAN tag to match
|
||||
* @vlan_tag_mask: Mask for VLAN tag bits to be ignored
|
||||
* @data: Driver-dependent data to match
|
||||
* @data_mask: Mask for driver-dependent data bits to be ignored
|
||||
* @action: RX ring/queue index to deliver to (non-negative) or other action
|
||||
* (negative, e.g. %ETHTOOL_RXNTUPLE_ACTION_DROP)
|
||||
*
|
||||
* For flow types %TCP_V4_FLOW, %UDP_V4_FLOW and %SCTP_V4_FLOW, where
|
||||
* a field value and mask are both zero this is treated as if all mask
|
||||
* bits are set i.e. the field is ignored.
|
||||
*/
|
||||
struct ethtool_rx_ntuple_flow_spec {
|
||||
__u32 flow_type;
|
||||
union {
|
||||
@@ -403,22 +486,26 @@ struct ethtool_rx_ntuple_flow_spec {
|
||||
struct ethtool_tcpip4_spec sctp_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec ah_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec esp_ip4_spec;
|
||||
struct ethtool_rawip4_spec raw_ip4_spec;
|
||||
struct ethtool_ether_spec ether_spec;
|
||||
struct ethtool_usrip4_spec usr_ip4_spec;
|
||||
__u8 hdata[64];
|
||||
} h_u, m_u; /* entry, mask */
|
||||
struct ethhdr ether_spec;
|
||||
__u8 hdata[72];
|
||||
} h_u, m_u;
|
||||
|
||||
__u16 vlan_tag;
|
||||
__u16 vlan_tag_mask;
|
||||
__u64 data; /* user-defined flow spec data */
|
||||
__u64 data_mask; /* user-defined flow spec mask */
|
||||
__u64 data;
|
||||
__u64 data_mask;
|
||||
|
||||
/* signed to distinguish between queue and actions (DROP) */
|
||||
__s32 action;
|
||||
#define ETHTOOL_RXNTUPLE_ACTION_DROP -1
|
||||
#define ETHTOOL_RXNTUPLE_ACTION_DROP (-1) /* drop packet */
|
||||
#define ETHTOOL_RXNTUPLE_ACTION_CLEAR (-2) /* clear filter */
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_rx_ntuple - command to set or clear RX flow filter
|
||||
* @cmd: Command number - %ETHTOOL_SRXNTUPLE
|
||||
* @fs: Flow filter specification
|
||||
*/
|
||||
struct ethtool_rx_ntuple {
|
||||
__u32 cmd;
|
||||
struct ethtool_rx_ntuple_flow_spec fs;
|
||||
@@ -759,22 +846,23 @@ struct ethtool_ops {
|
||||
#define WAKE_MAGIC (1 << 5)
|
||||
#define WAKE_MAGICSECURE (1 << 6) /* only meaningful if WAKE_MAGIC */
|
||||
|
||||
/* L3-L4 network traffic flow types */
|
||||
#define TCP_V4_FLOW 0x01
|
||||
#define UDP_V4_FLOW 0x02
|
||||
#define SCTP_V4_FLOW 0x03
|
||||
#define AH_ESP_V4_FLOW 0x04
|
||||
#define TCP_V6_FLOW 0x05
|
||||
#define UDP_V6_FLOW 0x06
|
||||
#define SCTP_V6_FLOW 0x07
|
||||
#define AH_ESP_V6_FLOW 0x08
|
||||
#define AH_V4_FLOW 0x09
|
||||
#define ESP_V4_FLOW 0x0a
|
||||
#define AH_V6_FLOW 0x0b
|
||||
#define ESP_V6_FLOW 0x0c
|
||||
#define IP_USER_FLOW 0x0d
|
||||
#define IPV4_FLOW 0x10
|
||||
#define IPV6_FLOW 0x11
|
||||
/* L2-L4 network traffic flow types */
|
||||
#define TCP_V4_FLOW 0x01 /* hash or spec (tcp_ip4_spec) */
|
||||
#define UDP_V4_FLOW 0x02 /* hash or spec (udp_ip4_spec) */
|
||||
#define SCTP_V4_FLOW 0x03 /* hash or spec (sctp_ip4_spec) */
|
||||
#define AH_ESP_V4_FLOW 0x04 /* hash only */
|
||||
#define TCP_V6_FLOW 0x05 /* hash only */
|
||||
#define UDP_V6_FLOW 0x06 /* hash only */
|
||||
#define SCTP_V6_FLOW 0x07 /* hash only */
|
||||
#define AH_ESP_V6_FLOW 0x08 /* hash only */
|
||||
#define AH_V4_FLOW 0x09 /* hash or spec (ah_ip4_spec) */
|
||||
#define ESP_V4_FLOW 0x0a /* hash or spec (esp_ip4_spec) */
|
||||
#define AH_V6_FLOW 0x0b /* hash only */
|
||||
#define ESP_V6_FLOW 0x0c /* hash only */
|
||||
#define IP_USER_FLOW 0x0d /* spec only (usr_ip4_spec) */
|
||||
#define IPV4_FLOW 0x10 /* hash only */
|
||||
#define IPV6_FLOW 0x11 /* hash only */
|
||||
#define ETHER_FLOW 0x12 /* spec only (ether_spec) */
|
||||
|
||||
/* L3-L4 network traffic flow hash options */
|
||||
#define RXH_L2DA (1 << 1)
|
||||
|
||||
+56
-15
@@ -986,6 +986,7 @@ struct ieee80211_ht_info {
|
||||
#define WLAN_AUTH_OPEN 0
|
||||
#define WLAN_AUTH_SHARED_KEY 1
|
||||
#define WLAN_AUTH_FT 2
|
||||
#define WLAN_AUTH_SAE 3
|
||||
#define WLAN_AUTH_LEAP 128
|
||||
|
||||
#define WLAN_AUTH_CHALLENGE_LEN 128
|
||||
@@ -1072,6 +1073,10 @@ enum ieee80211_statuscode {
|
||||
WLAN_STATUS_NO_DIRECT_LINK = 48,
|
||||
WLAN_STATUS_STA_NOT_PRESENT = 49,
|
||||
WLAN_STATUS_STA_NOT_QSTA = 50,
|
||||
/* 802.11s */
|
||||
WLAN_STATUS_ANTI_CLOG_REQUIRED = 76,
|
||||
WLAN_STATUS_FCG_NOT_SUPP = 78,
|
||||
WLAN_STATUS_STA_NO_TBTT = 78,
|
||||
};
|
||||
|
||||
|
||||
@@ -1112,6 +1117,22 @@ enum ieee80211_reasoncode {
|
||||
WLAN_REASON_QSTA_REQUIRE_SETUP = 38,
|
||||
WLAN_REASON_QSTA_TIMEOUT = 39,
|
||||
WLAN_REASON_QSTA_CIPHER_NOT_SUPP = 45,
|
||||
/* 802.11s */
|
||||
WLAN_REASON_MESH_PEER_CANCELED = 52,
|
||||
WLAN_REASON_MESH_MAX_PEERS = 53,
|
||||
WLAN_REASON_MESH_CONFIG = 54,
|
||||
WLAN_REASON_MESH_CLOSE = 55,
|
||||
WLAN_REASON_MESH_MAX_RETRIES = 56,
|
||||
WLAN_REASON_MESH_CONFIRM_TIMEOUT = 57,
|
||||
WLAN_REASON_MESH_INVALID_GTK = 58,
|
||||
WLAN_REASON_MESH_INCONSISTENT_PARAM = 59,
|
||||
WLAN_REASON_MESH_INVALID_SECURITY = 60,
|
||||
WLAN_REASON_MESH_PATH_ERROR = 61,
|
||||
WLAN_REASON_MESH_PATH_NOFORWARD = 62,
|
||||
WLAN_REASON_MESH_PATH_DEST_UNREACHABLE = 63,
|
||||
WLAN_REASON_MAC_EXISTS_IN_MBSS = 64,
|
||||
WLAN_REASON_MESH_CHAN_REGULATORY = 65,
|
||||
WLAN_REASON_MESH_CHAN = 66,
|
||||
};
|
||||
|
||||
|
||||
@@ -1139,20 +1160,33 @@ enum ieee80211_eid {
|
||||
WLAN_EID_TS_DELAY = 43,
|
||||
WLAN_EID_TCLAS_PROCESSING = 44,
|
||||
WLAN_EID_QOS_CAPA = 46,
|
||||
/* 802.11s
|
||||
*
|
||||
* All mesh EID numbers are pending IEEE 802.11 ANA approval.
|
||||
* The numbers have been incremented from those suggested in
|
||||
* 802.11s/D2.0 so that MESH_CONFIG does not conflict with
|
||||
* EXT_SUPP_RATES.
|
||||
/* 802.11s */
|
||||
WLAN_EID_MESH_CONFIG = 113,
|
||||
WLAN_EID_MESH_ID = 114,
|
||||
WLAN_EID_LINK_METRIC_REPORT = 115,
|
||||
WLAN_EID_CONGESTION_NOTIFICATION = 116,
|
||||
/* Note that the Peer Link IE has been replaced with the similar
|
||||
* Peer Management IE. We will keep the former definition until mesh
|
||||
* code is changed to comply with latest 802.11s drafts.
|
||||
*/
|
||||
WLAN_EID_MESH_CONFIG = 51,
|
||||
WLAN_EID_MESH_ID = 52,
|
||||
WLAN_EID_PEER_LINK = 55,
|
||||
WLAN_EID_PREQ = 68,
|
||||
WLAN_EID_PREP = 69,
|
||||
WLAN_EID_PERR = 70,
|
||||
WLAN_EID_RANN = 49, /* compatible with FreeBSD */
|
||||
WLAN_EID_PEER_LINK = 55, /* no longer in 802.11s drafts */
|
||||
WLAN_EID_PEER_MGMT = 117,
|
||||
WLAN_EID_CHAN_SWITCH_PARAM = 118,
|
||||
WLAN_EID_MESH_AWAKE_WINDOW = 119,
|
||||
WLAN_EID_BEACON_TIMING = 120,
|
||||
WLAN_EID_MCCAOP_SETUP_REQ = 121,
|
||||
WLAN_EID_MCCAOP_SETUP_RESP = 122,
|
||||
WLAN_EID_MCCAOP_ADVERT = 123,
|
||||
WLAN_EID_MCCAOP_TEARDOWN = 124,
|
||||
WLAN_EID_GANN = 125,
|
||||
WLAN_EID_RANN = 126,
|
||||
WLAN_EID_PREQ = 130,
|
||||
WLAN_EID_PREP = 131,
|
||||
WLAN_EID_PERR = 132,
|
||||
WLAN_EID_PXU = 137,
|
||||
WLAN_EID_PXUC = 138,
|
||||
WLAN_EID_AUTH_MESH_PEER_EXCH = 139,
|
||||
WLAN_EID_MIC = 140,
|
||||
|
||||
WLAN_EID_PWR_CONSTRAINT = 32,
|
||||
WLAN_EID_PWR_CAPABILITY = 33,
|
||||
@@ -1211,9 +1245,14 @@ enum ieee80211_category {
|
||||
WLAN_CATEGORY_HT = 7,
|
||||
WLAN_CATEGORY_SA_QUERY = 8,
|
||||
WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9,
|
||||
WLAN_CATEGORY_MESH_ACTION = 13,
|
||||
WLAN_CATEGORY_MULTIHOP_ACTION = 14,
|
||||
WLAN_CATEGORY_SELF_PROTECTED = 15,
|
||||
WLAN_CATEGORY_WMM = 17,
|
||||
WLAN_CATEGORY_MESH_PLINK = 30, /* Pending ANA approval */
|
||||
WLAN_CATEGORY_MESH_PATH_SEL = 32, /* Pending ANA approval */
|
||||
/* TODO: remove MESH_PLINK and MESH_PATH_SEL after */
|
||||
/* mesh is updated to current 802.11s draft */
|
||||
WLAN_CATEGORY_MESH_PLINK = 30,
|
||||
WLAN_CATEGORY_MESH_PATH_SEL = 32,
|
||||
WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
|
||||
WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
|
||||
};
|
||||
@@ -1351,6 +1390,8 @@ enum ieee80211_sa_query_action {
|
||||
/* AKM suite selectors */
|
||||
#define WLAN_AKM_SUITE_8021X 0x000FAC01
|
||||
#define WLAN_AKM_SUITE_PSK 0x000FAC02
|
||||
#define WLAN_AKM_SUITE_SAE 0x000FAC08
|
||||
#define WLAN_AKM_SUITE_FT_OVER_SAE 0x000FAC09
|
||||
|
||||
#define WLAN_MAX_KEY_LEN 32
|
||||
|
||||
|
||||
@@ -75,6 +75,8 @@
|
||||
#define IFF_DISABLE_NETPOLL 0x2000 /* disable netpoll at run-time */
|
||||
#define IFF_MACVLAN_PORT 0x4000 /* device used as macvlan port */
|
||||
#define IFF_BRIDGE_PORT 0x8000 /* device used as bridge port */
|
||||
#define IFF_OVS_DATAPATH 0x10000 /* device used as Open vSwitch
|
||||
* datapath port */
|
||||
|
||||
#define IF_GET_IFACE 0x0001 /* for querying only */
|
||||
#define IF_GET_PROTO 0x0002
|
||||
|
||||
@@ -84,6 +84,9 @@
|
||||
#define BOND_DEFAULT_MAX_BONDS 1 /* Default maximum number of devices to support */
|
||||
|
||||
#define BOND_DEFAULT_TX_QUEUES 16 /* Default number of tx queues per device */
|
||||
|
||||
#define BOND_DEFAULT_RESEND_IGMP 1 /* Default number of IGMP membership reports */
|
||||
|
||||
/* hashing types */
|
||||
#define BOND_XMIT_POLICY_LAYER2 0 /* layer 2 (MAC only), default */
|
||||
#define BOND_XMIT_POLICY_LAYER34 1 /* layer 3+4 (IP ^ (TCP || UDP)) */
|
||||
|
||||
@@ -137,8 +137,6 @@ extern struct ctl_table ether_table[];
|
||||
|
||||
extern ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len);
|
||||
|
||||
#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_IF_ETHER_H */
|
||||
|
||||
@@ -40,6 +40,12 @@ struct macvlan_rx_stats {
|
||||
unsigned long rx_errors;
|
||||
};
|
||||
|
||||
/*
|
||||
* Maximum times a macvtap device can be opened. This can be used to
|
||||
* configure the number of receive queue, e.g. for multiqueue virtio.
|
||||
*/
|
||||
#define MAX_MACVTAP_QUEUES (NR_CPUS < 16 ? NR_CPUS : 16)
|
||||
|
||||
struct macvlan_dev {
|
||||
struct net_device *dev;
|
||||
struct list_head list;
|
||||
@@ -50,7 +56,8 @@ struct macvlan_dev {
|
||||
enum macvlan_mode mode;
|
||||
int (*receive)(struct sk_buff *skb);
|
||||
int (*forward)(struct net_device *dev, struct sk_buff *skb);
|
||||
struct macvtap_queue *tap;
|
||||
struct macvtap_queue *taps[MAX_MACVTAP_QUEUES];
|
||||
int numvtaps;
|
||||
};
|
||||
|
||||
static inline void macvlan_count_rx(const struct macvlan_dev *vlan,
|
||||
|
||||
+34
-16
@@ -40,25 +40,35 @@
|
||||
* PPPoE addressing definition
|
||||
*/
|
||||
typedef __be16 sid_t;
|
||||
struct pppoe_addr{
|
||||
sid_t sid; /* Session identifier */
|
||||
unsigned char remote[ETH_ALEN]; /* Remote address */
|
||||
char dev[IFNAMSIZ]; /* Local device to use */
|
||||
struct pppoe_addr {
|
||||
sid_t sid; /* Session identifier */
|
||||
unsigned char remote[ETH_ALEN]; /* Remote address */
|
||||
char dev[IFNAMSIZ]; /* Local device to use */
|
||||
};
|
||||
|
||||
/************************************************************************
|
||||
* Protocols supported by AF_PPPOX
|
||||
*/
|
||||
* PPTP addressing definition
|
||||
*/
|
||||
struct pptp_addr {
|
||||
__be16 call_id;
|
||||
struct in_addr sin_addr;
|
||||
};
|
||||
|
||||
/************************************************************************
|
||||
* Protocols supported by AF_PPPOX
|
||||
*/
|
||||
#define PX_PROTO_OE 0 /* Currently just PPPoE */
|
||||
#define PX_PROTO_OL2TP 1 /* Now L2TP also */
|
||||
#define PX_MAX_PROTO 2
|
||||
#define PX_PROTO_PPTP 2
|
||||
#define PX_MAX_PROTO 3
|
||||
|
||||
struct sockaddr_pppox {
|
||||
sa_family_t sa_family; /* address family, AF_PPPOX */
|
||||
unsigned int sa_protocol; /* protocol identifier */
|
||||
union{
|
||||
struct pppoe_addr pppoe;
|
||||
}sa_addr;
|
||||
struct sockaddr_pppox {
|
||||
sa_family_t sa_family; /* address family, AF_PPPOX */
|
||||
unsigned int sa_protocol; /* protocol identifier */
|
||||
union {
|
||||
struct pppoe_addr pppoe;
|
||||
struct pptp_addr pptp;
|
||||
} sa_addr;
|
||||
} __attribute__((packed));
|
||||
|
||||
/* The use of the above union isn't viable because the size of this
|
||||
@@ -150,15 +160,23 @@ struct pppoe_opt {
|
||||
relayed to (PPPoE relaying) */
|
||||
};
|
||||
|
||||
struct pptp_opt {
|
||||
struct pptp_addr src_addr;
|
||||
struct pptp_addr dst_addr;
|
||||
u32 ack_sent, ack_recv;
|
||||
u32 seq_sent, seq_recv;
|
||||
int ppp_flags;
|
||||
};
|
||||
#include <net/sock.h>
|
||||
|
||||
struct pppox_sock {
|
||||
/* struct sock must be the first member of pppox_sock */
|
||||
struct sock sk;
|
||||
struct ppp_channel chan;
|
||||
struct sock sk;
|
||||
struct ppp_channel chan;
|
||||
struct pppox_sock *next; /* for hash table */
|
||||
union {
|
||||
struct pppoe_opt pppoe;
|
||||
struct pptp_opt pptp;
|
||||
} proto;
|
||||
__be16 num;
|
||||
};
|
||||
@@ -186,7 +204,7 @@ struct pppox_proto {
|
||||
struct module *owner;
|
||||
};
|
||||
|
||||
extern int register_pppox_proto(int proto_num, struct pppox_proto *pp);
|
||||
extern int register_pppox_proto(int proto_num, const struct pppox_proto *pp);
|
||||
extern void unregister_pppox_proto(int proto_num);
|
||||
extern void pppox_unbind_sock(struct sock *sk);/* delete ppp-channel binding */
|
||||
extern int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
|
||||
|
||||
+26
-5
@@ -16,6 +16,7 @@
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/rtnetlink.h>
|
||||
|
||||
#define VLAN_HLEN 4 /* The additional bytes (on top of the Ethernet header)
|
||||
* that VLAN requires.
|
||||
@@ -68,6 +69,7 @@ static inline struct vlan_ethhdr *vlan_eth_hdr(const struct sk_buff *skb)
|
||||
#define VLAN_CFI_MASK 0x1000 /* Canonical Format Indicator */
|
||||
#define VLAN_TAG_PRESENT VLAN_CFI_MASK
|
||||
#define VLAN_VID_MASK 0x0fff /* VLAN Identifier */
|
||||
#define VLAN_N_VID 4096
|
||||
|
||||
/* found in socket.c */
|
||||
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 *));
|
||||
* depends on completely exhausting the VLAN identifier space. Thus
|
||||
* it gives constant time look-up, but in many cases it wastes memory.
|
||||
*/
|
||||
#define VLAN_GROUP_ARRAY_LEN 4096
|
||||
#define VLAN_GROUP_ARRAY_SPLIT_PARTS 8
|
||||
#define VLAN_GROUP_ARRAY_PART_LEN (VLAN_GROUP_ARRAY_LEN/VLAN_GROUP_ARRAY_SPLIT_PARTS)
|
||||
#define VLAN_GROUP_ARRAY_PART_LEN (VLAN_N_VID/VLAN_GROUP_ARRAY_SPLIT_PARTS)
|
||||
|
||||
struct vlan_group {
|
||||
struct net_device *real_dev; /* The ethernet(like) device
|
||||
@@ -114,12 +115,24 @@ static inline void vlan_group_set_device(struct vlan_group *vg,
|
||||
#define vlan_tx_tag_get(__skb) ((__skb)->vlan_tci & ~VLAN_TAG_PRESENT)
|
||||
|
||||
#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
|
||||
/* Must be invoked with rcu_read_lock or with RTNL. */
|
||||
static inline struct net_device *vlan_find_dev(struct net_device *real_dev,
|
||||
u16 vlan_id)
|
||||
{
|
||||
struct vlan_group *grp = rcu_dereference_rtnl(real_dev->vlgrp);
|
||||
|
||||
if (grp)
|
||||
return vlan_group_get_device(grp, vlan_id);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
extern struct net_device *vlan_dev_real_dev(const struct net_device *dev);
|
||||
extern u16 vlan_dev_vlan_id(const struct net_device *dev);
|
||||
|
||||
extern int __vlan_hwaccel_rx(struct sk_buff *skb, struct vlan_group *grp,
|
||||
u16 vlan_tci, int polling);
|
||||
extern int vlan_hwaccel_do_receive(struct sk_buff *skb);
|
||||
extern bool vlan_hwaccel_do_receive(struct sk_buff **skb);
|
||||
extern gro_result_t
|
||||
vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp,
|
||||
unsigned int vlan_tci, struct sk_buff *skb);
|
||||
@@ -128,6 +141,12 @@ vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp,
|
||||
unsigned int vlan_tci);
|
||||
|
||||
#else
|
||||
static inline struct net_device *vlan_find_dev(struct net_device *real_dev,
|
||||
u16 vlan_id)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline struct net_device *vlan_dev_real_dev(const struct net_device *dev)
|
||||
{
|
||||
BUG();
|
||||
@@ -147,9 +166,11 @@ static inline int __vlan_hwaccel_rx(struct sk_buff *skb, struct vlan_group *grp,
|
||||
return NET_XMIT_SUCCESS;
|
||||
}
|
||||
|
||||
static inline int vlan_hwaccel_do_receive(struct sk_buff *skb)
|
||||
static inline bool vlan_hwaccel_do_receive(struct sk_buff **skb)
|
||||
{
|
||||
return 0;
|
||||
if ((*skb)->vlan_tci & VLAN_VID_MASK)
|
||||
(*skb)->pkt_type = PACKET_OTHERHOST;
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline gro_result_t
|
||||
|
||||
@@ -250,6 +250,25 @@ struct sockaddr_in {
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/errno.h>
|
||||
|
||||
static inline int proto_ports_offset(int proto)
|
||||
{
|
||||
switch (proto) {
|
||||
case IPPROTO_TCP:
|
||||
case IPPROTO_UDP:
|
||||
case IPPROTO_DCCP:
|
||||
case IPPROTO_ESP: /* SPI */
|
||||
case IPPROTO_SCTP:
|
||||
case IPPROTO_UDPLITE:
|
||||
return 0;
|
||||
case IPPROTO_AH: /* SPI */
|
||||
return 4;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool ipv4_is_loopback(__be32 addr)
|
||||
{
|
||||
return (addr & htonl(0xff000000)) == htonl(0x7f000000);
|
||||
|
||||
@@ -268,6 +268,10 @@ struct in6_flowlabel_req {
|
||||
/* RFC5082: Generalized Ttl Security Mechanism */
|
||||
#define IPV6_MINHOPCOUNT 73
|
||||
|
||||
#define IPV6_ORIGDSTADDR 74
|
||||
#define IPV6_RECVORIGDSTADDR IPV6_ORIGDSTADDR
|
||||
#define IPV6_TRANSPARENT 75
|
||||
|
||||
/*
|
||||
* Multicast Routing:
|
||||
* see include/linux/mroute6.h.
|
||||
|
||||
+11
-10
@@ -9,6 +9,7 @@
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/sysctl.h>
|
||||
#include <linux/rtnetlink.h>
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -158,7 +159,12 @@ struct in_ifaddr {
|
||||
extern int register_inetaddr_notifier(struct notifier_block *nb);
|
||||
extern int unregister_inetaddr_notifier(struct notifier_block *nb);
|
||||
|
||||
extern struct net_device *ip_dev_find(struct net *net, __be32 addr);
|
||||
extern struct net_device *__ip_dev_find(struct net *net, __be32 addr, bool devref);
|
||||
static inline struct net_device *ip_dev_find(struct net *net, __be32 addr)
|
||||
{
|
||||
return __ip_dev_find(net, addr, true);
|
||||
}
|
||||
|
||||
extern int inet_addr_onlink(struct in_device *in_dev, __be32 a, __be32 b);
|
||||
extern int devinet_ioctl(struct net *net, unsigned int cmd, void __user *);
|
||||
extern void devinet_init(void);
|
||||
@@ -198,14 +204,10 @@ static __inline__ int bad_mask(__be32 mask, __be32 addr)
|
||||
|
||||
static inline struct in_device *__in_dev_get_rcu(const struct net_device *dev)
|
||||
{
|
||||
struct in_device *in_dev = dev->ip_ptr;
|
||||
if (in_dev)
|
||||
in_dev = rcu_dereference(in_dev);
|
||||
return in_dev;
|
||||
return rcu_dereference(dev->ip_ptr);
|
||||
}
|
||||
|
||||
static __inline__ struct in_device *
|
||||
in_dev_get(const struct net_device *dev)
|
||||
static inline struct in_device *in_dev_get(const struct net_device *dev)
|
||||
{
|
||||
struct in_device *in_dev;
|
||||
|
||||
@@ -217,10 +219,9 @@ in_dev_get(const struct net_device *dev)
|
||||
return in_dev;
|
||||
}
|
||||
|
||||
static __inline__ struct in_device *
|
||||
__in_dev_get_rtnl(const struct net_device *dev)
|
||||
static inline struct in_device *__in_dev_get_rtnl(const struct net_device *dev)
|
||||
{
|
||||
return (struct in_device*)dev->ip_ptr;
|
||||
return rcu_dereference_check(dev->ip_ptr, lockdep_rtnl_is_held());
|
||||
}
|
||||
|
||||
extern void in_dev_finish_destroy(struct in_device *idev);
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
|
||||
/*
|
||||
* IPVS Connection Flags
|
||||
* Only flags 0..15 are sent to backup server
|
||||
*/
|
||||
#define IP_VS_CONN_F_FWD_MASK 0x0007 /* mask for the fwd methods */
|
||||
#define IP_VS_CONN_F_MASQ 0x0000 /* masquerading/NAT */
|
||||
@@ -88,9 +89,20 @@
|
||||
#define IP_VS_CONN_F_TEMPLATE 0x1000 /* template, not connection */
|
||||
#define IP_VS_CONN_F_ONE_PACKET 0x2000 /* forward only one packet */
|
||||
|
||||
/* Flags that are not sent to backup server start from bit 16 */
|
||||
#define IP_VS_CONN_F_NFCT (1 << 16) /* use netfilter conntrack */
|
||||
|
||||
/* Connection flags from destination that can be changed by user space */
|
||||
#define IP_VS_CONN_F_DEST_MASK (IP_VS_CONN_F_FWD_MASK | \
|
||||
IP_VS_CONN_F_ONE_PACKET | \
|
||||
IP_VS_CONN_F_NFCT | \
|
||||
0)
|
||||
|
||||
#define IP_VS_SCHEDNAME_MAXLEN 16
|
||||
#define IP_VS_PENAME_MAXLEN 16
|
||||
#define IP_VS_IFNAME_MAXLEN 16
|
||||
|
||||
#define IP_VS_PEDATA_MAXLEN 255
|
||||
|
||||
/*
|
||||
* The struct ip_vs_service_user and struct ip_vs_dest_user are
|
||||
@@ -324,6 +336,9 @@ enum {
|
||||
IPVS_SVC_ATTR_NETMASK, /* persistent netmask */
|
||||
|
||||
IPVS_SVC_ATTR_STATS, /* nested attribute for service stats */
|
||||
|
||||
IPVS_SVC_ATTR_PE_NAME, /* name of ct retriever */
|
||||
|
||||
__IPVS_SVC_ATTR_MAX,
|
||||
};
|
||||
|
||||
|
||||
@@ -341,7 +341,9 @@ struct ipv6_pinfo {
|
||||
odstopts:1,
|
||||
rxflow:1,
|
||||
rxtclass:1,
|
||||
rxpmtu:1;
|
||||
rxpmtu:1,
|
||||
rxorigdstaddr:1;
|
||||
/* 2 bits hole */
|
||||
} bits;
|
||||
__u16 all;
|
||||
} rxopt;
|
||||
|
||||
@@ -56,6 +56,7 @@ enum {
|
||||
MLX4_CMD_QUERY_HCA = 0xb,
|
||||
MLX4_CMD_QUERY_PORT = 0x43,
|
||||
MLX4_CMD_SENSE_PORT = 0x4d,
|
||||
MLX4_CMD_HW_HEALTH_CHECK = 0x50,
|
||||
MLX4_CMD_SET_PORT = 0xc,
|
||||
MLX4_CMD_ACCESS_DDR = 0x2e,
|
||||
MLX4_CMD_MAP_ICM = 0xffa,
|
||||
|
||||
@@ -186,6 +186,10 @@ struct mlx4_caps {
|
||||
int eth_mtu_cap[MLX4_MAX_PORTS + 1];
|
||||
int gid_table_len[MLX4_MAX_PORTS + 1];
|
||||
int pkey_table_len[MLX4_MAX_PORTS + 1];
|
||||
int trans_type[MLX4_MAX_PORTS + 1];
|
||||
int vendor_oui[MLX4_MAX_PORTS + 1];
|
||||
int wavelength[MLX4_MAX_PORTS + 1];
|
||||
u64 trans_code[MLX4_MAX_PORTS + 1];
|
||||
int local_ca_ack_delay;
|
||||
int num_uars;
|
||||
int bf_reg_size;
|
||||
@@ -229,6 +233,8 @@ struct mlx4_caps {
|
||||
u32 bmme_flags;
|
||||
u32 reserved_lkey;
|
||||
u16 stat_rate_support;
|
||||
int udp_rss;
|
||||
int loopback_support;
|
||||
u8 port_width_cap[MLX4_MAX_PORTS + 1];
|
||||
int max_gso_sz;
|
||||
int reserved_qps_cnt[MLX4_NUM_QP_REGION];
|
||||
@@ -480,5 +486,6 @@ void mlx4_fmr_unmap(struct mlx4_dev *dev, struct mlx4_fmr *fmr,
|
||||
u32 *lkey, u32 *rkey);
|
||||
int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr);
|
||||
int mlx4_SYNC_TPT(struct mlx4_dev *dev);
|
||||
int mlx4_test_interrupts(struct mlx4_dev *dev);
|
||||
|
||||
#endif /* MLX4_DEVICE_H */
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#define SDIO_CLASS_PHS 0x06 /* PHS standard interface */
|
||||
#define SDIO_CLASS_WLAN 0x07 /* WLAN interface */
|
||||
#define SDIO_CLASS_ATA 0x08 /* Embedded SDIO-ATA std interface */
|
||||
#define SDIO_CLASS_BT_AMP 0x09 /* Type-A Bluetooth AMP interface */
|
||||
|
||||
/*
|
||||
* Vendors and devices. Sort key: vendor first, device next.
|
||||
|
||||
@@ -213,6 +213,7 @@ struct mfc_cache {
|
||||
unsigned char ttls[MAXVIFS]; /* TTL thresholds */
|
||||
} res;
|
||||
} mfc_un;
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
#define MFC_STATIC 1
|
||||
|
||||
+90
-30
@@ -228,9 +228,9 @@ struct netdev_hw_addr {
|
||||
#define NETDEV_HW_ADDR_T_SLAVE 3
|
||||
#define NETDEV_HW_ADDR_T_UNICAST 4
|
||||
#define NETDEV_HW_ADDR_T_MULTICAST 5
|
||||
int refcount;
|
||||
bool synced;
|
||||
bool global_use;
|
||||
int refcount;
|
||||
struct rcu_head rcu_head;
|
||||
};
|
||||
|
||||
@@ -281,6 +281,12 @@ struct hh_cache {
|
||||
unsigned long hh_data[HH_DATA_ALIGN(LL_MAX_HEADER) / sizeof(long)];
|
||||
};
|
||||
|
||||
static inline void hh_cache_put(struct hh_cache *hh)
|
||||
{
|
||||
if (atomic_dec_and_test(&hh->hh_refcnt))
|
||||
kfree(hh);
|
||||
}
|
||||
|
||||
/* Reserve HH_DATA_MOD byte aligned hard_header_len, but at least that much.
|
||||
* Alternative is:
|
||||
* dev->hard_header_len ? (dev->hard_header_len +
|
||||
@@ -884,6 +890,9 @@ struct net_device {
|
||||
int iflink;
|
||||
|
||||
struct net_device_stats stats;
|
||||
atomic_long_t rx_dropped; /* dropped packets by core network
|
||||
* Do not use this in drivers.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_WIRELESS_EXT
|
||||
/* List of functions to handle Wireless Extensions (instead of ioctl).
|
||||
@@ -901,7 +910,7 @@ struct net_device {
|
||||
|
||||
unsigned int flags; /* interface flags (a la BSD) */
|
||||
unsigned short gflags;
|
||||
unsigned short priv_flags; /* Like 'flags' but invisible to userspace. */
|
||||
unsigned int priv_flags; /* Like 'flags' but invisible to userspace. */
|
||||
unsigned short padded; /* How much padding added by alloc_netdev() */
|
||||
|
||||
unsigned char operstate; /* RFC2863 operstate */
|
||||
@@ -918,10 +927,6 @@ struct net_device {
|
||||
unsigned short needed_headroom;
|
||||
unsigned short needed_tailroom;
|
||||
|
||||
struct net_device *master; /* Pointer to master device of a group,
|
||||
* which this device is member of.
|
||||
*/
|
||||
|
||||
/* Interface address info. */
|
||||
unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */
|
||||
unsigned char addr_assign_type; /* hw address assignment type */
|
||||
@@ -937,12 +942,15 @@ struct net_device {
|
||||
|
||||
|
||||
/* Protocol specific pointers */
|
||||
|
||||
|
||||
#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
|
||||
struct vlan_group *vlgrp; /* VLAN group */
|
||||
#endif
|
||||
#ifdef CONFIG_NET_DSA
|
||||
void *dsa_ptr; /* dsa specific data */
|
||||
#endif
|
||||
void *atalk_ptr; /* AppleTalk link */
|
||||
void *ip_ptr; /* IPv4 specific data */
|
||||
struct in_device __rcu *ip_ptr; /* IPv4 specific data */
|
||||
void *dn_ptr; /* DECnet specific data */
|
||||
void *ip6_ptr; /* IPv6 specific data */
|
||||
void *ec_ptr; /* Econet specific data */
|
||||
@@ -951,9 +959,20 @@ struct net_device {
|
||||
assign before registering */
|
||||
|
||||
/*
|
||||
* Cache line mostly used on receive path (including eth_type_trans())
|
||||
* Cache lines mostly used on receive path (including eth_type_trans())
|
||||
*/
|
||||
unsigned long last_rx; /* Time of last Rx */
|
||||
unsigned long last_rx; /* Time of last Rx
|
||||
* This should not be set in
|
||||
* drivers, unless really needed,
|
||||
* because network stack (bonding)
|
||||
* use it if/when necessary, to
|
||||
* avoid dirtying this cache line.
|
||||
*/
|
||||
|
||||
struct net_device *master; /* Pointer to master device of a group,
|
||||
* which this device is member of.
|
||||
*/
|
||||
|
||||
/* Interface address info used in eth_type_trans() */
|
||||
unsigned char *dev_addr; /* hw address, (before bcast
|
||||
because most packets are
|
||||
@@ -969,14 +988,21 @@ struct net_device {
|
||||
|
||||
struct netdev_rx_queue *_rx;
|
||||
|
||||
/* Number of RX queues allocated at alloc_netdev_mq() time */
|
||||
/* Number of RX queues allocated at register_netdev() time */
|
||||
unsigned int num_rx_queues;
|
||||
|
||||
/* Number of RX queues currently active in device */
|
||||
unsigned int real_num_rx_queues;
|
||||
#endif
|
||||
|
||||
struct netdev_queue rx_queue;
|
||||
rx_handler_func_t *rx_handler;
|
||||
void *rx_handler_data;
|
||||
|
||||
struct netdev_queue __rcu *ingress_queue;
|
||||
|
||||
/*
|
||||
* Cache lines mostly used on transmit path
|
||||
*/
|
||||
struct netdev_queue *_tx ____cacheline_aligned_in_smp;
|
||||
|
||||
/* Number of TX queues allocated at alloc_netdev_mq() time */
|
||||
@@ -990,9 +1016,7 @@ struct net_device {
|
||||
|
||||
unsigned long tx_queue_len; /* Max frames per queue allowed */
|
||||
spinlock_t tx_global_lock;
|
||||
/*
|
||||
* One part is mostly used on xmit path (device)
|
||||
*/
|
||||
|
||||
/* These may be needed for future network-power-down code. */
|
||||
|
||||
/*
|
||||
@@ -1005,7 +1029,7 @@ struct net_device {
|
||||
struct timer_list watchdog_timer;
|
||||
|
||||
/* Number of references to this device */
|
||||
atomic_t refcnt ____cacheline_aligned_in_smp;
|
||||
int __percpu *pcpu_refcnt;
|
||||
|
||||
/* delayed register/unregister */
|
||||
struct list_head todo_list;
|
||||
@@ -1041,8 +1065,12 @@ struct net_device {
|
||||
#endif
|
||||
|
||||
/* mid-layer private */
|
||||
void *ml_priv;
|
||||
|
||||
union {
|
||||
void *ml_priv;
|
||||
struct pcpu_lstats __percpu *lstats; /* loopback stats */
|
||||
struct pcpu_tstats __percpu *tstats; /* tunnel stats */
|
||||
struct pcpu_dstats __percpu *dstats; /* dummy stats */
|
||||
};
|
||||
/* GARP */
|
||||
struct garp_port *garp_port;
|
||||
|
||||
@@ -1305,6 +1333,7 @@ static inline void unregister_netdevice(struct net_device *dev)
|
||||
unregister_netdevice_queue(dev, NULL);
|
||||
}
|
||||
|
||||
extern int netdev_refcnt_read(const struct net_device *dev);
|
||||
extern void free_netdev(struct net_device *dev);
|
||||
extern void synchronize_net(void);
|
||||
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)
|
||||
*/
|
||||
static inline int netif_is_multiqueue(const struct net_device *dev)
|
||||
{
|
||||
return (dev->num_tx_queues > 1);
|
||||
return dev->num_tx_queues > 1;
|
||||
}
|
||||
|
||||
extern void netif_set_real_num_tx_queues(struct net_device *dev,
|
||||
unsigned int txq);
|
||||
extern int netif_set_real_num_tx_queues(struct net_device *dev,
|
||||
unsigned int txq);
|
||||
|
||||
#ifdef CONFIG_RPS
|
||||
extern int netif_set_real_num_rx_queues(struct net_device *dev,
|
||||
unsigned int rxq);
|
||||
#else
|
||||
static inline int netif_set_real_num_rx_queues(struct net_device *dev,
|
||||
unsigned int rxq)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline int netif_copy_real_num_queues(struct net_device *to_dev,
|
||||
const struct net_device *from_dev)
|
||||
{
|
||||
netif_set_real_num_tx_queues(to_dev, from_dev->real_num_tx_queues);
|
||||
#ifdef CONFIG_RPS
|
||||
return netif_set_real_num_rx_queues(to_dev,
|
||||
from_dev->real_num_rx_queues);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Use this variant when it is known for sure that it
|
||||
* 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,
|
||||
extern gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb);
|
||||
extern gro_result_t napi_gro_receive(struct napi_struct *napi,
|
||||
struct sk_buff *skb);
|
||||
extern void napi_reuse_skb(struct napi_struct *napi,
|
||||
struct sk_buff *skb);
|
||||
extern void napi_gro_flush(struct napi_struct *napi);
|
||||
extern struct sk_buff * napi_get_frags(struct napi_struct *napi);
|
||||
extern gro_result_t napi_frags_finish(struct napi_struct *napi,
|
||||
struct sk_buff *skb,
|
||||
@@ -1715,7 +1766,6 @@ extern int netdev_rx_handler_register(struct net_device *dev,
|
||||
void *rx_handler_data);
|
||||
extern void netdev_rx_handler_unregister(struct net_device *dev);
|
||||
|
||||
extern void netif_nit_deliver(struct sk_buff *skb);
|
||||
extern int dev_valid_name(const char *name);
|
||||
extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *);
|
||||
extern int dev_ethtool(struct net *net, struct ifreq *);
|
||||
@@ -1749,7 +1799,7 @@ extern void netdev_run_todo(void);
|
||||
*/
|
||||
static inline void dev_put(struct net_device *dev)
|
||||
{
|
||||
atomic_dec(&dev->refcnt);
|
||||
irqsafe_cpu_dec(*dev->pcpu_refcnt);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1760,7 +1810,7 @@ static inline void dev_put(struct net_device *dev)
|
||||
*/
|
||||
static inline void dev_hold(struct net_device *dev)
|
||||
{
|
||||
atomic_inc(&dev->refcnt);
|
||||
irqsafe_cpu_inc(*dev->pcpu_refcnt);
|
||||
}
|
||||
|
||||
/* 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);
|
||||
extern int netdev_class_create_file(struct class_attribute *class_attr);
|
||||
extern void netdev_class_remove_file(struct class_attribute *class_attr);
|
||||
|
||||
extern struct kobj_ns_type_operations net_ns_type_operations;
|
||||
|
||||
extern char *netdev_drivername(const struct net_device *dev, char *buffer, int len);
|
||||
|
||||
extern void linkwatch_run_queue(void);
|
||||
@@ -2191,14 +2243,22 @@ static inline int net_gso_ok(int features, int gso_type)
|
||||
static inline int skb_gso_ok(struct sk_buff *skb, int features)
|
||||
{
|
||||
return net_gso_ok(features, skb_shinfo(skb)->gso_type) &&
|
||||
(!skb_has_frags(skb) || (features & NETIF_F_FRAGLIST));
|
||||
(!skb_has_frag_list(skb) || (features & NETIF_F_FRAGLIST));
|
||||
}
|
||||
|
||||
static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb)
|
||||
{
|
||||
return skb_is_gso(skb) &&
|
||||
(!skb_gso_ok(skb, dev->features) ||
|
||||
unlikely(skb->ip_summed != CHECKSUM_PARTIAL));
|
||||
if (skb_is_gso(skb)) {
|
||||
int features = dev->features;
|
||||
|
||||
if (skb->protocol == htons(ETH_P_8021Q) || skb->vlan_tci)
|
||||
features &= dev->vlan_features;
|
||||
|
||||
return (!skb_gso_ok(skb, features) ||
|
||||
unlikely(skb->ip_summed != CHECKSUM_PARTIAL));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void netif_set_gso_max_size(struct net_device *dev,
|
||||
|
||||
@@ -98,8 +98,14 @@ enum ip_conntrack_events {
|
||||
|
||||
enum ip_conntrack_expect_events {
|
||||
IPEXP_NEW, /* new expectation */
|
||||
IPEXP_DESTROY, /* destroyed expectation */
|
||||
};
|
||||
|
||||
/* expectation flags */
|
||||
#define NF_CT_EXPECT_PERMANENT 0x1
|
||||
#define NF_CT_EXPECT_INACTIVE 0x2
|
||||
#define NF_CT_EXPECT_USERSPACE 0x4
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct ip_conntrack_stat {
|
||||
unsigned int searched;
|
||||
|
||||
@@ -89,6 +89,7 @@ enum sip_header_types {
|
||||
SIP_HDR_VIA_TCP,
|
||||
SIP_HDR_EXPIRES,
|
||||
SIP_HDR_CONTENT_LENGTH,
|
||||
SIP_HDR_CALL_ID,
|
||||
};
|
||||
|
||||
enum sdp_header_types {
|
||||
|
||||
@@ -162,6 +162,7 @@ enum ctattr_expect {
|
||||
CTA_EXPECT_ID,
|
||||
CTA_EXPECT_HELP_NAME,
|
||||
CTA_EXPECT_ZONE,
|
||||
CTA_EXPECT_FLAGS,
|
||||
__CTA_EXPECT_MAX
|
||||
};
|
||||
#define CTA_EXPECT_MAX (__CTA_EXPECT_MAX - 1)
|
||||
|
||||
@@ -66,6 +66,11 @@ struct xt_standard_target {
|
||||
int verdict;
|
||||
};
|
||||
|
||||
struct xt_error_target {
|
||||
struct xt_entry_target target;
|
||||
char errorname[XT_FUNCTION_MAXNAMELEN];
|
||||
};
|
||||
|
||||
/* The argument to IPT_SO_GET_REVISION_*. Returns highest revision
|
||||
* kernel supports, if >= revision. */
|
||||
struct xt_get_revision {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef _XT_TPROXY_H_target
|
||||
#define _XT_TPROXY_H_target
|
||||
#ifndef _XT_TPROXY_H
|
||||
#define _XT_TPROXY_H
|
||||
|
||||
/* TPROXY target is capable of marking the packet to perform
|
||||
* redirection. We can get rid of that whenever we get support for
|
||||
@@ -11,4 +11,11 @@ struct xt_tproxy_target_info {
|
||||
__be16 lport;
|
||||
};
|
||||
|
||||
#endif /* _XT_TPROXY_H_target */
|
||||
struct xt_tproxy_target_info_v1 {
|
||||
u_int32_t mark_mask;
|
||||
u_int32_t mark_value;
|
||||
union nf_inet_addr laddr;
|
||||
__be16 lport;
|
||||
};
|
||||
|
||||
#endif /* _XT_TPROXY_H */
|
||||
|
||||
@@ -21,8 +21,21 @@
|
||||
|
||||
#include <linux/netfilter/x_tables.h>
|
||||
|
||||
#ifndef __KERNEL__
|
||||
#define ARPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
|
||||
#define ARPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
|
||||
#define arpt_entry_target xt_entry_target
|
||||
#define arpt_standard_target xt_standard_target
|
||||
#define arpt_error_target xt_error_target
|
||||
#define ARPT_CONTINUE XT_CONTINUE
|
||||
#define ARPT_RETURN XT_RETURN
|
||||
#define arpt_counters_info xt_counters_info
|
||||
#define arpt_counters xt_counters
|
||||
#define ARPT_STANDARD_TARGET XT_STANDARD_TARGET
|
||||
#define ARPT_ERROR_TARGET XT_ERROR_TARGET
|
||||
#define ARPT_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct arpt_entry, entries, size, fn, ## args)
|
||||
#endif
|
||||
|
||||
#define ARPT_DEV_ADDR_LEN_MAX 16
|
||||
|
||||
@@ -63,9 +76,6 @@ struct arpt_arp {
|
||||
u_int16_t invflags;
|
||||
};
|
||||
|
||||
#define arpt_entry_target xt_entry_target
|
||||
#define arpt_standard_target xt_standard_target
|
||||
|
||||
/* Values for "flag" field in struct arpt_ip (general arp structure).
|
||||
* No flags defined yet.
|
||||
*/
|
||||
@@ -125,16 +135,10 @@ struct arpt_entry
|
||||
#define ARPT_SO_GET_REVISION_TARGET (ARPT_BASE_CTL + 3)
|
||||
#define ARPT_SO_GET_MAX (ARPT_SO_GET_REVISION_TARGET)
|
||||
|
||||
/* CONTINUE verdict for targets */
|
||||
#define ARPT_CONTINUE XT_CONTINUE
|
||||
|
||||
/* For standard target */
|
||||
#define ARPT_RETURN XT_RETURN
|
||||
|
||||
/* The argument to ARPT_SO_GET_INFO */
|
||||
struct arpt_getinfo {
|
||||
/* Which table: caller fills this in. */
|
||||
char name[ARPT_TABLE_MAXNAMELEN];
|
||||
char name[XT_TABLE_MAXNAMELEN];
|
||||
|
||||
/* Kernel fills these in. */
|
||||
/* Which hook entry points are valid: bitmask */
|
||||
@@ -156,7 +160,7 @@ struct arpt_getinfo {
|
||||
/* The argument to ARPT_SO_SET_REPLACE. */
|
||||
struct arpt_replace {
|
||||
/* Which table. */
|
||||
char name[ARPT_TABLE_MAXNAMELEN];
|
||||
char name[XT_TABLE_MAXNAMELEN];
|
||||
|
||||
/* Which hook entry points are valid: bitmask. You can't
|
||||
change this. */
|
||||
@@ -184,14 +188,10 @@ struct arpt_replace {
|
||||
struct arpt_entry entries[0];
|
||||
};
|
||||
|
||||
/* The argument to ARPT_SO_ADD_COUNTERS. */
|
||||
#define arpt_counters_info xt_counters_info
|
||||
#define arpt_counters xt_counters
|
||||
|
||||
/* The argument to ARPT_SO_GET_ENTRIES. */
|
||||
struct arpt_get_entries {
|
||||
/* Which table: user fills this in. */
|
||||
char name[ARPT_TABLE_MAXNAMELEN];
|
||||
char name[XT_TABLE_MAXNAMELEN];
|
||||
|
||||
/* User fills this in: total entry size. */
|
||||
unsigned int size;
|
||||
@@ -200,23 +200,12 @@ struct arpt_get_entries {
|
||||
struct arpt_entry entrytable[0];
|
||||
};
|
||||
|
||||
/* Standard return verdict, or do jump. */
|
||||
#define ARPT_STANDARD_TARGET XT_STANDARD_TARGET
|
||||
/* Error verdict. */
|
||||
#define ARPT_ERROR_TARGET XT_ERROR_TARGET
|
||||
|
||||
/* Helper functions */
|
||||
static __inline__ struct arpt_entry_target *arpt_get_target(struct arpt_entry *e)
|
||||
static __inline__ struct xt_entry_target *arpt_get_target(struct arpt_entry *e)
|
||||
{
|
||||
return (void *)e + e->target_offset;
|
||||
}
|
||||
|
||||
#ifndef __KERNEL__
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define ARPT_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct arpt_entry, entries, size, fn, ## args)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Main firewall chains definitions and global var's definitions.
|
||||
*/
|
||||
@@ -225,17 +214,12 @@ static __inline__ struct arpt_entry_target *arpt_get_target(struct arpt_entry *e
|
||||
/* Standard entry. */
|
||||
struct arpt_standard {
|
||||
struct arpt_entry entry;
|
||||
struct arpt_standard_target target;
|
||||
};
|
||||
|
||||
struct arpt_error_target {
|
||||
struct arpt_entry_target target;
|
||||
char errorname[ARPT_FUNCTION_MAXNAMELEN];
|
||||
struct xt_standard_target target;
|
||||
};
|
||||
|
||||
struct arpt_error {
|
||||
struct arpt_entry entry;
|
||||
struct arpt_error_target target;
|
||||
struct xt_error_target target;
|
||||
};
|
||||
|
||||
#define ARPT_ENTRY_INIT(__size) \
|
||||
@@ -247,16 +231,16 @@ struct arpt_error {
|
||||
#define ARPT_STANDARD_INIT(__verdict) \
|
||||
{ \
|
||||
.entry = ARPT_ENTRY_INIT(sizeof(struct arpt_standard)), \
|
||||
.target = XT_TARGET_INIT(ARPT_STANDARD_TARGET, \
|
||||
sizeof(struct arpt_standard_target)), \
|
||||
.target = XT_TARGET_INIT(XT_STANDARD_TARGET, \
|
||||
sizeof(struct xt_standard_target)), \
|
||||
.target.verdict = -(__verdict) - 1, \
|
||||
}
|
||||
|
||||
#define ARPT_ERROR_INIT \
|
||||
{ \
|
||||
.entry = ARPT_ENTRY_INIT(sizeof(struct arpt_error)), \
|
||||
.target = XT_TARGET_INIT(ARPT_ERROR_TARGET, \
|
||||
sizeof(struct arpt_error_target)), \
|
||||
.target = XT_TARGET_INIT(XT_ERROR_TARGET, \
|
||||
sizeof(struct xt_error_target)), \
|
||||
.target.errorname = "ERROR", \
|
||||
}
|
||||
|
||||
@@ -271,8 +255,6 @@ extern unsigned int arpt_do_table(struct sk_buff *skb,
|
||||
const struct net_device *out,
|
||||
struct xt_table *table);
|
||||
|
||||
#define ARPT_ALIGN(s) XT_ALIGN(s)
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
#include <net/compat.h>
|
||||
|
||||
@@ -285,14 +267,12 @@ struct compat_arpt_entry {
|
||||
unsigned char elems[0];
|
||||
};
|
||||
|
||||
static inline struct arpt_entry_target *
|
||||
static inline struct xt_entry_target *
|
||||
compat_arpt_get_target(struct compat_arpt_entry *e)
|
||||
{
|
||||
return (void *)e + e->target_offset;
|
||||
}
|
||||
|
||||
#define COMPAT_ARPT_ALIGN(s) COMPAT_XT_ALIGN(s)
|
||||
|
||||
#endif /* CONFIG_COMPAT */
|
||||
#endif /*__KERNEL__*/
|
||||
#endif /* _ARPTABLES_H */
|
||||
|
||||
@@ -3,11 +3,13 @@ header-y += ebt_among.h
|
||||
header-y += ebt_arp.h
|
||||
header-y += ebt_arpreply.h
|
||||
header-y += ebt_ip.h
|
||||
header-y += ebt_ip6.h
|
||||
header-y += ebt_limit.h
|
||||
header-y += ebt_log.h
|
||||
header-y += ebt_mark_m.h
|
||||
header-y += ebt_mark_t.h
|
||||
header-y += ebt_nat.h
|
||||
header-y += ebt_nflog.h
|
||||
header-y += ebt_pkttype.h
|
||||
header-y += ebt_redirect.h
|
||||
header-y += ebt_stp.h
|
||||
|
||||
@@ -27,12 +27,49 @@
|
||||
|
||||
#include <linux/netfilter/x_tables.h>
|
||||
|
||||
#ifndef __KERNEL__
|
||||
#define IPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
|
||||
#define IPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
|
||||
#define ipt_match xt_match
|
||||
#define ipt_target xt_target
|
||||
#define ipt_table xt_table
|
||||
#define ipt_get_revision xt_get_revision
|
||||
#define ipt_entry_match xt_entry_match
|
||||
#define ipt_entry_target xt_entry_target
|
||||
#define ipt_standard_target xt_standard_target
|
||||
#define ipt_error_target xt_error_target
|
||||
#define ipt_counters xt_counters
|
||||
#define IPT_CONTINUE XT_CONTINUE
|
||||
#define IPT_RETURN XT_RETURN
|
||||
|
||||
/* This group is older than old (iptables < v1.4.0-rc1~89) */
|
||||
#include <linux/netfilter/xt_tcpudp.h>
|
||||
#define ipt_udp xt_udp
|
||||
#define ipt_tcp xt_tcp
|
||||
#define IPT_TCP_INV_SRCPT XT_TCP_INV_SRCPT
|
||||
#define IPT_TCP_INV_DSTPT XT_TCP_INV_DSTPT
|
||||
#define IPT_TCP_INV_FLAGS XT_TCP_INV_FLAGS
|
||||
#define IPT_TCP_INV_OPTION XT_TCP_INV_OPTION
|
||||
#define IPT_TCP_INV_MASK XT_TCP_INV_MASK
|
||||
#define IPT_UDP_INV_SRCPT XT_UDP_INV_SRCPT
|
||||
#define IPT_UDP_INV_DSTPT XT_UDP_INV_DSTPT
|
||||
#define IPT_UDP_INV_MASK XT_UDP_INV_MASK
|
||||
|
||||
/* The argument to IPT_SO_ADD_COUNTERS. */
|
||||
#define ipt_counters_info xt_counters_info
|
||||
/* Standard return verdict, or do jump. */
|
||||
#define IPT_STANDARD_TARGET XT_STANDARD_TARGET
|
||||
/* Error verdict. */
|
||||
#define IPT_ERROR_TARGET XT_ERROR_TARGET
|
||||
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define IPT_MATCH_ITERATE(e, fn, args...) \
|
||||
XT_MATCH_ITERATE(struct ipt_entry, e, fn, ## args)
|
||||
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define IPT_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct ipt_entry, entries, size, fn, ## args)
|
||||
#endif
|
||||
|
||||
/* Yes, Virginia, you have to zero the padding. */
|
||||
struct ipt_ip {
|
||||
@@ -52,12 +89,6 @@ struct ipt_ip {
|
||||
u_int8_t invflags;
|
||||
};
|
||||
|
||||
#define ipt_entry_match xt_entry_match
|
||||
#define ipt_entry_target xt_entry_target
|
||||
#define ipt_standard_target xt_standard_target
|
||||
|
||||
#define ipt_counters xt_counters
|
||||
|
||||
/* Values for "flag" field in struct ipt_ip (general ip structure). */
|
||||
#define IPT_F_FRAG 0x01 /* Set if rule is a fragment rule */
|
||||
#define IPT_F_GOTO 0x02 /* Set if jump is a goto */
|
||||
@@ -116,23 +147,6 @@ struct ipt_entry {
|
||||
#define IPT_SO_GET_REVISION_TARGET (IPT_BASE_CTL + 3)
|
||||
#define IPT_SO_GET_MAX IPT_SO_GET_REVISION_TARGET
|
||||
|
||||
#define IPT_CONTINUE XT_CONTINUE
|
||||
#define IPT_RETURN XT_RETURN
|
||||
|
||||
#include <linux/netfilter/xt_tcpudp.h>
|
||||
#define ipt_udp xt_udp
|
||||
#define ipt_tcp xt_tcp
|
||||
|
||||
#define IPT_TCP_INV_SRCPT XT_TCP_INV_SRCPT
|
||||
#define IPT_TCP_INV_DSTPT XT_TCP_INV_DSTPT
|
||||
#define IPT_TCP_INV_FLAGS XT_TCP_INV_FLAGS
|
||||
#define IPT_TCP_INV_OPTION XT_TCP_INV_OPTION
|
||||
#define IPT_TCP_INV_MASK XT_TCP_INV_MASK
|
||||
|
||||
#define IPT_UDP_INV_SRCPT XT_UDP_INV_SRCPT
|
||||
#define IPT_UDP_INV_DSTPT XT_UDP_INV_DSTPT
|
||||
#define IPT_UDP_INV_MASK XT_UDP_INV_MASK
|
||||
|
||||
/* ICMP matching stuff */
|
||||
struct ipt_icmp {
|
||||
u_int8_t type; /* type to match */
|
||||
@@ -146,7 +160,7 @@ struct ipt_icmp {
|
||||
/* The argument to IPT_SO_GET_INFO */
|
||||
struct ipt_getinfo {
|
||||
/* Which table: caller fills this in. */
|
||||
char name[IPT_TABLE_MAXNAMELEN];
|
||||
char name[XT_TABLE_MAXNAMELEN];
|
||||
|
||||
/* Kernel fills these in. */
|
||||
/* Which hook entry points are valid: bitmask */
|
||||
@@ -168,7 +182,7 @@ struct ipt_getinfo {
|
||||
/* The argument to IPT_SO_SET_REPLACE. */
|
||||
struct ipt_replace {
|
||||
/* Which table. */
|
||||
char name[IPT_TABLE_MAXNAMELEN];
|
||||
char name[XT_TABLE_MAXNAMELEN];
|
||||
|
||||
/* Which hook entry points are valid: bitmask. You can't
|
||||
change this. */
|
||||
@@ -196,13 +210,10 @@ struct ipt_replace {
|
||||
struct ipt_entry entries[0];
|
||||
};
|
||||
|
||||
/* The argument to IPT_SO_ADD_COUNTERS. */
|
||||
#define ipt_counters_info xt_counters_info
|
||||
|
||||
/* The argument to IPT_SO_GET_ENTRIES. */
|
||||
struct ipt_get_entries {
|
||||
/* Which table: user fills this in. */
|
||||
char name[IPT_TABLE_MAXNAMELEN];
|
||||
char name[XT_TABLE_MAXNAMELEN];
|
||||
|
||||
/* User fills this in: total entry size. */
|
||||
unsigned int size;
|
||||
@@ -211,28 +222,13 @@ struct ipt_get_entries {
|
||||
struct ipt_entry entrytable[0];
|
||||
};
|
||||
|
||||
/* Standard return verdict, or do jump. */
|
||||
#define IPT_STANDARD_TARGET XT_STANDARD_TARGET
|
||||
/* Error verdict. */
|
||||
#define IPT_ERROR_TARGET XT_ERROR_TARGET
|
||||
|
||||
/* Helper functions */
|
||||
static __inline__ struct ipt_entry_target *
|
||||
static __inline__ struct xt_entry_target *
|
||||
ipt_get_target(struct ipt_entry *e)
|
||||
{
|
||||
return (void *)e + e->target_offset;
|
||||
}
|
||||
|
||||
#ifndef __KERNEL__
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define IPT_MATCH_ITERATE(e, fn, args...) \
|
||||
XT_MATCH_ITERATE(struct ipt_entry, e, fn, ## args)
|
||||
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define IPT_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct ipt_entry, entries, size, fn, ## args)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Main firewall chains definitions and global var's definitions.
|
||||
*/
|
||||
@@ -249,17 +245,12 @@ extern void ipt_unregister_table(struct net *net, struct xt_table *table);
|
||||
/* Standard entry. */
|
||||
struct ipt_standard {
|
||||
struct ipt_entry entry;
|
||||
struct ipt_standard_target target;
|
||||
};
|
||||
|
||||
struct ipt_error_target {
|
||||
struct ipt_entry_target target;
|
||||
char errorname[IPT_FUNCTION_MAXNAMELEN];
|
||||
struct xt_standard_target target;
|
||||
};
|
||||
|
||||
struct ipt_error {
|
||||
struct ipt_entry entry;
|
||||
struct ipt_error_target target;
|
||||
struct xt_error_target target;
|
||||
};
|
||||
|
||||
#define IPT_ENTRY_INIT(__size) \
|
||||
@@ -271,7 +262,7 @@ struct ipt_error {
|
||||
#define IPT_STANDARD_INIT(__verdict) \
|
||||
{ \
|
||||
.entry = IPT_ENTRY_INIT(sizeof(struct ipt_standard)), \
|
||||
.target = XT_TARGET_INIT(IPT_STANDARD_TARGET, \
|
||||
.target = XT_TARGET_INIT(XT_STANDARD_TARGET, \
|
||||
sizeof(struct xt_standard_target)), \
|
||||
.target.verdict = -(__verdict) - 1, \
|
||||
}
|
||||
@@ -279,8 +270,8 @@ struct ipt_error {
|
||||
#define IPT_ERROR_INIT \
|
||||
{ \
|
||||
.entry = IPT_ENTRY_INIT(sizeof(struct ipt_error)), \
|
||||
.target = XT_TARGET_INIT(IPT_ERROR_TARGET, \
|
||||
sizeof(struct ipt_error_target)), \
|
||||
.target = XT_TARGET_INIT(XT_ERROR_TARGET, \
|
||||
sizeof(struct xt_error_target)), \
|
||||
.target.errorname = "ERROR", \
|
||||
}
|
||||
|
||||
@@ -291,8 +282,6 @@ extern unsigned int ipt_do_table(struct sk_buff *skb,
|
||||
const struct net_device *out,
|
||||
struct xt_table *table);
|
||||
|
||||
#define IPT_ALIGN(s) XT_ALIGN(s)
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
#include <net/compat.h>
|
||||
|
||||
@@ -307,14 +296,12 @@ struct compat_ipt_entry {
|
||||
};
|
||||
|
||||
/* Helper functions */
|
||||
static inline struct ipt_entry_target *
|
||||
static inline struct xt_entry_target *
|
||||
compat_ipt_get_target(struct compat_ipt_entry *e)
|
||||
{
|
||||
return (void *)e + e->target_offset;
|
||||
}
|
||||
|
||||
#define COMPAT_IPT_ALIGN(s) COMPAT_XT_ALIGN(s)
|
||||
|
||||
#endif /* CONFIG_COMPAT */
|
||||
#endif /*__KERNEL__*/
|
||||
#endif /* _IPTABLES_H */
|
||||
|
||||
@@ -27,13 +27,42 @@
|
||||
|
||||
#include <linux/netfilter/x_tables.h>
|
||||
|
||||
#ifndef __KERNEL__
|
||||
#define IP6T_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
|
||||
#define IP6T_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
|
||||
|
||||
#define ip6t_match xt_match
|
||||
#define ip6t_target xt_target
|
||||
#define ip6t_table xt_table
|
||||
#define ip6t_get_revision xt_get_revision
|
||||
#define ip6t_entry_match xt_entry_match
|
||||
#define ip6t_entry_target xt_entry_target
|
||||
#define ip6t_standard_target xt_standard_target
|
||||
#define ip6t_error_target xt_error_target
|
||||
#define ip6t_counters xt_counters
|
||||
#define IP6T_CONTINUE XT_CONTINUE
|
||||
#define IP6T_RETURN XT_RETURN
|
||||
|
||||
/* Pre-iptables-1.4.0 */
|
||||
#include <linux/netfilter/xt_tcpudp.h>
|
||||
#define ip6t_tcp xt_tcp
|
||||
#define ip6t_udp xt_udp
|
||||
#define IP6T_TCP_INV_SRCPT XT_TCP_INV_SRCPT
|
||||
#define IP6T_TCP_INV_DSTPT XT_TCP_INV_DSTPT
|
||||
#define IP6T_TCP_INV_FLAGS XT_TCP_INV_FLAGS
|
||||
#define IP6T_TCP_INV_OPTION XT_TCP_INV_OPTION
|
||||
#define IP6T_TCP_INV_MASK XT_TCP_INV_MASK
|
||||
#define IP6T_UDP_INV_SRCPT XT_UDP_INV_SRCPT
|
||||
#define IP6T_UDP_INV_DSTPT XT_UDP_INV_DSTPT
|
||||
#define IP6T_UDP_INV_MASK XT_UDP_INV_MASK
|
||||
|
||||
#define ip6t_counters_info xt_counters_info
|
||||
#define IP6T_STANDARD_TARGET XT_STANDARD_TARGET
|
||||
#define IP6T_ERROR_TARGET XT_ERROR_TARGET
|
||||
#define IP6T_MATCH_ITERATE(e, fn, args...) \
|
||||
XT_MATCH_ITERATE(struct ip6t_entry, e, fn, ## args)
|
||||
#define IP6T_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct ip6t_entry, entries, size, fn, ## args)
|
||||
#endif
|
||||
|
||||
/* Yes, Virginia, you have to zero the padding. */
|
||||
struct ip6t_ip6 {
|
||||
@@ -62,12 +91,6 @@ struct ip6t_ip6 {
|
||||
u_int8_t invflags;
|
||||
};
|
||||
|
||||
#define ip6t_entry_match xt_entry_match
|
||||
#define ip6t_entry_target xt_entry_target
|
||||
#define ip6t_standard_target xt_standard_target
|
||||
|
||||
#define ip6t_counters xt_counters
|
||||
|
||||
/* Values for "flag" field in struct ip6t_ip6 (general ip6 structure). */
|
||||
#define IP6T_F_PROTO 0x01 /* Set if rule cares about upper
|
||||
protocols */
|
||||
@@ -112,17 +135,12 @@ struct ip6t_entry {
|
||||
/* Standard entry */
|
||||
struct ip6t_standard {
|
||||
struct ip6t_entry entry;
|
||||
struct ip6t_standard_target target;
|
||||
};
|
||||
|
||||
struct ip6t_error_target {
|
||||
struct ip6t_entry_target target;
|
||||
char errorname[IP6T_FUNCTION_MAXNAMELEN];
|
||||
struct xt_standard_target target;
|
||||
};
|
||||
|
||||
struct ip6t_error {
|
||||
struct ip6t_entry entry;
|
||||
struct ip6t_error_target target;
|
||||
struct xt_error_target target;
|
||||
};
|
||||
|
||||
#define IP6T_ENTRY_INIT(__size) \
|
||||
@@ -134,16 +152,16 @@ struct ip6t_error {
|
||||
#define IP6T_STANDARD_INIT(__verdict) \
|
||||
{ \
|
||||
.entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_standard)), \
|
||||
.target = XT_TARGET_INIT(IP6T_STANDARD_TARGET, \
|
||||
sizeof(struct ip6t_standard_target)), \
|
||||
.target = XT_TARGET_INIT(XT_STANDARD_TARGET, \
|
||||
sizeof(struct xt_standard_target)), \
|
||||
.target.verdict = -(__verdict) - 1, \
|
||||
}
|
||||
|
||||
#define IP6T_ERROR_INIT \
|
||||
{ \
|
||||
.entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_error)), \
|
||||
.target = XT_TARGET_INIT(IP6T_ERROR_TARGET, \
|
||||
sizeof(struct ip6t_error_target)), \
|
||||
.target = XT_TARGET_INIT(XT_ERROR_TARGET, \
|
||||
sizeof(struct xt_error_target)), \
|
||||
.target.errorname = "ERROR", \
|
||||
}
|
||||
|
||||
@@ -166,30 +184,6 @@ struct ip6t_error {
|
||||
#define IP6T_SO_GET_REVISION_TARGET (IP6T_BASE_CTL + 5)
|
||||
#define IP6T_SO_GET_MAX IP6T_SO_GET_REVISION_TARGET
|
||||
|
||||
/* CONTINUE verdict for targets */
|
||||
#define IP6T_CONTINUE XT_CONTINUE
|
||||
|
||||
/* For standard target */
|
||||
#define IP6T_RETURN XT_RETURN
|
||||
|
||||
/* TCP/UDP matching stuff */
|
||||
#include <linux/netfilter/xt_tcpudp.h>
|
||||
|
||||
#define ip6t_tcp xt_tcp
|
||||
#define ip6t_udp xt_udp
|
||||
|
||||
/* Values for "inv" field in struct ipt_tcp. */
|
||||
#define IP6T_TCP_INV_SRCPT XT_TCP_INV_SRCPT
|
||||
#define IP6T_TCP_INV_DSTPT XT_TCP_INV_DSTPT
|
||||
#define IP6T_TCP_INV_FLAGS XT_TCP_INV_FLAGS
|
||||
#define IP6T_TCP_INV_OPTION XT_TCP_INV_OPTION
|
||||
#define IP6T_TCP_INV_MASK XT_TCP_INV_MASK
|
||||
|
||||
/* Values for "invflags" field in struct ipt_udp. */
|
||||
#define IP6T_UDP_INV_SRCPT XT_UDP_INV_SRCPT
|
||||
#define IP6T_UDP_INV_DSTPT XT_UDP_INV_DSTPT
|
||||
#define IP6T_UDP_INV_MASK XT_UDP_INV_MASK
|
||||
|
||||
/* ICMP matching stuff */
|
||||
struct ip6t_icmp {
|
||||
u_int8_t type; /* type to match */
|
||||
@@ -203,7 +197,7 @@ struct ip6t_icmp {
|
||||
/* The argument to IP6T_SO_GET_INFO */
|
||||
struct ip6t_getinfo {
|
||||
/* Which table: caller fills this in. */
|
||||
char name[IP6T_TABLE_MAXNAMELEN];
|
||||
char name[XT_TABLE_MAXNAMELEN];
|
||||
|
||||
/* Kernel fills these in. */
|
||||
/* Which hook entry points are valid: bitmask */
|
||||
@@ -225,7 +219,7 @@ struct ip6t_getinfo {
|
||||
/* The argument to IP6T_SO_SET_REPLACE. */
|
||||
struct ip6t_replace {
|
||||
/* Which table. */
|
||||
char name[IP6T_TABLE_MAXNAMELEN];
|
||||
char name[XT_TABLE_MAXNAMELEN];
|
||||
|
||||
/* Which hook entry points are valid: bitmask. You can't
|
||||
change this. */
|
||||
@@ -253,13 +247,10 @@ struct ip6t_replace {
|
||||
struct ip6t_entry entries[0];
|
||||
};
|
||||
|
||||
/* The argument to IP6T_SO_ADD_COUNTERS. */
|
||||
#define ip6t_counters_info xt_counters_info
|
||||
|
||||
/* The argument to IP6T_SO_GET_ENTRIES. */
|
||||
struct ip6t_get_entries {
|
||||
/* Which table: user fills this in. */
|
||||
char name[IP6T_TABLE_MAXNAMELEN];
|
||||
char name[XT_TABLE_MAXNAMELEN];
|
||||
|
||||
/* User fills this in: total entry size. */
|
||||
unsigned int size;
|
||||
@@ -268,28 +259,13 @@ struct ip6t_get_entries {
|
||||
struct ip6t_entry entrytable[0];
|
||||
};
|
||||
|
||||
/* Standard return verdict, or do jump. */
|
||||
#define IP6T_STANDARD_TARGET XT_STANDARD_TARGET
|
||||
/* Error verdict. */
|
||||
#define IP6T_ERROR_TARGET XT_ERROR_TARGET
|
||||
|
||||
/* Helper functions */
|
||||
static __inline__ struct ip6t_entry_target *
|
||||
static __inline__ struct xt_entry_target *
|
||||
ip6t_get_target(struct ip6t_entry *e)
|
||||
{
|
||||
return (void *)e + e->target_offset;
|
||||
}
|
||||
|
||||
#ifndef __KERNEL__
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define IP6T_MATCH_ITERATE(e, fn, args...) \
|
||||
XT_MATCH_ITERATE(struct ip6t_entry, e, fn, ## args)
|
||||
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define IP6T_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct ip6t_entry, entries, size, fn, ## args)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Main firewall chains definitions and global var's definitions.
|
||||
*/
|
||||
@@ -316,8 +292,6 @@ extern int ip6t_ext_hdr(u8 nexthdr);
|
||||
extern int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset,
|
||||
int target, unsigned short *fragoff);
|
||||
|
||||
#define IP6T_ALIGN(s) XT_ALIGN(s)
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
#include <net/compat.h>
|
||||
|
||||
@@ -331,14 +305,12 @@ struct compat_ip6t_entry {
|
||||
unsigned char elems[0];
|
||||
};
|
||||
|
||||
static inline struct ip6t_entry_target *
|
||||
static inline struct xt_entry_target *
|
||||
compat_ip6t_get_target(struct compat_ip6t_entry *e)
|
||||
{
|
||||
return (void *)e + e->target_offset;
|
||||
}
|
||||
|
||||
#define COMPAT_IP6T_ALIGN(s) COMPAT_XT_ALIGN(s)
|
||||
|
||||
#endif /* CONFIG_COMPAT */
|
||||
#endif /*__KERNEL__*/
|
||||
#endif /* _IP6_TABLES_H */
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
|
||||
struct netpoll {
|
||||
struct net_device *dev;
|
||||
struct net_device *real_dev;
|
||||
char dev_name[IFNAMSIZ];
|
||||
const char *name;
|
||||
void (*rx_hook)(struct netpoll *, int, char *, int);
|
||||
@@ -53,7 +52,13 @@ void netpoll_set_trap(int trap);
|
||||
void __netpoll_cleanup(struct netpoll *np);
|
||||
void netpoll_cleanup(struct netpoll *np);
|
||||
int __netpoll_rx(struct sk_buff *skb);
|
||||
void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb);
|
||||
void netpoll_send_skb_on_dev(struct netpoll *np, struct sk_buff *skb,
|
||||
struct net_device *dev);
|
||||
static inline void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)
|
||||
{
|
||||
netpoll_send_skb_on_dev(np, skb, np->dev);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef CONFIG_NETPOLL
|
||||
|
||||
+177
-33
@@ -39,6 +39,43 @@
|
||||
* TODO: need more info?
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: Frame transmission/registration support
|
||||
*
|
||||
* Frame transmission and registration support exists to allow userspace
|
||||
* management entities such as wpa_supplicant react to management frames
|
||||
* that are not being handled by the kernel. This includes, for example,
|
||||
* certain classes of action frames that cannot be handled in the kernel
|
||||
* for various reasons.
|
||||
*
|
||||
* Frame registration is done on a per-interface basis and registrations
|
||||
* cannot be removed other than by closing the socket. It is possible to
|
||||
* specify a registration filter to register, for example, only for a
|
||||
* certain type of action frame. In particular with action frames, those
|
||||
* that userspace registers for will not be returned as unhandled by the
|
||||
* driver, so that the registered application has to take responsibility
|
||||
* for doing that.
|
||||
*
|
||||
* The type of frame that can be registered for is also dependent on the
|
||||
* driver and interface type. The frame types are advertised in wiphy
|
||||
* attributes so applications know what to expect.
|
||||
*
|
||||
* NOTE: When an interface changes type while registrations are active,
|
||||
* these registrations are ignored until the interface type is
|
||||
* changed again. This means that changing the interface type can
|
||||
* lead to a situation that couldn't otherwise be produced, but
|
||||
* any such registrations will be dormant in the sense that they
|
||||
* will not be serviced, i.e. they will not receive any frames.
|
||||
*
|
||||
* Frame transmission allows userspace to send for example the required
|
||||
* responses to action frames. It is subject to some sanity checking,
|
||||
* but many frames can be transmitted. When a frame was transmitted, its
|
||||
* status is indicated to the sending socket.
|
||||
*
|
||||
* For more technical details, see the corresponding command descriptions
|
||||
* below.
|
||||
*/
|
||||
|
||||
/**
|
||||
* enum nl80211_commands - supported nl80211 commands
|
||||
*
|
||||
@@ -258,7 +295,9 @@
|
||||
* auth and assoc steps. For this, you need to specify the SSID in a
|
||||
* %NL80211_ATTR_SSID attribute, and can optionally specify the association
|
||||
* IEs in %NL80211_ATTR_IE, %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_MAC,
|
||||
* %NL80211_ATTR_WIPHY_FREQ and %NL80211_ATTR_CONTROL_PORT.
|
||||
* %NL80211_ATTR_WIPHY_FREQ, %NL80211_ATTR_CONTROL_PORT,
|
||||
* %NL80211_ATTR_CONTROL_PORT_ETHERTYPE and
|
||||
* %NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT.
|
||||
* It is also sent as an event, with the BSSID and response IEs when the
|
||||
* connection is established or failed to be established. This can be
|
||||
* determined by the STATUS_CODE attribute.
|
||||
@@ -276,8 +315,8 @@
|
||||
* channel for the specified amount of time. This can be used to do
|
||||
* off-channel operations like transmit a Public Action frame and wait for
|
||||
* a response while being associated to an AP on another channel.
|
||||
* %NL80211_ATTR_WIPHY or %NL80211_ATTR_IFINDEX is used to specify which
|
||||
* radio is used. %NL80211_ATTR_WIPHY_FREQ is used to specify the
|
||||
* %NL80211_ATTR_IFINDEX is used to specify which interface (and thus
|
||||
* radio) is used. %NL80211_ATTR_WIPHY_FREQ is used to specify the
|
||||
* frequency for the operation and %NL80211_ATTR_WIPHY_CHANNEL_TYPE may be
|
||||
* optionally used to specify additional channel parameters.
|
||||
* %NL80211_ATTR_DURATION is used to specify the duration in milliseconds
|
||||
@@ -301,16 +340,20 @@
|
||||
* rate selection. %NL80211_ATTR_IFINDEX is used to specify the interface
|
||||
* and @NL80211_ATTR_TX_RATES the set of allowed rates.
|
||||
*
|
||||
* @NL80211_CMD_REGISTER_ACTION: Register for receiving certain action frames
|
||||
* (via @NL80211_CMD_ACTION) for processing in userspace. This command
|
||||
* requires an interface index and a match attribute containing the first
|
||||
* few bytes of the frame that should match, e.g. a single byte for only
|
||||
* a category match or four bytes for vendor frames including the OUI.
|
||||
* The registration cannot be dropped, but is removed automatically
|
||||
* when the netlink socket is closed. Multiple registrations can be made.
|
||||
* @NL80211_CMD_ACTION: Action frame TX request and RX notification. This
|
||||
* command is used both as a request to transmit an Action frame and as an
|
||||
* event indicating reception of an Action frame that was not processed in
|
||||
* @NL80211_CMD_REGISTER_FRAME: Register for receiving certain mgmt frames
|
||||
* (via @NL80211_CMD_FRAME) for processing in userspace. This command
|
||||
* requires an interface index, a frame type attribute (optional for
|
||||
* backward compatibility reasons, if not given assumes action frames)
|
||||
* and a match attribute containing the first few bytes of the frame
|
||||
* that should match, e.g. a single byte for only a category match or
|
||||
* four bytes for vendor frames including the OUI. The registration
|
||||
* cannot be dropped, but is removed automatically when the netlink
|
||||
* socket is closed. Multiple registrations can be made.
|
||||
* @NL80211_CMD_REGISTER_ACTION: Alias for @NL80211_CMD_REGISTER_FRAME for
|
||||
* backward compatibility
|
||||
* @NL80211_CMD_FRAME: Management frame TX request and RX notification. This
|
||||
* command is used both as a request to transmit a management frame and
|
||||
* as an event indicating reception of a frame that was not processed in
|
||||
* kernel code, but is for us (i.e., which may need to be processed in a
|
||||
* user space application). %NL80211_ATTR_FRAME is used to specify the
|
||||
* frame contents (including header). %NL80211_ATTR_WIPHY_FREQ (and
|
||||
@@ -320,11 +363,14 @@
|
||||
* operational channel). When called, this operation returns a cookie
|
||||
* (%NL80211_ATTR_COOKIE) that will be included with the TX status event
|
||||
* pertaining to the TX request.
|
||||
* @NL80211_CMD_ACTION_TX_STATUS: Report TX status of an Action frame
|
||||
* transmitted with %NL80211_CMD_ACTION. %NL80211_ATTR_COOKIE identifies
|
||||
* @NL80211_CMD_ACTION: Alias for @NL80211_CMD_FRAME for backward compatibility.
|
||||
* @NL80211_CMD_FRAME_TX_STATUS: Report TX status of a management frame
|
||||
* transmitted with %NL80211_CMD_FRAME. %NL80211_ATTR_COOKIE identifies
|
||||
* the TX command and %NL80211_ATTR_FRAME includes the contents of the
|
||||
* frame. %NL80211_ATTR_ACK flag is included if the recipient acknowledged
|
||||
* the frame.
|
||||
* @NL80211_CMD_ACTION_TX_STATUS: Alias for @NL80211_CMD_FRAME_TX_STATUS for
|
||||
* backward compatibility.
|
||||
* @NL80211_CMD_SET_CQM: Connection quality monitor configuration. This command
|
||||
* is used to configure connection quality monitoring notification trigger
|
||||
* levels.
|
||||
@@ -341,6 +387,8 @@
|
||||
* of any other interfaces, and other interfaces will again take
|
||||
* precedence when they are used.
|
||||
*
|
||||
* @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface.
|
||||
*
|
||||
* @NL80211_CMD_MAX: highest used command number
|
||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -429,9 +477,12 @@ enum nl80211_commands {
|
||||
|
||||
NL80211_CMD_SET_TX_BITRATE_MASK,
|
||||
|
||||
NL80211_CMD_REGISTER_ACTION,
|
||||
NL80211_CMD_ACTION,
|
||||
NL80211_CMD_ACTION_TX_STATUS,
|
||||
NL80211_CMD_REGISTER_FRAME,
|
||||
NL80211_CMD_REGISTER_ACTION = NL80211_CMD_REGISTER_FRAME,
|
||||
NL80211_CMD_FRAME,
|
||||
NL80211_CMD_ACTION = NL80211_CMD_FRAME,
|
||||
NL80211_CMD_FRAME_TX_STATUS,
|
||||
NL80211_CMD_ACTION_TX_STATUS = NL80211_CMD_FRAME_TX_STATUS,
|
||||
|
||||
NL80211_CMD_SET_POWER_SAVE,
|
||||
NL80211_CMD_GET_POWER_SAVE,
|
||||
@@ -440,6 +491,7 @@ enum nl80211_commands {
|
||||
NL80211_CMD_NOTIFY_CQM,
|
||||
|
||||
NL80211_CMD_SET_CHANNEL,
|
||||
NL80211_CMD_SET_WDS_PEER,
|
||||
|
||||
/* add new commands above here */
|
||||
|
||||
@@ -639,6 +691,15 @@ enum nl80211_commands {
|
||||
* request, the driver will assume that the port is unauthorized until
|
||||
* authorized by user space. Otherwise, port is marked authorized by
|
||||
* default in station mode.
|
||||
* @NL80211_ATTR_CONTROL_PORT_ETHERTYPE: A 16-bit value indicating the
|
||||
* ethertype that will be used for key negotiation. It can be
|
||||
* specified with the associate and connect commands. If it is not
|
||||
* specified, the value defaults to 0x888E (PAE, 802.1X). This
|
||||
* attribute is also used as a flag in the wiphy information to
|
||||
* indicate that protocols other than PAE are supported.
|
||||
* @NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT: When included along with
|
||||
* %NL80211_ATTR_CONTROL_PORT_ETHERTYPE, indicates that the custom
|
||||
* ethertype frames used for key negotiation must not be encrypted.
|
||||
*
|
||||
* @NL80211_ATTR_TESTDATA: Testmode data blob, passed through to the driver.
|
||||
* We recommend using nested, driver-specific attributes within this.
|
||||
@@ -708,7 +769,16 @@ enum nl80211_commands {
|
||||
* is used with %NL80211_CMD_SET_TX_BITRATE_MASK.
|
||||
*
|
||||
* @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain
|
||||
* at least one byte, currently used with @NL80211_CMD_REGISTER_ACTION.
|
||||
* at least one byte, currently used with @NL80211_CMD_REGISTER_FRAME.
|
||||
* @NL80211_ATTR_FRAME_TYPE: A u16 indicating the frame type/subtype for the
|
||||
* @NL80211_CMD_REGISTER_FRAME command.
|
||||
* @NL80211_ATTR_TX_FRAME_TYPES: wiphy capability attribute, which is a
|
||||
* nested attribute of %NL80211_ATTR_FRAME_TYPE attributes, containing
|
||||
* information about which frame types can be transmitted with
|
||||
* %NL80211_CMD_FRAME.
|
||||
* @NL80211_ATTR_RX_FRAME_TYPES: wiphy capability attribute, which is a
|
||||
* nested attribute of %NL80211_ATTR_FRAME_TYPE attributes, containing
|
||||
* information about which frame types can be registered for RX.
|
||||
*
|
||||
* @NL80211_ATTR_ACK: Flag attribute indicating that the frame was
|
||||
* acknowledged by the recipient.
|
||||
@@ -731,6 +801,9 @@ enum nl80211_commands {
|
||||
* This is used in association with @NL80211_ATTR_WIPHY_TX_POWER_SETTING
|
||||
* for non-automatic settings.
|
||||
*
|
||||
* @NL80211_ATTR_SUPPORT_IBSS_RSN: The device supports IBSS RSN, which mostly
|
||||
* means support for per-station GTKs.
|
||||
*
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -891,6 +964,15 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_WIPHY_TX_POWER_SETTING,
|
||||
NL80211_ATTR_WIPHY_TX_POWER_LEVEL,
|
||||
|
||||
NL80211_ATTR_TX_FRAME_TYPES,
|
||||
NL80211_ATTR_RX_FRAME_TYPES,
|
||||
NL80211_ATTR_FRAME_TYPE,
|
||||
|
||||
NL80211_ATTR_CONTROL_PORT_ETHERTYPE,
|
||||
NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT,
|
||||
|
||||
NL80211_ATTR_SUPPORT_IBSS_RSN,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
@@ -946,8 +1028,10 @@ enum nl80211_attrs {
|
||||
* @NL80211_IFTYPE_WDS: wireless distribution interface
|
||||
* @NL80211_IFTYPE_MONITOR: monitor interface receiving all frames
|
||||
* @NL80211_IFTYPE_MESH_POINT: mesh point
|
||||
* @NL80211_IFTYPE_P2P_CLIENT: P2P client
|
||||
* @NL80211_IFTYPE_P2P_GO: P2P group owner
|
||||
* @NL80211_IFTYPE_MAX: highest interface type number currently defined
|
||||
* @__NL80211_IFTYPE_AFTER_LAST: internal use
|
||||
* @NUM_NL80211_IFTYPES: number of defined interface types
|
||||
*
|
||||
* These values are used with the %NL80211_ATTR_IFTYPE
|
||||
* to set the type of an interface.
|
||||
@@ -962,10 +1046,12 @@ enum nl80211_iftype {
|
||||
NL80211_IFTYPE_WDS,
|
||||
NL80211_IFTYPE_MONITOR,
|
||||
NL80211_IFTYPE_MESH_POINT,
|
||||
NL80211_IFTYPE_P2P_CLIENT,
|
||||
NL80211_IFTYPE_P2P_GO,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_IFTYPE_AFTER_LAST,
|
||||
NL80211_IFTYPE_MAX = __NL80211_IFTYPE_AFTER_LAST - 1
|
||||
NUM_NL80211_IFTYPES,
|
||||
NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -974,11 +1060,14 @@ enum nl80211_iftype {
|
||||
* Station flags. When a station is added to an AP interface, it is
|
||||
* assumed to be already associated (and hence authenticated.)
|
||||
*
|
||||
* @__NL80211_STA_FLAG_INVALID: attribute number 0 is reserved
|
||||
* @NL80211_STA_FLAG_AUTHORIZED: station is authorized (802.1X)
|
||||
* @NL80211_STA_FLAG_SHORT_PREAMBLE: station is capable of receiving frames
|
||||
* with short barker preamble
|
||||
* @NL80211_STA_FLAG_WME: station is WME/QoS capable
|
||||
* @NL80211_STA_FLAG_MFP: station uses management frame protection
|
||||
* @NL80211_STA_FLAG_MAX: highest station flag number currently defined
|
||||
* @__NL80211_STA_FLAG_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl80211_sta_flags {
|
||||
__NL80211_STA_FLAG_INVALID,
|
||||
@@ -1048,6 +1137,8 @@ enum nl80211_rate_info {
|
||||
* @NL80211_STA_INFO_RX_PACKETS: total received packet (u32, from this station)
|
||||
* @NL80211_STA_INFO_TX_PACKETS: total transmitted packets (u32, to this
|
||||
* station)
|
||||
* @NL80211_STA_INFO_TX_RETRIES: total retries (u32, to this station)
|
||||
* @NL80211_STA_INFO_TX_FAILED: total failed packets (u32, to this station)
|
||||
*/
|
||||
enum nl80211_sta_info {
|
||||
__NL80211_STA_INFO_INVALID,
|
||||
@@ -1061,6 +1152,8 @@ enum nl80211_sta_info {
|
||||
NL80211_STA_INFO_TX_BITRATE,
|
||||
NL80211_STA_INFO_RX_PACKETS,
|
||||
NL80211_STA_INFO_TX_PACKETS,
|
||||
NL80211_STA_INFO_TX_RETRIES,
|
||||
NL80211_STA_INFO_TX_FAILED,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_STA_INFO_AFTER_LAST,
|
||||
@@ -1091,14 +1184,17 @@ enum nl80211_mpath_flags {
|
||||
* information about a mesh path.
|
||||
*
|
||||
* @__NL80211_MPATH_INFO_INVALID: attribute number 0 is reserved
|
||||
* @NL80211_ATTR_MPATH_FRAME_QLEN: number of queued frames for this destination
|
||||
* @NL80211_ATTR_MPATH_SN: destination sequence number
|
||||
* @NL80211_ATTR_MPATH_METRIC: metric (cost) of this mesh path
|
||||
* @NL80211_ATTR_MPATH_EXPTIME: expiration time for the path, in msec from now
|
||||
* @NL80211_ATTR_MPATH_FLAGS: mesh path flags, enumerated in
|
||||
* @NL80211_MPATH_INFO_FRAME_QLEN: number of queued frames for this destination
|
||||
* @NL80211_MPATH_INFO_SN: destination sequence number
|
||||
* @NL80211_MPATH_INFO_METRIC: metric (cost) of this mesh path
|
||||
* @NL80211_MPATH_INFO_EXPTIME: expiration time for the path, in msec from now
|
||||
* @NL80211_MPATH_INFO_FLAGS: mesh path flags, enumerated in
|
||||
* &enum nl80211_mpath_flags;
|
||||
* @NL80211_ATTR_MPATH_DISCOVERY_TIMEOUT: total path discovery timeout, in msec
|
||||
* @NL80211_ATTR_MPATH_DISCOVERY_RETRIES: mesh path discovery retries
|
||||
* @NL80211_MPATH_INFO_DISCOVERY_TIMEOUT: total path discovery timeout, in msec
|
||||
* @NL80211_MPATH_INFO_DISCOVERY_RETRIES: mesh path discovery retries
|
||||
* @NL80211_MPATH_INFO_MAX: highest mesh path information attribute number
|
||||
* currently defind
|
||||
* @__NL80211_MPATH_INFO_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl80211_mpath_info {
|
||||
__NL80211_MPATH_INFO_INVALID,
|
||||
@@ -1127,6 +1223,8 @@ enum nl80211_mpath_info {
|
||||
* @NL80211_BAND_ATTR_HT_CAPA: HT capabilities, as in the HT information IE
|
||||
* @NL80211_BAND_ATTR_HT_AMPDU_FACTOR: A-MPDU factor, as in 11n
|
||||
* @NL80211_BAND_ATTR_HT_AMPDU_DENSITY: A-MPDU density, as in 11n
|
||||
* @NL80211_BAND_ATTR_MAX: highest band attribute currently defined
|
||||
* @__NL80211_BAND_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl80211_band_attr {
|
||||
__NL80211_BAND_ATTR_INVALID,
|
||||
@@ -1147,6 +1245,7 @@ enum nl80211_band_attr {
|
||||
|
||||
/**
|
||||
* enum nl80211_frequency_attr - frequency attributes
|
||||
* @__NL80211_FREQUENCY_ATTR_INVALID: attribute number 0 is reserved
|
||||
* @NL80211_FREQUENCY_ATTR_FREQ: Frequency in MHz
|
||||
* @NL80211_FREQUENCY_ATTR_DISABLED: Channel is disabled in current
|
||||
* regulatory domain.
|
||||
@@ -1158,6 +1257,9 @@ enum nl80211_band_attr {
|
||||
* on this channel in current regulatory domain.
|
||||
* @NL80211_FREQUENCY_ATTR_MAX_TX_POWER: Maximum transmission power in mBm
|
||||
* (100 * dBm).
|
||||
* @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number
|
||||
* currently defined
|
||||
* @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl80211_frequency_attr {
|
||||
__NL80211_FREQUENCY_ATTR_INVALID,
|
||||
@@ -1177,9 +1279,13 @@ enum nl80211_frequency_attr {
|
||||
|
||||
/**
|
||||
* enum nl80211_bitrate_attr - bitrate attributes
|
||||
* @__NL80211_BITRATE_ATTR_INVALID: attribute number 0 is reserved
|
||||
* @NL80211_BITRATE_ATTR_RATE: Bitrate in units of 100 kbps
|
||||
* @NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE: Short preamble supported
|
||||
* in 2.4 GHz band.
|
||||
* @NL80211_BITRATE_ATTR_MAX: highest bitrate attribute number
|
||||
* currently defined
|
||||
* @__NL80211_BITRATE_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl80211_bitrate_attr {
|
||||
__NL80211_BITRATE_ATTR_INVALID,
|
||||
@@ -1235,6 +1341,7 @@ enum nl80211_reg_type {
|
||||
|
||||
/**
|
||||
* enum nl80211_reg_rule_attr - regulatory rule attributes
|
||||
* @__NL80211_REG_RULE_ATTR_INVALID: attribute number 0 is reserved
|
||||
* @NL80211_ATTR_REG_RULE_FLAGS: a set of flags which specify additional
|
||||
* considerations for a given frequency range. These are the
|
||||
* &enum nl80211_reg_rule_flags.
|
||||
@@ -1251,6 +1358,9 @@ enum nl80211_reg_type {
|
||||
* If you don't have one then don't send this.
|
||||
* @NL80211_ATTR_POWER_RULE_MAX_EIRP: the maximum allowed EIRP for
|
||||
* a given frequency range. The value is in mBm (100 * dBm).
|
||||
* @NL80211_REG_RULE_ATTR_MAX: highest regulatory rule attribute number
|
||||
* currently defined
|
||||
* @__NL80211_REG_RULE_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl80211_reg_rule_attr {
|
||||
__NL80211_REG_RULE_ATTR_INVALID,
|
||||
@@ -1302,11 +1412,31 @@ enum nl80211_reg_rule_flags {
|
||||
* @__NL80211_SURVEY_INFO_INVALID: attribute number 0 is reserved
|
||||
* @NL80211_SURVEY_INFO_FREQUENCY: center frequency of channel
|
||||
* @NL80211_SURVEY_INFO_NOISE: noise level of channel (u8, dBm)
|
||||
* @NL80211_SURVEY_INFO_IN_USE: channel is currently being used
|
||||
* @NL80211_SURVEY_INFO_CHANNEL_TIME: amount of time (in ms) that the radio
|
||||
* spent on this channel
|
||||
* @NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY: amount of the time the primary
|
||||
* channel was sensed busy (either due to activity or energy detect)
|
||||
* @NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY: amount of time the extension
|
||||
* channel was sensed busy
|
||||
* @NL80211_SURVEY_INFO_CHANNEL_TIME_RX: amount of time the radio spent
|
||||
* receiving data
|
||||
* @NL80211_SURVEY_INFO_CHANNEL_TIME_TX: amount of time the radio spent
|
||||
* transmitting data
|
||||
* @NL80211_SURVEY_INFO_MAX: highest survey info attribute number
|
||||
* currently defined
|
||||
* @__NL80211_SURVEY_INFO_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl80211_survey_info {
|
||||
__NL80211_SURVEY_INFO_INVALID,
|
||||
NL80211_SURVEY_INFO_FREQUENCY,
|
||||
NL80211_SURVEY_INFO_NOISE,
|
||||
NL80211_SURVEY_INFO_IN_USE,
|
||||
NL80211_SURVEY_INFO_CHANNEL_TIME,
|
||||
NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY,
|
||||
NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY,
|
||||
NL80211_SURVEY_INFO_CHANNEL_TIME_RX,
|
||||
NL80211_SURVEY_INFO_CHANNEL_TIME_TX,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_SURVEY_INFO_AFTER_LAST,
|
||||
@@ -1466,6 +1596,7 @@ enum nl80211_channel_type {
|
||||
* enum nl80211_bss - netlink attributes for a BSS
|
||||
*
|
||||
* @__NL80211_BSS_INVALID: invalid
|
||||
* @NL80211_BSS_BSSID: BSSID of the BSS (6 octets)
|
||||
* @NL80211_BSS_FREQUENCY: frequency in MHz (u32)
|
||||
* @NL80211_BSS_TSF: TSF of the received probe response/beacon (u64)
|
||||
* @NL80211_BSS_BEACON_INTERVAL: beacon interval of the (I)BSS (u16)
|
||||
@@ -1509,6 +1640,12 @@ enum nl80211_bss {
|
||||
|
||||
/**
|
||||
* enum nl80211_bss_status - BSS "status"
|
||||
* @NL80211_BSS_STATUS_AUTHENTICATED: Authenticated with this BSS.
|
||||
* @NL80211_BSS_STATUS_ASSOCIATED: Associated with this BSS.
|
||||
* @NL80211_BSS_STATUS_IBSS_JOINED: Joined to this IBSS.
|
||||
*
|
||||
* The BSS status is a BSS attribute in scan dumps, which
|
||||
* indicates the status the interface has wrt. this BSS.
|
||||
*/
|
||||
enum nl80211_bss_status {
|
||||
NL80211_BSS_STATUS_AUTHENTICATED,
|
||||
@@ -1546,11 +1683,14 @@ enum nl80211_auth_type {
|
||||
* @NL80211_KEYTYPE_GROUP: Group (broadcast/multicast) key
|
||||
* @NL80211_KEYTYPE_PAIRWISE: Pairwise (unicast/individual) key
|
||||
* @NL80211_KEYTYPE_PEERKEY: PeerKey (DLS)
|
||||
* @NUM_NL80211_KEYTYPES: number of defined key types
|
||||
*/
|
||||
enum nl80211_key_type {
|
||||
NL80211_KEYTYPE_GROUP,
|
||||
NL80211_KEYTYPE_PAIRWISE,
|
||||
NL80211_KEYTYPE_PEERKEY,
|
||||
|
||||
NUM_NL80211_KEYTYPES
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1581,6 +1721,9 @@ enum nl80211_wpa_versions {
|
||||
* CCMP keys, each six bytes in little endian
|
||||
* @NL80211_KEY_DEFAULT: flag indicating default key
|
||||
* @NL80211_KEY_DEFAULT_MGMT: flag indicating default management key
|
||||
* @NL80211_KEY_TYPE: the key type from enum nl80211_key_type, if not
|
||||
* specified the default depends on whether a MAC address was
|
||||
* given with the command using the key or not (u32)
|
||||
* @__NL80211_KEY_AFTER_LAST: internal
|
||||
* @NL80211_KEY_MAX: highest key attribute
|
||||
*/
|
||||
@@ -1592,6 +1735,7 @@ enum nl80211_key_attributes {
|
||||
NL80211_KEY_SEQ,
|
||||
NL80211_KEY_DEFAULT,
|
||||
NL80211_KEY_DEFAULT_MGMT,
|
||||
NL80211_KEY_TYPE,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_KEY_AFTER_LAST,
|
||||
@@ -1619,8 +1763,8 @@ enum nl80211_tx_rate_attributes {
|
||||
|
||||
/**
|
||||
* enum nl80211_band - Frequency band
|
||||
* @NL80211_BAND_2GHZ - 2.4 GHz ISM band
|
||||
* @NL80211_BAND_5GHZ - around 5 GHz band (4.9 - 5.7 GHz)
|
||||
* @NL80211_BAND_2GHZ: 2.4 GHz ISM band
|
||||
* @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz)
|
||||
*/
|
||||
enum nl80211_band {
|
||||
NL80211_BAND_2GHZ,
|
||||
@@ -1658,9 +1802,9 @@ enum nl80211_attr_cqm {
|
||||
|
||||
/**
|
||||
* enum nl80211_cqm_rssi_threshold_event - RSSI threshold event
|
||||
* @NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW - The RSSI level is lower than the
|
||||
* @NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW: The RSSI level is lower than the
|
||||
* configured threshold
|
||||
* @NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH - The RSSI is higher than the
|
||||
* @NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH: The RSSI is higher than the
|
||||
* configured threshold
|
||||
*/
|
||||
enum nl80211_cqm_rssi_threshold_event {
|
||||
|
||||
@@ -2194,6 +2194,9 @@
|
||||
#define PCI_VENDOR_ID_ARIMA 0x161f
|
||||
|
||||
#define PCI_VENDOR_ID_BROCADE 0x1657
|
||||
#define PCI_DEVICE_ID_BROCADE_CT 0x0014
|
||||
#define PCI_DEVICE_ID_BROCADE_FC_8G1P 0x0017
|
||||
#define PCI_DEVICE_ID_BROCADE_CT_FC 0x0021
|
||||
|
||||
#define PCI_VENDOR_ID_SIBYTE 0x166d
|
||||
#define PCI_DEVICE_ID_BCM1250_PCI 0x0001
|
||||
|
||||
@@ -36,6 +36,9 @@
|
||||
/* Socket options for SOL_PNPIPE level */
|
||||
#define PNPIPE_ENCAP 1
|
||||
#define PNPIPE_IFINDEX 2
|
||||
#define PNPIPE_PIPE_HANDLE 3
|
||||
#define PNPIPE_ENABLE 4
|
||||
/* unused slot */
|
||||
|
||||
#define PNADDR_ANY 0
|
||||
#define PNADDR_BROADCAST 0xFC
|
||||
@@ -47,6 +50,8 @@
|
||||
|
||||
/* ioctls */
|
||||
#define SIOCPNGETOBJECT (SIOCPROTOPRIVATE + 0)
|
||||
#define SIOCPNADDRESOURCE (SIOCPROTOPRIVATE + 14)
|
||||
#define SIOCPNDELRESOURCE (SIOCPROTOPRIVATE + 15)
|
||||
|
||||
/* Phonet protocol header */
|
||||
struct phonethdr {
|
||||
|
||||
+2
-2
@@ -116,7 +116,7 @@ struct mii_bus {
|
||||
/* list of all PHYs on bus */
|
||||
struct phy_device *phy_map[PHY_MAX_ADDR];
|
||||
|
||||
/* Phy addresses to be ignored when probing */
|
||||
/* PHY addresses to be ignored when probing */
|
||||
u32 phy_mask;
|
||||
|
||||
/*
|
||||
@@ -283,7 +283,7 @@ struct phy_device {
|
||||
|
||||
phy_interface_t interface;
|
||||
|
||||
/* Bus address of the PHY (0-32) */
|
||||
/* Bus address of the PHY (0-31) */
|
||||
int addr;
|
||||
|
||||
/*
|
||||
|
||||
@@ -332,6 +332,7 @@ enum {
|
||||
FLOW_KEY_SKUID,
|
||||
FLOW_KEY_SKGID,
|
||||
FLOW_KEY_VLAN_TAG,
|
||||
FLOW_KEY_RXHASH,
|
||||
__FLOW_KEY_MAX,
|
||||
};
|
||||
|
||||
|
||||
+65
-50
@@ -36,15 +36,6 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* These sparse annotated types shouldn't be in any user
|
||||
* visible header file. We should clean this up rather
|
||||
* than kludging around them. */
|
||||
#ifndef __KERNEL__
|
||||
#define __be16 u_int16_t
|
||||
#define __be32 u_int32_t
|
||||
#define __be64 u_int64_t
|
||||
#endif
|
||||
|
||||
#define RDS_IB_ABI_VERSION 0x301
|
||||
|
||||
/*
|
||||
@@ -82,6 +73,10 @@
|
||||
#define RDS_CMSG_RDMA_MAP 3
|
||||
#define RDS_CMSG_RDMA_STATUS 4
|
||||
#define RDS_CMSG_CONG_UPDATE 5
|
||||
#define RDS_CMSG_ATOMIC_FADD 6
|
||||
#define RDS_CMSG_ATOMIC_CSWP 7
|
||||
#define RDS_CMSG_MASKED_ATOMIC_FADD 8
|
||||
#define RDS_CMSG_MASKED_ATOMIC_CSWP 9
|
||||
|
||||
#define RDS_INFO_FIRST 10000
|
||||
#define RDS_INFO_COUNTERS 10000
|
||||
@@ -98,9 +93,9 @@
|
||||
#define RDS_INFO_LAST 10010
|
||||
|
||||
struct rds_info_counter {
|
||||
u_int8_t name[32];
|
||||
u_int64_t value;
|
||||
} __packed;
|
||||
uint8_t name[32];
|
||||
uint64_t value;
|
||||
} __attribute__((packed));
|
||||
|
||||
#define RDS_INFO_CONNECTION_FLAG_SENDING 0x01
|
||||
#define RDS_INFO_CONNECTION_FLAG_CONNECTING 0x02
|
||||
@@ -109,56 +104,48 @@ struct rds_info_counter {
|
||||
#define TRANSNAMSIZ 16
|
||||
|
||||
struct rds_info_connection {
|
||||
u_int64_t next_tx_seq;
|
||||
u_int64_t next_rx_seq;
|
||||
uint64_t next_tx_seq;
|
||||
uint64_t next_rx_seq;
|
||||
__be32 laddr;
|
||||
__be32 faddr;
|
||||
u_int8_t transport[TRANSNAMSIZ]; /* null term ascii */
|
||||
u_int8_t flags;
|
||||
} __packed;
|
||||
|
||||
struct rds_info_flow {
|
||||
__be32 laddr;
|
||||
__be32 faddr;
|
||||
u_int32_t bytes;
|
||||
__be16 lport;
|
||||
__be16 fport;
|
||||
} __packed;
|
||||
uint8_t transport[TRANSNAMSIZ]; /* null term ascii */
|
||||
uint8_t flags;
|
||||
} __attribute__((packed));
|
||||
|
||||
#define RDS_INFO_MESSAGE_FLAG_ACK 0x01
|
||||
#define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02
|
||||
|
||||
struct rds_info_message {
|
||||
u_int64_t seq;
|
||||
u_int32_t len;
|
||||
uint64_t seq;
|
||||
uint32_t len;
|
||||
__be32 laddr;
|
||||
__be32 faddr;
|
||||
__be16 lport;
|
||||
__be16 fport;
|
||||
u_int8_t flags;
|
||||
} __packed;
|
||||
uint8_t flags;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct rds_info_socket {
|
||||
u_int32_t sndbuf;
|
||||
uint32_t sndbuf;
|
||||
__be32 bound_addr;
|
||||
__be32 connected_addr;
|
||||
__be16 bound_port;
|
||||
__be16 connected_port;
|
||||
u_int32_t rcvbuf;
|
||||
u_int64_t inum;
|
||||
} __packed;
|
||||
uint32_t rcvbuf;
|
||||
uint64_t inum;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct rds_info_tcp_socket {
|
||||
__be32 local_addr;
|
||||
__be16 local_port;
|
||||
__be32 peer_addr;
|
||||
__be16 peer_port;
|
||||
u_int64_t hdr_rem;
|
||||
u_int64_t data_rem;
|
||||
u_int32_t last_sent_nxt;
|
||||
u_int32_t last_expected_una;
|
||||
u_int32_t last_seen_una;
|
||||
} __packed;
|
||||
uint64_t hdr_rem;
|
||||
uint64_t data_rem;
|
||||
uint32_t last_sent_nxt;
|
||||
uint32_t last_expected_una;
|
||||
uint32_t last_seen_una;
|
||||
} __attribute__((packed));
|
||||
|
||||
#define RDS_IB_GID_LEN 16
|
||||
struct rds_info_rdma_connection {
|
||||
@@ -212,42 +199,69 @@ struct rds_info_rdma_connection {
|
||||
* (so that the application does not have to worry about
|
||||
* alignment).
|
||||
*/
|
||||
typedef u_int64_t rds_rdma_cookie_t;
|
||||
typedef uint64_t rds_rdma_cookie_t;
|
||||
|
||||
struct rds_iovec {
|
||||
u_int64_t addr;
|
||||
u_int64_t bytes;
|
||||
uint64_t addr;
|
||||
uint64_t bytes;
|
||||
};
|
||||
|
||||
struct rds_get_mr_args {
|
||||
struct rds_iovec vec;
|
||||
u_int64_t cookie_addr;
|
||||
uint64_t cookie_addr;
|
||||
uint64_t flags;
|
||||
};
|
||||
|
||||
struct rds_get_mr_for_dest_args {
|
||||
struct sockaddr_storage dest_addr;
|
||||
struct rds_iovec vec;
|
||||
u_int64_t cookie_addr;
|
||||
uint64_t cookie_addr;
|
||||
uint64_t flags;
|
||||
};
|
||||
|
||||
struct rds_free_mr_args {
|
||||
rds_rdma_cookie_t cookie;
|
||||
u_int64_t flags;
|
||||
uint64_t flags;
|
||||
};
|
||||
|
||||
struct rds_rdma_args {
|
||||
rds_rdma_cookie_t cookie;
|
||||
struct rds_iovec remote_vec;
|
||||
u_int64_t local_vec_addr;
|
||||
u_int64_t nr_local;
|
||||
u_int64_t flags;
|
||||
u_int64_t user_token;
|
||||
uint64_t local_vec_addr;
|
||||
uint64_t nr_local;
|
||||
uint64_t flags;
|
||||
uint64_t user_token;
|
||||
};
|
||||
|
||||
struct rds_atomic_args {
|
||||
rds_rdma_cookie_t cookie;
|
||||
uint64_t local_addr;
|
||||
uint64_t remote_addr;
|
||||
union {
|
||||
struct {
|
||||
uint64_t compare;
|
||||
uint64_t swap;
|
||||
} cswp;
|
||||
struct {
|
||||
uint64_t add;
|
||||
} fadd;
|
||||
struct {
|
||||
uint64_t compare;
|
||||
uint64_t swap;
|
||||
uint64_t compare_mask;
|
||||
uint64_t swap_mask;
|
||||
} m_cswp;
|
||||
struct {
|
||||
uint64_t add;
|
||||
uint64_t nocarry_mask;
|
||||
} m_fadd;
|
||||
};
|
||||
uint64_t flags;
|
||||
uint64_t user_token;
|
||||
};
|
||||
|
||||
struct rds_rdma_notify {
|
||||
u_int64_t user_token;
|
||||
uint64_t user_token;
|
||||
int32_t status;
|
||||
};
|
||||
|
||||
@@ -266,5 +280,6 @@ struct rds_rdma_notify {
|
||||
#define RDS_RDMA_USE_ONCE 0x0008 /* free MR after use */
|
||||
#define RDS_RDMA_DONTWAIT 0x0010 /* Don't wait in SET_BARRIER */
|
||||
#define RDS_RDMA_NOTIFY_ME 0x0020 /* Notify when operation completes */
|
||||
#define RDS_RDMA_SILENT 0x0040 /* Do not interrupt remote */
|
||||
|
||||
#endif /* IB_RDS_H */
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <linux/if_link.h>
|
||||
#include <linux/if_addr.h>
|
||||
#include <linux/neighbour.h>
|
||||
#include <linux/netdevice.h>
|
||||
|
||||
/* rtnetlink families. Values up to 127 are reserved for real address
|
||||
* families, values above 128 may be used arbitrarily.
|
||||
@@ -749,6 +750,35 @@ extern int rtnl_is_locked(void);
|
||||
extern int lockdep_rtnl_is_held(void);
|
||||
#endif /* #ifdef CONFIG_PROVE_LOCKING */
|
||||
|
||||
/**
|
||||
* rcu_dereference_rtnl - rcu_dereference with debug checking
|
||||
* @p: The pointer to read, prior to dereferencing
|
||||
*
|
||||
* Do an rcu_dereference(p), but check caller either holds rcu_read_lock()
|
||||
* or RTNL. Note : Please prefer rtnl_dereference() or rcu_dereference()
|
||||
*/
|
||||
#define rcu_dereference_rtnl(p) \
|
||||
rcu_dereference_check(p, rcu_read_lock_held() || \
|
||||
lockdep_rtnl_is_held())
|
||||
|
||||
/**
|
||||
* rtnl_dereference - fetch RCU pointer when updates are prevented by RTNL
|
||||
* @p: The pointer to read, prior to dereferencing
|
||||
*
|
||||
* Return the value of the specified RCU-protected pointer, but omit
|
||||
* both the smp_read_barrier_depends() and the ACCESS_ONCE(), because
|
||||
* caller holds RTNL.
|
||||
*/
|
||||
#define rtnl_dereference(p) \
|
||||
rcu_dereference_protected(p, lockdep_rtnl_is_held())
|
||||
|
||||
static inline struct netdev_queue *dev_ingress_queue(struct net_device *dev)
|
||||
{
|
||||
return rtnl_dereference(dev->ingress_queue);
|
||||
}
|
||||
|
||||
extern struct netdev_queue *dev_ingress_queue_create(struct net_device *dev);
|
||||
|
||||
extern void rtnetlink_init(void);
|
||||
extern void __rtnl_unlock(void);
|
||||
|
||||
|
||||
+67
-50
@@ -129,8 +129,13 @@ typedef struct skb_frag_struct skb_frag_t;
|
||||
|
||||
struct skb_frag_struct {
|
||||
struct page *page;
|
||||
#if (BITS_PER_LONG > 32) || (PAGE_SIZE >= 65536)
|
||||
__u32 page_offset;
|
||||
__u32 size;
|
||||
#else
|
||||
__u16 page_offset;
|
||||
__u16 size;
|
||||
#endif
|
||||
};
|
||||
|
||||
#define HAVE_HW_TIME_STAMP
|
||||
@@ -163,26 +168,19 @@ struct skb_shared_hwtstamps {
|
||||
ktime_t syststamp;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct skb_shared_tx - instructions for time stamping of outgoing packets
|
||||
* @hardware: generate hardware time stamp
|
||||
* @software: generate software time stamp
|
||||
* @in_progress: device driver is going to provide
|
||||
* hardware time stamp
|
||||
* @prevent_sk_orphan: make sk reference available on driver level
|
||||
* @flags: all shared_tx flags
|
||||
*
|
||||
* These flags are attached to packets as part of the
|
||||
* &skb_shared_info. Use skb_tx() to get a pointer.
|
||||
*/
|
||||
union skb_shared_tx {
|
||||
struct {
|
||||
__u8 hardware:1,
|
||||
software:1,
|
||||
in_progress:1,
|
||||
prevent_sk_orphan:1;
|
||||
};
|
||||
__u8 flags;
|
||||
/* Definitions for tx_flags in struct skb_shared_info */
|
||||
enum {
|
||||
/* generate hardware time stamp */
|
||||
SKBTX_HW_TSTAMP = 1 << 0,
|
||||
|
||||
/* generate software time stamp */
|
||||
SKBTX_SW_TSTAMP = 1 << 1,
|
||||
|
||||
/* device driver is going to provide hardware time stamp */
|
||||
SKBTX_IN_PROGRESS = 1 << 2,
|
||||
|
||||
/* ensure the originating sk reference is available on driver level */
|
||||
SKBTX_DRV_NEEDS_SK_REF = 1 << 3,
|
||||
};
|
||||
|
||||
/* This data is invariant across clones and lives at
|
||||
@@ -195,7 +193,7 @@ struct skb_shared_info {
|
||||
unsigned short gso_segs;
|
||||
unsigned short gso_type;
|
||||
__be32 ip6_frag_id;
|
||||
union skb_shared_tx tx_flags;
|
||||
__u8 tx_flags;
|
||||
struct sk_buff *frag_list;
|
||||
struct skb_shared_hwtstamps hwtstamps;
|
||||
|
||||
@@ -462,19 +460,7 @@ static inline void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst)
|
||||
skb->_skb_refdst = (unsigned long)dst;
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_dst_set_noref - sets skb dst, without a reference
|
||||
* @skb: buffer
|
||||
* @dst: dst entry
|
||||
*
|
||||
* Sets skb dst, assuming a reference was not taken on dst
|
||||
* skb_dst_drop() should not dst_release() this dst
|
||||
*/
|
||||
static inline void skb_dst_set_noref(struct sk_buff *skb, struct dst_entry *dst)
|
||||
{
|
||||
WARN_ON(!rcu_read_lock_held() && !rcu_read_lock_bh_held());
|
||||
skb->_skb_refdst = (unsigned long)dst | SKB_DST_NOREF;
|
||||
}
|
||||
extern void skb_dst_set_noref(struct sk_buff *skb, struct dst_entry *dst);
|
||||
|
||||
/**
|
||||
* skb_dst_is_noref - Test if skb dst isnt refcounted
|
||||
@@ -498,13 +484,13 @@ extern struct sk_buff *__alloc_skb(unsigned int size,
|
||||
static inline struct sk_buff *alloc_skb(unsigned int size,
|
||||
gfp_t priority)
|
||||
{
|
||||
return __alloc_skb(size, priority, 0, -1);
|
||||
return __alloc_skb(size, priority, 0, NUMA_NO_NODE);
|
||||
}
|
||||
|
||||
static inline struct sk_buff *alloc_skb_fclone(unsigned int size,
|
||||
gfp_t priority)
|
||||
{
|
||||
return __alloc_skb(size, priority, 1, -1);
|
||||
return __alloc_skb(size, priority, 1, NUMA_NO_NODE);
|
||||
}
|
||||
|
||||
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,
|
||||
unsigned int to, struct ts_config *config,
|
||||
struct ts_state *state);
|
||||
|
||||
extern __u32 __skb_get_rxhash(struct sk_buff *skb);
|
||||
static inline __u32 skb_get_rxhash(struct sk_buff *skb)
|
||||
{
|
||||
if (!skb->rxhash)
|
||||
skb->rxhash = __skb_get_rxhash(skb);
|
||||
|
||||
return skb->rxhash;
|
||||
}
|
||||
|
||||
#ifdef NET_SKBUFF_DATA_USES_OFFSET
|
||||
static inline unsigned char *skb_end_pointer(const struct sk_buff *skb)
|
||||
{
|
||||
@@ -578,11 +573,6 @@ static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb)
|
||||
return &skb_shinfo(skb)->hwtstamps;
|
||||
}
|
||||
|
||||
static inline union skb_shared_tx *skb_tx(struct sk_buff *skb)
|
||||
{
|
||||
return &skb_shinfo(skb)->tx_flags;
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_queue_empty - check if a queue is empty
|
||||
* @list: queue head
|
||||
@@ -604,7 +594,7 @@ static inline int skb_queue_empty(const struct sk_buff_head *list)
|
||||
static inline bool skb_queue_is_last(const struct sk_buff_head *list,
|
||||
const struct sk_buff *skb)
|
||||
{
|
||||
return (skb->next == (struct sk_buff *) list);
|
||||
return skb->next == (struct sk_buff *)list;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -617,7 +607,7 @@ static inline bool skb_queue_is_last(const struct sk_buff_head *list,
|
||||
static inline bool skb_queue_is_first(const struct sk_buff_head *list,
|
||||
const struct sk_buff *skb)
|
||||
{
|
||||
return (skb->prev == (struct sk_buff *) list);
|
||||
return skb->prev == (struct sk_buff *)list;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1123,7 +1113,7 @@ extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page,
|
||||
int off, int size);
|
||||
|
||||
#define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags)
|
||||
#define SKB_FRAG_ASSERT(skb) BUG_ON(skb_has_frags(skb))
|
||||
#define SKB_FRAG_ASSERT(skb) BUG_ON(skb_has_frag_list(skb))
|
||||
#define SKB_LINEAR_ASSERT(skb) BUG_ON(skb_is_nonlinear(skb))
|
||||
|
||||
#ifdef NET_SKBUFF_DATA_USES_OFFSET
|
||||
@@ -1561,13 +1551,25 @@ static inline struct sk_buff *netdev_alloc_skb_ip_align(struct net_device *dev,
|
||||
return skb;
|
||||
}
|
||||
|
||||
extern struct page *__netdev_alloc_page(struct net_device *dev, gfp_t gfp_mask);
|
||||
/**
|
||||
* __netdev_alloc_page - allocate a page for ps-rx on a specific device
|
||||
* @dev: network device to receive on
|
||||
* @gfp_mask: alloc_pages_node mask
|
||||
*
|
||||
* Allocate a new page. dev currently unused.
|
||||
*
|
||||
* %NULL is returned if there is no free memory.
|
||||
*/
|
||||
static inline struct page *__netdev_alloc_page(struct net_device *dev, gfp_t gfp_mask)
|
||||
{
|
||||
return alloc_pages_node(NUMA_NO_NODE, gfp_mask, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* netdev_alloc_page - allocate a page for ps-rx on a specific device
|
||||
* @dev: network device to receive on
|
||||
*
|
||||
* Allocate a new page node local to the specified device.
|
||||
* Allocate a new page. dev currently unused.
|
||||
*
|
||||
* %NULL is returned if there is no free memory.
|
||||
*/
|
||||
@@ -1787,7 +1789,7 @@ static inline int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len)
|
||||
skb = skb->prev)
|
||||
|
||||
|
||||
static inline bool skb_has_frags(const struct sk_buff *skb)
|
||||
static inline bool skb_has_frag_list(const struct sk_buff *skb)
|
||||
{
|
||||
return skb_shinfo(skb)->frag_list != NULL;
|
||||
}
|
||||
@@ -1987,8 +1989,8 @@ extern void skb_tstamp_tx(struct sk_buff *orig_skb,
|
||||
|
||||
static inline void sw_tx_timestamp(struct sk_buff *skb)
|
||||
{
|
||||
union skb_shared_tx *shtx = skb_tx(skb);
|
||||
if (shtx->software && !shtx->in_progress)
|
||||
if (skb_shinfo(skb)->tx_flags & SKBTX_SW_TSTAMP &&
|
||||
!(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS))
|
||||
skb_tstamp_tx(skb, NULL);
|
||||
}
|
||||
|
||||
@@ -2159,7 +2161,7 @@ static inline u16 skb_get_rx_queue(const struct sk_buff *skb)
|
||||
|
||||
static inline bool skb_rx_queue_recorded(const struct sk_buff *skb)
|
||||
{
|
||||
return (skb->queue_mapping != 0);
|
||||
return skb->queue_mapping != 0;
|
||||
}
|
||||
|
||||
extern u16 skb_tx_hash(const struct net_device *dev,
|
||||
@@ -2209,6 +2211,21 @@ static inline void skb_forward_csum(struct sk_buff *skb)
|
||||
skb->ip_summed = CHECKSUM_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_checksum_none_assert - make sure skb ip_summed is CHECKSUM_NONE
|
||||
* @skb: skb to check
|
||||
*
|
||||
* fresh skbs have their ip_summed set to CHECKSUM_NONE.
|
||||
* Instead of forcing ip_summed to CHECKSUM_NONE, we can
|
||||
* use this helper, to document places where we make this assertion.
|
||||
*/
|
||||
static inline void skb_checksum_none_assert(struct sk_buff *skb)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
BUG_ON(skb->ip_summed != CHECKSUM_NONE);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off);
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _LINUX_SKBUFF_H */
|
||||
|
||||
@@ -326,7 +326,6 @@ extern long verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *a
|
||||
extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len);
|
||||
extern int memcpy_toiovecend(const struct iovec *v, unsigned char *kdata,
|
||||
int offset, int len);
|
||||
extern int move_addr_to_user(struct sockaddr *kaddr, int klen, void __user *uaddr, int __user *ulen);
|
||||
extern int move_addr_to_kernel(void __user *uaddr, int ulen, struct sockaddr *kaddr);
|
||||
extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data);
|
||||
|
||||
|
||||
@@ -97,6 +97,7 @@
|
||||
#define SSB_TMSLOW_RESET 0x00000001 /* Reset */
|
||||
#define SSB_TMSLOW_REJECT_22 0x00000002 /* Reject (Backplane rev 2.2) */
|
||||
#define SSB_TMSLOW_REJECT_23 0x00000004 /* Reject (Backplane rev 2.3) */
|
||||
#define SSB_TMSLOW_PHYCLK 0x00000010 /* MAC PHY Clock Control Enable */
|
||||
#define SSB_TMSLOW_CLOCK 0x00010000 /* Clock Enable */
|
||||
#define SSB_TMSLOW_FGC 0x00020000 /* Force Gated Clocks On */
|
||||
#define SSB_TMSLOW_PE 0x40000000 /* Power Management Enable */
|
||||
|
||||
@@ -32,10 +32,14 @@
|
||||
struct plat_stmmacenet_data {
|
||||
int bus_id;
|
||||
int pbl;
|
||||
int clk_csr;
|
||||
int has_gmac;
|
||||
int enh_desc;
|
||||
int tx_coe;
|
||||
int bugged_jumbo;
|
||||
int pmt;
|
||||
void (*fix_mac_speed)(void *priv, unsigned int speed);
|
||||
void (*bus_setup)(unsigned long ioaddr);
|
||||
void (*bus_setup)(void __iomem *ioaddr);
|
||||
#ifdef CONFIG_STM_DRIVERS
|
||||
struct stm_pad_config *pad_config;
|
||||
#endif
|
||||
|
||||
@@ -4,3 +4,4 @@ header-y += tc_mirred.h
|
||||
header-y += tc_pedit.h
|
||||
header-y += tc_nat.h
|
||||
header-y += tc_skbedit.h
|
||||
header-y += tc_csum.h
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
#ifndef __LINUX_TC_CSUM_H
|
||||
#define __LINUX_TC_CSUM_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/pkt_cls.h>
|
||||
|
||||
#define TCA_ACT_CSUM 16
|
||||
|
||||
enum {
|
||||
TCA_CSUM_UNSPEC,
|
||||
TCA_CSUM_PARMS,
|
||||
TCA_CSUM_TM,
|
||||
__TCA_CSUM_MAX
|
||||
};
|
||||
#define TCA_CSUM_MAX (__TCA_CSUM_MAX - 1)
|
||||
|
||||
enum {
|
||||
TCA_CSUM_UPDATE_FLAG_IPV4HDR = 1,
|
||||
TCA_CSUM_UPDATE_FLAG_ICMP = 2,
|
||||
TCA_CSUM_UPDATE_FLAG_IGMP = 4,
|
||||
TCA_CSUM_UPDATE_FLAG_TCP = 8,
|
||||
TCA_CSUM_UPDATE_FLAG_UDP = 16,
|
||||
TCA_CSUM_UPDATE_FLAG_UDPLITE = 32
|
||||
};
|
||||
|
||||
struct tc_csum {
|
||||
tc_gen;
|
||||
|
||||
__u32 update_flags;
|
||||
};
|
||||
|
||||
#endif /* __LINUX_TC_CSUM_H */
|
||||
@@ -79,6 +79,7 @@ enum {
|
||||
TCF_META_ID_SK_SENDMSG_OFF,
|
||||
TCF_META_ID_SK_WRITE_PENDING,
|
||||
TCF_META_ID_VLAN_TAG,
|
||||
TCF_META_ID_RXHASH,
|
||||
__TCF_META_ID_MAX
|
||||
};
|
||||
#define TCF_META_ID_MAX (__TCF_META_ID_MAX - 1)
|
||||
|
||||
@@ -105,6 +105,7 @@ enum {
|
||||
#define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */
|
||||
#define TCP_THIN_LINEAR_TIMEOUTS 16 /* Use linear timeouts for thin streams*/
|
||||
#define TCP_THIN_DUPACK 17 /* Fast retrans. after 1 dupack */
|
||||
#define TCP_USER_TIMEOUT 18 /* How long for loss retry before timeout */
|
||||
|
||||
/* for TCP_INFO socket option */
|
||||
#define TCPI_OPT_TIMESTAMPS 1
|
||||
|
||||
+18
-12
@@ -127,17 +127,23 @@ static inline unsigned int tipc_node(__u32 addr)
|
||||
* TIPC topology subscription service definitions
|
||||
*/
|
||||
|
||||
#define TIPC_SUB_SERVICE 0x00 /* Filter for service availability */
|
||||
#define TIPC_SUB_PORTS 0x01 /* Filter for port availability */
|
||||
#define TIPC_SUB_CANCEL 0x04 /* Cancel a subscription */
|
||||
#define TIPC_SUB_PORTS 0x01 /* filter for port availability */
|
||||
#define TIPC_SUB_SERVICE 0x02 /* filter for service availability */
|
||||
#define TIPC_SUB_CANCEL 0x04 /* cancel a subscription */
|
||||
#if 0
|
||||
/* The following filter options are not currently implemented */
|
||||
#define TIPC_SUB_NO_BIND_EVTS 0x04 /* filter out "publish" events */
|
||||
#define TIPC_SUB_NO_UNBIND_EVTS 0x08 /* filter out "withdraw" events */
|
||||
#define TIPC_SUB_SINGLE_EVT 0x10 /* expire after first event */
|
||||
#endif
|
||||
|
||||
#define TIPC_WAIT_FOREVER ~0 /* timeout for permanent subscription */
|
||||
|
||||
struct tipc_subscr {
|
||||
struct tipc_name_seq seq; /* NBO. Name sequence of interest */
|
||||
__u32 timeout; /* NBO. Subscription duration (in ms) */
|
||||
__u32 filter; /* NBO. Bitmask of filter options */
|
||||
char usr_handle[8]; /* Opaque. Available for subscriber use */
|
||||
struct tipc_name_seq seq; /* name sequence of interest */
|
||||
__u32 timeout; /* subscription duration (in ms) */
|
||||
__u32 filter; /* bitmask of filter options */
|
||||
char usr_handle[8]; /* available for subscriber use */
|
||||
};
|
||||
|
||||
#define TIPC_PUBLISHED 1 /* publication event */
|
||||
@@ -145,11 +151,11 @@ struct tipc_subscr {
|
||||
#define TIPC_SUBSCR_TIMEOUT 3 /* subscription timeout event */
|
||||
|
||||
struct tipc_event {
|
||||
__u32 event; /* NBO. Event type, as defined above */
|
||||
__u32 found_lower; /* NBO. Matching name seq instances */
|
||||
__u32 found_upper; /* " " " " " */
|
||||
struct tipc_portid port; /* NBO. Associated port */
|
||||
struct tipc_subscr s; /* Original, associated subscription */
|
||||
__u32 event; /* event type */
|
||||
__u32 found_lower; /* matching name seq instances */
|
||||
__u32 found_upper; /* " " " " */
|
||||
struct tipc_portid port; /* associated port */
|
||||
struct tipc_subscr s; /* associated subscription */
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -1157,6 +1157,6 @@ struct __compat_iw_event {
|
||||
#define IW_EV_PARAM_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct iw_param))
|
||||
#define IW_EV_ADDR_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct sockaddr))
|
||||
#define IW_EV_QUAL_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct iw_quality))
|
||||
#define IW_EV_POINT_PK_LEN (IW_EV_LCP_LEN + 4)
|
||||
#define IW_EV_POINT_PK_LEN (IW_EV_LCP_PK_LEN + 4)
|
||||
|
||||
#endif /* _LINUX_WIRELESS_H */
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (C) 2009 Nokia Corporation
|
||||
*
|
||||
* Contact: Kalle Valo <kalle.valo@nokia.com>
|
||||
* Contact: Luciano Coelho <luciano.coelho@nokia.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -21,14 +21,31 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_SPI_WL12XX_H
|
||||
#define _LINUX_SPI_WL12XX_H
|
||||
#ifndef _LINUX_WL12XX_H
|
||||
#define _LINUX_WL12XX_H
|
||||
|
||||
struct wl12xx_platform_data {
|
||||
void (*set_power)(bool enable);
|
||||
/* SDIO only: IRQ number if WLAN_IRQ line is used, 0 for SDIO IRQs */
|
||||
int irq;
|
||||
bool use_eeprom;
|
||||
int board_ref_clock;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_WL12XX_PLATFORM_DATA
|
||||
|
||||
int wl12xx_set_platform_data(const struct wl12xx_platform_data *data);
|
||||
|
||||
#else
|
||||
|
||||
static inline
|
||||
int wl12xx_set_platform_data(const struct wl12xx_platform_data *data)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
const struct wl12xx_platform_data *wl12xx_get_platform_data(void);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user