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: (1674 commits) qlcnic: adding co maintainer ixgbe: add support for active DA cables ixgbe: dcb, do not tag tc_prio_control frames ixgbe: fix ixgbe_tx_is_paused logic ixgbe: always enable vlan strip/insert when DCB is enabled ixgbe: remove some redundant code in setting FCoE FIP filter ixgbe: fix wrong offset to fc_frame_header in ixgbe_fcoe_ddp ixgbe: fix header len when unsplit packet overflows to data buffer ipv6: Never schedule DAD timer on dead address ipv6: Use POSTDAD state ipv6: Use state_lock to protect ifa state ipv6: Replace inet6_ifaddr->dead with state cxgb4: notify upper drivers if the device is already up when they load cxgb4: keep interrupts available when the ports are brought down cxgb4: fix initial addition of MAC address cnic: Return SPQ credit to bnx2x after ring setup and shutdown. cnic: Convert cnic_local_flags to atomic ops. can: Fix SJA1000 command register writes on SMP systems bridge: fix build for CONFIG_SYSFS disabled ARCNET: Limit com20020 PCI ID matches for SOHARD cards ... Fix up various conflicts with pcmcia tree drivers/net/ {pcmcia/3c589_cs.c, wireless/orinoco/orinoco_cs.c and wireless/orinoco/spectrum_cs.c} and feature removal (Documentation/feature-removal-schedule.txt). Also fix a non-content conflict due to pm_qos_requirement getting renamed in the PM tree (now pm_qos_request) in net/mac80211/scan.c
This commit is contained in:
@@ -94,6 +94,7 @@ header-y += if_ppp.h
|
||||
header-y += if_slip.h
|
||||
header-y += if_strip.h
|
||||
header-y += if_tun.h
|
||||
header-y += if_x25.h
|
||||
header-y += in_route.h
|
||||
header-y += ioctl.h
|
||||
header-y += ip6_tunnel.h
|
||||
|
165
include/linux/caif/caif_socket.h
Normal file
165
include/linux/caif/caif_socket.h
Normal file
@@ -0,0 +1,165 @@
|
||||
/* linux/caif_socket.h
|
||||
* CAIF Definitions for CAIF socket and network layer
|
||||
* Copyright (C) ST-Ericsson AB 2010
|
||||
* Author: Sjur Brendeland/ sjur.brandeland@stericsson.com
|
||||
* License terms: GNU General Public License (GPL) version 2
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_CAIF_SOCKET_H
|
||||
#define _LINUX_CAIF_SOCKET_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/socket.h>
|
||||
#else
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
|
||||
/**
|
||||
* enum caif_link_selector - Physical Link Selection.
|
||||
* @CAIF_LINK_HIGH_BANDW: Physical interface for high-bandwidth
|
||||
* traffic.
|
||||
* @CAIF_LINK_LOW_LATENCY: Physical interface for low-latency
|
||||
* traffic.
|
||||
*
|
||||
* CAIF Link Layers can register their link properties.
|
||||
* This enum is used for choosing between CAIF Link Layers when
|
||||
* setting up CAIF Channels when multiple CAIF Link Layers exists.
|
||||
*/
|
||||
enum caif_link_selector {
|
||||
CAIF_LINK_HIGH_BANDW,
|
||||
CAIF_LINK_LOW_LATENCY
|
||||
};
|
||||
|
||||
/**
|
||||
* enum caif_channel_priority - CAIF channel priorities.
|
||||
*
|
||||
* @CAIF_PRIO_MIN: Min priority for a channel.
|
||||
* @CAIF_PRIO_LOW: Low-priority channel.
|
||||
* @CAIF_PRIO_NORMAL: Normal/default priority level.
|
||||
* @CAIF_PRIO_HIGH: High priority level
|
||||
* @CAIF_PRIO_MAX: Max priority for channel
|
||||
*
|
||||
* Priority can be set on CAIF Channels in order to
|
||||
* prioritize between traffic on different CAIF Channels.
|
||||
* These priority levels are recommended, but the priority value
|
||||
* is not restricted to the values defined in this enum, any value
|
||||
* between CAIF_PRIO_MIN and CAIF_PRIO_MAX could be used.
|
||||
*/
|
||||
enum caif_channel_priority {
|
||||
CAIF_PRIO_MIN = 0x01,
|
||||
CAIF_PRIO_LOW = 0x04,
|
||||
CAIF_PRIO_NORMAL = 0x0f,
|
||||
CAIF_PRIO_HIGH = 0x14,
|
||||
CAIF_PRIO_MAX = 0x1F
|
||||
};
|
||||
|
||||
/**
|
||||
* enum caif_protocol_type - CAIF Channel type.
|
||||
* @CAIFPROTO_AT: Classic AT channel.
|
||||
* @CAIFPROTO_DATAGRAM: Datagram channel.
|
||||
* @CAIFPROTO_DATAGRAM_LOOP: Datagram loopback channel, used for testing.
|
||||
* @CAIFPROTO_UTIL: Utility (Psock) channel.
|
||||
* @CAIFPROTO_RFM: Remote File Manager
|
||||
*
|
||||
* This enum defines the CAIF Channel type to be used. This defines
|
||||
* the service to connect to on the modem.
|
||||
*/
|
||||
enum caif_protocol_type {
|
||||
CAIFPROTO_AT,
|
||||
CAIFPROTO_DATAGRAM,
|
||||
CAIFPROTO_DATAGRAM_LOOP,
|
||||
CAIFPROTO_UTIL,
|
||||
CAIFPROTO_RFM,
|
||||
_CAIFPROTO_MAX
|
||||
};
|
||||
#define CAIFPROTO_MAX _CAIFPROTO_MAX
|
||||
|
||||
/**
|
||||
* enum caif_at_type - AT Service Endpoint
|
||||
* @CAIF_ATTYPE_PLAIN: Connects to a plain vanilla AT channel.
|
||||
*/
|
||||
enum caif_at_type {
|
||||
CAIF_ATTYPE_PLAIN = 2
|
||||
};
|
||||
|
||||
/**
|
||||
* struct sockaddr_caif - the sockaddr structure for CAIF sockets.
|
||||
* @family: Address family number, must be AF_CAIF.
|
||||
* @u: Union of address data 'switched' by family.
|
||||
* :
|
||||
* @u.at: Applies when family = CAIFPROTO_AT.
|
||||
*
|
||||
* @u.at.type: Type of AT link to set up (enum caif_at_type).
|
||||
*
|
||||
* @u.util: Applies when family = CAIFPROTO_UTIL
|
||||
*
|
||||
* @u.util.service: Utility service name.
|
||||
*
|
||||
* @u.dgm: Applies when family = CAIFPROTO_DATAGRAM
|
||||
*
|
||||
* @u.dgm.connection_id: Datagram connection id.
|
||||
*
|
||||
* @u.dgm.nsapi: NSAPI of the PDP-Context.
|
||||
*
|
||||
* @u.rfm: Applies when family = CAIFPROTO_RFM
|
||||
*
|
||||
* @u.rfm.connection_id: Connection ID for RFM.
|
||||
*
|
||||
* @u.rfm.volume: Volume to mount.
|
||||
*
|
||||
* Description:
|
||||
* This structure holds the connect parameters used for setting up a
|
||||
* CAIF Channel. It defines the service to connect to on the modem.
|
||||
*/
|
||||
struct sockaddr_caif {
|
||||
sa_family_t family;
|
||||
union {
|
||||
struct {
|
||||
__u8 type; /* type: enum caif_at_type */
|
||||
} at; /* CAIFPROTO_AT */
|
||||
struct {
|
||||
char service[16];
|
||||
} util; /* CAIFPROTO_UTIL */
|
||||
union {
|
||||
__u32 connection_id;
|
||||
__u8 nsapi;
|
||||
} dgm; /* CAIFPROTO_DATAGRAM(_LOOP)*/
|
||||
struct {
|
||||
__u32 connection_id;
|
||||
char volume[16];
|
||||
} rfm; /* CAIFPROTO_RFM */
|
||||
} u;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum caif_socket_opts - CAIF option values for getsockopt and setsockopt.
|
||||
*
|
||||
* @CAIFSO_LINK_SELECT: Selector used if multiple CAIF Link layers are
|
||||
* available. Either a high bandwidth
|
||||
* link can be selected (CAIF_LINK_HIGH_BANDW) or
|
||||
* or a low latency link (CAIF_LINK_LOW_LATENCY).
|
||||
* This option is of type __u32.
|
||||
* Alternatively SO_BINDTODEVICE can be used.
|
||||
*
|
||||
* @CAIFSO_REQ_PARAM: Used to set the request parameters for a
|
||||
* utility channel. (maximum 256 bytes). This
|
||||
* option must be set before connecting.
|
||||
*
|
||||
* @CAIFSO_RSP_PARAM: Gets the response parameters for a utility
|
||||
* channel. (maximum 256 bytes). This option
|
||||
* is valid after a successful connect.
|
||||
*
|
||||
*
|
||||
* This enum defines the CAIF Socket options to be used on a socket
|
||||
* of type PF_CAIF.
|
||||
*
|
||||
*/
|
||||
enum caif_socket_opts {
|
||||
CAIFSO_LINK_SELECT = 127,
|
||||
CAIFSO_REQ_PARAM = 128,
|
||||
CAIFSO_RSP_PARAM = 129,
|
||||
};
|
||||
|
||||
#endif /* _LINUX_CAIF_SOCKET_H */
|
34
include/linux/caif/if_caif.h
Normal file
34
include/linux/caif/if_caif.h
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) ST-Ericsson AB 2010
|
||||
* Author: Sjur Brendeland/ sjur.brandeland@stericsson.com
|
||||
* License terms: GNU General Public License (GPL) version 2
|
||||
*/
|
||||
|
||||
#ifndef IF_CAIF_H_
|
||||
#define IF_CAIF_H_
|
||||
#include <linux/sockios.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/socket.h>
|
||||
|
||||
/**
|
||||
* enum ifla_caif - CAIF NetlinkRT parameters.
|
||||
* @IFLA_CAIF_IPV4_CONNID: Connection ID for IPv4 PDP Context.
|
||||
* The type of attribute is NLA_U32.
|
||||
* @IFLA_CAIF_IPV6_CONNID: Connection ID for IPv6 PDP Context.
|
||||
* The type of attribute is NLA_U32.
|
||||
* @IFLA_CAIF_LOOPBACK: If different from zero, device is doing loopback
|
||||
* The type of attribute is NLA_U8.
|
||||
*
|
||||
* When using RT Netlink to create, destroy or configure a CAIF IP interface,
|
||||
* enum ifla_caif is used to specify the configuration attributes.
|
||||
*/
|
||||
enum ifla_caif {
|
||||
__IFLA_CAIF_UNSPEC,
|
||||
IFLA_CAIF_IPV4_CONNID,
|
||||
IFLA_CAIF_IPV6_CONNID,
|
||||
IFLA_CAIF_LOOPBACK,
|
||||
__IFLA_CAIF_MAX
|
||||
};
|
||||
#define IFLA_CAIF_MAX (__IFLA_CAIF_MAX-1)
|
||||
|
||||
#endif /*IF_CAIF_H_*/
|
@@ -14,6 +14,7 @@
|
||||
#ifndef CAN_DEV_H
|
||||
#define CAN_DEV_H
|
||||
|
||||
#include <linux/can.h>
|
||||
#include <linux/can/netlink.h>
|
||||
#include <linux/can/error.h>
|
||||
|
||||
|
@@ -26,8 +26,8 @@
|
||||
struct mcp251x_platform_data {
|
||||
unsigned long oscillator_frequency;
|
||||
int model;
|
||||
#define CAN_MCP251X_MCP2510 0
|
||||
#define CAN_MCP251X_MCP2515 1
|
||||
#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);
|
||||
|
@@ -26,7 +26,7 @@
|
||||
#define OCR_TX_SHIFT 2
|
||||
|
||||
struct sja1000_platform_data {
|
||||
u32 clock; /* CAN bus oscillator frequency in Hz */
|
||||
u32 osc_freq; /* CAN bus oscillator frequency in Hz */
|
||||
|
||||
u8 ocr; /* output control register */
|
||||
u8 cdr; /* clock divider register */
|
||||
|
@@ -22,8 +22,6 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define DCB_PROTO_VERSION 1
|
||||
|
||||
struct dcbmsg {
|
||||
__u8 dcb_family;
|
||||
__u8 cmd;
|
||||
|
@@ -310,6 +310,7 @@ struct ethtool_perm_addr {
|
||||
enum ethtool_flags {
|
||||
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
|
||||
@@ -490,12 +491,12 @@ void ethtool_ntuple_flush(struct net_device *dev);
|
||||
* get_ufo: Report whether UDP fragmentation offload is enabled
|
||||
* set_ufo: Turn UDP fragmentation offload on or off
|
||||
* self_test: Run specified self-tests
|
||||
* get_strings: Return a set of strings that describe the requested objects
|
||||
* get_strings: Return a set of strings that describe the requested objects
|
||||
* phys_id: Identify the device
|
||||
* get_stats: Return statistics about the device
|
||||
* get_flags: get 32-bit flags bitmap
|
||||
* set_flags: set 32-bit flags bitmap
|
||||
*
|
||||
*
|
||||
* Description:
|
||||
*
|
||||
* get_settings:
|
||||
@@ -531,14 +532,20 @@ struct ethtool_ops {
|
||||
int (*nway_reset)(struct net_device *);
|
||||
u32 (*get_link)(struct net_device *);
|
||||
int (*get_eeprom_len)(struct net_device *);
|
||||
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
|
||||
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
|
||||
int (*get_eeprom)(struct net_device *,
|
||||
struct ethtool_eeprom *, u8 *);
|
||||
int (*set_eeprom)(struct net_device *,
|
||||
struct ethtool_eeprom *, u8 *);
|
||||
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
|
||||
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
|
||||
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
|
||||
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
|
||||
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam*);
|
||||
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam*);
|
||||
void (*get_ringparam)(struct net_device *,
|
||||
struct ethtool_ringparam *);
|
||||
int (*set_ringparam)(struct net_device *,
|
||||
struct ethtool_ringparam *);
|
||||
void (*get_pauseparam)(struct net_device *,
|
||||
struct ethtool_pauseparam*);
|
||||
int (*set_pauseparam)(struct net_device *,
|
||||
struct ethtool_pauseparam*);
|
||||
u32 (*get_rx_csum)(struct net_device *);
|
||||
int (*set_rx_csum)(struct net_device *, u32);
|
||||
u32 (*get_tx_csum)(struct net_device *);
|
||||
@@ -550,21 +557,24 @@ struct ethtool_ops {
|
||||
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
|
||||
void (*get_strings)(struct net_device *, u32 stringset, u8 *);
|
||||
int (*phys_id)(struct net_device *, u32);
|
||||
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
|
||||
void (*get_ethtool_stats)(struct net_device *,
|
||||
struct ethtool_stats *, u64 *);
|
||||
int (*begin)(struct net_device *);
|
||||
void (*complete)(struct net_device *);
|
||||
u32 (*get_ufo)(struct net_device *);
|
||||
int (*set_ufo)(struct net_device *, u32);
|
||||
u32 (*get_flags)(struct net_device *);
|
||||
int (*set_flags)(struct net_device *, u32);
|
||||
u32 (*get_priv_flags)(struct net_device *);
|
||||
int (*set_priv_flags)(struct net_device *, u32);
|
||||
u32 (*get_ufo)(struct net_device *);
|
||||
int (*set_ufo)(struct net_device *, u32);
|
||||
u32 (*get_flags)(struct net_device *);
|
||||
int (*set_flags)(struct net_device *, u32);
|
||||
u32 (*get_priv_flags)(struct net_device *);
|
||||
int (*set_priv_flags)(struct net_device *, u32);
|
||||
int (*get_sset_count)(struct net_device *, int);
|
||||
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, void *);
|
||||
int (*get_rxnfc)(struct net_device *,
|
||||
struct ethtool_rxnfc *, void *);
|
||||
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
|
||||
int (*flash_device)(struct net_device *, struct ethtool_flash *);
|
||||
int (*flash_device)(struct net_device *, struct ethtool_flash *);
|
||||
int (*reset)(struct net_device *, u32 *);
|
||||
int (*set_rx_ntuple)(struct net_device *, struct ethtool_rx_ntuple *);
|
||||
int (*set_rx_ntuple)(struct net_device *,
|
||||
struct ethtool_rx_ntuple *);
|
||||
int (*get_rx_ntuple)(struct net_device *, u32 stringset, void *);
|
||||
};
|
||||
#endif /* __KERNEL__ */
|
||||
@@ -576,29 +586,29 @@ struct ethtool_ops {
|
||||
#define ETHTOOL_GREGS 0x00000004 /* Get NIC registers. */
|
||||
#define ETHTOOL_GWOL 0x00000005 /* Get wake-on-lan options. */
|
||||
#define ETHTOOL_SWOL 0x00000006 /* Set wake-on-lan options. */
|
||||
#define ETHTOOL_GMSGLVL 0x00000007 /* Get driver message level */
|
||||
#define ETHTOOL_SMSGLVL 0x00000008 /* Set driver msg level. */
|
||||
#define ETHTOOL_GMSGLVL 0x00000007 /* Get driver message level */
|
||||
#define ETHTOOL_SMSGLVL 0x00000008 /* Set driver msg level. */
|
||||
#define ETHTOOL_NWAY_RST 0x00000009 /* Restart autonegotiation. */
|
||||
#define ETHTOOL_GLINK 0x0000000a /* Get link status (ethtool_value) */
|
||||
#define ETHTOOL_GEEPROM 0x0000000b /* Get EEPROM data */
|
||||
#define ETHTOOL_SEEPROM 0x0000000c /* Set EEPROM data. */
|
||||
#define ETHTOOL_GEEPROM 0x0000000b /* Get EEPROM data */
|
||||
#define ETHTOOL_SEEPROM 0x0000000c /* Set EEPROM data. */
|
||||
#define ETHTOOL_GCOALESCE 0x0000000e /* Get coalesce config */
|
||||
#define ETHTOOL_SCOALESCE 0x0000000f /* Set coalesce config. */
|
||||
#define ETHTOOL_GRINGPARAM 0x00000010 /* Get ring parameters */
|
||||
#define ETHTOOL_SRINGPARAM 0x00000011 /* Set ring parameters. */
|
||||
#define ETHTOOL_GPAUSEPARAM 0x00000012 /* Get pause parameters */
|
||||
#define ETHTOOL_SPAUSEPARAM 0x00000013 /* Set pause parameters. */
|
||||
#define ETHTOOL_GRXCSUM 0x00000014 /* Get RX hw csum enable (ethtool_value) */
|
||||
#define ETHTOOL_SRXCSUM 0x00000015 /* Set RX hw csum enable (ethtool_value) */
|
||||
#define ETHTOOL_GTXCSUM 0x00000016 /* Get TX hw csum enable (ethtool_value) */
|
||||
#define ETHTOOL_STXCSUM 0x00000017 /* Set TX hw csum enable (ethtool_value) */
|
||||
#define ETHTOOL_GRXCSUM 0x00000014 /* Get RX hw csum enable (ethtool_value) */
|
||||
#define ETHTOOL_SRXCSUM 0x00000015 /* Set RX hw csum enable (ethtool_value) */
|
||||
#define ETHTOOL_GTXCSUM 0x00000016 /* Get TX hw csum enable (ethtool_value) */
|
||||
#define ETHTOOL_STXCSUM 0x00000017 /* Set TX hw csum enable (ethtool_value) */
|
||||
#define ETHTOOL_GSG 0x00000018 /* Get scatter-gather enable
|
||||
* (ethtool_value) */
|
||||
#define ETHTOOL_SSG 0x00000019 /* Set scatter-gather enable
|
||||
* (ethtool_value). */
|
||||
#define ETHTOOL_TEST 0x0000001a /* execute NIC self-test. */
|
||||
#define ETHTOOL_GSTRINGS 0x0000001b /* get specified string set */
|
||||
#define ETHTOOL_PHYS_ID 0x0000001c /* identify the NIC */
|
||||
#define ETHTOOL_PHYS_ID 0x0000001c /* identify the NIC */
|
||||
#define ETHTOOL_GSTATS 0x0000001d /* get NIC-specific statistics */
|
||||
#define ETHTOOL_GTSO 0x0000001e /* Get TSO enable (ethtool_value) */
|
||||
#define ETHTOOL_STSO 0x0000001f /* Set TSO enable (ethtool_value) */
|
||||
@@ -609,24 +619,24 @@ struct ethtool_ops {
|
||||
#define ETHTOOL_SGSO 0x00000024 /* Set GSO enable (ethtool_value) */
|
||||
#define ETHTOOL_GFLAGS 0x00000025 /* Get flags bitmap(ethtool_value) */
|
||||
#define ETHTOOL_SFLAGS 0x00000026 /* Set flags bitmap(ethtool_value) */
|
||||
#define ETHTOOL_GPFLAGS 0x00000027 /* Get driver-private flags bitmap */
|
||||
#define ETHTOOL_SPFLAGS 0x00000028 /* Set driver-private flags bitmap */
|
||||
#define ETHTOOL_GPFLAGS 0x00000027 /* Get driver-private flags bitmap */
|
||||
#define ETHTOOL_SPFLAGS 0x00000028 /* Set driver-private flags bitmap */
|
||||
|
||||
#define ETHTOOL_GRXFH 0x00000029 /* Get RX flow hash configuration */
|
||||
#define ETHTOOL_SRXFH 0x0000002a /* Set RX flow hash configuration */
|
||||
#define ETHTOOL_GRXFH 0x00000029 /* Get RX flow hash configuration */
|
||||
#define ETHTOOL_SRXFH 0x0000002a /* Set RX flow hash configuration */
|
||||
#define ETHTOOL_GGRO 0x0000002b /* Get GRO enable (ethtool_value) */
|
||||
#define ETHTOOL_SGRO 0x0000002c /* Set GRO enable (ethtool_value) */
|
||||
#define ETHTOOL_GRXRINGS 0x0000002d /* Get RX rings available for LB */
|
||||
#define ETHTOOL_GRXCLSRLCNT 0x0000002e /* Get RX class rule count */
|
||||
#define ETHTOOL_GRXCLSRULE 0x0000002f /* Get RX classification rule */
|
||||
#define ETHTOOL_GRXCLSRLALL 0x00000030 /* Get all RX classification rule */
|
||||
#define ETHTOOL_SRXCLSRLDEL 0x00000031 /* Delete RX classification rule */
|
||||
#define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */
|
||||
#define ETHTOOL_FLASHDEV 0x00000033 /* Flash firmware to device */
|
||||
#define ETHTOOL_RESET 0x00000034 /* Reset hardware */
|
||||
#define ETHTOOL_SRXNTUPLE 0x00000035 /* Add an n-tuple filter to device */
|
||||
#define ETHTOOL_GRXNTUPLE 0x00000036 /* Get n-tuple filters from device */
|
||||
#define ETHTOOL_GSSET_INFO 0x00000037 /* Get string set info */
|
||||
#define ETHTOOL_GRXRINGS 0x0000002d /* Get RX rings available for LB */
|
||||
#define ETHTOOL_GRXCLSRLCNT 0x0000002e /* Get RX class rule count */
|
||||
#define ETHTOOL_GRXCLSRULE 0x0000002f /* Get RX classification rule */
|
||||
#define ETHTOOL_GRXCLSRLALL 0x00000030 /* Get all RX classification rule */
|
||||
#define ETHTOOL_SRXCLSRLDEL 0x00000031 /* Delete RX classification rule */
|
||||
#define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */
|
||||
#define ETHTOOL_FLASHDEV 0x00000033 /* Flash firmware to device */
|
||||
#define ETHTOOL_RESET 0x00000034 /* Reset hardware */
|
||||
#define ETHTOOL_SRXNTUPLE 0x00000035 /* Add an n-tuple filter to device */
|
||||
#define ETHTOOL_GRXNTUPLE 0x00000036 /* Get n-tuple filters from device */
|
||||
#define ETHTOOL_GSSET_INFO 0x00000037 /* Get string set info */
|
||||
|
||||
/* compatibility with older code */
|
||||
#define SPARC_ETH_GSET ETHTOOL_GSET
|
||||
@@ -635,18 +645,18 @@ struct ethtool_ops {
|
||||
/* Indicates what features are supported by the interface. */
|
||||
#define SUPPORTED_10baseT_Half (1 << 0)
|
||||
#define SUPPORTED_10baseT_Full (1 << 1)
|
||||
#define SUPPORTED_100baseT_Half (1 << 2)
|
||||
#define SUPPORTED_100baseT_Full (1 << 3)
|
||||
#define SUPPORTED_100baseT_Half (1 << 2)
|
||||
#define SUPPORTED_100baseT_Full (1 << 3)
|
||||
#define SUPPORTED_1000baseT_Half (1 << 4)
|
||||
#define SUPPORTED_1000baseT_Full (1 << 5)
|
||||
#define SUPPORTED_Autoneg (1 << 6)
|
||||
#define SUPPORTED_TP (1 << 7)
|
||||
#define SUPPORTED_AUI (1 << 8)
|
||||
#define SUPPORTED_MII (1 << 9)
|
||||
#define SUPPORTED_FIBRE (1 << 10)
|
||||
#define SUPPORTED_FIBRE (1 << 10)
|
||||
#define SUPPORTED_BNC (1 << 11)
|
||||
#define SUPPORTED_10000baseT_Full (1 << 12)
|
||||
#define SUPPORTED_Pause (1 << 13)
|
||||
#define SUPPORTED_Pause (1 << 13)
|
||||
#define SUPPORTED_Asym_Pause (1 << 14)
|
||||
#define SUPPORTED_2500baseX_Full (1 << 15)
|
||||
#define SUPPORTED_Backplane (1 << 16)
|
||||
@@ -656,8 +666,8 @@ struct ethtool_ops {
|
||||
#define SUPPORTED_10000baseR_FEC (1 << 20)
|
||||
|
||||
/* Indicates what features are advertised by the interface. */
|
||||
#define ADVERTISED_10baseT_Half (1 << 0)
|
||||
#define ADVERTISED_10baseT_Full (1 << 1)
|
||||
#define ADVERTISED_10baseT_Half (1 << 0)
|
||||
#define ADVERTISED_10baseT_Full (1 << 1)
|
||||
#define ADVERTISED_100baseT_Half (1 << 2)
|
||||
#define ADVERTISED_100baseT_Full (1 << 3)
|
||||
#define ADVERTISED_1000baseT_Half (1 << 4)
|
||||
@@ -696,12 +706,12 @@ struct ethtool_ops {
|
||||
#define DUPLEX_FULL 0x01
|
||||
|
||||
/* Which connector port. */
|
||||
#define PORT_TP 0x00
|
||||
#define PORT_TP 0x00
|
||||
#define PORT_AUI 0x01
|
||||
#define PORT_MII 0x02
|
||||
#define PORT_FIBRE 0x03
|
||||
#define PORT_BNC 0x04
|
||||
#define PORT_DA 0x05
|
||||
#define PORT_DA 0x05
|
||||
#define PORT_NONE 0xef
|
||||
#define PORT_OTHER 0xff
|
||||
|
||||
@@ -715,7 +725,7 @@ struct ethtool_ops {
|
||||
/* Enable or disable autonegotiation. If this is set to enable,
|
||||
* the forced link modes above are completely ignored.
|
||||
*/
|
||||
#define AUTONEG_DISABLE 0x00
|
||||
#define AUTONEG_DISABLE 0x00
|
||||
#define AUTONEG_ENABLE 0x01
|
||||
|
||||
/* Mode MDI or MDI-X */
|
||||
@@ -746,8 +756,8 @@ struct ethtool_ops {
|
||||
#define AH_V6_FLOW 0x0b
|
||||
#define ESP_V6_FLOW 0x0c
|
||||
#define IP_USER_FLOW 0x0d
|
||||
#define IPV4_FLOW 0x10
|
||||
#define IPV6_FLOW 0x11
|
||||
#define IPV4_FLOW 0x10
|
||||
#define IPV6_FLOW 0x11
|
||||
|
||||
/* L3-L4 network traffic flow hash options */
|
||||
#define RXH_L2DA (1 << 1)
|
||||
|
@@ -123,7 +123,8 @@ struct sock_fprog { /* Required for SO_ATTACH_FILTER. */
|
||||
#define SKF_AD_NLATTR_NEST 16
|
||||
#define SKF_AD_MARK 20
|
||||
#define SKF_AD_QUEUE 24
|
||||
#define SKF_AD_MAX 28
|
||||
#define SKF_AD_HATYPE 28
|
||||
#define SKF_AD_MAX 32
|
||||
#define SKF_NET_OFF (-0x100000)
|
||||
#define SKF_LL_OFF (-0x200000)
|
||||
|
||||
|
@@ -1280,10 +1280,12 @@ static inline int lock_may_write(struct inode *inode, loff_t start,
|
||||
|
||||
|
||||
struct fasync_struct {
|
||||
int magic;
|
||||
int fa_fd;
|
||||
struct fasync_struct *fa_next; /* singly linked list */
|
||||
struct file *fa_file;
|
||||
spinlock_t fa_lock;
|
||||
int magic;
|
||||
int fa_fd;
|
||||
struct fasync_struct *fa_next; /* singly linked list */
|
||||
struct file *fa_file;
|
||||
struct rcu_head fa_rcu;
|
||||
};
|
||||
|
||||
#define FASYNC_MAGIC 0x4601
|
||||
@@ -1292,8 +1294,6 @@ struct fasync_struct {
|
||||
extern int fasync_helper(int, struct file *, int, struct fasync_struct **);
|
||||
/* can be called from interrupts */
|
||||
extern void kill_fasync(struct fasync_struct **, int, int);
|
||||
/* only for net: no internal synchronization */
|
||||
extern void __kill_fasync(struct fasync_struct *, int, int);
|
||||
|
||||
extern int __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
|
||||
extern int f_setown(struct file *filp, unsigned long arg, int force);
|
||||
|
@@ -80,4 +80,12 @@ enum {
|
||||
|
||||
#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/* All generic netlink requests are serialized by a global lock. */
|
||||
extern void genl_lock(void);
|
||||
extern void genl_unlock(void);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __LINUX_GENERIC_NETLINK_H */
|
||||
|
@@ -876,6 +876,7 @@ struct ieee80211_ht_cap {
|
||||
#define IEEE80211_HT_CAP_SGI_40 0x0040
|
||||
#define IEEE80211_HT_CAP_TX_STBC 0x0080
|
||||
#define IEEE80211_HT_CAP_RX_STBC 0x0300
|
||||
#define IEEE80211_HT_CAP_RX_STBC_SHIFT 8
|
||||
#define IEEE80211_HT_CAP_DELAY_BA 0x0400
|
||||
#define IEEE80211_HT_CAP_MAX_AMSDU 0x0800
|
||||
#define IEEE80211_HT_CAP_DSSSCCK40 0x1000
|
||||
@@ -1211,6 +1212,8 @@ enum ieee80211_category {
|
||||
WLAN_CATEGORY_SA_QUERY = 8,
|
||||
WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9,
|
||||
WLAN_CATEGORY_WMM = 17,
|
||||
WLAN_CATEGORY_MESH_PLINK = 30, /* Pending ANA approval */
|
||||
WLAN_CATEGORY_MESH_PATH_SEL = 32, /* Pending ANA approval */
|
||||
WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
|
||||
WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
|
||||
};
|
||||
@@ -1324,7 +1327,6 @@ enum ieee80211_back_actioncode {
|
||||
enum ieee80211_back_parties {
|
||||
WLAN_BACK_RECIPIENT = 0,
|
||||
WLAN_BACK_INITIATOR = 1,
|
||||
WLAN_BACK_TIMER = 2,
|
||||
};
|
||||
|
||||
/* SA Query action */
|
||||
|
@@ -71,6 +71,8 @@
|
||||
* release skb->dst
|
||||
*/
|
||||
#define IFF_DONT_BRIDGE 0x800 /* disallow bridging this ether dev */
|
||||
#define IFF_IN_NETPOLL 0x1000 /* whether we are processing netpoll */
|
||||
#define IFF_DISABLE_NETPOLL 0x2000 /* disable netpoll at run-time */
|
||||
|
||||
#define IF_GET_IFACE 0x0001 /* for querying only */
|
||||
#define IF_GET_PROTO 0x0002
|
||||
|
@@ -90,6 +90,7 @@
|
||||
|
||||
#define ARPHRD_PHONET 820 /* PhoNet media type */
|
||||
#define ARPHRD_PHONET_PIPE 821 /* PhoNet pipe header */
|
||||
#define ARPHRD_CAIF 822 /* CAIF media type */
|
||||
|
||||
#define ARPHRD_VOID 0xFFFF /* Void type, nothing is known */
|
||||
#define ARPHRD_NONE 0xFFFE /* zero header length */
|
||||
|
@@ -109,6 +109,7 @@
|
||||
#define ETH_P_TRAILER 0x001C /* Trailer switch tagging */
|
||||
#define ETH_P_PHONET 0x00F5 /* Nokia Phonet frames */
|
||||
#define ETH_P_IEEE802154 0x00F6 /* IEEE802.15.4 frame */
|
||||
#define ETH_P_CAIF 0x00F7 /* ST-Ericsson CAIF protocol */
|
||||
|
||||
/*
|
||||
* This is an Ethernet frame header.
|
||||
|
@@ -37,6 +37,38 @@ struct rtnl_link_stats {
|
||||
__u32 tx_compressed;
|
||||
};
|
||||
|
||||
struct rtnl_link_stats64 {
|
||||
__u64 rx_packets; /* total packets received */
|
||||
__u64 tx_packets; /* total packets transmitted */
|
||||
__u64 rx_bytes; /* total bytes received */
|
||||
__u64 tx_bytes; /* total bytes transmitted */
|
||||
__u64 rx_errors; /* bad packets received */
|
||||
__u64 tx_errors; /* packet transmit problems */
|
||||
__u64 rx_dropped; /* no space in linux buffers */
|
||||
__u64 tx_dropped; /* no space available in linux */
|
||||
__u64 multicast; /* multicast packets received */
|
||||
__u64 collisions;
|
||||
|
||||
/* detailed rx_errors: */
|
||||
__u64 rx_length_errors;
|
||||
__u64 rx_over_errors; /* receiver ring buff overflow */
|
||||
__u64 rx_crc_errors; /* recved pkt with crc error */
|
||||
__u64 rx_frame_errors; /* recv'd frame alignment error */
|
||||
__u64 rx_fifo_errors; /* recv'r fifo overrun */
|
||||
__u64 rx_missed_errors; /* receiver missed packet */
|
||||
|
||||
/* detailed tx_errors */
|
||||
__u64 tx_aborted_errors;
|
||||
__u64 tx_carrier_errors;
|
||||
__u64 tx_fifo_errors;
|
||||
__u64 tx_heartbeat_errors;
|
||||
__u64 tx_window_errors;
|
||||
|
||||
/* for cslip etc */
|
||||
__u64 rx_compressed;
|
||||
__u64 tx_compressed;
|
||||
};
|
||||
|
||||
/* The struct should be in sync with struct ifmap */
|
||||
struct rtnl_link_ifmap {
|
||||
__u64 mem_start;
|
||||
@@ -80,6 +112,9 @@ enum {
|
||||
IFLA_IFALIAS,
|
||||
IFLA_NUM_VF, /* Number of VFs if device is SR-IOV PF */
|
||||
IFLA_VFINFO_LIST,
|
||||
IFLA_STATS64,
|
||||
IFLA_VF_PORTS,
|
||||
IFLA_PORT_SELF,
|
||||
__IFLA_MAX
|
||||
};
|
||||
|
||||
@@ -241,4 +276,77 @@ struct ifla_vf_info {
|
||||
__u32 qos;
|
||||
__u32 tx_rate;
|
||||
};
|
||||
|
||||
/* VF ports management section
|
||||
*
|
||||
* Nested layout of set/get msg is:
|
||||
*
|
||||
* [IFLA_NUM_VF]
|
||||
* [IFLA_VF_PORTS]
|
||||
* [IFLA_VF_PORT]
|
||||
* [IFLA_PORT_*], ...
|
||||
* [IFLA_VF_PORT]
|
||||
* [IFLA_PORT_*], ...
|
||||
* ...
|
||||
* [IFLA_PORT_SELF]
|
||||
* [IFLA_PORT_*], ...
|
||||
*/
|
||||
|
||||
enum {
|
||||
IFLA_VF_PORT_UNSPEC,
|
||||
IFLA_VF_PORT, /* nest */
|
||||
__IFLA_VF_PORT_MAX,
|
||||
};
|
||||
|
||||
#define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
|
||||
|
||||
enum {
|
||||
IFLA_PORT_UNSPEC,
|
||||
IFLA_PORT_VF, /* __u32 */
|
||||
IFLA_PORT_PROFILE, /* string */
|
||||
IFLA_PORT_VSI_TYPE, /* 802.1Qbg (pre-)standard VDP */
|
||||
IFLA_PORT_INSTANCE_UUID, /* binary UUID */
|
||||
IFLA_PORT_HOST_UUID, /* binary UUID */
|
||||
IFLA_PORT_REQUEST, /* __u8 */
|
||||
IFLA_PORT_RESPONSE, /* __u16, output only */
|
||||
__IFLA_PORT_MAX,
|
||||
};
|
||||
|
||||
#define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
|
||||
|
||||
#define PORT_PROFILE_MAX 40
|
||||
#define PORT_UUID_MAX 16
|
||||
#define PORT_SELF_VF -1
|
||||
|
||||
enum {
|
||||
PORT_REQUEST_PREASSOCIATE = 0,
|
||||
PORT_REQUEST_PREASSOCIATE_RR,
|
||||
PORT_REQUEST_ASSOCIATE,
|
||||
PORT_REQUEST_DISASSOCIATE,
|
||||
};
|
||||
|
||||
enum {
|
||||
PORT_VDP_RESPONSE_SUCCESS = 0,
|
||||
PORT_VDP_RESPONSE_INVALID_FORMAT,
|
||||
PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
|
||||
PORT_VDP_RESPONSE_UNUSED_VTID,
|
||||
PORT_VDP_RESPONSE_VTID_VIOLATION,
|
||||
PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
|
||||
PORT_VDP_RESPONSE_OUT_OF_SYNC,
|
||||
/* 0x08-0xFF reserved for future VDP use */
|
||||
PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
|
||||
PORT_PROFILE_RESPONSE_INPROGRESS,
|
||||
PORT_PROFILE_RESPONSE_INVALID,
|
||||
PORT_PROFILE_RESPONSE_BADSTATE,
|
||||
PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
|
||||
PORT_PROFILE_RESPONSE_ERROR,
|
||||
};
|
||||
|
||||
struct ifla_port_vsi {
|
||||
__u8 vsi_mgr_id;
|
||||
__u8 vsi_type_id[3];
|
||||
__u8 vsi_type_version;
|
||||
__u8 pad[3];
|
||||
};
|
||||
|
||||
#endif /* _LINUX_IF_LINK_H */
|
||||
|
@@ -85,6 +85,7 @@ extern netdev_tx_t macvlan_start_xmit(struct sk_buff *skb,
|
||||
struct net_device *dev);
|
||||
|
||||
|
||||
extern struct sk_buff *(*macvlan_handle_frame_hook)(struct sk_buff *);
|
||||
extern struct sk_buff *(*macvlan_handle_frame_hook)(struct macvlan_port *,
|
||||
struct sk_buff *);
|
||||
|
||||
#endif /* _LINUX_IF_MACVLAN_H */
|
||||
|
@@ -47,6 +47,7 @@ struct sockaddr_ll {
|
||||
#define PACKET_TX_RING 13
|
||||
#define PACKET_LOSS 14
|
||||
#define PACKET_VNET_HDR 15
|
||||
#define PACKET_TX_TIMESTAMP 16
|
||||
|
||||
struct tpacket_stats {
|
||||
unsigned int tp_packets;
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* Linux PPP over L2TP (PPPoL2TP) Socket Implementation (RFC 2661)
|
||||
*
|
||||
* This file supplies definitions required by the PPP over L2TP driver
|
||||
* (pppol2tp.c). All version information wrt this file is located in pppol2tp.c
|
||||
* (l2tp_ppp.c). All version information wrt this file is located in l2tp_ppp.c
|
||||
*
|
||||
* License:
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -35,6 +35,20 @@ struct pppol2tp_addr {
|
||||
__u16 d_tunnel, d_session; /* For sending outgoing packets */
|
||||
};
|
||||
|
||||
/* The L2TPv3 protocol changes tunnel and session ids from 16 to 32
|
||||
* bits. So we need a different sockaddr structure.
|
||||
*/
|
||||
struct pppol2tpv3_addr {
|
||||
pid_t pid; /* pid that owns the fd.
|
||||
* 0 => current */
|
||||
int fd; /* FD of UDP or IP socket to use */
|
||||
|
||||
struct sockaddr_in addr; /* IP address and port to send to */
|
||||
|
||||
__u32 s_tunnel, s_session; /* For matching incoming packets */
|
||||
__u32 d_tunnel, d_session; /* For sending outgoing packets */
|
||||
};
|
||||
|
||||
/* Socket options:
|
||||
* DEBUG - bitmask of debug message categories
|
||||
* SENDSEQ - 0 => don't send packets with sequence numbers
|
||||
|
@@ -72,6 +72,15 @@ struct sockaddr_pppol2tp {
|
||||
struct pppol2tp_addr pppol2tp;
|
||||
}__attribute__ ((packed));
|
||||
|
||||
/* The L2TPv3 protocol changes tunnel and session ids from 16 to 32
|
||||
* bits. So we need a different sockaddr structure.
|
||||
*/
|
||||
struct sockaddr_pppol2tpv3 {
|
||||
sa_family_t sa_family; /* address family, AF_PPPOX */
|
||||
unsigned int sa_protocol; /* protocol identifier */
|
||||
struct pppol2tpv3_addr pppol2tp;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* ioctl interface for defining forwarding of connections
|
||||
|
@@ -51,6 +51,8 @@
|
||||
#define TUNSETSNDBUF _IOW('T', 212, int)
|
||||
#define TUNATTACHFILTER _IOW('T', 213, struct sock_fprog)
|
||||
#define TUNDETACHFILTER _IOW('T', 214, struct sock_fprog)
|
||||
#define TUNGETVNETHDRSZ _IOR('T', 215, int)
|
||||
#define TUNSETVNETHDRSZ _IOW('T', 216, int)
|
||||
|
||||
/* TUNSETIFF ifr flags */
|
||||
#define IFF_TUN 0x0001
|
||||
|
26
include/linux/if_x25.h
Normal file
26
include/linux/if_x25.h
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Linux X.25 packet to device interface
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef _IF_X25_H
|
||||
#define _IF_X25_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* Documentation/networking/x25-iface.txt */
|
||||
#define X25_IFACE_DATA 0x00
|
||||
#define X25_IFACE_CONNECT 0x01
|
||||
#define X25_IFACE_DISCONNECT 0x02
|
||||
#define X25_IFACE_PARAMS 0x03
|
||||
|
||||
#endif /* _IF_X25_H */
|
@@ -221,10 +221,10 @@ struct in6_flowlabel_req {
|
||||
#define IPV6_RTHDR 57
|
||||
#define IPV6_RECVDSTOPTS 58
|
||||
#define IPV6_DSTOPTS 59
|
||||
#if 0 /* not yet */
|
||||
#define IPV6_RECVPATHMTU 60
|
||||
#define IPV6_PATHMTU 61
|
||||
#define IPV6_DONTFRAG 62
|
||||
#if 0 /* not yet */
|
||||
#define IPV6_USE_MIN_MTU 63
|
||||
#endif
|
||||
|
||||
@@ -265,6 +265,9 @@ struct in6_flowlabel_req {
|
||||
#define IPV6_PREFER_SRC_CGA 0x0008
|
||||
#define IPV6_PREFER_SRC_NONCGA 0x0800
|
||||
|
||||
/* RFC5082: Generalized Ttl Security Mechanism */
|
||||
#define IPV6_MINHOPCOUNT 73
|
||||
|
||||
/*
|
||||
* Multicast Routing:
|
||||
* see include/linux/mroute6.h.
|
||||
|
@@ -21,6 +21,10 @@ struct in6_pktinfo {
|
||||
int ipi6_ifindex;
|
||||
};
|
||||
|
||||
struct ip6_mtuinfo {
|
||||
struct sockaddr_in6 ip6m_addr;
|
||||
__u32 ip6m_mtu;
|
||||
};
|
||||
|
||||
struct in6_ifreq {
|
||||
struct in6_addr ifr6_addr;
|
||||
@@ -250,9 +254,11 @@ struct inet6_skb_parm {
|
||||
|
||||
#define IP6SKB_XFRM_TRANSFORMED 1
|
||||
#define IP6SKB_FORWARDED 2
|
||||
#define IP6SKB_REROUTED 4
|
||||
};
|
||||
|
||||
#define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb))
|
||||
#define IP6CBMTU(skb) ((struct ip6_mtuinfo *)((skb)->cb))
|
||||
|
||||
static inline int inet6_iif(const struct sk_buff *skb)
|
||||
{
|
||||
@@ -334,21 +340,25 @@ struct ipv6_pinfo {
|
||||
dstopts:1,
|
||||
odstopts:1,
|
||||
rxflow:1,
|
||||
rxtclass:1;
|
||||
rxtclass:1,
|
||||
rxpmtu:1;
|
||||
} bits;
|
||||
__u16 all;
|
||||
} rxopt;
|
||||
|
||||
/* sockopt flags */
|
||||
__u8 recverr:1,
|
||||
__u16 recverr:1,
|
||||
sndflow:1,
|
||||
pmtudisc:2,
|
||||
ipv6only:1,
|
||||
srcprefs:3; /* 001: prefer temporary address
|
||||
srcprefs:3, /* 001: prefer temporary address
|
||||
* 010: prefer public address
|
||||
* 100: prefer care-of address
|
||||
*/
|
||||
dontfrag:1;
|
||||
__u8 min_hopcount;
|
||||
__u8 tclass;
|
||||
__u8 padding;
|
||||
|
||||
__u32 dst_cookie;
|
||||
|
||||
@@ -358,6 +368,7 @@ struct ipv6_pinfo {
|
||||
|
||||
struct ipv6_txoptions *opt;
|
||||
struct sk_buff *pktoptions;
|
||||
struct sk_buff *rxpmtu;
|
||||
struct {
|
||||
struct ipv6_txoptions *opt;
|
||||
u8 hop_limit;
|
||||
@@ -372,6 +383,7 @@ struct raw6_sock {
|
||||
__u32 checksum; /* perform checksum */
|
||||
__u32 offset; /* checksum offset */
|
||||
struct icmp6_filter filter;
|
||||
__u32 ip6mr_table;
|
||||
/* ipv6_pinfo has to be the last member of raw6_sock, see inet6_sk_generic */
|
||||
struct ipv6_pinfo inet6;
|
||||
};
|
||||
|
@@ -4,6 +4,8 @@
|
||||
/*
|
||||
* 'kernel.h' contains some often-used function prototypes etc
|
||||
*/
|
||||
#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
|
||||
#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
@@ -37,8 +39,8 @@ extern const char linux_proc_banner[];
|
||||
|
||||
#define STACK_MAGIC 0xdeadbeef
|
||||
|
||||
#define ALIGN(x,a) __ALIGN_MASK(x,(typeof(x))(a)-1)
|
||||
#define __ALIGN_MASK(x,mask) (((x)+(mask))&~(mask))
|
||||
#define ALIGN(x, a) __ALIGN_KERNEL((x), (a))
|
||||
#define __ALIGN_MASK(x, mask) __ALIGN_KERNEL_MASK((x), (mask))
|
||||
#define PTR_ALIGN(p, a) ((typeof(p))ALIGN((unsigned long)(p), (a)))
|
||||
#define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0)
|
||||
|
||||
|
34
include/linux/ks8842.h
Normal file
34
include/linux/ks8842.h
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* ks8842.h KS8842 platform data struct definition
|
||||
* Copyright (c) 2010 Intel Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_KS8842_H
|
||||
#define _LINUX_KS8842_H
|
||||
|
||||
#include <linux/if_ether.h>
|
||||
|
||||
/**
|
||||
* struct ks8842_platform_data - Platform data of the KS8842 network driver
|
||||
* @macaddr: The MAC address of the device, set to all 0:s to use the on in
|
||||
* the chip.
|
||||
*
|
||||
*/
|
||||
struct ks8842_platform_data {
|
||||
u8 macaddr[ETH_ALEN];
|
||||
};
|
||||
|
||||
#endif
|
163
include/linux/l2tp.h
Normal file
163
include/linux/l2tp.h
Normal file
@@ -0,0 +1,163 @@
|
||||
/*
|
||||
* L2TP-over-IP socket for L2TPv3.
|
||||
*
|
||||
* Author: James Chapman <jchapman@katalix.com>
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_L2TP_H_
|
||||
#define _LINUX_L2TP_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/socket.h>
|
||||
#include <linux/in.h>
|
||||
#else
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
|
||||
#define IPPROTO_L2TP 115
|
||||
|
||||
/**
|
||||
* struct sockaddr_l2tpip - the sockaddr structure for L2TP-over-IP sockets
|
||||
* @l2tp_family: address family number AF_L2TPIP.
|
||||
* @l2tp_addr: protocol specific address information
|
||||
* @l2tp_conn_id: connection id of tunnel
|
||||
*/
|
||||
#define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */
|
||||
struct sockaddr_l2tpip {
|
||||
/* The first fields must match struct sockaddr_in */
|
||||
sa_family_t l2tp_family; /* AF_INET */
|
||||
__be16 l2tp_unused; /* INET port number (unused) */
|
||||
struct in_addr l2tp_addr; /* Internet address */
|
||||
|
||||
__u32 l2tp_conn_id; /* Connection ID of tunnel */
|
||||
|
||||
/* Pad to size of `struct sockaddr'. */
|
||||
unsigned char __pad[sizeof(struct sockaddr) - sizeof(sa_family_t) -
|
||||
sizeof(__be16) - sizeof(struct in_addr) -
|
||||
sizeof(__u32)];
|
||||
};
|
||||
|
||||
/*****************************************************************************
|
||||
* NETLINK_GENERIC netlink family.
|
||||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Commands.
|
||||
* Valid TLVs of each command are:-
|
||||
* TUNNEL_CREATE - CONN_ID, pw_type, netns, ifname, ipinfo, udpinfo, udpcsum, vlanid
|
||||
* TUNNEL_DELETE - CONN_ID
|
||||
* TUNNEL_MODIFY - CONN_ID, udpcsum
|
||||
* TUNNEL_GETSTATS - CONN_ID, (stats)
|
||||
* TUNNEL_GET - CONN_ID, (...)
|
||||
* SESSION_CREATE - SESSION_ID, PW_TYPE, offset, data_seq, cookie, peer_cookie, offset, l2spec
|
||||
* SESSION_DELETE - SESSION_ID
|
||||
* SESSION_MODIFY - SESSION_ID, data_seq
|
||||
* SESSION_GET - SESSION_ID, (...)
|
||||
* SESSION_GETSTATS - SESSION_ID, (stats)
|
||||
*
|
||||
*/
|
||||
enum {
|
||||
L2TP_CMD_NOOP,
|
||||
L2TP_CMD_TUNNEL_CREATE,
|
||||
L2TP_CMD_TUNNEL_DELETE,
|
||||
L2TP_CMD_TUNNEL_MODIFY,
|
||||
L2TP_CMD_TUNNEL_GET,
|
||||
L2TP_CMD_SESSION_CREATE,
|
||||
L2TP_CMD_SESSION_DELETE,
|
||||
L2TP_CMD_SESSION_MODIFY,
|
||||
L2TP_CMD_SESSION_GET,
|
||||
__L2TP_CMD_MAX,
|
||||
};
|
||||
|
||||
#define L2TP_CMD_MAX (__L2TP_CMD_MAX - 1)
|
||||
|
||||
/*
|
||||
* ATTR types defined for L2TP
|
||||
*/
|
||||
enum {
|
||||
L2TP_ATTR_NONE, /* no data */
|
||||
L2TP_ATTR_PW_TYPE, /* u16, enum l2tp_pwtype */
|
||||
L2TP_ATTR_ENCAP_TYPE, /* u16, enum l2tp_encap_type */
|
||||
L2TP_ATTR_OFFSET, /* u16 */
|
||||
L2TP_ATTR_DATA_SEQ, /* u16 */
|
||||
L2TP_ATTR_L2SPEC_TYPE, /* u8, enum l2tp_l2spec_type */
|
||||
L2TP_ATTR_L2SPEC_LEN, /* u8, enum l2tp_l2spec_type */
|
||||
L2TP_ATTR_PROTO_VERSION, /* u8 */
|
||||
L2TP_ATTR_IFNAME, /* string */
|
||||
L2TP_ATTR_CONN_ID, /* u32 */
|
||||
L2TP_ATTR_PEER_CONN_ID, /* u32 */
|
||||
L2TP_ATTR_SESSION_ID, /* u32 */
|
||||
L2TP_ATTR_PEER_SESSION_ID, /* u32 */
|
||||
L2TP_ATTR_UDP_CSUM, /* u8 */
|
||||
L2TP_ATTR_VLAN_ID, /* u16 */
|
||||
L2TP_ATTR_COOKIE, /* 0, 4 or 8 bytes */
|
||||
L2TP_ATTR_PEER_COOKIE, /* 0, 4 or 8 bytes */
|
||||
L2TP_ATTR_DEBUG, /* u32 */
|
||||
L2TP_ATTR_RECV_SEQ, /* u8 */
|
||||
L2TP_ATTR_SEND_SEQ, /* u8 */
|
||||
L2TP_ATTR_LNS_MODE, /* u8 */
|
||||
L2TP_ATTR_USING_IPSEC, /* u8 */
|
||||
L2TP_ATTR_RECV_TIMEOUT, /* msec */
|
||||
L2TP_ATTR_FD, /* int */
|
||||
L2TP_ATTR_IP_SADDR, /* u32 */
|
||||
L2TP_ATTR_IP_DADDR, /* u32 */
|
||||
L2TP_ATTR_UDP_SPORT, /* u16 */
|
||||
L2TP_ATTR_UDP_DPORT, /* u16 */
|
||||
L2TP_ATTR_MTU, /* u16 */
|
||||
L2TP_ATTR_MRU, /* u16 */
|
||||
L2TP_ATTR_STATS, /* nested */
|
||||
__L2TP_ATTR_MAX,
|
||||
};
|
||||
|
||||
#define L2TP_ATTR_MAX (__L2TP_ATTR_MAX - 1)
|
||||
|
||||
/* Nested in L2TP_ATTR_STATS */
|
||||
enum {
|
||||
L2TP_ATTR_STATS_NONE, /* no data */
|
||||
L2TP_ATTR_TX_PACKETS, /* u64 */
|
||||
L2TP_ATTR_TX_BYTES, /* u64 */
|
||||
L2TP_ATTR_TX_ERRORS, /* u64 */
|
||||
L2TP_ATTR_RX_PACKETS, /* u64 */
|
||||
L2TP_ATTR_RX_BYTES, /* u64 */
|
||||
L2TP_ATTR_RX_SEQ_DISCARDS, /* u64 */
|
||||
L2TP_ATTR_RX_OOS_PACKETS, /* u64 */
|
||||
L2TP_ATTR_RX_ERRORS, /* u64 */
|
||||
__L2TP_ATTR_STATS_MAX,
|
||||
};
|
||||
|
||||
#define L2TP_ATTR_STATS_MAX (__L2TP_ATTR_STATS_MAX - 1)
|
||||
|
||||
enum l2tp_pwtype {
|
||||
L2TP_PWTYPE_NONE = 0x0000,
|
||||
L2TP_PWTYPE_ETH_VLAN = 0x0004,
|
||||
L2TP_PWTYPE_ETH = 0x0005,
|
||||
L2TP_PWTYPE_PPP = 0x0007,
|
||||
L2TP_PWTYPE_PPP_AC = 0x0008,
|
||||
L2TP_PWTYPE_IP = 0x000b,
|
||||
__L2TP_PWTYPE_MAX
|
||||
};
|
||||
|
||||
enum l2tp_l2spec_type {
|
||||
L2TP_L2SPECTYPE_NONE,
|
||||
L2TP_L2SPECTYPE_DEFAULT,
|
||||
};
|
||||
|
||||
enum l2tp_encap_type {
|
||||
L2TP_ENCAPTYPE_UDP,
|
||||
L2TP_ENCAPTYPE_IP,
|
||||
};
|
||||
|
||||
enum l2tp_seqmode {
|
||||
L2TP_SEQ_NONE = 0,
|
||||
L2TP_SEQ_IP = 1,
|
||||
L2TP_SEQ_ALL = 2,
|
||||
};
|
||||
|
||||
/*
|
||||
* NETLINK_GENERIC related info
|
||||
*/
|
||||
#define L2TP_GENL_NAME "l2tp"
|
||||
#define L2TP_GENL_VERSION 0x1
|
||||
|
||||
#endif
|
@@ -94,6 +94,8 @@
|
||||
|
||||
#define SDIO_BUS_WIDTH_1BIT 0x00
|
||||
#define SDIO_BUS_WIDTH_4BIT 0x02
|
||||
#define SDIO_BUS_ECSI 0x20 /* Enable continuous SPI interrupt */
|
||||
#define SDIO_BUS_SCSI 0x40 /* Support continuous SPI interrupt */
|
||||
|
||||
#define SDIO_BUS_ASYNC_INT 0x20
|
||||
|
||||
|
@@ -474,6 +474,32 @@ struct platform_device_id {
|
||||
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
||||
};
|
||||
|
||||
#define MDIO_MODULE_PREFIX "mdio:"
|
||||
|
||||
#define MDIO_ID_FMT "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
|
||||
#define MDIO_ID_ARGS(_id) \
|
||||
(_id)>>31, ((_id)>>30) & 1, ((_id)>>29) & 1, ((_id)>>28) & 1, \
|
||||
((_id)>>27) & 1, ((_id)>>26) & 1, ((_id)>>25) & 1, ((_id)>>24) & 1, \
|
||||
((_id)>>23) & 1, ((_id)>>22) & 1, ((_id)>>21) & 1, ((_id)>>20) & 1, \
|
||||
((_id)>>19) & 1, ((_id)>>18) & 1, ((_id)>>17) & 1, ((_id)>>16) & 1, \
|
||||
((_id)>>15) & 1, ((_id)>>14) & 1, ((_id)>>13) & 1, ((_id)>>12) & 1, \
|
||||
((_id)>>11) & 1, ((_id)>>10) & 1, ((_id)>>9) & 1, ((_id)>>8) & 1, \
|
||||
((_id)>>7) & 1, ((_id)>>6) & 1, ((_id)>>5) & 1, ((_id)>>4) & 1, \
|
||||
((_id)>>3) & 1, ((_id)>>2) & 1, ((_id)>>1) & 1, (_id) & 1
|
||||
|
||||
/**
|
||||
* struct mdio_device_id - identifies PHY devices on an MDIO/MII bus
|
||||
* @phy_id: The result of
|
||||
* (mdio_read(&MII_PHYSID1) << 16 | mdio_read(&PHYSID2)) & @phy_id_mask
|
||||
* for this PHY type
|
||||
* @phy_id_mask: Defines the significant bits of @phy_id. A value of 0
|
||||
* is used to terminate an array of struct mdio_device_id.
|
||||
*/
|
||||
struct mdio_device_id {
|
||||
__u32 phy_id;
|
||||
__u32 phy_id_mask;
|
||||
};
|
||||
|
||||
struct zorro_device_id {
|
||||
__u32 id; /* Device ID or ZORRO_WILDCARD */
|
||||
kernel_ulong_t driver_data; /* Data private to the driver */
|
||||
|
@@ -27,7 +27,8 @@
|
||||
#define MRT_DEL_MFC (MRT_BASE+5) /* Delete a multicast forwarding entry */
|
||||
#define MRT_VERSION (MRT_BASE+6) /* Get the kernel multicast version */
|
||||
#define MRT_ASSERT (MRT_BASE+7) /* Activate PIM assert mode */
|
||||
#define MRT_PIM (MRT_BASE+8) /* enable PIM code */
|
||||
#define MRT_PIM (MRT_BASE+8) /* enable PIM code */
|
||||
#define MRT_TABLE (MRT_BASE+9) /* Specify mroute table ID */
|
||||
|
||||
#define SIOCGETVIFCNT SIOCPROTOPRIVATE /* IP protocol privates */
|
||||
#define SIOCGETSGCNT (SIOCPROTOPRIVATE+1)
|
||||
@@ -191,10 +192,7 @@ struct vif_device {
|
||||
#define VIFF_STATIC 0x8000
|
||||
|
||||
struct mfc_cache {
|
||||
struct mfc_cache *next; /* Next entry on cache line */
|
||||
#ifdef CONFIG_NET_NS
|
||||
struct net *mfc_net;
|
||||
#endif
|
||||
struct list_head list;
|
||||
__be32 mfc_mcastgrp; /* Group the entry belongs to */
|
||||
__be32 mfc_origin; /* Source of packet */
|
||||
vifi_t mfc_parent; /* Source interface */
|
||||
@@ -217,18 +215,6 @@ struct mfc_cache {
|
||||
} mfc_un;
|
||||
};
|
||||
|
||||
static inline
|
||||
struct net *mfc_net(const struct mfc_cache *mfc)
|
||||
{
|
||||
return read_pnet(&mfc->mfc_net);
|
||||
}
|
||||
|
||||
static inline
|
||||
void mfc_net_set(struct mfc_cache *mfc, struct net *net)
|
||||
{
|
||||
write_pnet(&mfc->mfc_net, hold_net(net));
|
||||
}
|
||||
|
||||
#define MFC_STATIC 1
|
||||
#define MFC_NOTIFY 2
|
||||
|
||||
|
@@ -24,7 +24,8 @@
|
||||
#define MRT6_DEL_MFC (MRT6_BASE+5) /* Delete a multicast forwarding entry */
|
||||
#define MRT6_VERSION (MRT6_BASE+6) /* Get the kernel multicast version */
|
||||
#define MRT6_ASSERT (MRT6_BASE+7) /* Activate PIM assert mode */
|
||||
#define MRT6_PIM (MRT6_BASE+8) /* enable PIM code */
|
||||
#define MRT6_PIM (MRT6_BASE+8) /* enable PIM code */
|
||||
#define MRT6_TABLE (MRT6_BASE+9) /* Specify mroute table ID */
|
||||
|
||||
#define SIOCGETMIFCNT_IN6 SIOCPROTOPRIVATE /* IP protocol privates */
|
||||
#define SIOCGETSGCNT_IN6 (SIOCPROTOPRIVATE+1)
|
||||
@@ -182,10 +183,7 @@ struct mif_device {
|
||||
#define VIFF_STATIC 0x8000
|
||||
|
||||
struct mfc6_cache {
|
||||
struct mfc6_cache *next; /* Next entry on cache line */
|
||||
#ifdef CONFIG_NET_NS
|
||||
struct net *mfc6_net;
|
||||
#endif
|
||||
struct list_head list;
|
||||
struct in6_addr mf6c_mcastgrp; /* Group the entry belongs to */
|
||||
struct in6_addr mf6c_origin; /* Source of packet */
|
||||
mifi_t mf6c_parent; /* Source interface */
|
||||
@@ -208,18 +206,6 @@ struct mfc6_cache {
|
||||
} mfc_un;
|
||||
};
|
||||
|
||||
static inline
|
||||
struct net *mfc6_net(const struct mfc6_cache *mfc)
|
||||
{
|
||||
return read_pnet(&mfc->mfc6_net);
|
||||
}
|
||||
|
||||
static inline
|
||||
void mfc6_net_set(struct mfc6_cache *mfc, struct net *net)
|
||||
{
|
||||
write_pnet(&mfc->mfc6_net, hold_net(net));
|
||||
}
|
||||
|
||||
#define MFC_STATIC 1
|
||||
#define MFC_NOTIFY 2
|
||||
|
||||
@@ -244,14 +230,17 @@ extern int ip6mr_get_route(struct net *net, struct sk_buff *skb,
|
||||
struct rtmsg *rtm, int nowait);
|
||||
|
||||
#ifdef CONFIG_IPV6_MROUTE
|
||||
static inline struct sock *mroute6_socket(struct net *net)
|
||||
{
|
||||
return net->ipv6.mroute6_sk;
|
||||
}
|
||||
extern struct sock *mroute6_socket(struct net *net, struct sk_buff *skb);
|
||||
extern int ip6mr_sk_done(struct sock *sk);
|
||||
#else
|
||||
static inline struct sock *mroute6_socket(struct net *net) { return NULL; }
|
||||
static inline int ip6mr_sk_done(struct sock *sk) { return 0; }
|
||||
static inline struct sock *mroute6_socket(struct net *net, struct sk_buff *skb)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
static inline int ip6mr_sk_done(struct sock *sk)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@@ -59,6 +59,7 @@ typedef enum {
|
||||
#include <linux/wait.h>
|
||||
#include <linux/fcntl.h> /* For O_CLOEXEC and O_NONBLOCK */
|
||||
#include <linux/kmemcheck.h>
|
||||
#include <linux/rcupdate.h>
|
||||
|
||||
struct poll_table_struct;
|
||||
struct pipe_inode_info;
|
||||
@@ -116,6 +117,12 @@ enum sock_shutdown_cmd {
|
||||
SHUT_RDWR = 2,
|
||||
};
|
||||
|
||||
struct socket_wq {
|
||||
wait_queue_head_t wait;
|
||||
struct fasync_struct *fasync_list;
|
||||
struct rcu_head rcu;
|
||||
} ____cacheline_aligned_in_smp;
|
||||
|
||||
/**
|
||||
* struct socket - general BSD socket
|
||||
* @state: socket state (%SS_CONNECTED, etc)
|
||||
@@ -135,11 +142,8 @@ struct socket {
|
||||
kmemcheck_bitfield_end(type);
|
||||
|
||||
unsigned long flags;
|
||||
/*
|
||||
* Please keep fasync_list & wait fields in the same cache line
|
||||
*/
|
||||
struct fasync_struct *fasync_list;
|
||||
wait_queue_head_t wait;
|
||||
|
||||
struct socket_wq *wq;
|
||||
|
||||
struct file *file;
|
||||
struct sock *sk;
|
||||
|
@@ -219,34 +219,6 @@ struct neighbour;
|
||||
struct neigh_parms;
|
||||
struct sk_buff;
|
||||
|
||||
struct netif_rx_stats {
|
||||
unsigned total;
|
||||
unsigned dropped;
|
||||
unsigned time_squeeze;
|
||||
unsigned cpu_collision;
|
||||
};
|
||||
|
||||
DECLARE_PER_CPU(struct netif_rx_stats, netdev_rx_stat);
|
||||
|
||||
struct dev_addr_list {
|
||||
struct dev_addr_list *next;
|
||||
u8 da_addr[MAX_ADDR_LEN];
|
||||
u8 da_addrlen;
|
||||
u8 da_synced;
|
||||
int da_users;
|
||||
int da_gusers;
|
||||
};
|
||||
|
||||
/*
|
||||
* We tag multicasts with these structures.
|
||||
*/
|
||||
|
||||
#define dev_mc_list dev_addr_list
|
||||
#define dmi_addr da_addr
|
||||
#define dmi_addrlen da_addrlen
|
||||
#define dmi_users da_users
|
||||
#define dmi_gusers da_gusers
|
||||
|
||||
struct netdev_hw_addr {
|
||||
struct list_head list;
|
||||
unsigned char addr[MAX_ADDR_LEN];
|
||||
@@ -255,8 +227,10 @@ struct netdev_hw_addr {
|
||||
#define NETDEV_HW_ADDR_T_SAN 2
|
||||
#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;
|
||||
struct rcu_head rcu_head;
|
||||
};
|
||||
|
||||
@@ -265,16 +239,20 @@ struct netdev_hw_addr_list {
|
||||
int count;
|
||||
};
|
||||
|
||||
#define netdev_uc_count(dev) ((dev)->uc.count)
|
||||
#define netdev_uc_empty(dev) ((dev)->uc.count == 0)
|
||||
#define netdev_hw_addr_list_count(l) ((l)->count)
|
||||
#define netdev_hw_addr_list_empty(l) (netdev_hw_addr_list_count(l) == 0)
|
||||
#define netdev_hw_addr_list_for_each(ha, l) \
|
||||
list_for_each_entry(ha, &(l)->list, list)
|
||||
|
||||
#define netdev_uc_count(dev) netdev_hw_addr_list_count(&(dev)->uc)
|
||||
#define netdev_uc_empty(dev) netdev_hw_addr_list_empty(&(dev)->uc)
|
||||
#define netdev_for_each_uc_addr(ha, dev) \
|
||||
list_for_each_entry(ha, &dev->uc.list, list)
|
||||
netdev_hw_addr_list_for_each(ha, &(dev)->uc)
|
||||
|
||||
#define netdev_mc_count(dev) ((dev)->mc_count)
|
||||
#define netdev_mc_empty(dev) (netdev_mc_count(dev) == 0)
|
||||
|
||||
#define netdev_for_each_mc_addr(mclist, dev) \
|
||||
for (mclist = dev->mc_list; mclist; mclist = mclist->next)
|
||||
#define netdev_mc_count(dev) netdev_hw_addr_list_count(&(dev)->mc)
|
||||
#define netdev_mc_empty(dev) netdev_hw_addr_list_empty(&(dev)->mc)
|
||||
#define netdev_for_each_mc_addr(ha, dev) \
|
||||
netdev_hw_addr_list_for_each(ha, &(dev)->mc)
|
||||
|
||||
struct hh_cache {
|
||||
struct hh_cache *hh_next; /* Next entry */
|
||||
@@ -531,6 +509,85 @@ struct netdev_queue {
|
||||
unsigned long tx_dropped;
|
||||
} ____cacheline_aligned_in_smp;
|
||||
|
||||
#ifdef CONFIG_RPS
|
||||
/*
|
||||
* This structure holds an RPS map which can be of variable length. The
|
||||
* map is an array of CPUs.
|
||||
*/
|
||||
struct rps_map {
|
||||
unsigned int len;
|
||||
struct rcu_head rcu;
|
||||
u16 cpus[0];
|
||||
};
|
||||
#define RPS_MAP_SIZE(_num) (sizeof(struct rps_map) + (_num * sizeof(u16)))
|
||||
|
||||
/*
|
||||
* The rps_dev_flow structure contains the mapping of a flow to a CPU and the
|
||||
* tail pointer for that CPU's input queue at the time of last enqueue.
|
||||
*/
|
||||
struct rps_dev_flow {
|
||||
u16 cpu;
|
||||
u16 fill;
|
||||
unsigned int last_qtail;
|
||||
};
|
||||
|
||||
/*
|
||||
* The rps_dev_flow_table structure contains a table of flow mappings.
|
||||
*/
|
||||
struct rps_dev_flow_table {
|
||||
unsigned int mask;
|
||||
struct rcu_head rcu;
|
||||
struct work_struct free_work;
|
||||
struct rps_dev_flow flows[0];
|
||||
};
|
||||
#define RPS_DEV_FLOW_TABLE_SIZE(_num) (sizeof(struct rps_dev_flow_table) + \
|
||||
(_num * sizeof(struct rps_dev_flow)))
|
||||
|
||||
/*
|
||||
* The rps_sock_flow_table contains mappings of flows to the last CPU
|
||||
* on which they were processed by the application (set in recvmsg).
|
||||
*/
|
||||
struct rps_sock_flow_table {
|
||||
unsigned int mask;
|
||||
u16 ents[0];
|
||||
};
|
||||
#define RPS_SOCK_FLOW_TABLE_SIZE(_num) (sizeof(struct rps_sock_flow_table) + \
|
||||
(_num * sizeof(u16)))
|
||||
|
||||
#define RPS_NO_CPU 0xffff
|
||||
|
||||
static inline void rps_record_sock_flow(struct rps_sock_flow_table *table,
|
||||
u32 hash)
|
||||
{
|
||||
if (table && hash) {
|
||||
unsigned int cpu, index = hash & table->mask;
|
||||
|
||||
/* We only give a hint, preemption can change cpu under us */
|
||||
cpu = raw_smp_processor_id();
|
||||
|
||||
if (table->ents[index] != cpu)
|
||||
table->ents[index] = cpu;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void rps_reset_sock_flow(struct rps_sock_flow_table *table,
|
||||
u32 hash)
|
||||
{
|
||||
if (table && hash)
|
||||
table->ents[hash & table->mask] = RPS_NO_CPU;
|
||||
}
|
||||
|
||||
extern struct rps_sock_flow_table *rps_sock_flow_table;
|
||||
|
||||
/* This structure contains an instance of an RX queue. */
|
||||
struct netdev_rx_queue {
|
||||
struct rps_map *rps_map;
|
||||
struct rps_dev_flow_table *rps_flow_table;
|
||||
struct kobject kobj;
|
||||
struct netdev_rx_queue *first;
|
||||
atomic_t count;
|
||||
} ____cacheline_aligned_in_smp;
|
||||
#endif /* CONFIG_RPS */
|
||||
|
||||
/*
|
||||
* This structure defines the management hooks for network devices.
|
||||
@@ -630,6 +687,9 @@ struct netdev_queue {
|
||||
* int (*ndo_set_vf_tx_rate)(struct net_device *dev, int vf, int rate);
|
||||
* int (*ndo_get_vf_config)(struct net_device *dev,
|
||||
* int vf, struct ifla_vf_info *ivf);
|
||||
* int (*ndo_set_vf_port)(struct net_device *dev, int vf,
|
||||
* struct nlattr *port[]);
|
||||
* int (*ndo_get_vf_port)(struct net_device *dev, int vf, struct sk_buff *skb);
|
||||
*/
|
||||
#define HAVE_NET_DEVICE_OPS
|
||||
struct net_device_ops {
|
||||
@@ -668,6 +728,7 @@ struct net_device_ops {
|
||||
unsigned short vid);
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
void (*ndo_poll_controller)(struct net_device *dev);
|
||||
void (*ndo_netpoll_cleanup)(struct net_device *dev);
|
||||
#endif
|
||||
int (*ndo_set_vf_mac)(struct net_device *dev,
|
||||
int queue, u8 *mac);
|
||||
@@ -678,6 +739,11 @@ struct net_device_ops {
|
||||
int (*ndo_get_vf_config)(struct net_device *dev,
|
||||
int vf,
|
||||
struct ifla_vf_info *ivf);
|
||||
int (*ndo_set_vf_port)(struct net_device *dev,
|
||||
int vf,
|
||||
struct nlattr *port[]);
|
||||
int (*ndo_get_vf_port)(struct net_device *dev,
|
||||
int vf, struct sk_buff *skb);
|
||||
#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
|
||||
int (*ndo_fcoe_enable)(struct net_device *dev);
|
||||
int (*ndo_fcoe_disable)(struct net_device *dev);
|
||||
@@ -768,6 +834,7 @@ struct net_device {
|
||||
#define NETIF_F_SCTP_CSUM (1 << 25) /* SCTP checksum offload */
|
||||
#define NETIF_F_FCOE_MTU (1 << 26) /* Supports max FCoE MTU, 2158 bytes*/
|
||||
#define NETIF_F_NTUPLE (1 << 27) /* N-tuple filters supported */
|
||||
#define NETIF_F_RXHASH (1 << 28) /* Receive hashing offload */
|
||||
|
||||
/* Segmentation offload features */
|
||||
#define NETIF_F_GSO_SHIFT 16
|
||||
@@ -824,7 +891,7 @@ struct net_device {
|
||||
unsigned char operstate; /* RFC2863 operstate */
|
||||
unsigned char link_mode; /* mapping policy to operstate */
|
||||
|
||||
unsigned mtu; /* interface MTU value */
|
||||
unsigned int mtu; /* interface MTU value */
|
||||
unsigned short type; /* interface hardware type */
|
||||
unsigned short hard_header_len; /* hardware hdr length */
|
||||
|
||||
@@ -844,12 +911,10 @@ struct net_device {
|
||||
unsigned char addr_len; /* hardware address length */
|
||||
unsigned short dev_id; /* for shared network cards */
|
||||
|
||||
struct netdev_hw_addr_list uc; /* Secondary unicast
|
||||
mac addresses */
|
||||
int uc_promisc;
|
||||
spinlock_t addr_list_lock;
|
||||
struct dev_addr_list *mc_list; /* Multicast mac addresses */
|
||||
int mc_count; /* Number of installed mcasts */
|
||||
struct netdev_hw_addr_list uc; /* Unicast mac addresses */
|
||||
struct netdev_hw_addr_list mc; /* Multicast mac addresses */
|
||||
int uc_promisc;
|
||||
unsigned int promiscuity;
|
||||
unsigned int allmulti;
|
||||
|
||||
@@ -882,6 +947,15 @@ struct net_device {
|
||||
|
||||
unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */
|
||||
|
||||
#ifdef CONFIG_RPS
|
||||
struct kset *queues_kset;
|
||||
|
||||
struct netdev_rx_queue *_rx;
|
||||
|
||||
/* Number of RX queues allocated at alloc_netdev_mq() time */
|
||||
unsigned int num_rx_queues;
|
||||
#endif
|
||||
|
||||
struct netdev_queue rx_queue;
|
||||
|
||||
struct netdev_queue *_tx ____cacheline_aligned_in_smp;
|
||||
@@ -1310,19 +1384,44 @@ static inline int unregister_gifconf(unsigned int family)
|
||||
}
|
||||
|
||||
/*
|
||||
* Incoming packets are placed on per-cpu queues so that
|
||||
* no locking is needed.
|
||||
* Incoming packets are placed on per-cpu queues
|
||||
*/
|
||||
struct softnet_data {
|
||||
struct Qdisc *output_queue;
|
||||
struct sk_buff_head input_pkt_queue;
|
||||
struct Qdisc **output_queue_tailp;
|
||||
struct list_head poll_list;
|
||||
struct sk_buff *completion_queue;
|
||||
struct sk_buff_head process_queue;
|
||||
|
||||
/* stats */
|
||||
unsigned int processed;
|
||||
unsigned int time_squeeze;
|
||||
unsigned int cpu_collision;
|
||||
unsigned int received_rps;
|
||||
|
||||
#ifdef CONFIG_RPS
|
||||
struct softnet_data *rps_ipi_list;
|
||||
|
||||
/* Elements below can be accessed between CPUs for RPS */
|
||||
struct call_single_data csd ____cacheline_aligned_in_smp;
|
||||
struct softnet_data *rps_ipi_next;
|
||||
unsigned int cpu;
|
||||
unsigned int input_queue_head;
|
||||
#endif
|
||||
unsigned dropped;
|
||||
struct sk_buff_head input_pkt_queue;
|
||||
struct napi_struct backlog;
|
||||
};
|
||||
|
||||
DECLARE_PER_CPU(struct softnet_data,softnet_data);
|
||||
static inline void input_queue_head_add(struct softnet_data *sd,
|
||||
unsigned int len)
|
||||
{
|
||||
#ifdef CONFIG_RPS
|
||||
sd->input_queue_head += len;
|
||||
#endif
|
||||
}
|
||||
|
||||
DECLARE_PER_CPU_ALIGNED(struct softnet_data, softnet_data);
|
||||
|
||||
#define HAVE_NETIF_QUEUE
|
||||
|
||||
@@ -1949,6 +2048,22 @@ extern struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
|
||||
extern int register_netdev(struct net_device *dev);
|
||||
extern void unregister_netdev(struct net_device *dev);
|
||||
|
||||
/* General hardware address lists handling functions */
|
||||
extern int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list,
|
||||
struct netdev_hw_addr_list *from_list,
|
||||
int addr_len, unsigned char addr_type);
|
||||
extern void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list,
|
||||
struct netdev_hw_addr_list *from_list,
|
||||
int addr_len, unsigned char addr_type);
|
||||
extern int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
|
||||
struct netdev_hw_addr_list *from_list,
|
||||
int addr_len);
|
||||
extern void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
|
||||
struct netdev_hw_addr_list *from_list,
|
||||
int addr_len);
|
||||
extern void __hw_addr_flush(struct netdev_hw_addr_list *list);
|
||||
extern void __hw_addr_init(struct netdev_hw_addr_list *list);
|
||||
|
||||
/* Functions used for device addresses handling */
|
||||
extern int dev_addr_add(struct net_device *dev, unsigned char *addr,
|
||||
unsigned char addr_type);
|
||||
@@ -1960,26 +2075,34 @@ extern int dev_addr_add_multiple(struct net_device *to_dev,
|
||||
extern int dev_addr_del_multiple(struct net_device *to_dev,
|
||||
struct net_device *from_dev,
|
||||
unsigned char addr_type);
|
||||
extern void dev_addr_flush(struct net_device *dev);
|
||||
extern int dev_addr_init(struct net_device *dev);
|
||||
|
||||
/* Functions used for unicast addresses handling */
|
||||
extern int dev_uc_add(struct net_device *dev, unsigned char *addr);
|
||||
extern int dev_uc_del(struct net_device *dev, unsigned char *addr);
|
||||
extern int dev_uc_sync(struct net_device *to, struct net_device *from);
|
||||
extern void dev_uc_unsync(struct net_device *to, struct net_device *from);
|
||||
extern void dev_uc_flush(struct net_device *dev);
|
||||
extern void dev_uc_init(struct net_device *dev);
|
||||
|
||||
/* Functions used for multicast addresses handling */
|
||||
extern int dev_mc_add(struct net_device *dev, unsigned char *addr);
|
||||
extern int dev_mc_add_global(struct net_device *dev, unsigned char *addr);
|
||||
extern int dev_mc_del(struct net_device *dev, unsigned char *addr);
|
||||
extern int dev_mc_del_global(struct net_device *dev, unsigned char *addr);
|
||||
extern int dev_mc_sync(struct net_device *to, struct net_device *from);
|
||||
extern void dev_mc_unsync(struct net_device *to, struct net_device *from);
|
||||
extern void dev_mc_flush(struct net_device *dev);
|
||||
extern void dev_mc_init(struct net_device *dev);
|
||||
|
||||
/* Functions used for secondary unicast and multicast support */
|
||||
extern void dev_set_rx_mode(struct net_device *dev);
|
||||
extern void __dev_set_rx_mode(struct net_device *dev);
|
||||
extern int dev_unicast_delete(struct net_device *dev, void *addr);
|
||||
extern int dev_unicast_add(struct net_device *dev, void *addr);
|
||||
extern int dev_unicast_sync(struct net_device *to, struct net_device *from);
|
||||
extern void dev_unicast_unsync(struct net_device *to, struct net_device *from);
|
||||
extern int dev_mc_delete(struct net_device *dev, void *addr, int alen, int all);
|
||||
extern int dev_mc_add(struct net_device *dev, void *addr, int alen, int newonly);
|
||||
extern int dev_mc_sync(struct net_device *to, struct net_device *from);
|
||||
extern void dev_mc_unsync(struct net_device *to, struct net_device *from);
|
||||
extern int __dev_addr_delete(struct dev_addr_list **list, int *count, void *addr, int alen, int all);
|
||||
extern int __dev_addr_add(struct dev_addr_list **list, int *count, void *addr, int alen, int newonly);
|
||||
extern int __dev_addr_sync(struct dev_addr_list **to, int *to_count, struct dev_addr_list **from, int *from_count);
|
||||
extern void __dev_addr_unsync(struct dev_addr_list **to, int *to_count, struct dev_addr_list **from, int *from_count);
|
||||
extern int dev_set_promiscuity(struct net_device *dev, int inc);
|
||||
extern int dev_set_allmulti(struct net_device *dev, int inc);
|
||||
extern void netdev_state_change(struct net_device *dev);
|
||||
extern void netdev_bonding_change(struct net_device *dev,
|
||||
extern int netdev_bonding_change(struct net_device *dev,
|
||||
unsigned long event);
|
||||
extern void netdev_features_change(struct net_device *dev);
|
||||
/* Load a device via the kmod */
|
||||
@@ -1989,6 +2112,7 @@ extern const struct net_device_stats *dev_get_stats(struct net_device *dev);
|
||||
extern void dev_txq_stats_fold(const struct net_device *dev, struct net_device_stats *stats);
|
||||
|
||||
extern int netdev_max_backlog;
|
||||
extern int netdev_tstamp_prequeue;
|
||||
extern int weight_p;
|
||||
extern int netdev_set_master(struct net_device *dev, struct net_device *master);
|
||||
extern int skb_checksum_help(struct sk_buff *skb);
|
||||
@@ -2049,54 +2173,14 @@ static inline void netif_set_gso_max_size(struct net_device *dev,
|
||||
dev->gso_max_size = size;
|
||||
}
|
||||
|
||||
static inline void skb_bond_set_mac_by_master(struct sk_buff *skb,
|
||||
struct net_device *master)
|
||||
{
|
||||
if (skb->pkt_type == PACKET_HOST) {
|
||||
u16 *dest = (u16 *) eth_hdr(skb)->h_dest;
|
||||
extern int __skb_bond_should_drop(struct sk_buff *skb,
|
||||
struct net_device *master);
|
||||
|
||||
memcpy(dest, master->dev_addr, ETH_ALEN);
|
||||
}
|
||||
}
|
||||
|
||||
/* On bonding slaves other than the currently active slave, suppress
|
||||
* duplicates except for 802.3ad ETH_P_SLOW, alb non-mcast/bcast, and
|
||||
* ARP on active-backup slaves with arp_validate enabled.
|
||||
*/
|
||||
static inline int skb_bond_should_drop(struct sk_buff *skb,
|
||||
struct net_device *master)
|
||||
{
|
||||
if (master) {
|
||||
struct net_device *dev = skb->dev;
|
||||
|
||||
if (master->priv_flags & IFF_MASTER_ARPMON)
|
||||
dev->last_rx = jiffies;
|
||||
|
||||
if ((master->priv_flags & IFF_MASTER_ALB) && master->br_port) {
|
||||
/* Do address unmangle. The local destination address
|
||||
* will be always the one master has. Provides the right
|
||||
* functionality in a bridge.
|
||||
*/
|
||||
skb_bond_set_mac_by_master(skb, master);
|
||||
}
|
||||
|
||||
if (dev->priv_flags & IFF_SLAVE_INACTIVE) {
|
||||
if ((dev->priv_flags & IFF_SLAVE_NEEDARP) &&
|
||||
skb->protocol == __cpu_to_be16(ETH_P_ARP))
|
||||
return 0;
|
||||
|
||||
if (master->priv_flags & IFF_MASTER_ALB) {
|
||||
if (skb->pkt_type != PACKET_BROADCAST &&
|
||||
skb->pkt_type != PACKET_MULTICAST)
|
||||
return 0;
|
||||
}
|
||||
if (master->priv_flags & IFF_MASTER_8023AD &&
|
||||
skb->protocol == __cpu_to_be16(ETH_P_SLOW))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
if (master)
|
||||
return __skb_bond_should_drop(skb, master);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -16,6 +16,7 @@ header-y += xt_RATEEST.h
|
||||
header-y += xt_SECMARK.h
|
||||
header-y += xt_TCPMSS.h
|
||||
header-y += xt_TCPOPTSTRIP.h
|
||||
header-y += xt_TEE.h
|
||||
header-y += xt_TPROXY.h
|
||||
header-y += xt_comment.h
|
||||
header-y += xt_connbytes.h
|
||||
|
@@ -113,6 +113,7 @@ struct ip_conntrack_stat {
|
||||
unsigned int expect_new;
|
||||
unsigned int expect_create;
|
||||
unsigned int expect_delete;
|
||||
unsigned int search_restart;
|
||||
};
|
||||
|
||||
/* call to create an explicit dependency on nf_conntrack. */
|
||||
|
@@ -1,8 +1,7 @@
|
||||
#ifndef _NF_CONNTRACK_TUPLE_COMMON_H
|
||||
#define _NF_CONNTRACK_TUPLE_COMMON_H
|
||||
|
||||
enum ip_conntrack_dir
|
||||
{
|
||||
enum ip_conntrack_dir {
|
||||
IP_CT_DIR_ORIGINAL,
|
||||
IP_CT_DIR_REPLY,
|
||||
IP_CT_DIR_MAX
|
||||
|
@@ -1,9 +1,10 @@
|
||||
#ifndef _X_TABLES_H
|
||||
#define _X_TABLES_H
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define XT_FUNCTION_MAXNAMELEN 30
|
||||
#define XT_EXTENSION_MAXNAMELEN 29
|
||||
#define XT_TABLE_MAXNAMELEN 32
|
||||
|
||||
struct xt_entry_match {
|
||||
@@ -12,8 +13,7 @@ struct xt_entry_match {
|
||||
__u16 match_size;
|
||||
|
||||
/* Used by userspace */
|
||||
char name[XT_FUNCTION_MAXNAMELEN-1];
|
||||
|
||||
char name[XT_EXTENSION_MAXNAMELEN];
|
||||
__u8 revision;
|
||||
} user;
|
||||
struct {
|
||||
@@ -36,8 +36,7 @@ struct xt_entry_target {
|
||||
__u16 target_size;
|
||||
|
||||
/* Used by userspace */
|
||||
char name[XT_FUNCTION_MAXNAMELEN-1];
|
||||
|
||||
char name[XT_EXTENSION_MAXNAMELEN];
|
||||
__u8 revision;
|
||||
} user;
|
||||
struct {
|
||||
@@ -70,8 +69,7 @@ struct xt_standard_target {
|
||||
/* The argument to IPT_SO_GET_REVISION_*. Returns highest revision
|
||||
* kernel supports, if >= revision. */
|
||||
struct xt_get_revision {
|
||||
char name[XT_FUNCTION_MAXNAMELEN-1];
|
||||
|
||||
char name[XT_EXTENSION_MAXNAMELEN];
|
||||
__u8 revision;
|
||||
};
|
||||
|
||||
@@ -93,7 +91,7 @@ struct _xt_align {
|
||||
__u64 u64;
|
||||
};
|
||||
|
||||
#define XT_ALIGN(s) ALIGN((s), __alignof__(struct _xt_align))
|
||||
#define XT_ALIGN(s) __ALIGN_KERNEL((s), __alignof__(struct _xt_align))
|
||||
|
||||
/* Standard return verdict, or do jump. */
|
||||
#define XT_STANDARD_TARGET ""
|
||||
@@ -185,40 +183,53 @@ struct xt_counters_info {
|
||||
#include <linux/netdevice.h>
|
||||
|
||||
/**
|
||||
* struct xt_match_param - parameters for match extensions' match functions
|
||||
* struct xt_action_param - parameters for matches/targets
|
||||
*
|
||||
* @match: the match extension
|
||||
* @target: the target extension
|
||||
* @matchinfo: per-match data
|
||||
* @targetinfo: per-target data
|
||||
* @in: input netdevice
|
||||
* @out: output netdevice
|
||||
* @match: struct xt_match through which this function was invoked
|
||||
* @matchinfo: per-match data
|
||||
* @fragoff: packet is a fragment, this is the data offset
|
||||
* @thoff: position of transport header relative to skb->data
|
||||
* @hook: hook number given packet came from
|
||||
* @family: Actual NFPROTO_* through which the function is invoked
|
||||
* (helpful when match->family == NFPROTO_UNSPEC)
|
||||
*
|
||||
* Fields written to by extensions:
|
||||
*
|
||||
* @hotdrop: drop packet if we had inspection problems
|
||||
* Network namespace obtainable using dev_net(in/out)
|
||||
*/
|
||||
struct xt_match_param {
|
||||
struct xt_action_param {
|
||||
union {
|
||||
const struct xt_match *match;
|
||||
const struct xt_target *target;
|
||||
};
|
||||
union {
|
||||
const void *matchinfo, *targinfo;
|
||||
};
|
||||
const struct net_device *in, *out;
|
||||
const struct xt_match *match;
|
||||
const void *matchinfo;
|
||||
int fragoff;
|
||||
unsigned int thoff;
|
||||
unsigned int hooknum;
|
||||
u_int8_t family;
|
||||
bool *hotdrop;
|
||||
bool hotdrop;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct xt_mtchk_param - parameters for match extensions'
|
||||
* checkentry functions
|
||||
*
|
||||
* @net: network namespace through which the check was invoked
|
||||
* @table: table the rule is tried to be inserted into
|
||||
* @entryinfo: the family-specific rule data
|
||||
* (struct ipt_ip, ip6t_ip, ebt_entry)
|
||||
* (struct ipt_ip, ip6t_ip, arpt_arp or (note) ebt_entry)
|
||||
* @match: struct xt_match through which this function was invoked
|
||||
* @matchinfo: per-match data
|
||||
* @hook_mask: via which hooks the new rule is reachable
|
||||
* Other fields as above.
|
||||
*/
|
||||
struct xt_mtchk_param {
|
||||
struct net *net;
|
||||
@@ -230,7 +241,10 @@ struct xt_mtchk_param {
|
||||
u_int8_t family;
|
||||
};
|
||||
|
||||
/* Match destructor parameters */
|
||||
/**
|
||||
* struct xt_mdtor_param - match destructor parameters
|
||||
* Fields as above.
|
||||
*/
|
||||
struct xt_mtdtor_param {
|
||||
struct net *net;
|
||||
const struct xt_match *match;
|
||||
@@ -238,23 +252,6 @@ struct xt_mtdtor_param {
|
||||
u_int8_t family;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct xt_target_param - parameters for target extensions' target functions
|
||||
*
|
||||
* @hooknum: hook through which this target was invoked
|
||||
* @target: struct xt_target through which this function was invoked
|
||||
* @targinfo: per-target data
|
||||
*
|
||||
* Other fields see above.
|
||||
*/
|
||||
struct xt_target_param {
|
||||
const struct net_device *in, *out;
|
||||
const struct xt_target *target;
|
||||
const void *targinfo;
|
||||
unsigned int hooknum;
|
||||
u_int8_t family;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct xt_tgchk_param - parameters for target extensions'
|
||||
* checkentry functions
|
||||
@@ -285,7 +282,7 @@ struct xt_tgdtor_param {
|
||||
struct xt_match {
|
||||
struct list_head list;
|
||||
|
||||
const char name[XT_FUNCTION_MAXNAMELEN-1];
|
||||
const char name[XT_EXTENSION_MAXNAMELEN];
|
||||
u_int8_t revision;
|
||||
|
||||
/* Return true or false: return FALSE and set *hotdrop = 1 to
|
||||
@@ -294,10 +291,10 @@ struct xt_match {
|
||||
non-linear skb, using skb_header_pointer and
|
||||
skb_ip_make_writable. */
|
||||
bool (*match)(const struct sk_buff *skb,
|
||||
const struct xt_match_param *);
|
||||
struct xt_action_param *);
|
||||
|
||||
/* Called when user tries to insert an entry of this type. */
|
||||
bool (*checkentry)(const struct xt_mtchk_param *);
|
||||
int (*checkentry)(const struct xt_mtchk_param *);
|
||||
|
||||
/* Called when entry of this type deleted. */
|
||||
void (*destroy)(const struct xt_mtdtor_param *);
|
||||
@@ -309,9 +306,6 @@ struct xt_match {
|
||||
/* Set this to THIS_MODULE if you are a module, otherwise NULL */
|
||||
struct module *me;
|
||||
|
||||
/* Free to use by each match */
|
||||
unsigned long data;
|
||||
|
||||
const char *table;
|
||||
unsigned int matchsize;
|
||||
#ifdef CONFIG_COMPAT
|
||||
@@ -327,19 +321,20 @@ struct xt_match {
|
||||
struct xt_target {
|
||||
struct list_head list;
|
||||
|
||||
const char name[XT_FUNCTION_MAXNAMELEN-1];
|
||||
const char name[XT_EXTENSION_MAXNAMELEN];
|
||||
u_int8_t revision;
|
||||
|
||||
/* Returns verdict. Argument order changed since 2.6.9, as this
|
||||
must now handle non-linear skbs, using skb_copy_bits and
|
||||
skb_ip_make_writable. */
|
||||
unsigned int (*target)(struct sk_buff *skb,
|
||||
const struct xt_target_param *);
|
||||
const struct xt_action_param *);
|
||||
|
||||
/* Called when user tries to insert an entry of this type:
|
||||
hook_mask is a bitmask of hooks from which it can be
|
||||
called. */
|
||||
/* Should return true or false. */
|
||||
bool (*checkentry)(const struct xt_tgchk_param *);
|
||||
/* Should return true or false, or an error code (-Exxxx). */
|
||||
int (*checkentry)(const struct xt_tgchk_param *);
|
||||
|
||||
/* Called when entry of this type deleted. */
|
||||
void (*destroy)(const struct xt_tgdtor_param *);
|
||||
@@ -360,7 +355,6 @@ struct xt_target {
|
||||
unsigned short proto;
|
||||
|
||||
unsigned short family;
|
||||
u_int8_t revision;
|
||||
};
|
||||
|
||||
/* Furniture shopping... */
|
||||
@@ -398,6 +392,13 @@ struct xt_table_info {
|
||||
unsigned int hook_entry[NF_INET_NUMHOOKS];
|
||||
unsigned int underflow[NF_INET_NUMHOOKS];
|
||||
|
||||
/*
|
||||
* Number of user chains. Since tables cannot have loops, at most
|
||||
* @stacksize jumps (number of user chains) can possibly be made.
|
||||
*/
|
||||
unsigned int stacksize;
|
||||
unsigned int *stackptr;
|
||||
void ***jumpstack;
|
||||
/* ipt_entry tables: one per CPU */
|
||||
/* Note : this field MUST be the last one, see XT_TABLE_INFO_SZ */
|
||||
void *entries[1];
|
||||
@@ -433,6 +434,8 @@ extern struct xt_table_info *xt_replace_table(struct xt_table *table,
|
||||
|
||||
extern struct xt_match *xt_find_match(u8 af, const char *name, u8 revision);
|
||||
extern struct xt_target *xt_find_target(u8 af, const char *name, u8 revision);
|
||||
extern struct xt_match *xt_request_find_match(u8 af, const char *name,
|
||||
u8 revision);
|
||||
extern struct xt_target *xt_request_find_target(u8 af, const char *name,
|
||||
u8 revision);
|
||||
extern int xt_find_revision(u8 af, const char *name, u8 revision,
|
||||
@@ -598,7 +601,7 @@ struct _compat_xt_align {
|
||||
compat_u64 u64;
|
||||
};
|
||||
|
||||
#define COMPAT_XT_ALIGN(s) ALIGN((s), __alignof__(struct _compat_xt_align))
|
||||
#define COMPAT_XT_ALIGN(s) __ALIGN_KERNEL((s), __alignof__(struct _compat_xt_align))
|
||||
|
||||
extern void xt_compat_lock(u_int8_t af);
|
||||
extern void xt_compat_unlock(u_int8_t af);
|
||||
|
@@ -1,26 +1,6 @@
|
||||
#ifndef _XT_CONNMARK_H_target
|
||||
#define _XT_CONNMARK_H_target
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* Copyright (C) 2002,2004 MARA Systems AB <http://www.marasystems.com>
|
||||
* by Henrik Nordstrom <hno@marasystems.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
enum {
|
||||
XT_CONNMARK_SET = 0,
|
||||
XT_CONNMARK_SAVE,
|
||||
XT_CONNMARK_RESTORE
|
||||
};
|
||||
|
||||
struct xt_connmark_tginfo1 {
|
||||
__u32 ctmark, ctmask, nfmask;
|
||||
__u8 mode;
|
||||
};
|
||||
#include <linux/netfilter/xt_connmark.h>
|
||||
|
||||
#endif /*_XT_CONNMARK_H_target*/
|
||||
|
@@ -1,10 +1,6 @@
|
||||
#ifndef _XT_MARK_H_target
|
||||
#define _XT_MARK_H_target
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct xt_mark_tginfo2 {
|
||||
__u32 mark, mask;
|
||||
};
|
||||
#include <linux/netfilter/xt_mark.h>
|
||||
|
||||
#endif /*_XT_MARK_H_target */
|
||||
|
12
include/linux/netfilter/xt_TEE.h
Normal file
12
include/linux/netfilter/xt_TEE.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef _XT_TEE_TARGET_H
|
||||
#define _XT_TEE_TARGET_H
|
||||
|
||||
struct xt_tee_tginfo {
|
||||
union nf_inet_addr gw;
|
||||
char oif[16];
|
||||
|
||||
/* used internally by the kernel */
|
||||
struct xt_tee_priv *priv __attribute__((aligned(8)));
|
||||
};
|
||||
|
||||
#endif /* _XT_TEE_TARGET_H */
|
@@ -12,6 +12,17 @@
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
enum {
|
||||
XT_CONNMARK_SET = 0,
|
||||
XT_CONNMARK_SAVE,
|
||||
XT_CONNMARK_RESTORE
|
||||
};
|
||||
|
||||
struct xt_connmark_tginfo1 {
|
||||
__u32 ctmark, ctmask, nfmask;
|
||||
__u8 mode;
|
||||
};
|
||||
|
||||
struct xt_connmark_mtinfo1 {
|
||||
__u32 mark, mask;
|
||||
__u8 invert;
|
||||
|
@@ -3,6 +3,10 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct xt_mark_tginfo2 {
|
||||
__u32 mark, mask;
|
||||
};
|
||||
|
||||
struct xt_mark_mtinfo1 {
|
||||
__u32 mark, mask;
|
||||
__u8 invert;
|
||||
|
@@ -9,6 +9,7 @@ enum {
|
||||
XT_RECENT_UPDATE = 1 << 2,
|
||||
XT_RECENT_REMOVE = 1 << 3,
|
||||
XT_RECENT_TTL = 1 << 4,
|
||||
XT_RECENT_REAP = 1 << 5,
|
||||
|
||||
XT_RECENT_SOURCE = 0,
|
||||
XT_RECENT_DEST = 1,
|
||||
@@ -16,6 +17,12 @@ enum {
|
||||
XT_RECENT_NAME_LEN = 200,
|
||||
};
|
||||
|
||||
/* Only allowed with --rcheck and --update */
|
||||
#define XT_RECENT_MODIFIERS (XT_RECENT_TTL|XT_RECENT_REAP)
|
||||
|
||||
#define XT_RECENT_VALID_FLAGS (XT_RECENT_CHECK|XT_RECENT_SET|XT_RECENT_UPDATE|\
|
||||
XT_RECENT_REMOVE|XT_RECENT_TTL|XT_RECENT_REAP)
|
||||
|
||||
struct xt_recent_mtinfo {
|
||||
__u32 seconds;
|
||||
__u32 hit_count;
|
||||
|
@@ -41,10 +41,10 @@ enum nf_br_hook_priorities {
|
||||
|
||||
#define BRNF_PKT_TYPE 0x01
|
||||
#define BRNF_BRIDGED_DNAT 0x02
|
||||
#define BRNF_DONT_TAKE_PARENT 0x04
|
||||
#define BRNF_BRIDGED 0x08
|
||||
#define BRNF_NF_BRIDGE_PREROUTING 0x10
|
||||
|
||||
#define BRNF_BRIDGED 0x04
|
||||
#define BRNF_NF_BRIDGE_PREROUTING 0x08
|
||||
#define BRNF_8021Q 0x10
|
||||
#define BRNF_PPPoE 0x20
|
||||
|
||||
/* Only used in br_forward.c */
|
||||
extern int nf_bridge_copy_header(struct sk_buff *skb);
|
||||
@@ -68,6 +68,27 @@ static inline unsigned int nf_bridge_encap_header_len(const struct sk_buff *skb)
|
||||
}
|
||||
}
|
||||
|
||||
static inline unsigned int nf_bridge_mtu_reduction(const struct sk_buff *skb)
|
||||
{
|
||||
if (unlikely(skb->nf_bridge->mask & BRNF_PPPoE))
|
||||
return PPPOE_SES_HLEN;
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern int br_handle_frame_finish(struct sk_buff *skb);
|
||||
/* Only used in br_device.c */
|
||||
static inline int br_nf_pre_routing_finish_bridge_slow(struct sk_buff *skb)
|
||||
{
|
||||
struct nf_bridge_info *nf_bridge = skb->nf_bridge;
|
||||
|
||||
skb_pull(skb, ETH_HLEN);
|
||||
nf_bridge->mask ^= BRNF_BRIDGED_DNAT;
|
||||
skb_copy_to_linear_data_offset(skb, -(ETH_HLEN-ETH_ALEN),
|
||||
skb->nf_bridge->data, ETH_HLEN-ETH_ALEN);
|
||||
skb->dev = nf_bridge->physindev;
|
||||
return br_handle_frame_finish(skb);
|
||||
}
|
||||
|
||||
/* This is called by the IP fragmenting code and it ensures there is
|
||||
* enough room for the encapsulating header (if there is one). */
|
||||
static inline unsigned int nf_bridge_pad(const struct sk_buff *skb)
|
||||
|
@@ -316,10 +316,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);
|
||||
|
||||
extern int ip6_masked_addrcmp(const struct in6_addr *addr1,
|
||||
const struct in6_addr *mask,
|
||||
const struct in6_addr *addr2);
|
||||
|
||||
#define IP6T_ALIGN(s) XT_ALIGN(s)
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
|
@@ -14,6 +14,7 @@
|
||||
|
||||
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);
|
||||
@@ -36,8 +37,11 @@ struct netpoll_info {
|
||||
struct sk_buff_head txq;
|
||||
|
||||
struct delayed_work tx_work;
|
||||
|
||||
struct netpoll *netpoll;
|
||||
};
|
||||
|
||||
void netpoll_poll_dev(struct net_device *dev);
|
||||
void netpoll_poll(struct netpoll *np);
|
||||
void netpoll_send_udp(struct netpoll *np, const char *msg, int len);
|
||||
void netpoll_print_options(struct netpoll *np);
|
||||
@@ -47,22 +51,23 @@ int netpoll_trap(void);
|
||||
void netpoll_set_trap(int trap);
|
||||
void netpoll_cleanup(struct netpoll *np);
|
||||
int __netpoll_rx(struct sk_buff *skb);
|
||||
void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb);
|
||||
|
||||
|
||||
#ifdef CONFIG_NETPOLL
|
||||
static inline int netpoll_rx(struct sk_buff *skb)
|
||||
static inline bool netpoll_rx(struct sk_buff *skb)
|
||||
{
|
||||
struct netpoll_info *npinfo = skb->dev->npinfo;
|
||||
unsigned long flags;
|
||||
int ret = 0;
|
||||
bool ret = false;
|
||||
|
||||
if (!npinfo || (list_empty(&npinfo->rx_np) && !npinfo->rx_flags))
|
||||
return 0;
|
||||
return false;
|
||||
|
||||
spin_lock_irqsave(&npinfo->rx_lock, flags);
|
||||
/* check rx_flags again with the lock held */
|
||||
if (npinfo->rx_flags && __netpoll_rx(skb))
|
||||
ret = 1;
|
||||
ret = true;
|
||||
spin_unlock_irqrestore(&npinfo->rx_lock, flags);
|
||||
|
||||
return ret;
|
||||
|
@@ -52,6 +52,8 @@
|
||||
* %NL80211_ATTR_WIPHY_CHANNEL_TYPE, %NL80211_ATTR_WIPHY_RETRY_SHORT,
|
||||
* %NL80211_ATTR_WIPHY_RETRY_LONG, %NL80211_ATTR_WIPHY_FRAG_THRESHOLD,
|
||||
* and/or %NL80211_ATTR_WIPHY_RTS_THRESHOLD.
|
||||
* However, for setting the channel, see %NL80211_CMD_SET_CHANNEL
|
||||
* instead, the support here is for backward compatibility only.
|
||||
* @NL80211_CMD_NEW_WIPHY: Newly created wiphy, response to get request
|
||||
* or rename notification. Has attributes %NL80211_ATTR_WIPHY and
|
||||
* %NL80211_ATTR_WIPHY_NAME.
|
||||
@@ -323,6 +325,21 @@
|
||||
* 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_SET_CQM: Connection quality monitor configuration. This command
|
||||
* is used to configure connection quality monitoring notification trigger
|
||||
* levels.
|
||||
* @NL80211_CMD_NOTIFY_CQM: Connection quality monitor notification. This
|
||||
* command is used as an event to indicate the that a trigger level was
|
||||
* reached.
|
||||
* @NL80211_CMD_SET_CHANNEL: Set the channel (using %NL80211_ATTR_WIPHY_FREQ
|
||||
* and %NL80211_ATTR_WIPHY_CHANNEL_TYPE) the given interface (identifed
|
||||
* by %NL80211_ATTR_IFINDEX) shall operate on.
|
||||
* In case multiple channels are supported by the device, the mechanism
|
||||
* with which it switches channels is implementation-defined.
|
||||
* When a monitor interface is given, it can only switch channel while
|
||||
* no other interfaces are operating to avoid disturbing the operation
|
||||
* of any other interfaces, and other interfaces will again take
|
||||
* precedence when they are used.
|
||||
*
|
||||
* @NL80211_CMD_MAX: highest used command number
|
||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||
@@ -419,6 +436,11 @@ enum nl80211_commands {
|
||||
NL80211_CMD_SET_POWER_SAVE,
|
||||
NL80211_CMD_GET_POWER_SAVE,
|
||||
|
||||
NL80211_CMD_SET_CQM,
|
||||
NL80211_CMD_NOTIFY_CQM,
|
||||
|
||||
NL80211_CMD_SET_CHANNEL,
|
||||
|
||||
/* add new commands above here */
|
||||
|
||||
/* used to define NL80211_CMD_MAX below */
|
||||
@@ -691,6 +713,18 @@ enum nl80211_commands {
|
||||
* @NL80211_ATTR_ACK: Flag attribute indicating that the frame was
|
||||
* acknowledged by the recipient.
|
||||
*
|
||||
* @NL80211_ATTR_CQM: connection quality monitor configuration in a
|
||||
* nested attribute with %NL80211_ATTR_CQM_* sub-attributes.
|
||||
*
|
||||
* @NL80211_ATTR_LOCAL_STATE_CHANGE: Flag attribute to indicate that a command
|
||||
* is requesting a local authentication/association state change without
|
||||
* invoking actual management frame exchange. This can be used with
|
||||
* NL80211_CMD_AUTHENTICATE, NL80211_CMD_DEAUTHENTICATE,
|
||||
* NL80211_CMD_DISASSOCIATE.
|
||||
*
|
||||
* @NL80211_ATTR_AP_ISOLATE: (AP mode) Do not forward traffic between stations
|
||||
* connected to this BSS.
|
||||
*
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -842,6 +876,12 @@ enum nl80211_attrs {
|
||||
|
||||
NL80211_ATTR_PS_STATE,
|
||||
|
||||
NL80211_ATTR_CQM,
|
||||
|
||||
NL80211_ATTR_LOCAL_STATE_CHANGE,
|
||||
|
||||
NL80211_ATTR_AP_ISOLATE,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
@@ -1583,4 +1623,40 @@ enum nl80211_ps_state {
|
||||
NL80211_PS_ENABLED,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_attr_cqm - connection quality monitor attributes
|
||||
* @__NL80211_ATTR_CQM_INVALID: invalid
|
||||
* @NL80211_ATTR_CQM_RSSI_THOLD: RSSI threshold in dBm. This value specifies
|
||||
* the threshold for the RSSI level at which an event will be sent. Zero
|
||||
* to disable.
|
||||
* @NL80211_ATTR_CQM_RSSI_HYST: RSSI hysteresis in dBm. This value specifies
|
||||
* the minimum amount the RSSI level must change after an event before a
|
||||
* new event may be issued (to reduce effects of RSSI oscillation).
|
||||
* @NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT: RSSI threshold event
|
||||
* @__NL80211_ATTR_CQM_AFTER_LAST: internal
|
||||
* @NL80211_ATTR_CQM_MAX: highest key attribute
|
||||
*/
|
||||
enum nl80211_attr_cqm {
|
||||
__NL80211_ATTR_CQM_INVALID,
|
||||
NL80211_ATTR_CQM_RSSI_THOLD,
|
||||
NL80211_ATTR_CQM_RSSI_HYST,
|
||||
NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_ATTR_CQM_AFTER_LAST,
|
||||
NL80211_ATTR_CQM_MAX = __NL80211_ATTR_CQM_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_cqm_rssi_threshold_event - RSSI threshold event
|
||||
* @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
|
||||
* configured threshold
|
||||
*/
|
||||
enum nl80211_cqm_rssi_threshold_event {
|
||||
NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW,
|
||||
NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH,
|
||||
};
|
||||
|
||||
#endif /* __LINUX_NL80211_H */
|
||||
|
@@ -182,7 +182,10 @@ static inline int notifier_to_errno(int ret)
|
||||
* VC switch chains (for loadable kernel svgalib VC switch helpers) etc...
|
||||
*/
|
||||
|
||||
/* netdevice notifier chain */
|
||||
/* netdevice notifier chain. Please remember to update the rtnetlink
|
||||
* notification exclusion list in rtnetlink_event() when adding new
|
||||
* types.
|
||||
*/
|
||||
#define NETDEV_UP 0x0001 /* For now you can't veto a device up/down */
|
||||
#define NETDEV_DOWN 0x0002
|
||||
#define NETDEV_REBOOT 0x0003 /* Tell a protocol stack a network interface
|
||||
@@ -199,10 +202,11 @@ static inline int notifier_to_errno(int ret)
|
||||
#define NETDEV_FEAT_CHANGE 0x000B
|
||||
#define NETDEV_BONDING_FAILOVER 0x000C
|
||||
#define NETDEV_PRE_UP 0x000D
|
||||
#define NETDEV_BONDING_OLDTYPE 0x000E
|
||||
#define NETDEV_BONDING_NEWTYPE 0x000F
|
||||
#define NETDEV_PRE_TYPE_CHANGE 0x000E
|
||||
#define NETDEV_POST_TYPE_CHANGE 0x000F
|
||||
#define NETDEV_POST_INIT 0x0010
|
||||
#define NETDEV_UNREGISTER_BATCH 0x0011
|
||||
#define NETDEV_BONDING_DESLAVE 0x0012
|
||||
|
||||
#define SYS_DOWN 0x0001 /* Notify of system down */
|
||||
#define SYS_RESTART SYS_DOWN
|
||||
|
@@ -442,7 +442,10 @@
|
||||
#define PCI_EXP_LNKCTL_LABIE 0x0800 /* Lnk Autonomous Bandwidth Interrupt Enable */
|
||||
#define PCI_EXP_LNKSTA 18 /* Link Status */
|
||||
#define PCI_EXP_LNKSTA_CLS 0x000f /* Current Link Speed */
|
||||
#define PCI_EXP_LNKSTA_CLS_2_5GB 0x01 /* Current Link Speed 2.5GT/s */
|
||||
#define PCI_EXP_LNKSTA_CLS_5_0GB 0x02 /* Current Link Speed 5.0GT/s */
|
||||
#define PCI_EXP_LNKSTA_NLW 0x03f0 /* Nogotiated Link Width */
|
||||
#define PCI_EXP_LNKSTA_NLW_SHIFT 4 /* start of NLW mask in link status */
|
||||
#define PCI_EXP_LNKSTA_LT 0x0800 /* Link Training */
|
||||
#define PCI_EXP_LNKSTA_SLC 0x1000 /* Slot Clock Configuration */
|
||||
#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */
|
||||
|
@@ -24,6 +24,7 @@
|
||||
#include <linux/mii.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
|
||||
#include <asm/atomic.h>
|
||||
|
||||
@@ -81,6 +82,10 @@ typedef enum {
|
||||
*/
|
||||
#define MII_BUS_ID_SIZE (20 - 3)
|
||||
|
||||
/* Or MII_ADDR_C45 into regnum for read/write on mii_bus to enable the 21 bit
|
||||
IEEE 802.3ae clause 45 addressing mode used by 10GIGE phy chips. */
|
||||
#define MII_ADDR_C45 (1<<30)
|
||||
|
||||
/*
|
||||
* The Bus class for PHYs. Devices which provide access to
|
||||
* PHYs should register using this structure
|
||||
@@ -127,8 +132,8 @@ int mdiobus_register(struct mii_bus *bus);
|
||||
void mdiobus_unregister(struct mii_bus *bus);
|
||||
void mdiobus_free(struct mii_bus *bus);
|
||||
struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr);
|
||||
int mdiobus_read(struct mii_bus *bus, int addr, u16 regnum);
|
||||
int mdiobus_write(struct mii_bus *bus, int addr, u16 regnum, u16 val);
|
||||
int mdiobus_read(struct mii_bus *bus, int addr, u32 regnum);
|
||||
int mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val);
|
||||
|
||||
|
||||
#define PHY_INTERRUPT_DISABLED 0x0
|
||||
@@ -422,7 +427,7 @@ struct phy_fixup {
|
||||
* because the bus read/write functions may wait for an interrupt
|
||||
* to conclude the operation.
|
||||
*/
|
||||
static inline int phy_read(struct phy_device *phydev, u16 regnum)
|
||||
static inline int phy_read(struct phy_device *phydev, u32 regnum)
|
||||
{
|
||||
return mdiobus_read(phydev->bus, phydev->addr, regnum);
|
||||
}
|
||||
@@ -437,7 +442,7 @@ static inline int phy_read(struct phy_device *phydev, u16 regnum)
|
||||
* because the bus read/write functions may wait for an interrupt
|
||||
* to conclude the operation.
|
||||
*/
|
||||
static inline int phy_write(struct phy_device *phydev, u16 regnum, u16 val)
|
||||
static inline int phy_write(struct phy_device *phydev, u32 regnum, u16 val)
|
||||
{
|
||||
return mdiobus_write(phydev->bus, phydev->addr, regnum, val);
|
||||
}
|
||||
|
@@ -72,6 +72,9 @@ extern int ppp_channel_index(struct ppp_channel *);
|
||||
/* Get the unit number associated with a channel, or -1 if none */
|
||||
extern int ppp_unit_number(struct ppp_channel *);
|
||||
|
||||
/* Get the device name associated with a channel, or NULL if none */
|
||||
extern char *ppp_dev_name(struct ppp_channel *);
|
||||
|
||||
/*
|
||||
* SMP locking notes:
|
||||
* The channel code must ensure that when it calls ppp_unregister_channel,
|
||||
|
@@ -428,5 +428,47 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev,
|
||||
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; }); \
|
||||
pos = rcu_dereference_raw(pos->next))
|
||||
|
||||
/**
|
||||
* hlist_for_each_entry_rcu_bh - iterate over rcu list of given type
|
||||
* @tpos: the type * to use as a loop cursor.
|
||||
* @pos: the &struct hlist_node to use as a loop cursor.
|
||||
* @head: the head for your list.
|
||||
* @member: the name of the hlist_node within the struct.
|
||||
*
|
||||
* This list-traversal primitive may safely run concurrently with
|
||||
* the _rcu list-mutation primitives such as hlist_add_head_rcu()
|
||||
* as long as the traversal is guarded by rcu_read_lock().
|
||||
*/
|
||||
#define hlist_for_each_entry_rcu_bh(tpos, pos, head, member) \
|
||||
for (pos = rcu_dereference_bh((head)->first); \
|
||||
pos && ({ prefetch(pos->next); 1; }) && \
|
||||
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; }); \
|
||||
pos = rcu_dereference_bh(pos->next))
|
||||
|
||||
/**
|
||||
* hlist_for_each_entry_continue_rcu - iterate over a hlist continuing after current point
|
||||
* @tpos: the type * to use as a loop cursor.
|
||||
* @pos: the &struct hlist_node to use as a loop cursor.
|
||||
* @member: the name of the hlist_node within the struct.
|
||||
*/
|
||||
#define hlist_for_each_entry_continue_rcu(tpos, pos, member) \
|
||||
for (pos = rcu_dereference((pos)->next); \
|
||||
pos && ({ prefetch(pos->next); 1; }) && \
|
||||
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; }); \
|
||||
pos = rcu_dereference(pos->next))
|
||||
|
||||
/**
|
||||
* hlist_for_each_entry_continue_rcu_bh - iterate over a hlist continuing after current point
|
||||
* @tpos: the type * to use as a loop cursor.
|
||||
* @pos: the &struct hlist_node to use as a loop cursor.
|
||||
* @member: the name of the hlist_node within the struct.
|
||||
*/
|
||||
#define hlist_for_each_entry_continue_rcu_bh(tpos, pos, member) \
|
||||
for (pos = rcu_dereference_bh((pos)->next); \
|
||||
pos && ({ prefetch(pos->next); 1; }) && \
|
||||
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; }); \
|
||||
pos = rcu_dereference_bh(pos->next))
|
||||
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif
|
||||
|
@@ -7,6 +7,13 @@
|
||||
#include <linux/if_addr.h>
|
||||
#include <linux/neighbour.h>
|
||||
|
||||
/* rtnetlink families. Values up to 127 are reserved for real address
|
||||
* families, values above 128 may be used arbitrarily.
|
||||
*/
|
||||
#define RTNL_FAMILY_IPMR 128
|
||||
#define RTNL_FAMILY_IP6MR 129
|
||||
#define RTNL_FAMILY_MAX 129
|
||||
|
||||
/****
|
||||
* Routing/neighbour discovery messages.
|
||||
****/
|
||||
|
@@ -187,7 +187,6 @@ union skb_shared_tx {
|
||||
* the end of the header data, ie. at skb->end.
|
||||
*/
|
||||
struct skb_shared_info {
|
||||
atomic_t dataref;
|
||||
unsigned short nr_frags;
|
||||
unsigned short gso_size;
|
||||
/* Warning: this field is not always filled in (UFO)! */
|
||||
@@ -197,6 +196,12 @@ struct skb_shared_info {
|
||||
union skb_shared_tx tx_flags;
|
||||
struct sk_buff *frag_list;
|
||||
struct skb_shared_hwtstamps hwtstamps;
|
||||
|
||||
/*
|
||||
* Warning : all fields before dataref are cleared in __alloc_skb()
|
||||
*/
|
||||
atomic_t dataref;
|
||||
|
||||
skb_frag_t frags[MAX_SKB_FRAGS];
|
||||
/* Intermediate layers must ensure that destructor_arg
|
||||
* remains valid until skb destructor */
|
||||
@@ -259,7 +264,7 @@ typedef unsigned char *sk_buff_data_t;
|
||||
* @transport_header: Transport layer header
|
||||
* @network_header: Network layer header
|
||||
* @mac_header: Link layer header
|
||||
* @_skb_dst: destination entry
|
||||
* @_skb_refdst: destination entry (with norefcount bit)
|
||||
* @sp: the security path, used for xfrm
|
||||
* @cb: Control buffer. Free for use by every layer. Put private vars here
|
||||
* @len: Length of actual data
|
||||
@@ -294,6 +299,7 @@ typedef unsigned char *sk_buff_data_t;
|
||||
* @nfct_reasm: netfilter conntrack re-assembly pointer
|
||||
* @nf_bridge: Saved data about a bridged frame - see br_netfilter.c
|
||||
* @skb_iif: ifindex of device we arrived on
|
||||
* @rxhash: the packet hash computed on receive
|
||||
* @queue_mapping: Queue mapping for multiqueue devices
|
||||
* @tc_index: Traffic control index
|
||||
* @tc_verd: traffic control verdict
|
||||
@@ -322,7 +328,7 @@ struct sk_buff {
|
||||
*/
|
||||
char cb[48] __aligned(8);
|
||||
|
||||
unsigned long _skb_dst;
|
||||
unsigned long _skb_refdst;
|
||||
#ifdef CONFIG_XFRM
|
||||
struct sec_path *sp;
|
||||
#endif
|
||||
@@ -369,6 +375,8 @@ struct sk_buff {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
__u32 rxhash;
|
||||
|
||||
kmemcheck_bitfield_begin(flags2);
|
||||
__u16 queue_mapping:16;
|
||||
#ifdef CONFIG_IPV6_NDISC_NODETYPE
|
||||
@@ -411,14 +419,64 @@ struct sk_buff {
|
||||
|
||||
#include <asm/system.h>
|
||||
|
||||
/*
|
||||
* skb might have a dst pointer attached, refcounted or not.
|
||||
* _skb_refdst low order bit is set if refcount was _not_ taken
|
||||
*/
|
||||
#define SKB_DST_NOREF 1UL
|
||||
#define SKB_DST_PTRMASK ~(SKB_DST_NOREF)
|
||||
|
||||
/**
|
||||
* skb_dst - returns skb dst_entry
|
||||
* @skb: buffer
|
||||
*
|
||||
* Returns skb dst_entry, regardless of reference taken or not.
|
||||
*/
|
||||
static inline struct dst_entry *skb_dst(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct dst_entry *)skb->_skb_dst;
|
||||
/* If refdst was not refcounted, check we still are in a
|
||||
* rcu_read_lock section
|
||||
*/
|
||||
WARN_ON((skb->_skb_refdst & SKB_DST_NOREF) &&
|
||||
!rcu_read_lock_held() &&
|
||||
!rcu_read_lock_bh_held());
|
||||
return (struct dst_entry *)(skb->_skb_refdst & SKB_DST_PTRMASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_dst_set - sets skb dst
|
||||
* @skb: buffer
|
||||
* @dst: dst entry
|
||||
*
|
||||
* Sets skb dst, assuming a reference was taken on dst and should
|
||||
* be released by skb_dst_drop()
|
||||
*/
|
||||
static inline void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst)
|
||||
{
|
||||
skb->_skb_dst = (unsigned long)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;
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_dst_is_noref - Test if skb dst isnt refcounted
|
||||
* @skb: buffer
|
||||
*/
|
||||
static inline bool skb_dst_is_noref(const struct sk_buff *skb)
|
||||
{
|
||||
return (skb->_skb_refdst & SKB_DST_NOREF) && skb_dst(skb);
|
||||
}
|
||||
|
||||
static inline struct rtable *skb_rtable(const struct sk_buff *skb)
|
||||
@@ -467,11 +525,6 @@ extern int skb_cow_data(struct sk_buff *skb, int tailbits,
|
||||
struct sk_buff **trailer);
|
||||
extern int skb_pad(struct sk_buff *skb, int pad);
|
||||
#define dev_kfree_skb(a) consume_skb(a)
|
||||
#define dev_consume_skb(a) kfree_skb_clean(a)
|
||||
extern void skb_over_panic(struct sk_buff *skb, int len,
|
||||
void *here);
|
||||
extern void skb_under_panic(struct sk_buff *skb, int len,
|
||||
void *here);
|
||||
|
||||
extern int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb,
|
||||
int getfrag(void *from, char *to, int offset,
|
||||
@@ -1130,6 +1183,11 @@ static inline unsigned char *__skb_pull(struct sk_buff *skb, unsigned int len)
|
||||
return skb->data += len;
|
||||
}
|
||||
|
||||
static inline unsigned char *skb_pull_inline(struct sk_buff *skb, unsigned int len)
|
||||
{
|
||||
return unlikely(len > skb->len) ? NULL : __skb_pull(skb, len);
|
||||
}
|
||||
|
||||
extern unsigned char *__pskb_pull_tail(struct sk_buff *skb, int delta);
|
||||
|
||||
static inline unsigned char *__pskb_pull(struct sk_buff *skb, unsigned int len)
|
||||
@@ -1353,9 +1411,12 @@ static inline int skb_network_offset(const struct sk_buff *skb)
|
||||
*
|
||||
* Various parts of the networking layer expect at least 32 bytes of
|
||||
* headroom, you should not reduce this.
|
||||
* With RPS, we raised NET_SKB_PAD to 64 so that get_rps_cpus() fetches span
|
||||
* a 64 bytes aligned block to fit modern (>= 64 bytes) cache line sizes
|
||||
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
|
||||
*/
|
||||
#ifndef NET_SKB_PAD
|
||||
#define NET_SKB_PAD 32
|
||||
#define NET_SKB_PAD 64
|
||||
#endif
|
||||
|
||||
extern int ___pskb_trim(struct sk_buff *skb, unsigned int len);
|
||||
|
@@ -100,6 +100,7 @@ enum
|
||||
ICMP6_MIB_INMSGS, /* InMsgs */
|
||||
ICMP6_MIB_INERRORS, /* InErrors */
|
||||
ICMP6_MIB_OUTMSGS, /* OutMsgs */
|
||||
ICMP6_MIB_OUTERRORS, /* OutErrors */
|
||||
__ICMP6_MIB_MAX
|
||||
};
|
||||
|
||||
@@ -227,6 +228,7 @@ enum
|
||||
LINUX_MIB_SACKSHIFTFALLBACK,
|
||||
LINUX_MIB_TCPBACKLOGDROP,
|
||||
LINUX_MIB_TCPMINTTLDROP, /* RFC 5082 */
|
||||
LINUX_MIB_TCPDEFERACCEPTDROP,
|
||||
__LINUX_MIB_MAX
|
||||
};
|
||||
|
||||
|
@@ -189,7 +189,8 @@ struct ucred {
|
||||
#define AF_ISDN 34 /* mISDN sockets */
|
||||
#define AF_PHONET 35 /* Phonet sockets */
|
||||
#define AF_IEEE802154 36 /* IEEE802154 sockets */
|
||||
#define AF_MAX 37 /* For now.. */
|
||||
#define AF_CAIF 37 /* CAIF sockets */
|
||||
#define AF_MAX 38 /* For now.. */
|
||||
|
||||
/* Protocol families, same as address families. */
|
||||
#define PF_UNSPEC AF_UNSPEC
|
||||
@@ -229,6 +230,7 @@ struct ucred {
|
||||
#define PF_ISDN AF_ISDN
|
||||
#define PF_PHONET AF_PHONET
|
||||
#define PF_IEEE802154 AF_IEEE802154
|
||||
#define PF_CAIF AF_CAIF
|
||||
#define PF_MAX AF_MAX
|
||||
|
||||
/* Maximum queue length specifiable by listen. */
|
||||
@@ -301,6 +303,7 @@ struct ucred {
|
||||
#define SOL_PNPIPE 275
|
||||
#define SOL_RDS 276
|
||||
#define SOL_IUCV 277
|
||||
#define SOL_CAIF 278
|
||||
|
||||
/* IPX options */
|
||||
#define IPX_TYPE 1
|
||||
|
@@ -26,6 +26,8 @@
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
|
@@ -305,6 +305,7 @@ struct ssb_bus {
|
||||
/* ID information about the Chip. */
|
||||
u16 chip_id;
|
||||
u16 chip_rev;
|
||||
u16 sprom_offset;
|
||||
u16 sprom_size; /* number of words in sprom */
|
||||
u8 chip_package;
|
||||
|
||||
@@ -394,6 +395,9 @@ extern int ssb_bus_sdiobus_register(struct ssb_bus *bus,
|
||||
|
||||
extern void ssb_bus_unregister(struct ssb_bus *bus);
|
||||
|
||||
/* Does the device have an SPROM? */
|
||||
extern bool ssb_is_sprom_available(struct ssb_bus *bus);
|
||||
|
||||
/* Set a fallback SPROM.
|
||||
* See kdoc at the function definition for complete documentation. */
|
||||
extern int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom);
|
||||
|
@@ -53,6 +53,7 @@
|
||||
#define SSB_CHIPCO_CAP_64BIT 0x08000000 /* 64-bit Backplane */
|
||||
#define SSB_CHIPCO_CAP_PMU 0x10000000 /* PMU available (rev >= 20) */
|
||||
#define SSB_CHIPCO_CAP_ECI 0x20000000 /* ECI available (rev >= 20) */
|
||||
#define SSB_CHIPCO_CAP_SPROM 0x40000000 /* SPROM present */
|
||||
#define SSB_CHIPCO_CORECTL 0x0008
|
||||
#define SSB_CHIPCO_CORECTL_UARTCLK0 0x00000001 /* Drive UART with internal clock */
|
||||
#define SSB_CHIPCO_CORECTL_SE 0x00000002 /* sync clk out enable (corerev >= 3) */
|
||||
@@ -385,6 +386,7 @@
|
||||
|
||||
|
||||
/** Chip specific Chip-Status register contents. */
|
||||
#define SSB_CHIPCO_CHST_4322_SPROM_EXISTS 0x00000040 /* SPROM present */
|
||||
#define SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL 0x00000003
|
||||
#define SSB_CHIPCO_CHST_4325_DEFCIS_SEL 0 /* OTP is powered up, use def. CIS, no SPROM */
|
||||
#define SSB_CHIPCO_CHST_4325_SPROM_SEL 1 /* OTP is powered up, SPROM is present */
|
||||
@@ -398,6 +400,18 @@
|
||||
#define SSB_CHIPCO_CHST_4325_RCAL_VALUE_SHIFT 4
|
||||
#define SSB_CHIPCO_CHST_4325_PMUTOP_2B 0x00000200 /* 1 for 2b, 0 for to 2a */
|
||||
|
||||
/** Macros to determine SPROM presence based on Chip-Status register. */
|
||||
#define SSB_CHIPCO_CHST_4312_SPROM_PRESENT(status) \
|
||||
((status & SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL) != \
|
||||
SSB_CHIPCO_CHST_4325_OTP_SEL)
|
||||
#define SSB_CHIPCO_CHST_4322_SPROM_PRESENT(status) \
|
||||
(status & SSB_CHIPCO_CHST_4322_SPROM_EXISTS)
|
||||
#define SSB_CHIPCO_CHST_4325_SPROM_PRESENT(status) \
|
||||
(((status & SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL) != \
|
||||
SSB_CHIPCO_CHST_4325_DEFCIS_SEL) && \
|
||||
((status & SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL) != \
|
||||
SSB_CHIPCO_CHST_4325_OTP_SEL))
|
||||
|
||||
|
||||
|
||||
/** Clockcontrol masks and values **/
|
||||
@@ -564,6 +578,7 @@ struct ssb_chipcommon_pmu {
|
||||
struct ssb_chipcommon {
|
||||
struct ssb_device *dev;
|
||||
u32 capabilities;
|
||||
u32 status;
|
||||
/* Fast Powerup Delay constant */
|
||||
u16 fast_pwrup_delay;
|
||||
struct ssb_chipcommon_pmu pmu;
|
||||
|
@@ -170,26 +170,27 @@
|
||||
#define SSB_SPROMSIZE_WORDS_R4 220
|
||||
#define SSB_SPROMSIZE_BYTES_R123 (SSB_SPROMSIZE_WORDS_R123 * sizeof(u16))
|
||||
#define SSB_SPROMSIZE_BYTES_R4 (SSB_SPROMSIZE_WORDS_R4 * sizeof(u16))
|
||||
#define SSB_SPROM_BASE 0x1000
|
||||
#define SSB_SPROM_REVISION 0x107E
|
||||
#define SSB_SPROM_BASE1 0x1000
|
||||
#define SSB_SPROM_BASE31 0x0800
|
||||
#define SSB_SPROM_REVISION 0x007E
|
||||
#define SSB_SPROM_REVISION_REV 0x00FF /* SPROM Revision number */
|
||||
#define SSB_SPROM_REVISION_CRC 0xFF00 /* SPROM CRC8 value */
|
||||
#define SSB_SPROM_REVISION_CRC_SHIFT 8
|
||||
|
||||
/* SPROM Revision 1 */
|
||||
#define SSB_SPROM1_SPID 0x1004 /* Subsystem Product ID for PCI */
|
||||
#define SSB_SPROM1_SVID 0x1006 /* Subsystem Vendor ID for PCI */
|
||||
#define SSB_SPROM1_PID 0x1008 /* Product ID for PCI */
|
||||
#define SSB_SPROM1_IL0MAC 0x1048 /* 6 bytes MAC address for 802.11b/g */
|
||||
#define SSB_SPROM1_ET0MAC 0x104E /* 6 bytes MAC address for Ethernet */
|
||||
#define SSB_SPROM1_ET1MAC 0x1054 /* 6 bytes MAC address for 802.11a */
|
||||
#define SSB_SPROM1_ETHPHY 0x105A /* Ethernet PHY settings */
|
||||
#define SSB_SPROM1_SPID 0x0004 /* Subsystem Product ID for PCI */
|
||||
#define SSB_SPROM1_SVID 0x0006 /* Subsystem Vendor ID for PCI */
|
||||
#define SSB_SPROM1_PID 0x0008 /* Product ID for PCI */
|
||||
#define SSB_SPROM1_IL0MAC 0x0048 /* 6 bytes MAC address for 802.11b/g */
|
||||
#define SSB_SPROM1_ET0MAC 0x004E /* 6 bytes MAC address for Ethernet */
|
||||
#define SSB_SPROM1_ET1MAC 0x0054 /* 6 bytes MAC address for 802.11a */
|
||||
#define SSB_SPROM1_ETHPHY 0x005A /* Ethernet PHY settings */
|
||||
#define SSB_SPROM1_ETHPHY_ET0A 0x001F /* MII Address for enet0 */
|
||||
#define SSB_SPROM1_ETHPHY_ET1A 0x03E0 /* MII Address for enet1 */
|
||||
#define SSB_SPROM1_ETHPHY_ET1A_SHIFT 5
|
||||
#define SSB_SPROM1_ETHPHY_ET0M (1<<14) /* MDIO for enet0 */
|
||||
#define SSB_SPROM1_ETHPHY_ET1M (1<<15) /* MDIO for enet1 */
|
||||
#define SSB_SPROM1_BINF 0x105C /* Board info */
|
||||
#define SSB_SPROM1_BINF 0x005C /* Board info */
|
||||
#define SSB_SPROM1_BINF_BREV 0x00FF /* Board Revision */
|
||||
#define SSB_SPROM1_BINF_CCODE 0x0F00 /* Country Code */
|
||||
#define SSB_SPROM1_BINF_CCODE_SHIFT 8
|
||||
@@ -197,63 +198,63 @@
|
||||
#define SSB_SPROM1_BINF_ANTBG_SHIFT 12
|
||||
#define SSB_SPROM1_BINF_ANTA 0xC000 /* Available A-PHY antennas */
|
||||
#define SSB_SPROM1_BINF_ANTA_SHIFT 14
|
||||
#define SSB_SPROM1_PA0B0 0x105E
|
||||
#define SSB_SPROM1_PA0B1 0x1060
|
||||
#define SSB_SPROM1_PA0B2 0x1062
|
||||
#define SSB_SPROM1_GPIOA 0x1064 /* General Purpose IO pins 0 and 1 */
|
||||
#define SSB_SPROM1_PA0B0 0x005E
|
||||
#define SSB_SPROM1_PA0B1 0x0060
|
||||
#define SSB_SPROM1_PA0B2 0x0062
|
||||
#define SSB_SPROM1_GPIOA 0x0064 /* General Purpose IO pins 0 and 1 */
|
||||
#define SSB_SPROM1_GPIOA_P0 0x00FF /* Pin 0 */
|
||||
#define SSB_SPROM1_GPIOA_P1 0xFF00 /* Pin 1 */
|
||||
#define SSB_SPROM1_GPIOA_P1_SHIFT 8
|
||||
#define SSB_SPROM1_GPIOB 0x1066 /* General Purpuse IO pins 2 and 3 */
|
||||
#define SSB_SPROM1_GPIOB 0x0066 /* General Purpuse IO pins 2 and 3 */
|
||||
#define SSB_SPROM1_GPIOB_P2 0x00FF /* Pin 2 */
|
||||
#define SSB_SPROM1_GPIOB_P3 0xFF00 /* Pin 3 */
|
||||
#define SSB_SPROM1_GPIOB_P3_SHIFT 8
|
||||
#define SSB_SPROM1_MAXPWR 0x1068 /* Power Amplifier Max Power */
|
||||
#define SSB_SPROM1_MAXPWR 0x0068 /* Power Amplifier Max Power */
|
||||
#define SSB_SPROM1_MAXPWR_BG 0x00FF /* B-PHY and G-PHY (in dBm Q5.2) */
|
||||
#define SSB_SPROM1_MAXPWR_A 0xFF00 /* A-PHY (in dBm Q5.2) */
|
||||
#define SSB_SPROM1_MAXPWR_A_SHIFT 8
|
||||
#define SSB_SPROM1_PA1B0 0x106A
|
||||
#define SSB_SPROM1_PA1B1 0x106C
|
||||
#define SSB_SPROM1_PA1B2 0x106E
|
||||
#define SSB_SPROM1_ITSSI 0x1070 /* Idle TSSI Target */
|
||||
#define SSB_SPROM1_PA1B0 0x006A
|
||||
#define SSB_SPROM1_PA1B1 0x006C
|
||||
#define SSB_SPROM1_PA1B2 0x006E
|
||||
#define SSB_SPROM1_ITSSI 0x0070 /* Idle TSSI Target */
|
||||
#define SSB_SPROM1_ITSSI_BG 0x00FF /* B-PHY and G-PHY*/
|
||||
#define SSB_SPROM1_ITSSI_A 0xFF00 /* A-PHY */
|
||||
#define SSB_SPROM1_ITSSI_A_SHIFT 8
|
||||
#define SSB_SPROM1_BFLLO 0x1072 /* Boardflags (low 16 bits) */
|
||||
#define SSB_SPROM1_AGAIN 0x1074 /* Antenna Gain (in dBm Q5.2) */
|
||||
#define SSB_SPROM1_BFLLO 0x0072 /* Boardflags (low 16 bits) */
|
||||
#define SSB_SPROM1_AGAIN 0x0074 /* Antenna Gain (in dBm Q5.2) */
|
||||
#define SSB_SPROM1_AGAIN_BG 0x00FF /* B-PHY and G-PHY */
|
||||
#define SSB_SPROM1_AGAIN_BG_SHIFT 0
|
||||
#define SSB_SPROM1_AGAIN_A 0xFF00 /* A-PHY */
|
||||
#define SSB_SPROM1_AGAIN_A_SHIFT 8
|
||||
|
||||
/* SPROM Revision 2 (inherits from rev 1) */
|
||||
#define SSB_SPROM2_BFLHI 0x1038 /* Boardflags (high 16 bits) */
|
||||
#define SSB_SPROM2_MAXP_A 0x103A /* A-PHY Max Power */
|
||||
#define SSB_SPROM2_BFLHI 0x0038 /* Boardflags (high 16 bits) */
|
||||
#define SSB_SPROM2_MAXP_A 0x003A /* A-PHY Max Power */
|
||||
#define SSB_SPROM2_MAXP_A_HI 0x00FF /* Max Power High */
|
||||
#define SSB_SPROM2_MAXP_A_LO 0xFF00 /* Max Power Low */
|
||||
#define SSB_SPROM2_MAXP_A_LO_SHIFT 8
|
||||
#define SSB_SPROM2_PA1LOB0 0x103C /* A-PHY PowerAmplifier Low Settings */
|
||||
#define SSB_SPROM2_PA1LOB1 0x103E /* A-PHY PowerAmplifier Low Settings */
|
||||
#define SSB_SPROM2_PA1LOB2 0x1040 /* A-PHY PowerAmplifier Low Settings */
|
||||
#define SSB_SPROM2_PA1HIB0 0x1042 /* A-PHY PowerAmplifier High Settings */
|
||||
#define SSB_SPROM2_PA1HIB1 0x1044 /* A-PHY PowerAmplifier High Settings */
|
||||
#define SSB_SPROM2_PA1HIB2 0x1046 /* A-PHY PowerAmplifier High Settings */
|
||||
#define SSB_SPROM2_OPO 0x1078 /* OFDM Power Offset from CCK Level */
|
||||
#define SSB_SPROM2_PA1LOB0 0x003C /* A-PHY PowerAmplifier Low Settings */
|
||||
#define SSB_SPROM2_PA1LOB1 0x003E /* A-PHY PowerAmplifier Low Settings */
|
||||
#define SSB_SPROM2_PA1LOB2 0x0040 /* A-PHY PowerAmplifier Low Settings */
|
||||
#define SSB_SPROM2_PA1HIB0 0x0042 /* A-PHY PowerAmplifier High Settings */
|
||||
#define SSB_SPROM2_PA1HIB1 0x0044 /* A-PHY PowerAmplifier High Settings */
|
||||
#define SSB_SPROM2_PA1HIB2 0x0046 /* A-PHY PowerAmplifier High Settings */
|
||||
#define SSB_SPROM2_OPO 0x0078 /* OFDM Power Offset from CCK Level */
|
||||
#define SSB_SPROM2_OPO_VALUE 0x00FF
|
||||
#define SSB_SPROM2_OPO_UNUSED 0xFF00
|
||||
#define SSB_SPROM2_CCODE 0x107C /* Two char Country Code */
|
||||
#define SSB_SPROM2_CCODE 0x007C /* Two char Country Code */
|
||||
|
||||
/* SPROM Revision 3 (inherits most data from rev 2) */
|
||||
#define SSB_SPROM3_IL0MAC 0x104A /* 6 bytes MAC address for 802.11b/g */
|
||||
#define SSB_SPROM3_OFDMAPO 0x102C /* A-PHY OFDM Mid Power Offset (4 bytes, BigEndian) */
|
||||
#define SSB_SPROM3_OFDMALPO 0x1030 /* A-PHY OFDM Low Power Offset (4 bytes, BigEndian) */
|
||||
#define SSB_SPROM3_OFDMAHPO 0x1034 /* A-PHY OFDM High Power Offset (4 bytes, BigEndian) */
|
||||
#define SSB_SPROM3_GPIOLDC 0x1042 /* GPIO LED Powersave Duty Cycle (4 bytes, BigEndian) */
|
||||
#define SSB_SPROM3_OFDMAPO 0x002C /* A-PHY OFDM Mid Power Offset (4 bytes, BigEndian) */
|
||||
#define SSB_SPROM3_OFDMALPO 0x0030 /* A-PHY OFDM Low Power Offset (4 bytes, BigEndian) */
|
||||
#define SSB_SPROM3_OFDMAHPO 0x0034 /* A-PHY OFDM High Power Offset (4 bytes, BigEndian) */
|
||||
#define SSB_SPROM3_GPIOLDC 0x0042 /* GPIO LED Powersave Duty Cycle (4 bytes, BigEndian) */
|
||||
#define SSB_SPROM3_GPIOLDC_OFF 0x0000FF00 /* Off Count */
|
||||
#define SSB_SPROM3_GPIOLDC_OFF_SHIFT 8
|
||||
#define SSB_SPROM3_GPIOLDC_ON 0x00FF0000 /* On Count */
|
||||
#define SSB_SPROM3_GPIOLDC_ON_SHIFT 16
|
||||
#define SSB_SPROM3_CCKPO 0x1078 /* CCK Power Offset */
|
||||
#define SSB_SPROM3_IL0MAC 0x004A /* 6 bytes MAC address for 802.11b/g */
|
||||
#define SSB_SPROM3_CCKPO 0x0078 /* CCK Power Offset */
|
||||
#define SSB_SPROM3_CCKPO_1M 0x000F /* 1M Rate PO */
|
||||
#define SSB_SPROM3_CCKPO_2M 0x00F0 /* 2M Rate PO */
|
||||
#define SSB_SPROM3_CCKPO_2M_SHIFT 4
|
||||
@@ -264,100 +265,100 @@
|
||||
#define SSB_SPROM3_OFDMGPO 0x107A /* G-PHY OFDM Power Offset (4 bytes, BigEndian) */
|
||||
|
||||
/* SPROM Revision 4 */
|
||||
#define SSB_SPROM4_IL0MAC 0x104C /* 6 byte MAC address for a/b/g/n */
|
||||
#define SSB_SPROM4_ETHPHY 0x105A /* Ethernet PHY settings ?? */
|
||||
#define SSB_SPROM4_BFLLO 0x0044 /* Boardflags (low 16 bits) */
|
||||
#define SSB_SPROM4_BFLHI 0x0046 /* Board Flags Hi */
|
||||
#define SSB_SPROM4_IL0MAC 0x004C /* 6 byte MAC address for a/b/g/n */
|
||||
#define SSB_SPROM4_CCODE 0x0052 /* Country Code (2 bytes) */
|
||||
#define SSB_SPROM4_GPIOA 0x0056 /* Gen. Purpose IO # 0 and 1 */
|
||||
#define SSB_SPROM4_GPIOA_P0 0x00FF /* Pin 0 */
|
||||
#define SSB_SPROM4_GPIOA_P1 0xFF00 /* Pin 1 */
|
||||
#define SSB_SPROM4_GPIOA_P1_SHIFT 8
|
||||
#define SSB_SPROM4_GPIOB 0x0058 /* Gen. Purpose IO # 2 and 3 */
|
||||
#define SSB_SPROM4_GPIOB_P2 0x00FF /* Pin 2 */
|
||||
#define SSB_SPROM4_GPIOB_P3 0xFF00 /* Pin 3 */
|
||||
#define SSB_SPROM4_GPIOB_P3_SHIFT 8
|
||||
#define SSB_SPROM4_ETHPHY 0x005A /* Ethernet PHY settings ?? */
|
||||
#define SSB_SPROM4_ETHPHY_ET0A 0x001F /* MII Address for enet0 */
|
||||
#define SSB_SPROM4_ETHPHY_ET1A 0x03E0 /* MII Address for enet1 */
|
||||
#define SSB_SPROM4_ETHPHY_ET1A_SHIFT 5
|
||||
#define SSB_SPROM4_ETHPHY_ET0M (1<<14) /* MDIO for enet0 */
|
||||
#define SSB_SPROM4_ETHPHY_ET1M (1<<15) /* MDIO for enet1 */
|
||||
#define SSB_SPROM4_CCODE 0x1052 /* Country Code (2 bytes) */
|
||||
#define SSB_SPROM4_ANTAVAIL 0x105D /* Antenna available bitfields */
|
||||
#define SSB_SPROM4_ANTAVAIL_A 0x00FF /* A-PHY bitfield */
|
||||
#define SSB_SPROM4_ANTAVAIL_A_SHIFT 0
|
||||
#define SSB_SPROM4_ANTAVAIL_BG 0xFF00 /* B-PHY and G-PHY bitfield */
|
||||
#define SSB_SPROM4_ANTAVAIL_BG_SHIFT 8
|
||||
#define SSB_SPROM4_BFLLO 0x1044 /* Boardflags (low 16 bits) */
|
||||
#define SSB_SPROM4_AGAIN01 0x105E /* Antenna Gain (in dBm Q5.2) */
|
||||
#define SSB_SPROM4_ANTAVAIL 0x005D /* Antenna available bitfields */
|
||||
#define SSB_SPROM4_ANTAVAIL_A 0x00FF /* A-PHY bitfield */
|
||||
#define SSB_SPROM4_ANTAVAIL_A_SHIFT 0
|
||||
#define SSB_SPROM4_ANTAVAIL_BG 0xFF00 /* B-PHY and G-PHY bitfield */
|
||||
#define SSB_SPROM4_ANTAVAIL_BG_SHIFT 8
|
||||
#define SSB_SPROM4_AGAIN01 0x005E /* Antenna Gain (in dBm Q5.2) */
|
||||
#define SSB_SPROM4_AGAIN0 0x00FF /* Antenna 0 */
|
||||
#define SSB_SPROM4_AGAIN0_SHIFT 0
|
||||
#define SSB_SPROM4_AGAIN1 0xFF00 /* Antenna 1 */
|
||||
#define SSB_SPROM4_AGAIN1_SHIFT 8
|
||||
#define SSB_SPROM4_AGAIN23 0x1060
|
||||
#define SSB_SPROM4_AGAIN23 0x0060
|
||||
#define SSB_SPROM4_AGAIN2 0x00FF /* Antenna 2 */
|
||||
#define SSB_SPROM4_AGAIN2_SHIFT 0
|
||||
#define SSB_SPROM4_AGAIN3 0xFF00 /* Antenna 3 */
|
||||
#define SSB_SPROM4_AGAIN3_SHIFT 8
|
||||
#define SSB_SPROM4_BFLHI 0x1046 /* Board Flags Hi */
|
||||
#define SSB_SPROM4_MAXP_BG 0x1080 /* Max Power BG in path 1 */
|
||||
#define SSB_SPROM4_MAXP_BG 0x0080 /* Max Power BG in path 1 */
|
||||
#define SSB_SPROM4_MAXP_BG_MASK 0x00FF /* Mask for Max Power BG */
|
||||
#define SSB_SPROM4_ITSSI_BG 0xFF00 /* Mask for path 1 itssi_bg */
|
||||
#define SSB_SPROM4_ITSSI_BG_SHIFT 8
|
||||
#define SSB_SPROM4_MAXP_A 0x108A /* Max Power A in path 1 */
|
||||
#define SSB_SPROM4_MAXP_A 0x008A /* Max Power A in path 1 */
|
||||
#define SSB_SPROM4_MAXP_A_MASK 0x00FF /* Mask for Max Power A */
|
||||
#define SSB_SPROM4_ITSSI_A 0xFF00 /* Mask for path 1 itssi_a */
|
||||
#define SSB_SPROM4_ITSSI_A_SHIFT 8
|
||||
#define SSB_SPROM4_GPIOA 0x1056 /* Gen. Purpose IO # 0 and 1 */
|
||||
#define SSB_SPROM4_GPIOA_P0 0x00FF /* Pin 0 */
|
||||
#define SSB_SPROM4_GPIOA_P1 0xFF00 /* Pin 1 */
|
||||
#define SSB_SPROM4_GPIOA_P1_SHIFT 8
|
||||
#define SSB_SPROM4_GPIOB 0x1058 /* Gen. Purpose IO # 2 and 3 */
|
||||
#define SSB_SPROM4_GPIOB_P2 0x00FF /* Pin 2 */
|
||||
#define SSB_SPROM4_GPIOB_P3 0xFF00 /* Pin 3 */
|
||||
#define SSB_SPROM4_GPIOB_P3_SHIFT 8
|
||||
#define SSB_SPROM4_PA0B0 0x1082 /* The paXbY locations are */
|
||||
#define SSB_SPROM4_PA0B1 0x1084 /* only guesses */
|
||||
#define SSB_SPROM4_PA0B2 0x1086
|
||||
#define SSB_SPROM4_PA1B0 0x108E
|
||||
#define SSB_SPROM4_PA1B1 0x1090
|
||||
#define SSB_SPROM4_PA1B2 0x1092
|
||||
#define SSB_SPROM4_PA0B0 0x0082 /* The paXbY locations are */
|
||||
#define SSB_SPROM4_PA0B1 0x0084 /* only guesses */
|
||||
#define SSB_SPROM4_PA0B2 0x0086
|
||||
#define SSB_SPROM4_PA1B0 0x008E
|
||||
#define SSB_SPROM4_PA1B1 0x0090
|
||||
#define SSB_SPROM4_PA1B2 0x0092
|
||||
|
||||
/* SPROM Revision 5 (inherits most data from rev 4) */
|
||||
#define SSB_SPROM5_BFLLO 0x104A /* Boardflags (low 16 bits) */
|
||||
#define SSB_SPROM5_BFLHI 0x104C /* Board Flags Hi */
|
||||
#define SSB_SPROM5_IL0MAC 0x1052 /* 6 byte MAC address for a/b/g/n */
|
||||
#define SSB_SPROM5_CCODE 0x1044 /* Country Code (2 bytes) */
|
||||
#define SSB_SPROM5_GPIOA 0x1076 /* Gen. Purpose IO # 0 and 1 */
|
||||
#define SSB_SPROM5_CCODE 0x0044 /* Country Code (2 bytes) */
|
||||
#define SSB_SPROM5_BFLLO 0x004A /* Boardflags (low 16 bits) */
|
||||
#define SSB_SPROM5_BFLHI 0x004C /* Board Flags Hi */
|
||||
#define SSB_SPROM5_IL0MAC 0x0052 /* 6 byte MAC address for a/b/g/n */
|
||||
#define SSB_SPROM5_GPIOA 0x0076 /* Gen. Purpose IO # 0 and 1 */
|
||||
#define SSB_SPROM5_GPIOA_P0 0x00FF /* Pin 0 */
|
||||
#define SSB_SPROM5_GPIOA_P1 0xFF00 /* Pin 1 */
|
||||
#define SSB_SPROM5_GPIOA_P1_SHIFT 8
|
||||
#define SSB_SPROM5_GPIOB 0x1078 /* Gen. Purpose IO # 2 and 3 */
|
||||
#define SSB_SPROM5_GPIOB 0x0078 /* Gen. Purpose IO # 2 and 3 */
|
||||
#define SSB_SPROM5_GPIOB_P2 0x00FF /* Pin 2 */
|
||||
#define SSB_SPROM5_GPIOB_P3 0xFF00 /* Pin 3 */
|
||||
#define SSB_SPROM5_GPIOB_P3_SHIFT 8
|
||||
|
||||
/* SPROM Revision 8 */
|
||||
#define SSB_SPROM8_BOARDREV 0x1082 /* Board revision */
|
||||
#define SSB_SPROM8_BFLLO 0x1084 /* Board flags (bits 0-15) */
|
||||
#define SSB_SPROM8_BFLHI 0x1086 /* Board flags (bits 16-31) */
|
||||
#define SSB_SPROM8_BFL2LO 0x1088 /* Board flags (bits 32-47) */
|
||||
#define SSB_SPROM8_BFL2HI 0x108A /* Board flags (bits 48-63) */
|
||||
#define SSB_SPROM8_IL0MAC 0x108C /* 6 byte MAC address */
|
||||
#define SSB_SPROM8_CCODE 0x1092 /* 2 byte country code */
|
||||
#define SSB_SPROM8_ANTAVAIL 0x109C /* Antenna available bitfields*/
|
||||
#define SSB_SPROM8_ANTAVAIL_A 0xFF00 /* A-PHY bitfield */
|
||||
#define SSB_SPROM8_ANTAVAIL_A_SHIFT 8
|
||||
#define SSB_SPROM8_ANTAVAIL_BG 0x00FF /* B-PHY and G-PHY bitfield */
|
||||
#define SSB_SPROM8_ANTAVAIL_BG_SHIFT 0
|
||||
#define SSB_SPROM8_AGAIN01 0x109E /* Antenna Gain (in dBm Q5.2) */
|
||||
#define SSB_SPROM8_BOARDREV 0x0082 /* Board revision */
|
||||
#define SSB_SPROM8_BFLLO 0x0084 /* Board flags (bits 0-15) */
|
||||
#define SSB_SPROM8_BFLHI 0x0086 /* Board flags (bits 16-31) */
|
||||
#define SSB_SPROM8_BFL2LO 0x0088 /* Board flags (bits 32-47) */
|
||||
#define SSB_SPROM8_BFL2HI 0x008A /* Board flags (bits 48-63) */
|
||||
#define SSB_SPROM8_IL0MAC 0x008C /* 6 byte MAC address */
|
||||
#define SSB_SPROM8_CCODE 0x0092 /* 2 byte country code */
|
||||
#define SSB_SPROM8_GPIOA 0x0096 /*Gen. Purpose IO # 0 and 1 */
|
||||
#define SSB_SPROM8_GPIOA_P0 0x00FF /* Pin 0 */
|
||||
#define SSB_SPROM8_GPIOA_P1 0xFF00 /* Pin 1 */
|
||||
#define SSB_SPROM8_GPIOA_P1_SHIFT 8
|
||||
#define SSB_SPROM8_GPIOB 0x0098 /* Gen. Purpose IO # 2 and 3 */
|
||||
#define SSB_SPROM8_GPIOB_P2 0x00FF /* Pin 2 */
|
||||
#define SSB_SPROM8_GPIOB_P3 0xFF00 /* Pin 3 */
|
||||
#define SSB_SPROM8_GPIOB_P3_SHIFT 8
|
||||
#define SSB_SPROM8_ANTAVAIL 0x009C /* Antenna available bitfields*/
|
||||
#define SSB_SPROM8_ANTAVAIL_A 0xFF00 /* A-PHY bitfield */
|
||||
#define SSB_SPROM8_ANTAVAIL_A_SHIFT 8
|
||||
#define SSB_SPROM8_ANTAVAIL_BG 0x00FF /* B-PHY and G-PHY bitfield */
|
||||
#define SSB_SPROM8_ANTAVAIL_BG_SHIFT 0
|
||||
#define SSB_SPROM8_AGAIN01 0x009E /* Antenna Gain (in dBm Q5.2) */
|
||||
#define SSB_SPROM8_AGAIN0 0x00FF /* Antenna 0 */
|
||||
#define SSB_SPROM8_AGAIN0_SHIFT 0
|
||||
#define SSB_SPROM8_AGAIN1 0xFF00 /* Antenna 1 */
|
||||
#define SSB_SPROM8_AGAIN1_SHIFT 8
|
||||
#define SSB_SPROM8_AGAIN23 0x10A0
|
||||
#define SSB_SPROM8_AGAIN23 0x00A0
|
||||
#define SSB_SPROM8_AGAIN2 0x00FF /* Antenna 2 */
|
||||
#define SSB_SPROM8_AGAIN2_SHIFT 0
|
||||
#define SSB_SPROM8_AGAIN3 0xFF00 /* Antenna 3 */
|
||||
#define SSB_SPROM8_AGAIN3_SHIFT 8
|
||||
#define SSB_SPROM8_GPIOA 0x1096 /*Gen. Purpose IO # 0 and 1 */
|
||||
#define SSB_SPROM8_GPIOA_P0 0x00FF /* Pin 0 */
|
||||
#define SSB_SPROM8_GPIOA_P1 0xFF00 /* Pin 1 */
|
||||
#define SSB_SPROM8_GPIOA_P1_SHIFT 8
|
||||
#define SSB_SPROM8_GPIOB 0x1098 /* Gen. Purpose IO # 2 and 3 */
|
||||
#define SSB_SPROM8_GPIOB_P2 0x00FF /* Pin 2 */
|
||||
#define SSB_SPROM8_GPIOB_P3 0xFF00 /* Pin 3 */
|
||||
#define SSB_SPROM8_GPIOB_P3_SHIFT 8
|
||||
#define SSB_SPROM8_RSSIPARM2G 0x10A4 /* RSSI params for 2GHz */
|
||||
#define SSB_SPROM8_RSSIPARM2G 0x00A4 /* RSSI params for 2GHz */
|
||||
#define SSB_SPROM8_RSSISMF2G 0x000F
|
||||
#define SSB_SPROM8_RSSISMC2G 0x00F0
|
||||
#define SSB_SPROM8_RSSISMC2G_SHIFT 4
|
||||
@@ -365,7 +366,7 @@
|
||||
#define SSB_SPROM8_RSSISAV2G_SHIFT 8
|
||||
#define SSB_SPROM8_BXA2G 0x1800
|
||||
#define SSB_SPROM8_BXA2G_SHIFT 11
|
||||
#define SSB_SPROM8_RSSIPARM5G 0x10A6 /* RSSI params for 5GHz */
|
||||
#define SSB_SPROM8_RSSIPARM5G 0x00A6 /* RSSI params for 5GHz */
|
||||
#define SSB_SPROM8_RSSISMF5G 0x000F
|
||||
#define SSB_SPROM8_RSSISMC5G 0x00F0
|
||||
#define SSB_SPROM8_RSSISMC5G_SHIFT 4
|
||||
@@ -373,47 +374,47 @@
|
||||
#define SSB_SPROM8_RSSISAV5G_SHIFT 8
|
||||
#define SSB_SPROM8_BXA5G 0x1800
|
||||
#define SSB_SPROM8_BXA5G_SHIFT 11
|
||||
#define SSB_SPROM8_TRI25G 0x10A8 /* TX isolation 2.4&5.3GHz */
|
||||
#define SSB_SPROM8_TRI25G 0x00A8 /* TX isolation 2.4&5.3GHz */
|
||||
#define SSB_SPROM8_TRI2G 0x00FF /* TX isolation 2.4GHz */
|
||||
#define SSB_SPROM8_TRI5G 0xFF00 /* TX isolation 5.3GHz */
|
||||
#define SSB_SPROM8_TRI5G_SHIFT 8
|
||||
#define SSB_SPROM8_TRI5GHL 0x10AA /* TX isolation 5.2/5.8GHz */
|
||||
#define SSB_SPROM8_TRI5GHL 0x00AA /* TX isolation 5.2/5.8GHz */
|
||||
#define SSB_SPROM8_TRI5GL 0x00FF /* TX isolation 5.2GHz */
|
||||
#define SSB_SPROM8_TRI5GH 0xFF00 /* TX isolation 5.8GHz */
|
||||
#define SSB_SPROM8_TRI5GH_SHIFT 8
|
||||
#define SSB_SPROM8_RXPO 0x10AC /* RX power offsets */
|
||||
#define SSB_SPROM8_RXPO 0x00AC /* RX power offsets */
|
||||
#define SSB_SPROM8_RXPO2G 0x00FF /* 2GHz RX power offset */
|
||||
#define SSB_SPROM8_RXPO5G 0xFF00 /* 5GHz RX power offset */
|
||||
#define SSB_SPROM8_RXPO5G_SHIFT 8
|
||||
#define SSB_SPROM8_MAXP_BG 0x10C0 /* Max Power 2GHz in path 1 */
|
||||
#define SSB_SPROM8_MAXP_BG 0x00C0 /* Max Power 2GHz in path 1 */
|
||||
#define SSB_SPROM8_MAXP_BG_MASK 0x00FF /* Mask for Max Power 2GHz */
|
||||
#define SSB_SPROM8_ITSSI_BG 0xFF00 /* Mask for path 1 itssi_bg */
|
||||
#define SSB_SPROM8_ITSSI_BG_SHIFT 8
|
||||
#define SSB_SPROM8_PA0B0 0x10C2 /* 2GHz power amp settings */
|
||||
#define SSB_SPROM8_PA0B1 0x10C4
|
||||
#define SSB_SPROM8_PA0B2 0x10C6
|
||||
#define SSB_SPROM8_MAXP_A 0x10C8 /* Max Power 5.3GHz */
|
||||
#define SSB_SPROM8_PA0B0 0x00C2 /* 2GHz power amp settings */
|
||||
#define SSB_SPROM8_PA0B1 0x00C4
|
||||
#define SSB_SPROM8_PA0B2 0x00C6
|
||||
#define SSB_SPROM8_MAXP_A 0x00C8 /* Max Power 5.3GHz */
|
||||
#define SSB_SPROM8_MAXP_A_MASK 0x00FF /* Mask for Max Power 5.3GHz */
|
||||
#define SSB_SPROM8_ITSSI_A 0xFF00 /* Mask for path 1 itssi_a */
|
||||
#define SSB_SPROM8_ITSSI_A_SHIFT 8
|
||||
#define SSB_SPROM8_MAXP_AHL 0x10CA /* Max Power 5.2/5.8GHz */
|
||||
#define SSB_SPROM8_MAXP_AHL 0x00CA /* Max Power 5.2/5.8GHz */
|
||||
#define SSB_SPROM8_MAXP_AH_MASK 0x00FF /* Mask for Max Power 5.8GHz */
|
||||
#define SSB_SPROM8_MAXP_AL_MASK 0xFF00 /* Mask for Max Power 5.2GHz */
|
||||
#define SSB_SPROM8_MAXP_AL_SHIFT 8
|
||||
#define SSB_SPROM8_PA1B0 0x10CC /* 5.3GHz power amp settings */
|
||||
#define SSB_SPROM8_PA1B1 0x10CE
|
||||
#define SSB_SPROM8_PA1B2 0x10D0
|
||||
#define SSB_SPROM8_PA1LOB0 0x10D2 /* 5.2GHz power amp settings */
|
||||
#define SSB_SPROM8_PA1LOB1 0x10D4
|
||||
#define SSB_SPROM8_PA1LOB2 0x10D6
|
||||
#define SSB_SPROM8_PA1HIB0 0x10D8 /* 5.8GHz power amp settings */
|
||||
#define SSB_SPROM8_PA1HIB1 0x10DA
|
||||
#define SSB_SPROM8_PA1HIB2 0x10DC
|
||||
#define SSB_SPROM8_CCK2GPO 0x1140 /* CCK power offset */
|
||||
#define SSB_SPROM8_OFDM2GPO 0x1142 /* 2.4GHz OFDM power offset */
|
||||
#define SSB_SPROM8_OFDM5GPO 0x1146 /* 5.3GHz OFDM power offset */
|
||||
#define SSB_SPROM8_OFDM5GLPO 0x114A /* 5.2GHz OFDM power offset */
|
||||
#define SSB_SPROM8_OFDM5GHPO 0x114E /* 5.8GHz OFDM power offset */
|
||||
#define SSB_SPROM8_PA1B0 0x00CC /* 5.3GHz power amp settings */
|
||||
#define SSB_SPROM8_PA1B1 0x00CE
|
||||
#define SSB_SPROM8_PA1B2 0x00D0
|
||||
#define SSB_SPROM8_PA1LOB0 0x00D2 /* 5.2GHz power amp settings */
|
||||
#define SSB_SPROM8_PA1LOB1 0x00D4
|
||||
#define SSB_SPROM8_PA1LOB2 0x00D6
|
||||
#define SSB_SPROM8_PA1HIB0 0x00D8 /* 5.8GHz power amp settings */
|
||||
#define SSB_SPROM8_PA1HIB1 0x00DA
|
||||
#define SSB_SPROM8_PA1HIB2 0x00DC
|
||||
#define SSB_SPROM8_CCK2GPO 0x0140 /* CCK power offset */
|
||||
#define SSB_SPROM8_OFDM2GPO 0x0142 /* 2.4GHz OFDM power offset */
|
||||
#define SSB_SPROM8_OFDM5GPO 0x0146 /* 5.3GHz OFDM power offset */
|
||||
#define SSB_SPROM8_OFDM5GLPO 0x014A /* 5.2GHz OFDM power offset */
|
||||
#define SSB_SPROM8_OFDM5GHPO 0x014E /* 5.8GHz OFDM power offset */
|
||||
|
||||
/* Values for SSB_SPROM1_BINF_CCODE */
|
||||
enum {
|
||||
|
@@ -33,6 +33,7 @@ struct plat_stmmacenet_data {
|
||||
int bus_id;
|
||||
int pbl;
|
||||
int has_gmac;
|
||||
int enh_desc;
|
||||
void (*fix_mac_speed)(void *priv, unsigned int speed);
|
||||
void (*bus_setup)(unsigned long ioaddr);
|
||||
#ifdef CONFIG_STM_DRIVERS
|
||||
|
@@ -980,6 +980,8 @@ extern int proc_doulongvec_minmax(struct ctl_table *, int,
|
||||
void __user *, size_t *, loff_t *);
|
||||
extern int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int,
|
||||
void __user *, size_t *, loff_t *);
|
||||
extern int proc_do_large_bitmap(struct ctl_table *, int,
|
||||
void __user *, size_t *, loff_t *);
|
||||
|
||||
/*
|
||||
* Register a set of sysctl names by calling register_sysctl_table
|
||||
|
@@ -107,7 +107,7 @@ static inline unsigned int tipc_node(__u32 addr)
|
||||
* Message importance levels
|
||||
*/
|
||||
|
||||
#define TIPC_LOW_IMPORTANCE 0 /* default */
|
||||
#define TIPC_LOW_IMPORTANCE 0
|
||||
#define TIPC_MEDIUM_IMPORTANCE 1
|
||||
#define TIPC_HIGH_IMPORTANCE 2
|
||||
#define TIPC_CRITICAL_IMPORTANCE 3
|
||||
@@ -127,23 +127,17 @@ static inline unsigned int tipc_node(__u32 addr)
|
||||
* TIPC topology subscription service definitions
|
||||
*/
|
||||
|
||||
#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_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_WAIT_FOREVER ~0 /* timeout for permanent subscription */
|
||||
|
||||
struct tipc_subscr {
|
||||
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 */
|
||||
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 */
|
||||
};
|
||||
|
||||
#define TIPC_PUBLISHED 1 /* publication event */
|
||||
@@ -151,11 +145,11 @@ struct tipc_subscr {
|
||||
#define TIPC_SUBSCR_TIMEOUT 3 /* subscription timeout event */
|
||||
|
||||
struct tipc_event {
|
||||
__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 */
|
||||
__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 */
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -188,7 +182,7 @@ struct sockaddr_tipc {
|
||||
struct tipc_name_seq nameseq;
|
||||
struct {
|
||||
struct tipc_name name;
|
||||
__u32 domain; /* 0: own zone */
|
||||
__u32 domain;
|
||||
} name;
|
||||
} addr;
|
||||
};
|
||||
@@ -206,7 +200,7 @@ struct sockaddr_tipc {
|
||||
*/
|
||||
|
||||
#define TIPC_IMPORTANCE 127 /* Default: TIPC_LOW_IMPORTANCE */
|
||||
#define TIPC_SRC_DROPPABLE 128 /* Default: 0 (resend congested msg) */
|
||||
#define TIPC_SRC_DROPPABLE 128 /* Default: based on socket type */
|
||||
#define TIPC_DEST_DROPPABLE 129 /* Default: based on socket type */
|
||||
#define TIPC_CONN_TIMEOUT 130 /* Default: 8000 (ms) */
|
||||
#define TIPC_NODE_RECVQ_DEPTH 131 /* Default: none (read only) */
|
||||
|
@@ -74,6 +74,7 @@
|
||||
#define TIPC_CMD_SHOW_NAME_TABLE 0x0005 /* tx name_tbl_query, rx ultra_string */
|
||||
#define TIPC_CMD_SHOW_PORTS 0x0006 /* tx none, rx ultra_string */
|
||||
#define TIPC_CMD_SHOW_LINK_STATS 0x000B /* tx link_name, rx ultra_string */
|
||||
#define TIPC_CMD_SHOW_STATS 0x000F /* tx unsigned, rx ultra_string */
|
||||
|
||||
#if 0
|
||||
#define TIPC_CMD_SHOW_PORT_STATS 0x0008 /* tx port_ref, rx ultra_string */
|
||||
|
@@ -23,7 +23,7 @@
|
||||
*/
|
||||
#define NR_UNIX98_PTY_DEFAULT 4096 /* Default maximum for Unix98 ptys */
|
||||
#define NR_UNIX98_PTY_MAX (1 << MINORBITS) /* Absolute limit */
|
||||
#define NR_LDISCS 20
|
||||
#define NR_LDISCS 21
|
||||
|
||||
/* line disciplines */
|
||||
#define N_TTY 0
|
||||
@@ -46,8 +46,8 @@
|
||||
#define N_GIGASET_M101 16 /* Siemens Gigaset M101 serial DECT adapter */
|
||||
#define N_SLCAN 17 /* Serial / USB serial CAN Adaptors */
|
||||
#define N_PPS 18 /* Pulse per Second */
|
||||
|
||||
#define N_V253 19 /* Codec control over voice modem */
|
||||
#define N_CAIF 20 /* CAIF protocol for talking to modems */
|
||||
|
||||
/*
|
||||
* This character is the same as _POSIX_VDISABLE: it cannot be used as
|
||||
|
@@ -346,6 +346,8 @@
|
||||
#define SIOCIWFIRST 0x8B00
|
||||
#define SIOCIWLAST SIOCIWLASTPRIV /* 0x8BFF */
|
||||
#define IW_IOCTL_IDX(cmd) ((cmd) - SIOCIWFIRST)
|
||||
#define IW_HANDLER(id, func) \
|
||||
[IW_IOCTL_IDX(id)] = func
|
||||
|
||||
/* Odd : get (world access), even : set (root access) */
|
||||
#define IW_IS_SET(cmd) (!((cmd) & 0x1))
|
||||
@@ -648,7 +650,7 @@
|
||||
* 32 bit bitmasks. Note : 32 bits = 0x20 = 2^5. */
|
||||
#define IW_EVENT_CAPA_BASE(cmd) ((cmd >= SIOCIWFIRSTPRIV) ? \
|
||||
(cmd - SIOCIWFIRSTPRIV + 0x60) : \
|
||||
(cmd - SIOCSIWCOMMIT))
|
||||
(cmd - SIOCIWFIRST))
|
||||
#define IW_EVENT_CAPA_INDEX(cmd) (IW_EVENT_CAPA_BASE(cmd) >> 5)
|
||||
#define IW_EVENT_CAPA_MASK(cmd) (1 << (IW_EVENT_CAPA_BASE(cmd) & 0x1F))
|
||||
/* Event capability constants - event autogenerated by the kernel
|
||||
|
Reference in New Issue
Block a user