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: (1244 commits) pkt_sched: Rename PSCHED_US2NS and PSCHED_NS2US ipv4: Fix fib_trie rebalancing Bluetooth: Fix issue with uninitialized nsh.type in DTL-1 driver Bluetooth: Fix Kconfig issue with RFKILL integration PIM-SM: namespace changes ipv4: update ARPD help text net: use a deferred timer in rt_check_expire ieee802154: fix kconfig bool/tristate muckup bonding: initialization rework bonding: use is_zero_ether_addr bonding: network device names are case sensative bonding: elminate bad refcount code bonding: fix style issues bonding: fix destructor bonding: remove bonding read/write semaphore bonding: initialize before registration bonding: bond_create always called with default parameters x_tables: Convert printk to pr_err netfilter: conntrack: optional reliable conntrack event delivery list_nulls: add hlist_nulls_add_head and hlist_nulls_del ...
This commit is contained in:
@@ -311,6 +311,7 @@ unifdef-y += ppp-comp.h
|
||||
unifdef-y += ptrace.h
|
||||
unifdef-y += quota.h
|
||||
unifdef-y += random.h
|
||||
unifdef-y += rfkill.h
|
||||
unifdef-y += irqnr.h
|
||||
unifdef-y += reboot.h
|
||||
unifdef-y += reiserfs_fs.h
|
||||
|
@@ -1,3 +1,4 @@
|
||||
header-y += raw.h
|
||||
header-y += bcm.h
|
||||
header-y += error.h
|
||||
header-y += netlink.h
|
||||
|
70
include/linux/can/dev.h
Normal file
70
include/linux/can/dev.h
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* linux/can/dev.h
|
||||
*
|
||||
* Definitions for the CAN network device driver interface
|
||||
*
|
||||
* Copyright (C) 2006 Andrey Volkov <avolkov@varma-el.com>
|
||||
* Varma Electronics Oy
|
||||
*
|
||||
* Copyright (C) 2008 Wolfgang Grandegger <wg@grandegger.com>
|
||||
*
|
||||
* Send feedback to <socketcan-users@lists.berlios.de>
|
||||
*/
|
||||
|
||||
#ifndef CAN_DEV_H
|
||||
#define CAN_DEV_H
|
||||
|
||||
#include <linux/can/netlink.h>
|
||||
#include <linux/can/error.h>
|
||||
|
||||
/*
|
||||
* CAN mode
|
||||
*/
|
||||
enum can_mode {
|
||||
CAN_MODE_STOP = 0,
|
||||
CAN_MODE_START,
|
||||
CAN_MODE_SLEEP
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN common private data
|
||||
*/
|
||||
#define CAN_ECHO_SKB_MAX 4
|
||||
|
||||
struct can_priv {
|
||||
struct can_device_stats can_stats;
|
||||
|
||||
struct can_bittiming bittiming;
|
||||
struct can_bittiming_const *bittiming_const;
|
||||
struct can_clock clock;
|
||||
|
||||
enum can_state state;
|
||||
u32 ctrlmode;
|
||||
|
||||
int restart_ms;
|
||||
struct timer_list restart_timer;
|
||||
|
||||
struct sk_buff *echo_skb[CAN_ECHO_SKB_MAX];
|
||||
|
||||
int (*do_set_bittiming)(struct net_device *dev);
|
||||
int (*do_set_mode)(struct net_device *dev, enum can_mode mode);
|
||||
int (*do_get_state)(const struct net_device *dev,
|
||||
enum can_state *state);
|
||||
};
|
||||
|
||||
struct net_device *alloc_candev(int sizeof_priv);
|
||||
void free_candev(struct net_device *dev);
|
||||
|
||||
int open_candev(struct net_device *dev);
|
||||
void close_candev(struct net_device *dev);
|
||||
|
||||
int register_candev(struct net_device *dev);
|
||||
void unregister_candev(struct net_device *dev);
|
||||
|
||||
int can_restart_now(struct net_device *dev);
|
||||
void can_bus_off(struct net_device *dev);
|
||||
|
||||
void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev, int idx);
|
||||
void can_get_echo_skb(struct net_device *dev, int idx);
|
||||
|
||||
#endif /* CAN_DEV_H */
|
113
include/linux/can/netlink.h
Normal file
113
include/linux/can/netlink.h
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
* linux/can/netlink.h
|
||||
*
|
||||
* Definitions for the CAN netlink interface
|
||||
*
|
||||
* Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com>
|
||||
*
|
||||
* Send feedback to <socketcan-users@lists.berlios.de>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef CAN_NETLINK_H
|
||||
#define CAN_NETLINK_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* CAN bit-timing parameters
|
||||
*
|
||||
* For futher information, please read chapter "8 BIT TIMING
|
||||
* REQUIREMENTS" of the "Bosch CAN Specification version 2.0"
|
||||
* at http://www.semiconductors.bosch.de/pdf/can2spec.pdf.
|
||||
*/
|
||||
struct can_bittiming {
|
||||
__u32 bitrate; /* Bit-rate in bits/second */
|
||||
__u32 sample_point; /* Sample point in one-tenth of a percent */
|
||||
__u32 tq; /* Time quanta (TQ) in nanoseconds */
|
||||
__u32 prop_seg; /* Propagation segment in TQs */
|
||||
__u32 phase_seg1; /* Phase buffer segment 1 in TQs */
|
||||
__u32 phase_seg2; /* Phase buffer segment 2 in TQs */
|
||||
__u32 sjw; /* Synchronisation jump width in TQs */
|
||||
__u32 brp; /* Bit-rate prescaler */
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN harware-dependent bit-timing constant
|
||||
*
|
||||
* Used for calculating and checking bit-timing parameters
|
||||
*/
|
||||
struct can_bittiming_const {
|
||||
char name[16]; /* Name of the CAN controller hardware */
|
||||
__u32 tseg1_min; /* Time segement 1 = prop_seg + phase_seg1 */
|
||||
__u32 tseg1_max;
|
||||
__u32 tseg2_min; /* Time segement 2 = phase_seg2 */
|
||||
__u32 tseg2_max;
|
||||
__u32 sjw_max; /* Synchronisation jump width */
|
||||
__u32 brp_min; /* Bit-rate prescaler */
|
||||
__u32 brp_max;
|
||||
__u32 brp_inc;
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN clock parameters
|
||||
*/
|
||||
struct can_clock {
|
||||
__u32 freq; /* CAN system clock frequency in Hz */
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN operational and error states
|
||||
*/
|
||||
enum can_state {
|
||||
CAN_STATE_ERROR_ACTIVE = 0, /* RX/TX error count < 96 */
|
||||
CAN_STATE_ERROR_WARNING, /* RX/TX error count < 128 */
|
||||
CAN_STATE_ERROR_PASSIVE, /* RX/TX error count < 256 */
|
||||
CAN_STATE_BUS_OFF, /* RX/TX error count >= 256 */
|
||||
CAN_STATE_STOPPED, /* Device is stopped */
|
||||
CAN_STATE_SLEEPING, /* Device is sleeping */
|
||||
CAN_STATE_MAX
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN controller mode
|
||||
*/
|
||||
struct can_ctrlmode {
|
||||
__u32 mask;
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
#define CAN_CTRLMODE_LOOPBACK 0x1 /* Loopback mode */
|
||||
#define CAN_CTRLMODE_LISTENONLY 0x2 /* Listen-only mode */
|
||||
#define CAN_CTRLMODE_3_SAMPLES 0x4 /* Triple sampling mode */
|
||||
|
||||
/*
|
||||
* CAN device statistics
|
||||
*/
|
||||
struct can_device_stats {
|
||||
__u32 bus_error; /* Bus errors */
|
||||
__u32 error_warning; /* Changes to error warning state */
|
||||
__u32 error_passive; /* Changes to error passive state */
|
||||
__u32 bus_off; /* Changes to bus off state */
|
||||
__u32 arbitration_lost; /* Arbitration lost errors */
|
||||
__u32 restarts; /* CAN controller re-starts */
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN netlink interface
|
||||
*/
|
||||
enum {
|
||||
IFLA_CAN_UNSPEC,
|
||||
IFLA_CAN_BITTIMING,
|
||||
IFLA_CAN_BITTIMING_CONST,
|
||||
IFLA_CAN_CLOCK,
|
||||
IFLA_CAN_STATE,
|
||||
IFLA_CAN_CTRLMODE,
|
||||
IFLA_CAN_RESTART_MS,
|
||||
IFLA_CAN_RESTART,
|
||||
__IFLA_CAN_MAX
|
||||
};
|
||||
|
||||
#define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1)
|
||||
|
||||
#endif /* CAN_NETLINK_H */
|
35
include/linux/can/platform/sja1000.h
Normal file
35
include/linux/can/platform/sja1000.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef _CAN_PLATFORM_SJA1000_H_
|
||||
#define _CAN_PLATFORM_SJA1000_H_
|
||||
|
||||
/* clock divider register */
|
||||
#define CDR_CLKOUT_MASK 0x07
|
||||
#define CDR_CLK_OFF 0x08 /* Clock off (CLKOUT pin) */
|
||||
#define CDR_RXINPEN 0x20 /* TX1 output is RX irq output */
|
||||
#define CDR_CBP 0x40 /* CAN input comparator bypass */
|
||||
#define CDR_PELICAN 0x80 /* PeliCAN mode */
|
||||
|
||||
/* output control register */
|
||||
#define OCR_MODE_BIPHASE 0x00
|
||||
#define OCR_MODE_TEST 0x01
|
||||
#define OCR_MODE_NORMAL 0x02
|
||||
#define OCR_MODE_CLOCK 0x03
|
||||
#define OCR_MODE_MASK 0x07
|
||||
#define OCR_TX0_INVERT 0x04
|
||||
#define OCR_TX0_PULLDOWN 0x08
|
||||
#define OCR_TX0_PULLUP 0x10
|
||||
#define OCR_TX0_PUSHPULL 0x18
|
||||
#define OCR_TX1_INVERT 0x20
|
||||
#define OCR_TX1_PULLDOWN 0x40
|
||||
#define OCR_TX1_PULLUP 0x80
|
||||
#define OCR_TX1_PUSHPULL 0xc0
|
||||
#define OCR_TX_MASK 0xfc
|
||||
#define OCR_TX_SHIFT 2
|
||||
|
||||
struct sja1000_platform_data {
|
||||
u32 clock; /* CAN bus oscillator frequency in Hz */
|
||||
|
||||
u8 ocr; /* output control register */
|
||||
u8 cdr; /* clock divider register */
|
||||
};
|
||||
|
||||
#endif /* !_CAN_PLATFORM_SJA1000_H_ */
|
@@ -182,6 +182,33 @@ static inline unsigned compare_ether_addr_64bits(const u8 addr1[6+2],
|
||||
return compare_ether_addr(addr1, addr2);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* is_etherdev_addr - Tell if given Ethernet address belongs to the device.
|
||||
* @dev: Pointer to a device structure
|
||||
* @addr: Pointer to a six-byte array containing the Ethernet address
|
||||
*
|
||||
* Compare passed address with all addresses of the device. Return true if the
|
||||
* address if one of the device addresses.
|
||||
*
|
||||
* Note that this function calls compare_ether_addr_64bits() so take care of
|
||||
* the right padding.
|
||||
*/
|
||||
static inline bool is_etherdev_addr(const struct net_device *dev,
|
||||
const u8 addr[6 + 2])
|
||||
{
|
||||
struct netdev_hw_addr *ha;
|
||||
int res = 1;
|
||||
|
||||
rcu_read_lock();
|
||||
for_each_dev_addr(dev, ha) {
|
||||
res = compare_ether_addr_64bits(addr, ha->addr);
|
||||
if (!res)
|
||||
break;
|
||||
}
|
||||
rcu_read_unlock();
|
||||
return !res;
|
||||
}
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
/**
|
||||
|
@@ -26,11 +26,14 @@ struct ethtool_cmd {
|
||||
__u8 phy_address;
|
||||
__u8 transceiver; /* Which transceiver to use */
|
||||
__u8 autoneg; /* Enable or disable autonegotiation */
|
||||
__u8 mdio_support;
|
||||
__u32 maxtxpkt; /* Tx pkts before generating tx int */
|
||||
__u32 maxrxpkt; /* Rx pkts before generating rx int */
|
||||
__u16 speed_hi;
|
||||
__u16 reserved2;
|
||||
__u32 reserved[3];
|
||||
__u8 eth_tp_mdix;
|
||||
__u8 reserved2;
|
||||
__u32 lp_advertising; /* Features the link partner advertises */
|
||||
__u32 reserved[2];
|
||||
};
|
||||
|
||||
static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
|
||||
@@ -563,6 +566,11 @@ struct ethtool_ops {
|
||||
#define SUPPORTED_Pause (1 << 13)
|
||||
#define SUPPORTED_Asym_Pause (1 << 14)
|
||||
#define SUPPORTED_2500baseX_Full (1 << 15)
|
||||
#define SUPPORTED_Backplane (1 << 16)
|
||||
#define SUPPORTED_1000baseKX_Full (1 << 17)
|
||||
#define SUPPORTED_10000baseKX4_Full (1 << 18)
|
||||
#define SUPPORTED_10000baseKR_Full (1 << 19)
|
||||
#define SUPPORTED_10000baseR_FEC (1 << 20)
|
||||
|
||||
/* Indicates what features are advertised by the interface. */
|
||||
#define ADVERTISED_10baseT_Half (1 << 0)
|
||||
@@ -581,6 +589,11 @@ struct ethtool_ops {
|
||||
#define ADVERTISED_Pause (1 << 13)
|
||||
#define ADVERTISED_Asym_Pause (1 << 14)
|
||||
#define ADVERTISED_2500baseX_Full (1 << 15)
|
||||
#define ADVERTISED_Backplane (1 << 16)
|
||||
#define ADVERTISED_1000baseKX_Full (1 << 17)
|
||||
#define ADVERTISED_10000baseKX4_Full (1 << 18)
|
||||
#define ADVERTISED_10000baseKR_Full (1 << 19)
|
||||
#define ADVERTISED_10000baseR_FEC (1 << 20)
|
||||
|
||||
/* The following are all involved in forcing a particular link
|
||||
* mode for the device for setting things. When getting the
|
||||
@@ -605,6 +618,7 @@ struct ethtool_ops {
|
||||
#define PORT_MII 0x02
|
||||
#define PORT_FIBRE 0x03
|
||||
#define PORT_BNC 0x04
|
||||
#define PORT_OTHER 0xff
|
||||
|
||||
/* Which transceiver to use. */
|
||||
#define XCVR_INTERNAL 0x00
|
||||
@@ -619,6 +633,11 @@ struct ethtool_ops {
|
||||
#define AUTONEG_DISABLE 0x00
|
||||
#define AUTONEG_ENABLE 0x01
|
||||
|
||||
/* Mode MDI or MDI-X */
|
||||
#define ETH_TP_MDI_INVALID 0x00
|
||||
#define ETH_TP_MDI 0x01
|
||||
#define ETH_TP_MDI_X 0x02
|
||||
|
||||
/* Wake-On-Lan options. */
|
||||
#define WAKE_PHY (1 << 0)
|
||||
#define WAKE_UCAST (1 << 1)
|
||||
|
@@ -17,6 +17,7 @@
|
||||
#define FS_ENET_PD_H
|
||||
|
||||
#include <linux/string.h>
|
||||
#include <linux/of_mdio.h>
|
||||
#include <asm/types.h>
|
||||
|
||||
#define FS_ENET_NAME "fs_enet"
|
||||
@@ -130,10 +131,7 @@ struct fs_platform_info {
|
||||
|
||||
u32 device_flags;
|
||||
|
||||
int phy_addr; /* the phy address (-1 no phy) */
|
||||
char bus_id[16];
|
||||
int phy_irq; /* the phy irq (if it exists) */
|
||||
|
||||
struct device_node *phy_node;
|
||||
const struct fs_mii_bus_info *bus_info;
|
||||
|
||||
int rx_ring, tx_ring; /* number of buffers on rx */
|
||||
|
@@ -493,6 +493,7 @@ struct ieee80211s_hdr {
|
||||
/* Mesh flags */
|
||||
#define MESH_FLAGS_AE_A4 0x1
|
||||
#define MESH_FLAGS_AE_A5_A6 0x2
|
||||
#define MESH_FLAGS_AE 0x3
|
||||
#define MESH_FLAGS_PS_DEEP 0x4
|
||||
|
||||
/**
|
||||
@@ -540,10 +541,10 @@ struct ieee80211_tim_ie {
|
||||
u8 dtim_period;
|
||||
u8 bitmap_ctrl;
|
||||
/* variable size: 1 - 251 bytes */
|
||||
u8 virtual_map[0];
|
||||
u8 virtual_map[1];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#define WLAN_SA_QUERY_TR_ID_LEN 16
|
||||
#define WLAN_SA_QUERY_TR_ID_LEN 2
|
||||
|
||||
struct ieee80211_mgmt {
|
||||
__le16 frame_control;
|
||||
@@ -1068,8 +1069,12 @@ enum ieee80211_category {
|
||||
WLAN_CATEGORY_DLS = 2,
|
||||
WLAN_CATEGORY_BACK = 3,
|
||||
WLAN_CATEGORY_PUBLIC = 4,
|
||||
WLAN_CATEGORY_HT = 7,
|
||||
WLAN_CATEGORY_SA_QUERY = 8,
|
||||
WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9,
|
||||
WLAN_CATEGORY_WMM = 17,
|
||||
WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
|
||||
WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
|
||||
};
|
||||
|
||||
/* SPECTRUM_MGMT action code */
|
||||
@@ -1081,6 +1086,15 @@ enum ieee80211_spectrum_mgmt_actioncode {
|
||||
WLAN_ACTION_SPCT_CHL_SWITCH = 4,
|
||||
};
|
||||
|
||||
/* Security key length */
|
||||
enum ieee80211_key_len {
|
||||
WLAN_KEY_LEN_WEP40 = 5,
|
||||
WLAN_KEY_LEN_WEP104 = 13,
|
||||
WLAN_KEY_LEN_CCMP = 16,
|
||||
WLAN_KEY_LEN_TKIP = 32,
|
||||
WLAN_KEY_LEN_AES_CMAC = 16,
|
||||
};
|
||||
|
||||
/*
|
||||
* IEEE 802.11-2007 7.3.2.9 Country information element
|
||||
*
|
||||
@@ -1261,7 +1275,9 @@ static inline bool ieee80211_is_robust_mgmt_frame(struct ieee80211_hdr *hdr)
|
||||
if (ieee80211_has_protected(hdr->frame_control))
|
||||
return true;
|
||||
category = ((u8 *) hdr) + 24;
|
||||
return *category != WLAN_CATEGORY_PUBLIC;
|
||||
return *category != WLAN_CATEGORY_PUBLIC &&
|
||||
*category != WLAN_CATEGORY_HT &&
|
||||
*category != WLAN_CATEGORY_VENDOR_SPECIFIC;
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -1383,4 +1399,43 @@ static inline int ieee80211_freq_to_ofdm_chan(int s_freq, int freq)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* ieee80211_tu_to_usec - convert time units (TU) to microseconds
|
||||
* @tu: the TUs
|
||||
*/
|
||||
static inline unsigned long ieee80211_tu_to_usec(unsigned long tu)
|
||||
{
|
||||
return 1024 * tu;
|
||||
}
|
||||
|
||||
/**
|
||||
* ieee80211_check_tim - check if AID bit is set in TIM
|
||||
* @tim: the TIM IE
|
||||
* @tim_len: length of the TIM IE
|
||||
* @aid: the AID to look for
|
||||
*/
|
||||
static inline bool ieee80211_check_tim(struct ieee80211_tim_ie *tim,
|
||||
u8 tim_len, u16 aid)
|
||||
{
|
||||
u8 mask;
|
||||
u8 index, indexn1, indexn2;
|
||||
|
||||
if (unlikely(!tim || tim_len < sizeof(*tim)))
|
||||
return false;
|
||||
|
||||
aid &= 0x3fff;
|
||||
index = aid / 8;
|
||||
mask = 1 << (aid & 7);
|
||||
|
||||
indexn1 = tim->bitmap_ctrl & 0xfe;
|
||||
indexn2 = tim_len + indexn1 - 4;
|
||||
|
||||
if (index < indexn1 || index > indexn2)
|
||||
return false;
|
||||
|
||||
index -= indexn1;
|
||||
|
||||
return !!(tim->virtual_map[index] & mask);
|
||||
}
|
||||
|
||||
#endif /* LINUX_IEEE80211_H */
|
||||
|
@@ -67,6 +67,9 @@
|
||||
#define IFF_ISATAP 0x80 /* ISATAP interface (RFC4214) */
|
||||
#define IFF_MASTER_ARPMON 0x100 /* bonding master, ARP mon in use */
|
||||
#define IFF_WAN_HDLC 0x200 /* WAN HDLC device */
|
||||
#define IFF_XMIT_DST_RELEASE 0x400 /* dev_hard_start_xmit() is allowed to
|
||||
* release skb->dst
|
||||
*/
|
||||
|
||||
#define IF_GET_IFACE 0x0001 /* for querying only */
|
||||
#define IF_GET_PROTO 0x0002
|
||||
|
@@ -86,6 +86,8 @@
|
||||
#define ARPHRD_IEEE80211 801 /* IEEE 802.11 */
|
||||
#define ARPHRD_IEEE80211_PRISM 802 /* IEEE 802.11 + Prism2 header */
|
||||
#define ARPHRD_IEEE80211_RADIOTAP 803 /* IEEE 802.11 + radiotap header */
|
||||
#define ARPHRD_IEEE802154 804
|
||||
#define ARPHRD_IEEE802154_PHY 805
|
||||
|
||||
#define ARPHRD_PHONET 820 /* PhoNet media type */
|
||||
#define ARPHRD_PHONET_PIPE 821 /* PhoNet pipe header */
|
||||
|
@@ -107,6 +107,7 @@
|
||||
#define ETH_P_DSA 0x001B /* Distributed Switch Arch. */
|
||||
#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 */
|
||||
|
||||
/*
|
||||
* This is an Ethernet frame header.
|
||||
|
@@ -46,6 +46,8 @@ struct sockaddr_ll
|
||||
#define PACKET_VERSION 10
|
||||
#define PACKET_HDRLEN 11
|
||||
#define PACKET_RESERVE 12
|
||||
#define PACKET_TX_RING 13
|
||||
#define PACKET_LOSS 14
|
||||
|
||||
struct tpacket_stats
|
||||
{
|
||||
@@ -63,14 +65,22 @@ struct tpacket_auxdata
|
||||
__u16 tp_vlan_tci;
|
||||
};
|
||||
|
||||
/* Rx ring - header status */
|
||||
#define TP_STATUS_KERNEL 0x0
|
||||
#define TP_STATUS_USER 0x1
|
||||
#define TP_STATUS_COPY 0x2
|
||||
#define TP_STATUS_LOSING 0x4
|
||||
#define TP_STATUS_CSUMNOTREADY 0x8
|
||||
|
||||
/* Tx ring - header status */
|
||||
#define TP_STATUS_AVAILABLE 0x0
|
||||
#define TP_STATUS_SEND_REQUEST 0x1
|
||||
#define TP_STATUS_SENDING 0x2
|
||||
#define TP_STATUS_WRONG_FORMAT 0x4
|
||||
|
||||
struct tpacket_hdr
|
||||
{
|
||||
unsigned long tp_status;
|
||||
#define TP_STATUS_KERNEL 0
|
||||
#define TP_STATUS_USER 1
|
||||
#define TP_STATUS_COPY 2
|
||||
#define TP_STATUS_LOSING 4
|
||||
#define TP_STATUS_CSUMNOTREADY 8
|
||||
unsigned int tp_len;
|
||||
unsigned int tp_snaplen;
|
||||
unsigned short tp_mac;
|
||||
@@ -135,5 +145,6 @@ struct packet_mreq
|
||||
#define PACKET_MR_MULTICAST 0
|
||||
#define PACKET_MR_PROMISC 1
|
||||
#define PACKET_MR_ALLMULTI 2
|
||||
#define PACKET_MR_UNICAST 3
|
||||
|
||||
#endif
|
||||
|
@@ -55,6 +55,7 @@
|
||||
#define IFF_NO_PI 0x1000
|
||||
#define IFF_ONE_QUEUE 0x2000
|
||||
#define IFF_VNET_HDR 0x4000
|
||||
#define IFF_TUN_EXCL 0x8000
|
||||
|
||||
/* Features for GSO (TUNSETOFFLOAD). */
|
||||
#define TUN_F_CSUM 0x01 /* You can hand me unchecksummed packets. */
|
||||
|
@@ -44,7 +44,7 @@ struct ip_tunnel_prl {
|
||||
__u16 flags;
|
||||
__u16 __reserved;
|
||||
__u32 datalen;
|
||||
__u32 __reserved2;
|
||||
__u32 rs_delay;
|
||||
/* data follows */
|
||||
};
|
||||
|
||||
|
@@ -118,8 +118,7 @@ extern int vlan_hwaccel_do_receive(struct sk_buff *skb);
|
||||
extern int vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp,
|
||||
unsigned int vlan_tci, struct sk_buff *skb);
|
||||
extern int vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp,
|
||||
unsigned int vlan_tci,
|
||||
struct napi_gro_fraginfo *info);
|
||||
unsigned int vlan_tci);
|
||||
|
||||
#else
|
||||
static inline struct net_device *vlan_dev_real_dev(const struct net_device *dev)
|
||||
@@ -154,8 +153,7 @@ static inline int vlan_gro_receive(struct napi_struct *napi,
|
||||
}
|
||||
|
||||
static inline int vlan_gro_frags(struct napi_struct *napi,
|
||||
struct vlan_group *grp, unsigned int vlan_tci,
|
||||
struct napi_gro_fraginfo *info)
|
||||
struct vlan_group *grp, unsigned int vlan_tci)
|
||||
{
|
||||
return NET_RX_DROP;
|
||||
}
|
||||
|
@@ -107,6 +107,7 @@ struct in_addr {
|
||||
#define MCAST_JOIN_SOURCE_GROUP 46
|
||||
#define MCAST_LEAVE_SOURCE_GROUP 47
|
||||
#define MCAST_MSFILTER 48
|
||||
#define IP_MULTICAST_ALL 49
|
||||
|
||||
#define MCAST_EXCLUDE 0
|
||||
#define MCAST_INCLUDE 1
|
||||
|
@@ -169,6 +169,12 @@ struct ipv6_devconf {
|
||||
__s32 accept_dad;
|
||||
void *sysctl;
|
||||
};
|
||||
|
||||
struct ipv6_params {
|
||||
__s32 disable_ipv6;
|
||||
__s32 autoconf;
|
||||
};
|
||||
extern struct ipv6_params ipv6_defaults;
|
||||
#endif
|
||||
|
||||
/* index values for the variables in ipv6_devconf */
|
||||
|
@@ -79,7 +79,7 @@ int attach_capi_ctr(struct capi_ctr *);
|
||||
int detach_capi_ctr(struct capi_ctr *);
|
||||
|
||||
void capi_ctr_ready(struct capi_ctr * card);
|
||||
void capi_ctr_reseted(struct capi_ctr * card);
|
||||
void capi_ctr_down(struct capi_ctr * card);
|
||||
void capi_ctr_suspend_output(struct capi_ctr * card);
|
||||
void capi_ctr_resume_output(struct capi_ctr * card);
|
||||
void capi_ctr_handle_message(struct capi_ctr * card, u16 appl, struct sk_buff *skb);
|
||||
|
@@ -56,6 +56,18 @@ static inline int hlist_nulls_empty(const struct hlist_nulls_head *h)
|
||||
return is_a_nulls(h->first);
|
||||
}
|
||||
|
||||
static inline void hlist_nulls_add_head(struct hlist_nulls_node *n,
|
||||
struct hlist_nulls_head *h)
|
||||
{
|
||||
struct hlist_nulls_node *first = h->first;
|
||||
|
||||
n->next = first;
|
||||
n->pprev = &h->first;
|
||||
h->first = n;
|
||||
if (!is_a_nulls(first))
|
||||
first->pprev = &n->next;
|
||||
}
|
||||
|
||||
static inline void __hlist_nulls_del(struct hlist_nulls_node *n)
|
||||
{
|
||||
struct hlist_nulls_node *next = n->next;
|
||||
@@ -65,6 +77,12 @@ static inline void __hlist_nulls_del(struct hlist_nulls_node *n)
|
||||
next->pprev = pprev;
|
||||
}
|
||||
|
||||
static inline void hlist_nulls_del(struct hlist_nulls_node *n)
|
||||
{
|
||||
__hlist_nulls_del(n);
|
||||
n->pprev = LIST_POISON2;
|
||||
}
|
||||
|
||||
/**
|
||||
* hlist_nulls_for_each_entry - iterate over list of given type
|
||||
* @tpos: the type * to use as a loop cursor.
|
||||
|
@@ -12,7 +12,8 @@ struct mISDN_dsp_element {
|
||||
void *(*new)(const char *arg);
|
||||
void (*free)(void *p);
|
||||
void (*process_tx)(void *p, unsigned char *data, int len);
|
||||
void (*process_rx)(void *p, unsigned char *data, int len);
|
||||
void (*process_rx)(void *p, unsigned char *data, int len,
|
||||
unsigned int txlen);
|
||||
int num_args;
|
||||
struct mISDN_dsp_element_arg
|
||||
*args;
|
||||
@@ -24,6 +25,7 @@ extern void mISDN_dsp_element_unregister(struct mISDN_dsp_element *elem);
|
||||
struct dsp_features {
|
||||
int hfc_id; /* unique id to identify the chip (or -1) */
|
||||
int hfc_dtmf; /* set if HFCmulti card supports dtmf */
|
||||
int hfc_conf; /* set if HFCmulti card supports conferences */
|
||||
int hfc_loops; /* set if card supports tone loops */
|
||||
int hfc_echocanhw; /* set if card supports echocancelation*/
|
||||
int pcm_id; /* unique id to identify the pcm bus (or -1) */
|
||||
|
@@ -89,11 +89,6 @@ struct dchannel {
|
||||
void (*phfunc) (struct dchannel *);
|
||||
u_int state;
|
||||
void *l1;
|
||||
/* HW access */
|
||||
u_char (*read_reg) (void *, u_char);
|
||||
void (*write_reg) (void *, u_char, u_char);
|
||||
void (*read_fifo) (void *, u_char *, int);
|
||||
void (*write_fifo) (void *, u_char *, int);
|
||||
void *hw;
|
||||
int slot; /* multiport card channel slot */
|
||||
struct timer_list timer;
|
||||
@@ -151,11 +146,6 @@ struct bchannel {
|
||||
u_long Flags;
|
||||
struct work_struct workq;
|
||||
u_int state;
|
||||
/* HW access */
|
||||
u_char (*read_reg) (void *, u_char);
|
||||
void (*write_reg) (void *, u_char, u_char);
|
||||
void (*read_fifo) (void *, u_char *, int);
|
||||
void (*write_fifo) (void *, u_char *, int);
|
||||
void *hw;
|
||||
int slot; /* multiport card channel slot */
|
||||
struct timer_list timer;
|
||||
@@ -185,7 +175,7 @@ extern int dchannel_senddata(struct dchannel *, struct sk_buff *);
|
||||
extern int bchannel_senddata(struct bchannel *, struct sk_buff *);
|
||||
extern void recv_Dchannel(struct dchannel *);
|
||||
extern void recv_Echannel(struct dchannel *, struct dchannel *);
|
||||
extern void recv_Bchannel(struct bchannel *);
|
||||
extern void recv_Bchannel(struct bchannel *, unsigned int id);
|
||||
extern void recv_Dchannel_skb(struct dchannel *, struct sk_buff *);
|
||||
extern void recv_Bchannel_skb(struct bchannel *, struct sk_buff *);
|
||||
extern void confirm_Bsend(struct bchannel *bch);
|
||||
|
@@ -229,6 +229,7 @@
|
||||
#define OPTION_L2_PTP 2
|
||||
#define OPTION_L2_FIXEDTEI 3
|
||||
#define OPTION_L2_CLEANUP 4
|
||||
#define OPTION_L1_HOLD 5
|
||||
|
||||
/* should be in sync with linux/kobject.h:KOBJ_NAME_LEN */
|
||||
#define MISDN_MAX_IDLEN 20
|
||||
@@ -291,19 +292,19 @@ struct mISDN_devrename {
|
||||
|
||||
/* MPH_INFORMATION_REQ payload */
|
||||
struct ph_info_ch {
|
||||
__u32 protocol;
|
||||
__u64 Flags;
|
||||
__u32 protocol;
|
||||
__u64 Flags;
|
||||
};
|
||||
|
||||
struct ph_info_dch {
|
||||
struct ph_info_ch ch;
|
||||
__u16 state;
|
||||
__u16 num_bch;
|
||||
struct ph_info_ch ch;
|
||||
__u16 state;
|
||||
__u16 num_bch;
|
||||
};
|
||||
|
||||
struct ph_info {
|
||||
struct ph_info_dch dch;
|
||||
struct ph_info_ch bch[];
|
||||
struct ph_info_dch dch;
|
||||
struct ph_info_ch bch[];
|
||||
};
|
||||
|
||||
/* timer device ioctl */
|
||||
@@ -317,6 +318,7 @@ struct ph_info {
|
||||
#define IMCTRLREQ _IOR('I', 69, int)
|
||||
#define IMCLEAR_L2 _IOR('I', 70, int)
|
||||
#define IMSETDEVNAME _IOR('I', 71, struct mISDN_devrename)
|
||||
#define IMHOLD_L1 _IOR('I', 72, int)
|
||||
|
||||
static inline int
|
||||
test_channelmap(u_int nr, u_char *map)
|
||||
@@ -362,7 +364,8 @@ clear_channelmap(u_int nr, u_char *map)
|
||||
#define MISDN_CTRL_HFC_RECEIVE_ON 0x4006
|
||||
#define MISDN_CTRL_HFC_ECHOCAN_ON 0x4007
|
||||
#define MISDN_CTRL_HFC_ECHOCAN_OFF 0x4008
|
||||
|
||||
#define MISDN_CTRL_HFC_WD_INIT 0x4009
|
||||
#define MISDN_CTRL_HFC_WD_RESET 0x400A
|
||||
|
||||
/* socket options */
|
||||
#define MISDN_TIME_STAMP 0x0001
|
||||
|
356
include/linux/mdio.h
Normal file
356
include/linux/mdio.h
Normal file
@@ -0,0 +1,356 @@
|
||||
/*
|
||||
* linux/mdio.h: definitions for MDIO (clause 45) transceivers
|
||||
* Copyright 2006-2009 Solarflare Communications Inc.
|
||||
*
|
||||
* 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, incorporated herein by reference.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MDIO_H__
|
||||
#define __LINUX_MDIO_H__
|
||||
|
||||
#include <linux/mii.h>
|
||||
|
||||
/* MDIO Manageable Devices (MMDs). */
|
||||
#define MDIO_MMD_PMAPMD 1 /* Physical Medium Attachment/
|
||||
* Physical Medium Dependent */
|
||||
#define MDIO_MMD_WIS 2 /* WAN Interface Sublayer */
|
||||
#define MDIO_MMD_PCS 3 /* Physical Coding Sublayer */
|
||||
#define MDIO_MMD_PHYXS 4 /* PHY Extender Sublayer */
|
||||
#define MDIO_MMD_DTEXS 5 /* DTE Extender Sublayer */
|
||||
#define MDIO_MMD_TC 6 /* Transmission Convergence */
|
||||
#define MDIO_MMD_AN 7 /* Auto-Negotiation */
|
||||
#define MDIO_MMD_C22EXT 29 /* Clause 22 extension */
|
||||
#define MDIO_MMD_VEND1 30 /* Vendor specific 1 */
|
||||
#define MDIO_MMD_VEND2 31 /* Vendor specific 2 */
|
||||
|
||||
/* Generic MDIO registers. */
|
||||
#define MDIO_CTRL1 MII_BMCR
|
||||
#define MDIO_STAT1 MII_BMSR
|
||||
#define MDIO_DEVID1 MII_PHYSID1
|
||||
#define MDIO_DEVID2 MII_PHYSID2
|
||||
#define MDIO_SPEED 4 /* Speed ability */
|
||||
#define MDIO_DEVS1 5 /* Devices in package */
|
||||
#define MDIO_DEVS2 6
|
||||
#define MDIO_CTRL2 7 /* 10G control 2 */
|
||||
#define MDIO_STAT2 8 /* 10G status 2 */
|
||||
#define MDIO_PMA_TXDIS 9 /* 10G PMA/PMD transmit disable */
|
||||
#define MDIO_PMA_RXDET 10 /* 10G PMA/PMD receive signal detect */
|
||||
#define MDIO_PMA_EXTABLE 11 /* 10G PMA/PMD extended ability */
|
||||
#define MDIO_PKGID1 14 /* Package identifier */
|
||||
#define MDIO_PKGID2 15
|
||||
#define MDIO_AN_ADVERTISE 16 /* AN advertising (base page) */
|
||||
#define MDIO_AN_LPA 19 /* AN LP abilities (base page) */
|
||||
#define MDIO_PHYXS_LNSTAT 24 /* PHY XGXS lane state */
|
||||
|
||||
/* Media-dependent registers. */
|
||||
#define MDIO_PMA_10GBT_SWAPPOL 130 /* 10GBASE-T pair swap & polarity */
|
||||
#define MDIO_PMA_10GBT_TXPWR 131 /* 10GBASE-T TX power control */
|
||||
#define MDIO_PMA_10GBT_SNR 133 /* 10GBASE-T SNR margin, lane A.
|
||||
* Lanes B-D are numbered 134-136. */
|
||||
#define MDIO_PMA_10GBR_FECABLE 170 /* 10GBASE-R FEC ability */
|
||||
#define MDIO_PCS_10GBX_STAT1 24 /* 10GBASE-X PCS status 1 */
|
||||
#define MDIO_PCS_10GBRT_STAT1 32 /* 10GBASE-R/-T PCS status 1 */
|
||||
#define MDIO_PCS_10GBRT_STAT2 33 /* 10GBASE-R/-T PCS status 2 */
|
||||
#define MDIO_AN_10GBT_CTRL 32 /* 10GBASE-T auto-negotiation control */
|
||||
#define MDIO_AN_10GBT_STAT 33 /* 10GBASE-T auto-negotiation status */
|
||||
|
||||
/* LASI (Link Alarm Status Interrupt) registers, defined by XENPAK MSA. */
|
||||
#define MDIO_PMA_LASI_RXCTRL 0x9000 /* RX_ALARM control */
|
||||
#define MDIO_PMA_LASI_TXCTRL 0x9001 /* TX_ALARM control */
|
||||
#define MDIO_PMA_LASI_CTRL 0x9002 /* LASI control */
|
||||
#define MDIO_PMA_LASI_RXSTAT 0x9003 /* RX_ALARM status */
|
||||
#define MDIO_PMA_LASI_TXSTAT 0x9004 /* TX_ALARM status */
|
||||
#define MDIO_PMA_LASI_STAT 0x9005 /* LASI status */
|
||||
|
||||
/* Control register 1. */
|
||||
/* Enable extended speed selection */
|
||||
#define MDIO_CTRL1_SPEEDSELEXT (BMCR_SPEED1000 | BMCR_SPEED100)
|
||||
/* All speed selection bits */
|
||||
#define MDIO_CTRL1_SPEEDSEL (MDIO_CTRL1_SPEEDSELEXT | 0x003c)
|
||||
#define MDIO_CTRL1_FULLDPLX BMCR_FULLDPLX
|
||||
#define MDIO_CTRL1_LPOWER BMCR_PDOWN
|
||||
#define MDIO_CTRL1_RESET BMCR_RESET
|
||||
#define MDIO_PMA_CTRL1_LOOPBACK 0x0001
|
||||
#define MDIO_PMA_CTRL1_SPEED1000 BMCR_SPEED1000
|
||||
#define MDIO_PMA_CTRL1_SPEED100 BMCR_SPEED100
|
||||
#define MDIO_PCS_CTRL1_LOOPBACK BMCR_LOOPBACK
|
||||
#define MDIO_PHYXS_CTRL1_LOOPBACK BMCR_LOOPBACK
|
||||
#define MDIO_AN_CTRL1_RESTART BMCR_ANRESTART
|
||||
#define MDIO_AN_CTRL1_ENABLE BMCR_ANENABLE
|
||||
#define MDIO_AN_CTRL1_XNP 0x2000 /* Enable extended next page */
|
||||
|
||||
/* 10 Gb/s */
|
||||
#define MDIO_CTRL1_SPEED10G (MDIO_CTRL1_SPEEDSELEXT | 0x00)
|
||||
/* 10PASS-TS/2BASE-TL */
|
||||
#define MDIO_CTRL1_SPEED10P2B (MDIO_CTRL1_SPEEDSELEXT | 0x04)
|
||||
|
||||
/* Status register 1. */
|
||||
#define MDIO_STAT1_LPOWERABLE 0x0002 /* Low-power ability */
|
||||
#define MDIO_STAT1_LSTATUS BMSR_LSTATUS
|
||||
#define MDIO_STAT1_FAULT 0x0080 /* Fault */
|
||||
#define MDIO_AN_STAT1_LPABLE 0x0001 /* Link partner AN ability */
|
||||
#define MDIO_AN_STAT1_ABLE BMSR_ANEGCAPABLE
|
||||
#define MDIO_AN_STAT1_RFAULT BMSR_RFAULT
|
||||
#define MDIO_AN_STAT1_COMPLETE BMSR_ANEGCOMPLETE
|
||||
#define MDIO_AN_STAT1_PAGE 0x0040 /* Page received */
|
||||
#define MDIO_AN_STAT1_XNP 0x0080 /* Extended next page status */
|
||||
|
||||
/* Speed register. */
|
||||
#define MDIO_SPEED_10G 0x0001 /* 10G capable */
|
||||
#define MDIO_PMA_SPEED_2B 0x0002 /* 2BASE-TL capable */
|
||||
#define MDIO_PMA_SPEED_10P 0x0004 /* 10PASS-TS capable */
|
||||
#define MDIO_PMA_SPEED_1000 0x0010 /* 1000M capable */
|
||||
#define MDIO_PMA_SPEED_100 0x0020 /* 100M capable */
|
||||
#define MDIO_PMA_SPEED_10 0x0040 /* 10M capable */
|
||||
#define MDIO_PCS_SPEED_10P2B 0x0002 /* 10PASS-TS/2BASE-TL capable */
|
||||
|
||||
/* Device present registers. */
|
||||
#define MDIO_DEVS_PRESENT(devad) (1 << (devad))
|
||||
#define MDIO_DEVS_PMAPMD MDIO_DEVS_PRESENT(MDIO_MMD_PMAPMD)
|
||||
#define MDIO_DEVS_WIS MDIO_DEVS_PRESENT(MDIO_MMD_WIS)
|
||||
#define MDIO_DEVS_PCS MDIO_DEVS_PRESENT(MDIO_MMD_PCS)
|
||||
#define MDIO_DEVS_PHYXS MDIO_DEVS_PRESENT(MDIO_MMD_PHYXS)
|
||||
#define MDIO_DEVS_DTEXS MDIO_DEVS_PRESENT(MDIO_MMD_DTEXS)
|
||||
#define MDIO_DEVS_TC MDIO_DEVS_PRESENT(MDIO_MMD_TC)
|
||||
#define MDIO_DEVS_AN MDIO_DEVS_PRESENT(MDIO_MMD_AN)
|
||||
#define MDIO_DEVS_C22EXT MDIO_DEVS_PRESENT(MDIO_MMD_C22EXT)
|
||||
|
||||
/* Control register 2. */
|
||||
#define MDIO_PMA_CTRL2_TYPE 0x000f /* PMA/PMD type selection */
|
||||
#define MDIO_PMA_CTRL2_10GBCX4 0x0000 /* 10GBASE-CX4 type */
|
||||
#define MDIO_PMA_CTRL2_10GBEW 0x0001 /* 10GBASE-EW type */
|
||||
#define MDIO_PMA_CTRL2_10GBLW 0x0002 /* 10GBASE-LW type */
|
||||
#define MDIO_PMA_CTRL2_10GBSW 0x0003 /* 10GBASE-SW type */
|
||||
#define MDIO_PMA_CTRL2_10GBLX4 0x0004 /* 10GBASE-LX4 type */
|
||||
#define MDIO_PMA_CTRL2_10GBER 0x0005 /* 10GBASE-ER type */
|
||||
#define MDIO_PMA_CTRL2_10GBLR 0x0006 /* 10GBASE-LR type */
|
||||
#define MDIO_PMA_CTRL2_10GBSR 0x0007 /* 10GBASE-SR type */
|
||||
#define MDIO_PMA_CTRL2_10GBLRM 0x0008 /* 10GBASE-LRM type */
|
||||
#define MDIO_PMA_CTRL2_10GBT 0x0009 /* 10GBASE-T type */
|
||||
#define MDIO_PMA_CTRL2_10GBKX4 0x000a /* 10GBASE-KX4 type */
|
||||
#define MDIO_PMA_CTRL2_10GBKR 0x000b /* 10GBASE-KR type */
|
||||
#define MDIO_PMA_CTRL2_1000BT 0x000c /* 1000BASE-T type */
|
||||
#define MDIO_PMA_CTRL2_1000BKX 0x000d /* 1000BASE-KX type */
|
||||
#define MDIO_PMA_CTRL2_100BTX 0x000e /* 100BASE-TX type */
|
||||
#define MDIO_PMA_CTRL2_10BT 0x000f /* 10BASE-T type */
|
||||
#define MDIO_PCS_CTRL2_TYPE 0x0003 /* PCS type selection */
|
||||
#define MDIO_PCS_CTRL2_10GBR 0x0000 /* 10GBASE-R type */
|
||||
#define MDIO_PCS_CTRL2_10GBX 0x0001 /* 10GBASE-X type */
|
||||
#define MDIO_PCS_CTRL2_10GBW 0x0002 /* 10GBASE-W type */
|
||||
#define MDIO_PCS_CTRL2_10GBT 0x0003 /* 10GBASE-T type */
|
||||
|
||||
/* Status register 2. */
|
||||
#define MDIO_STAT2_RXFAULT 0x0400 /* Receive fault */
|
||||
#define MDIO_STAT2_TXFAULT 0x0800 /* Transmit fault */
|
||||
#define MDIO_STAT2_DEVPRST 0xc000 /* Device present */
|
||||
#define MDIO_STAT2_DEVPRST_VAL 0x8000 /* Device present value */
|
||||
#define MDIO_PMA_STAT2_LBABLE 0x0001 /* PMA loopback ability */
|
||||
#define MDIO_PMA_STAT2_10GBEW 0x0002 /* 10GBASE-EW ability */
|
||||
#define MDIO_PMA_STAT2_10GBLW 0x0004 /* 10GBASE-LW ability */
|
||||
#define MDIO_PMA_STAT2_10GBSW 0x0008 /* 10GBASE-SW ability */
|
||||
#define MDIO_PMA_STAT2_10GBLX4 0x0010 /* 10GBASE-LX4 ability */
|
||||
#define MDIO_PMA_STAT2_10GBER 0x0020 /* 10GBASE-ER ability */
|
||||
#define MDIO_PMA_STAT2_10GBLR 0x0040 /* 10GBASE-LR ability */
|
||||
#define MDIO_PMA_STAT2_10GBSR 0x0080 /* 10GBASE-SR ability */
|
||||
#define MDIO_PMD_STAT2_TXDISAB 0x0100 /* PMD TX disable ability */
|
||||
#define MDIO_PMA_STAT2_EXTABLE 0x0200 /* Extended abilities */
|
||||
#define MDIO_PMA_STAT2_RXFLTABLE 0x1000 /* Receive fault ability */
|
||||
#define MDIO_PMA_STAT2_TXFLTABLE 0x2000 /* Transmit fault ability */
|
||||
#define MDIO_PCS_STAT2_10GBR 0x0001 /* 10GBASE-R capable */
|
||||
#define MDIO_PCS_STAT2_10GBX 0x0002 /* 10GBASE-X capable */
|
||||
#define MDIO_PCS_STAT2_10GBW 0x0004 /* 10GBASE-W capable */
|
||||
#define MDIO_PCS_STAT2_RXFLTABLE 0x1000 /* Receive fault ability */
|
||||
#define MDIO_PCS_STAT2_TXFLTABLE 0x2000 /* Transmit fault ability */
|
||||
|
||||
/* Transmit disable register. */
|
||||
#define MDIO_PMD_TXDIS_GLOBAL 0x0001 /* Global PMD TX disable */
|
||||
#define MDIO_PMD_TXDIS_0 0x0002 /* PMD TX disable 0 */
|
||||
#define MDIO_PMD_TXDIS_1 0x0004 /* PMD TX disable 1 */
|
||||
#define MDIO_PMD_TXDIS_2 0x0008 /* PMD TX disable 2 */
|
||||
#define MDIO_PMD_TXDIS_3 0x0010 /* PMD TX disable 3 */
|
||||
|
||||
/* Receive signal detect register. */
|
||||
#define MDIO_PMD_RXDET_GLOBAL 0x0001 /* Global PMD RX signal detect */
|
||||
#define MDIO_PMD_RXDET_0 0x0002 /* PMD RX signal detect 0 */
|
||||
#define MDIO_PMD_RXDET_1 0x0004 /* PMD RX signal detect 1 */
|
||||
#define MDIO_PMD_RXDET_2 0x0008 /* PMD RX signal detect 2 */
|
||||
#define MDIO_PMD_RXDET_3 0x0010 /* PMD RX signal detect 3 */
|
||||
|
||||
/* Extended abilities register. */
|
||||
#define MDIO_PMA_EXTABLE_10GCX4 0x0001 /* 10GBASE-CX4 ability */
|
||||
#define MDIO_PMA_EXTABLE_10GBLRM 0x0002 /* 10GBASE-LRM ability */
|
||||
#define MDIO_PMA_EXTABLE_10GBT 0x0004 /* 10GBASE-T ability */
|
||||
#define MDIO_PMA_EXTABLE_10GBKX4 0x0008 /* 10GBASE-KX4 ability */
|
||||
#define MDIO_PMA_EXTABLE_10GBKR 0x0010 /* 10GBASE-KR ability */
|
||||
#define MDIO_PMA_EXTABLE_1000BT 0x0020 /* 1000BASE-T ability */
|
||||
#define MDIO_PMA_EXTABLE_1000BKX 0x0040 /* 1000BASE-KX ability */
|
||||
#define MDIO_PMA_EXTABLE_100BTX 0x0080 /* 100BASE-TX ability */
|
||||
#define MDIO_PMA_EXTABLE_10BT 0x0100 /* 10BASE-T ability */
|
||||
|
||||
/* PHY XGXS lane state register. */
|
||||
#define MDIO_PHYXS_LNSTAT_SYNC0 0x0001
|
||||
#define MDIO_PHYXS_LNSTAT_SYNC1 0x0002
|
||||
#define MDIO_PHYXS_LNSTAT_SYNC2 0x0004
|
||||
#define MDIO_PHYXS_LNSTAT_SYNC3 0x0008
|
||||
#define MDIO_PHYXS_LNSTAT_ALIGN 0x1000
|
||||
|
||||
/* PMA 10GBASE-T pair swap & polarity */
|
||||
#define MDIO_PMA_10GBT_SWAPPOL_ABNX 0x0001 /* Pair A/B uncrossed */
|
||||
#define MDIO_PMA_10GBT_SWAPPOL_CDNX 0x0002 /* Pair C/D uncrossed */
|
||||
#define MDIO_PMA_10GBT_SWAPPOL_AREV 0x0100 /* Pair A polarity reversed */
|
||||
#define MDIO_PMA_10GBT_SWAPPOL_BREV 0x0200 /* Pair B polarity reversed */
|
||||
#define MDIO_PMA_10GBT_SWAPPOL_CREV 0x0400 /* Pair C polarity reversed */
|
||||
#define MDIO_PMA_10GBT_SWAPPOL_DREV 0x0800 /* Pair D polarity reversed */
|
||||
|
||||
/* PMA 10GBASE-T TX power register. */
|
||||
#define MDIO_PMA_10GBT_TXPWR_SHORT 0x0001 /* Short-reach mode */
|
||||
|
||||
/* PMA 10GBASE-T SNR registers. */
|
||||
/* Value is SNR margin in dB, clamped to range [-127, 127], plus 0x8000. */
|
||||
#define MDIO_PMA_10GBT_SNR_BIAS 0x8000
|
||||
#define MDIO_PMA_10GBT_SNR_MAX 127
|
||||
|
||||
/* PMA 10GBASE-R FEC ability register. */
|
||||
#define MDIO_PMA_10GBR_FECABLE_ABLE 0x0001 /* FEC ability */
|
||||
#define MDIO_PMA_10GBR_FECABLE_ERRABLE 0x0002 /* FEC error indic. ability */
|
||||
|
||||
/* PCS 10GBASE-R/-T status register 1. */
|
||||
#define MDIO_PCS_10GBRT_STAT1_BLKLK 0x0001 /* Block lock attained */
|
||||
|
||||
/* PCS 10GBASE-R/-T status register 2. */
|
||||
#define MDIO_PCS_10GBRT_STAT2_ERR 0x00ff
|
||||
#define MDIO_PCS_10GBRT_STAT2_BER 0x3f00
|
||||
|
||||
/* AN 10GBASE-T control register. */
|
||||
#define MDIO_AN_10GBT_CTRL_ADV10G 0x1000 /* Advertise 10GBASE-T */
|
||||
|
||||
/* AN 10GBASE-T status register. */
|
||||
#define MDIO_AN_10GBT_STAT_LPTRR 0x0200 /* LP training reset req. */
|
||||
#define MDIO_AN_10GBT_STAT_LPLTABLE 0x0400 /* LP loop timing ability */
|
||||
#define MDIO_AN_10GBT_STAT_LP10G 0x0800 /* LP is 10GBT capable */
|
||||
#define MDIO_AN_10GBT_STAT_REMOK 0x1000 /* Remote OK */
|
||||
#define MDIO_AN_10GBT_STAT_LOCOK 0x2000 /* Local OK */
|
||||
#define MDIO_AN_10GBT_STAT_MS 0x4000 /* Master/slave config */
|
||||
#define MDIO_AN_10GBT_STAT_MSFLT 0x8000 /* Master/slave config fault */
|
||||
|
||||
/* LASI RX_ALARM control/status registers. */
|
||||
#define MDIO_PMA_LASI_RX_PHYXSLFLT 0x0001 /* PHY XS RX local fault */
|
||||
#define MDIO_PMA_LASI_RX_PCSLFLT 0x0008 /* PCS RX local fault */
|
||||
#define MDIO_PMA_LASI_RX_PMALFLT 0x0010 /* PMA/PMD RX local fault */
|
||||
#define MDIO_PMA_LASI_RX_OPTICPOWERFLT 0x0020 /* RX optical power fault */
|
||||
#define MDIO_PMA_LASI_RX_WISLFLT 0x0200 /* WIS local fault */
|
||||
|
||||
/* LASI TX_ALARM control/status registers. */
|
||||
#define MDIO_PMA_LASI_TX_PHYXSLFLT 0x0001 /* PHY XS TX local fault */
|
||||
#define MDIO_PMA_LASI_TX_PCSLFLT 0x0008 /* PCS TX local fault */
|
||||
#define MDIO_PMA_LASI_TX_PMALFLT 0x0010 /* PMA/PMD TX local fault */
|
||||
#define MDIO_PMA_LASI_TX_LASERPOWERFLT 0x0080 /* Laser output power fault */
|
||||
#define MDIO_PMA_LASI_TX_LASERTEMPFLT 0x0100 /* Laser temperature fault */
|
||||
#define MDIO_PMA_LASI_TX_LASERBICURRFLT 0x0200 /* Laser bias current fault */
|
||||
|
||||
/* LASI control/status registers. */
|
||||
#define MDIO_PMA_LASI_LSALARM 0x0001 /* LS_ALARM enable/status */
|
||||
#define MDIO_PMA_LASI_TXALARM 0x0002 /* TX_ALARM enable/status */
|
||||
#define MDIO_PMA_LASI_RXALARM 0x0004 /* RX_ALARM enable/status */
|
||||
|
||||
/* Mapping between MDIO PRTAD/DEVAD and mii_ioctl_data::phy_id */
|
||||
|
||||
#define MDIO_PHY_ID_C45 0x8000
|
||||
#define MDIO_PHY_ID_PRTAD 0x03e0
|
||||
#define MDIO_PHY_ID_DEVAD 0x001f
|
||||
#define MDIO_PHY_ID_C45_MASK \
|
||||
(MDIO_PHY_ID_C45 | MDIO_PHY_ID_PRTAD | MDIO_PHY_ID_DEVAD)
|
||||
|
||||
static inline __u16 mdio_phy_id_c45(int prtad, int devad)
|
||||
{
|
||||
return MDIO_PHY_ID_C45 | (prtad << 5) | devad;
|
||||
}
|
||||
|
||||
static inline bool mdio_phy_id_is_c45(int phy_id)
|
||||
{
|
||||
return (phy_id & MDIO_PHY_ID_C45) && !(phy_id & ~MDIO_PHY_ID_C45_MASK);
|
||||
}
|
||||
|
||||
static inline __u16 mdio_phy_id_prtad(int phy_id)
|
||||
{
|
||||
return (phy_id & MDIO_PHY_ID_PRTAD) >> 5;
|
||||
}
|
||||
|
||||
static inline __u16 mdio_phy_id_devad(int phy_id)
|
||||
{
|
||||
return phy_id & MDIO_PHY_ID_DEVAD;
|
||||
}
|
||||
|
||||
#define MDIO_SUPPORTS_C22 1
|
||||
#define MDIO_SUPPORTS_C45 2
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/**
|
||||
* struct mdio_if_info - Ethernet controller MDIO interface
|
||||
* @prtad: PRTAD of the PHY (%MDIO_PRTAD_NONE if not present/unknown)
|
||||
* @mmds: Mask of MMDs expected to be present in the PHY. This must be
|
||||
* non-zero unless @prtad = %MDIO_PRTAD_NONE.
|
||||
* @mode_support: MDIO modes supported. If %MDIO_SUPPORTS_C22 is set then
|
||||
* MII register access will be passed through with @devad =
|
||||
* %MDIO_DEVAD_NONE. If %MDIO_EMULATE_C22 is set then access to
|
||||
* commonly used clause 22 registers will be translated into
|
||||
* clause 45 registers.
|
||||
* @dev: Net device structure
|
||||
* @mdio_read: Register read function; returns value or negative error code
|
||||
* @mdio_write: Register write function; returns 0 or negative error code
|
||||
*/
|
||||
struct mdio_if_info {
|
||||
int prtad;
|
||||
u32 __bitwise mmds;
|
||||
unsigned mode_support;
|
||||
|
||||
struct net_device *dev;
|
||||
int (*mdio_read)(struct net_device *dev, int prtad, int devad,
|
||||
u16 addr);
|
||||
int (*mdio_write)(struct net_device *dev, int prtad, int devad,
|
||||
u16 addr, u16 val);
|
||||
};
|
||||
|
||||
#define MDIO_PRTAD_NONE (-1)
|
||||
#define MDIO_DEVAD_NONE (-1)
|
||||
#define MDIO_EMULATE_C22 4
|
||||
|
||||
struct ethtool_cmd;
|
||||
struct ethtool_pauseparam;
|
||||
extern int mdio45_probe(struct mdio_if_info *mdio, int prtad);
|
||||
extern int mdio_set_flag(const struct mdio_if_info *mdio,
|
||||
int prtad, int devad, u16 addr, int mask,
|
||||
bool sense);
|
||||
extern int mdio45_links_ok(const struct mdio_if_info *mdio, u32 mmds);
|
||||
extern int mdio45_nway_restart(const struct mdio_if_info *mdio);
|
||||
extern void mdio45_ethtool_gset_npage(const struct mdio_if_info *mdio,
|
||||
struct ethtool_cmd *ecmd,
|
||||
u32 npage_adv, u32 npage_lpa);
|
||||
extern void
|
||||
mdio45_ethtool_spauseparam_an(const struct mdio_if_info *mdio,
|
||||
const struct ethtool_pauseparam *ecmd);
|
||||
|
||||
/**
|
||||
* mdio45_ethtool_gset - get settings for ETHTOOL_GSET
|
||||
* @mdio: MDIO interface
|
||||
* @ecmd: Ethtool request structure
|
||||
*
|
||||
* Since the CSRs for auto-negotiation using next pages are not fully
|
||||
* standardised, this function does not attempt to decode them. Use
|
||||
* mdio45_ethtool_gset_npage() to specify advertisement bits from next
|
||||
* pages.
|
||||
*/
|
||||
static inline void mdio45_ethtool_gset(const struct mdio_if_info *mdio,
|
||||
struct ethtool_cmd *ecmd)
|
||||
{
|
||||
mdio45_ethtool_gset_npage(mdio, ecmd, 0, 0);
|
||||
}
|
||||
|
||||
extern int mdio_mii_ioctl(const struct mdio_if_info *mdio,
|
||||
struct mii_ioctl_data *mii_data, int cmd);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* __LINUX_MDIO_H__ */
|
@@ -239,6 +239,22 @@ static inline unsigned int mii_duplex (unsigned int duplex_lock,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* mii_advertise_flowctrl - get flow control advertisement flags
|
||||
* @cap: Flow control capabilities (FLOW_CTRL_RX, FLOW_CTRL_TX or both)
|
||||
*/
|
||||
static inline u16 mii_advertise_flowctrl(int cap)
|
||||
{
|
||||
u16 adv = 0;
|
||||
|
||||
if (cap & FLOW_CTRL_RX)
|
||||
adv = ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM;
|
||||
if (cap & FLOW_CTRL_TX)
|
||||
adv ^= ADVERTISE_PAUSE_ASYM;
|
||||
|
||||
return adv;
|
||||
}
|
||||
|
||||
/**
|
||||
* mii_resolve_flowctrl_fdx
|
||||
* @lcladv: value of MII ADVERTISE register
|
||||
@@ -250,18 +266,12 @@ static inline u8 mii_resolve_flowctrl_fdx(u16 lcladv, u16 rmtadv)
|
||||
{
|
||||
u8 cap = 0;
|
||||
|
||||
if (lcladv & ADVERTISE_PAUSE_CAP) {
|
||||
if (lcladv & ADVERTISE_PAUSE_ASYM) {
|
||||
if (rmtadv & LPA_PAUSE_CAP)
|
||||
cap = FLOW_CTRL_TX | FLOW_CTRL_RX;
|
||||
else if (rmtadv & LPA_PAUSE_ASYM)
|
||||
cap = FLOW_CTRL_RX;
|
||||
} else {
|
||||
if (rmtadv & LPA_PAUSE_CAP)
|
||||
cap = FLOW_CTRL_TX | FLOW_CTRL_RX;
|
||||
}
|
||||
} else if (lcladv & ADVERTISE_PAUSE_ASYM) {
|
||||
if ((rmtadv & LPA_PAUSE_CAP) && (rmtadv & LPA_PAUSE_ASYM))
|
||||
if (lcladv & rmtadv & ADVERTISE_PAUSE_CAP) {
|
||||
cap = FLOW_CTRL_TX | FLOW_CTRL_RX;
|
||||
} else if (lcladv & rmtadv & ADVERTISE_PAUSE_ASYM) {
|
||||
if (lcladv & ADVERTISE_PAUSE_CAP)
|
||||
cap = FLOW_CTRL_RX;
|
||||
else if (rmtadv & ADVERTISE_PAUSE_CAP)
|
||||
cap = FLOW_CTRL_TX;
|
||||
}
|
||||
|
||||
|
@@ -25,5 +25,7 @@
|
||||
|
||||
#define SDIO_VENDOR_ID_MARVELL 0x02df
|
||||
#define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103
|
||||
#define SDIO_DEVICE_ID_MARVELL_8688WLAN 0x9104
|
||||
#define SDIO_DEVICE_ID_MARVELL_8688BT 0x9105
|
||||
|
||||
#endif
|
||||
|
@@ -3,12 +3,20 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/netlink.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
struct net_dm_drop_point {
|
||||
__u8 pc[8];
|
||||
__u32 count;
|
||||
};
|
||||
|
||||
#define is_drop_point_hw(x) do {\
|
||||
int ____i, ____j;\
|
||||
for (____i = 0; ____i < 8; i ____i++)\
|
||||
____j |= x[____i];\
|
||||
____j;\
|
||||
} while (0)
|
||||
|
||||
#define NET_DM_CFG_VERSION 0
|
||||
#define NET_DM_CFG_ALERT_COUNT 1
|
||||
#define NET_DM_CFG_ALERT_DELAY 2
|
||||
|
@@ -39,9 +39,11 @@
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/percpu.h>
|
||||
#include <linux/rculist.h>
|
||||
#include <linux/dmaengine.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
#include <linux/ethtool.h>
|
||||
#include <net/net_namespace.h>
|
||||
#include <net/dsa.h>
|
||||
#ifdef CONFIG_DCB
|
||||
@@ -49,7 +51,6 @@
|
||||
#endif
|
||||
|
||||
struct vlan_group;
|
||||
struct ethtool_ops;
|
||||
struct netpoll_info;
|
||||
/* 802.11 specific */
|
||||
struct wireless_dev;
|
||||
@@ -210,6 +211,19 @@ struct dev_addr_list
|
||||
#define dmi_users da_users
|
||||
#define dmi_gusers da_gusers
|
||||
|
||||
struct netdev_hw_addr {
|
||||
struct list_head list;
|
||||
unsigned char addr[MAX_ADDR_LEN];
|
||||
unsigned char type;
|
||||
#define NETDEV_HW_ADDR_T_LAN 1
|
||||
#define NETDEV_HW_ADDR_T_SAN 2
|
||||
#define NETDEV_HW_ADDR_T_SLAVE 3
|
||||
#define NETDEV_HW_ADDR_T_UNICAST 4
|
||||
int refcount;
|
||||
bool synced;
|
||||
struct rcu_head rcu_head;
|
||||
};
|
||||
|
||||
struct hh_cache
|
||||
{
|
||||
struct hh_cache *hh_next; /* Next entry */
|
||||
@@ -447,12 +461,25 @@ enum netdev_queue_state_t
|
||||
};
|
||||
|
||||
struct netdev_queue {
|
||||
/*
|
||||
* read mostly part
|
||||
*/
|
||||
struct net_device *dev;
|
||||
struct Qdisc *qdisc;
|
||||
unsigned long state;
|
||||
spinlock_t _xmit_lock;
|
||||
int xmit_lock_owner;
|
||||
struct Qdisc *qdisc_sleeping;
|
||||
/*
|
||||
* write mostly part
|
||||
*/
|
||||
spinlock_t _xmit_lock ____cacheline_aligned_in_smp;
|
||||
int xmit_lock_owner;
|
||||
/*
|
||||
* please use this field instead of dev->trans_start
|
||||
*/
|
||||
unsigned long trans_start;
|
||||
unsigned long tx_bytes;
|
||||
unsigned long tx_packets;
|
||||
unsigned long tx_dropped;
|
||||
} ____cacheline_aligned_in_smp;
|
||||
|
||||
|
||||
@@ -670,7 +697,9 @@ struct net_device
|
||||
#define NETIF_F_GRO 16384 /* Generic receive offload */
|
||||
#define NETIF_F_LRO 32768 /* large receive offload */
|
||||
|
||||
/* the GSO_MASK reserves bits 16 through 23 */
|
||||
#define NETIF_F_FCOE_CRC (1 << 24) /* FCoE CRC32 */
|
||||
#define NETIF_F_SCTP_CSUM (1 << 25) /* SCTP checksum offload */
|
||||
|
||||
/* Segmentation offload features */
|
||||
#define NETIF_F_GSO_SHIFT 16
|
||||
@@ -747,10 +776,11 @@ struct net_device
|
||||
unsigned char addr_len; /* hardware address length */
|
||||
unsigned short dev_id; /* for shared network cards */
|
||||
|
||||
spinlock_t addr_list_lock;
|
||||
struct dev_addr_list *uc_list; /* Secondary unicast mac addresses */
|
||||
struct list_head uc_list; /* Secondary unicast mac
|
||||
addresses */
|
||||
int uc_count; /* Number of installed ucasts */
|
||||
int uc_promisc;
|
||||
spinlock_t addr_list_lock;
|
||||
struct dev_addr_list *mc_list; /* Multicast mac addresses */
|
||||
int mc_count; /* Number of installed mcasts */
|
||||
unsigned int promiscuity;
|
||||
@@ -776,8 +806,11 @@ struct net_device
|
||||
*/
|
||||
unsigned long last_rx; /* Time of last Rx */
|
||||
/* Interface address info used in eth_type_trans() */
|
||||
unsigned char dev_addr[MAX_ADDR_LEN]; /* hw address, (before bcast
|
||||
because most packets are unicast) */
|
||||
unsigned char *dev_addr; /* hw address, (before bcast
|
||||
because most packets are
|
||||
unicast) */
|
||||
|
||||
struct list_head dev_addr_list; /* list of device hw addresses */
|
||||
|
||||
unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */
|
||||
|
||||
@@ -797,6 +830,11 @@ struct net_device
|
||||
* One part is mostly used on xmit path (device)
|
||||
*/
|
||||
/* These may be needed for future network-power-down code. */
|
||||
|
||||
/*
|
||||
* trans_start here is expensive for high speed devices on SMP,
|
||||
* please use netdev_queue->trans_start instead.
|
||||
*/
|
||||
unsigned long trans_start; /* Time (in jiffies) of last Tx */
|
||||
|
||||
int watchdog_timeo; /* used by dev_watchdog() */
|
||||
@@ -867,49 +905,10 @@ struct net_device
|
||||
/* max exchange id for FCoE LRO by ddp */
|
||||
unsigned int fcoe_ddp_xid;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_COMPAT_NET_DEV_OPS
|
||||
struct {
|
||||
int (*init)(struct net_device *dev);
|
||||
void (*uninit)(struct net_device *dev);
|
||||
int (*open)(struct net_device *dev);
|
||||
int (*stop)(struct net_device *dev);
|
||||
int (*hard_start_xmit) (struct sk_buff *skb,
|
||||
struct net_device *dev);
|
||||
u16 (*select_queue)(struct net_device *dev,
|
||||
struct sk_buff *skb);
|
||||
void (*change_rx_flags)(struct net_device *dev,
|
||||
int flags);
|
||||
void (*set_rx_mode)(struct net_device *dev);
|
||||
void (*set_multicast_list)(struct net_device *dev);
|
||||
int (*set_mac_address)(struct net_device *dev,
|
||||
void *addr);
|
||||
int (*validate_addr)(struct net_device *dev);
|
||||
int (*do_ioctl)(struct net_device *dev,
|
||||
struct ifreq *ifr, int cmd);
|
||||
int (*set_config)(struct net_device *dev,
|
||||
struct ifmap *map);
|
||||
int (*change_mtu)(struct net_device *dev, int new_mtu);
|
||||
int (*neigh_setup)(struct net_device *dev,
|
||||
struct neigh_parms *);
|
||||
void (*tx_timeout) (struct net_device *dev);
|
||||
struct net_device_stats* (*get_stats)(struct net_device *dev);
|
||||
void (*vlan_rx_register)(struct net_device *dev,
|
||||
struct vlan_group *grp);
|
||||
void (*vlan_rx_add_vid)(struct net_device *dev,
|
||||
unsigned short vid);
|
||||
void (*vlan_rx_kill_vid)(struct net_device *dev,
|
||||
unsigned short vid);
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
void (*poll_controller)(struct net_device *dev);
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
};
|
||||
#define to_net_dev(d) container_of(d, struct net_device, dev)
|
||||
|
||||
#define NETDEV_ALIGN 32
|
||||
#define NETDEV_ALIGN_CONST (NETDEV_ALIGN - 1)
|
||||
|
||||
static inline
|
||||
struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev,
|
||||
@@ -980,9 +979,7 @@ static inline bool netdev_uses_trailer_tags(struct net_device *dev)
|
||||
*/
|
||||
static inline void *netdev_priv(const struct net_device *dev)
|
||||
{
|
||||
return (char *)dev + ((sizeof(struct net_device)
|
||||
+ NETDEV_ALIGN_CONST)
|
||||
& ~NETDEV_ALIGN_CONST);
|
||||
return (char *)dev + ALIGN(sizeof(struct net_device), NETDEV_ALIGN);
|
||||
}
|
||||
|
||||
/* Set the sysfs physical device reference for the network logical device
|
||||
@@ -1012,6 +1009,12 @@ void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
|
||||
void netif_napi_del(struct napi_struct *napi);
|
||||
|
||||
struct napi_gro_cb {
|
||||
/* Virtual address of skb_shinfo(skb)->frags[0].page + offset. */
|
||||
void *frag0;
|
||||
|
||||
/* Length of frag0. */
|
||||
unsigned int frag0_len;
|
||||
|
||||
/* This indicates where we are processing relative to skb->data. */
|
||||
int data_offset;
|
||||
|
||||
@@ -1047,14 +1050,6 @@ struct packet_type {
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
struct napi_gro_fraginfo {
|
||||
skb_frag_t frags[MAX_SKB_FRAGS];
|
||||
unsigned int nr_frags;
|
||||
unsigned int ip_summed;
|
||||
unsigned int len;
|
||||
__wsum csum;
|
||||
};
|
||||
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/notifier.h>
|
||||
|
||||
@@ -1119,9 +1114,9 @@ extern int dev_restart(struct net_device *dev);
|
||||
#ifdef CONFIG_NETPOLL_TRAP
|
||||
extern int netpoll_trap(void);
|
||||
#endif
|
||||
extern void *skb_gro_header(struct sk_buff *skb, unsigned int hlen);
|
||||
extern int skb_gro_receive(struct sk_buff **head,
|
||||
struct sk_buff *skb);
|
||||
extern void skb_gro_reset_offset(struct sk_buff *skb);
|
||||
|
||||
static inline unsigned int skb_gro_offset(const struct sk_buff *skb)
|
||||
{
|
||||
@@ -1138,16 +1133,34 @@ static inline void skb_gro_pull(struct sk_buff *skb, unsigned int len)
|
||||
NAPI_GRO_CB(skb)->data_offset += len;
|
||||
}
|
||||
|
||||
static inline void skb_gro_reset_offset(struct sk_buff *skb)
|
||||
static inline void *skb_gro_header_fast(struct sk_buff *skb,
|
||||
unsigned int offset)
|
||||
{
|
||||
NAPI_GRO_CB(skb)->data_offset = 0;
|
||||
return NAPI_GRO_CB(skb)->frag0 + offset;
|
||||
}
|
||||
|
||||
static inline int skb_gro_header_hard(struct sk_buff *skb, unsigned int hlen)
|
||||
{
|
||||
return NAPI_GRO_CB(skb)->frag0_len < hlen;
|
||||
}
|
||||
|
||||
static inline void *skb_gro_header_slow(struct sk_buff *skb, unsigned int hlen,
|
||||
unsigned int offset)
|
||||
{
|
||||
NAPI_GRO_CB(skb)->frag0 = NULL;
|
||||
NAPI_GRO_CB(skb)->frag0_len = 0;
|
||||
return pskb_may_pull(skb, hlen) ? skb->data + offset : NULL;
|
||||
}
|
||||
|
||||
static inline void *skb_gro_mac_header(struct sk_buff *skb)
|
||||
{
|
||||
return skb_mac_header(skb) < skb->data ? skb_mac_header(skb) :
|
||||
page_address(skb_shinfo(skb)->frags[0].page) +
|
||||
skb_shinfo(skb)->frags[0].page_offset;
|
||||
return NAPI_GRO_CB(skb)->frag0 ?: skb_mac_header(skb);
|
||||
}
|
||||
|
||||
static inline void *skb_gro_network_header(struct sk_buff *skb)
|
||||
{
|
||||
return (NAPI_GRO_CB(skb)->frag0 ?: skb->data) +
|
||||
skb_network_offset(skb);
|
||||
}
|
||||
|
||||
static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
|
||||
@@ -1442,12 +1455,18 @@ extern int napi_gro_receive(struct napi_struct *napi,
|
||||
struct sk_buff *skb);
|
||||
extern void napi_reuse_skb(struct napi_struct *napi,
|
||||
struct sk_buff *skb);
|
||||
extern struct sk_buff * napi_fraginfo_skb(struct napi_struct *napi,
|
||||
struct napi_gro_fraginfo *info);
|
||||
extern struct sk_buff * napi_get_frags(struct napi_struct *napi);
|
||||
extern int napi_frags_finish(struct napi_struct *napi,
|
||||
struct sk_buff *skb, int ret);
|
||||
extern int napi_gro_frags(struct napi_struct *napi,
|
||||
struct napi_gro_fraginfo *info);
|
||||
extern struct sk_buff * napi_frags_skb(struct napi_struct *napi);
|
||||
extern int napi_gro_frags(struct napi_struct *napi);
|
||||
|
||||
static inline void napi_free_frags(struct napi_struct *napi)
|
||||
{
|
||||
kfree_skb(napi->skb);
|
||||
napi->skb = NULL;
|
||||
}
|
||||
|
||||
extern void netif_nit_deliver(struct sk_buff *skb);
|
||||
extern int dev_valid_name(const char *name);
|
||||
extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *);
|
||||
@@ -1514,6 +1533,8 @@ static inline int netif_carrier_ok(const struct net_device *dev)
|
||||
return !test_bit(__LINK_STATE_NOCARRIER, &dev->state);
|
||||
}
|
||||
|
||||
extern unsigned long dev_trans_start(struct net_device *dev);
|
||||
|
||||
extern void __netdev_watchdog_up(struct net_device *dev);
|
||||
|
||||
extern void netif_carrier_on(struct net_device *dev);
|
||||
@@ -1671,6 +1692,12 @@ static inline void __netif_tx_unlock_bh(struct netdev_queue *txq)
|
||||
spin_unlock_bh(&txq->_xmit_lock);
|
||||
}
|
||||
|
||||
static inline void txq_trans_update(struct netdev_queue *txq)
|
||||
{
|
||||
if (txq->xmit_lock_owner != -1)
|
||||
txq->trans_start = jiffies;
|
||||
}
|
||||
|
||||
/**
|
||||
* netif_tx_lock - grab network device transmit lock
|
||||
* @dev: network device
|
||||
@@ -1778,6 +1805,13 @@ static inline void netif_addr_unlock_bh(struct net_device *dev)
|
||||
spin_unlock_bh(&dev->addr_list_lock);
|
||||
}
|
||||
|
||||
/*
|
||||
* dev_addr_list walker. Should be used only for read access. Call with
|
||||
* rcu_read_lock held.
|
||||
*/
|
||||
#define for_each_dev_addr(dev, ha) \
|
||||
list_for_each_entry_rcu(ha, &dev->dev_addr_list, list)
|
||||
|
||||
/* These functions live elsewhere (drivers/net/net_init.c, but related) */
|
||||
|
||||
extern void ether_setup(struct net_device *dev);
|
||||
@@ -1790,11 +1824,24 @@ extern struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
|
||||
alloc_netdev_mq(sizeof_priv, name, setup, 1)
|
||||
extern int register_netdev(struct net_device *dev);
|
||||
extern void unregister_netdev(struct net_device *dev);
|
||||
|
||||
/* Functions used for device addresses handling */
|
||||
extern int dev_addr_add(struct net_device *dev, unsigned char *addr,
|
||||
unsigned char addr_type);
|
||||
extern int dev_addr_del(struct net_device *dev, unsigned char *addr,
|
||||
unsigned char addr_type);
|
||||
extern int dev_addr_add_multiple(struct net_device *to_dev,
|
||||
struct net_device *from_dev,
|
||||
unsigned char addr_type);
|
||||
extern int dev_addr_del_multiple(struct net_device *to_dev,
|
||||
struct net_device *from_dev,
|
||||
unsigned char addr_type);
|
||||
|
||||
/* 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, int alen);
|
||||
extern int dev_unicast_add(struct net_device *dev, void *addr, int alen);
|
||||
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);
|
||||
@@ -1856,15 +1903,14 @@ static inline int net_gso_ok(int features, int gso_type)
|
||||
|
||||
static inline int skb_gso_ok(struct sk_buff *skb, int features)
|
||||
{
|
||||
return net_gso_ok(features, skb_shinfo(skb)->gso_type);
|
||||
return net_gso_ok(features, skb_shinfo(skb)->gso_type) &&
|
||||
(!skb_has_frags(skb) || (features & NETIF_F_FRAGLIST));
|
||||
}
|
||||
|
||||
static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb)
|
||||
{
|
||||
return skb_is_gso(skb) &&
|
||||
(!skb_gso_ok(skb, dev->features) ||
|
||||
(skb_shinfo(skb)->frag_list &&
|
||||
!(dev->features & NETIF_F_FRAGLIST)) ||
|
||||
unlikely(skb->ip_summed != CHECKSUM_PARTIAL));
|
||||
}
|
||||
|
||||
@@ -1874,6 +1920,16 @@ 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;
|
||||
|
||||
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.
|
||||
@@ -1887,6 +1943,14 @@ static inline int skb_bond_should_drop(struct sk_buff *skb)
|
||||
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))
|
||||
@@ -1908,6 +1972,28 @@ static inline int skb_bond_should_drop(struct sk_buff *skb)
|
||||
}
|
||||
|
||||
extern struct pernet_operations __net_initdata loopback_net_ops;
|
||||
|
||||
static inline int dev_ethtool_get_settings(struct net_device *dev,
|
||||
struct ethtool_cmd *cmd)
|
||||
{
|
||||
if (!dev->ethtool_ops || !dev->ethtool_ops->get_settings)
|
||||
return -EOPNOTSUPP;
|
||||
return dev->ethtool_ops->get_settings(dev, cmd);
|
||||
}
|
||||
|
||||
static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev)
|
||||
{
|
||||
if (!dev->ethtool_ops || !dev->ethtool_ops->get_rx_csum)
|
||||
return 0;
|
||||
return dev->ethtool_ops->get_rx_csum(dev);
|
||||
}
|
||||
|
||||
static inline u32 dev_ethtool_get_flags(struct net_device *dev)
|
||||
{
|
||||
if (!dev->ethtool_ops || !dev->ethtool_ops->get_flags)
|
||||
return 0;
|
||||
return dev->ethtool_ops->get_flags(dev);
|
||||
}
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _LINUX_DEV_H */
|
||||
#endif /* _LINUX_NETDEVICE_H */
|
||||
|
@@ -33,6 +33,7 @@ header-y += xt_limit.h
|
||||
header-y += xt_mac.h
|
||||
header-y += xt_mark.h
|
||||
header-y += xt_multiport.h
|
||||
header-y += xt_osf.h
|
||||
header-y += xt_owner.h
|
||||
header-y += xt_pkttype.h
|
||||
header-y += xt_quota.h
|
||||
|
@@ -75,75 +75,6 @@ enum ip_conntrack_status {
|
||||
IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT),
|
||||
};
|
||||
|
||||
/* Connection tracking event bits */
|
||||
enum ip_conntrack_events
|
||||
{
|
||||
/* New conntrack */
|
||||
IPCT_NEW_BIT = 0,
|
||||
IPCT_NEW = (1 << IPCT_NEW_BIT),
|
||||
|
||||
/* Expected connection */
|
||||
IPCT_RELATED_BIT = 1,
|
||||
IPCT_RELATED = (1 << IPCT_RELATED_BIT),
|
||||
|
||||
/* Destroyed conntrack */
|
||||
IPCT_DESTROY_BIT = 2,
|
||||
IPCT_DESTROY = (1 << IPCT_DESTROY_BIT),
|
||||
|
||||
/* Timer has been refreshed */
|
||||
IPCT_REFRESH_BIT = 3,
|
||||
IPCT_REFRESH = (1 << IPCT_REFRESH_BIT),
|
||||
|
||||
/* Status has changed */
|
||||
IPCT_STATUS_BIT = 4,
|
||||
IPCT_STATUS = (1 << IPCT_STATUS_BIT),
|
||||
|
||||
/* Update of protocol info */
|
||||
IPCT_PROTOINFO_BIT = 5,
|
||||
IPCT_PROTOINFO = (1 << IPCT_PROTOINFO_BIT),
|
||||
|
||||
/* Volatile protocol info */
|
||||
IPCT_PROTOINFO_VOLATILE_BIT = 6,
|
||||
IPCT_PROTOINFO_VOLATILE = (1 << IPCT_PROTOINFO_VOLATILE_BIT),
|
||||
|
||||
/* New helper for conntrack */
|
||||
IPCT_HELPER_BIT = 7,
|
||||
IPCT_HELPER = (1 << IPCT_HELPER_BIT),
|
||||
|
||||
/* Update of helper info */
|
||||
IPCT_HELPINFO_BIT = 8,
|
||||
IPCT_HELPINFO = (1 << IPCT_HELPINFO_BIT),
|
||||
|
||||
/* Volatile helper info */
|
||||
IPCT_HELPINFO_VOLATILE_BIT = 9,
|
||||
IPCT_HELPINFO_VOLATILE = (1 << IPCT_HELPINFO_VOLATILE_BIT),
|
||||
|
||||
/* NAT info */
|
||||
IPCT_NATINFO_BIT = 10,
|
||||
IPCT_NATINFO = (1 << IPCT_NATINFO_BIT),
|
||||
|
||||
/* Counter highest bit has been set, unused */
|
||||
IPCT_COUNTER_FILLING_BIT = 11,
|
||||
IPCT_COUNTER_FILLING = (1 << IPCT_COUNTER_FILLING_BIT),
|
||||
|
||||
/* Mark is set */
|
||||
IPCT_MARK_BIT = 12,
|
||||
IPCT_MARK = (1 << IPCT_MARK_BIT),
|
||||
|
||||
/* NAT sequence adjustment */
|
||||
IPCT_NATSEQADJ_BIT = 13,
|
||||
IPCT_NATSEQADJ = (1 << IPCT_NATSEQADJ_BIT),
|
||||
|
||||
/* Secmark is set */
|
||||
IPCT_SECMARK_BIT = 14,
|
||||
IPCT_SECMARK = (1 << IPCT_SECMARK_BIT),
|
||||
};
|
||||
|
||||
enum ip_conntrack_expect_events {
|
||||
IPEXP_NEW_BIT = 0,
|
||||
IPEXP_NEW = (1 << IPEXP_NEW_BIT),
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct ip_conntrack_stat
|
||||
{
|
||||
|
@@ -15,7 +15,8 @@ enum tcp_conntrack {
|
||||
TCP_CONNTRACK_LAST_ACK,
|
||||
TCP_CONNTRACK_TIME_WAIT,
|
||||
TCP_CONNTRACK_CLOSE,
|
||||
TCP_CONNTRACK_LISTEN,
|
||||
TCP_CONNTRACK_LISTEN, /* obsolete */
|
||||
#define TCP_CONNTRACK_SYN_SENT2 TCP_CONNTRACK_LISTEN
|
||||
TCP_CONNTRACK_MAX,
|
||||
TCP_CONNTRACK_IGNORE
|
||||
};
|
||||
|
@@ -46,7 +46,8 @@ struct nfgenmsg {
|
||||
#define NFNL_SUBSYS_CTNETLINK_EXP 2
|
||||
#define NFNL_SUBSYS_QUEUE 3
|
||||
#define NFNL_SUBSYS_ULOG 4
|
||||
#define NFNL_SUBSYS_COUNT 5
|
||||
#define NFNL_SUBSYS_OSF 5
|
||||
#define NFNL_SUBSYS_COUNT 6
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
@@ -75,7 +76,7 @@ extern int nfnetlink_subsys_unregister(const struct nfnetlink_subsystem *n);
|
||||
|
||||
extern int nfnetlink_has_listeners(unsigned int group);
|
||||
extern int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group,
|
||||
int echo);
|
||||
int echo, gfp_t flags);
|
||||
extern void nfnetlink_set_err(u32 pid, u32 group, int error);
|
||||
extern int nfnetlink_unicast(struct sk_buff *skb, u_int32_t pid, int flags);
|
||||
|
||||
|
@@ -101,6 +101,7 @@ enum ctattr_protoinfo_dccp {
|
||||
CTA_PROTOINFO_DCCP_UNSPEC,
|
||||
CTA_PROTOINFO_DCCP_STATE,
|
||||
CTA_PROTOINFO_DCCP_ROLE,
|
||||
CTA_PROTOINFO_DCCP_HANDSHAKE_SEQ,
|
||||
__CTA_PROTOINFO_DCCP_MAX,
|
||||
};
|
||||
#define CTA_PROTOINFO_DCCP_MAX (__CTA_PROTOINFO_DCCP_MAX - 1)
|
||||
|
@@ -184,9 +184,10 @@ struct xt_counters_info
|
||||
* @matchinfo: per-match data
|
||||
* @fragoff: packet is a fragment, this is the data offset
|
||||
* @thoff: position of transport header relative to skb->data
|
||||
* @hotdrop: drop packet if we had inspection problems
|
||||
* @hook: hook number given packet came from
|
||||
* @family: Actual NFPROTO_* through which the function is invoked
|
||||
* (helpful when match->family == NFPROTO_UNSPEC)
|
||||
* @hotdrop: drop packet if we had inspection problems
|
||||
*/
|
||||
struct xt_match_param {
|
||||
const struct net_device *in, *out;
|
||||
@@ -194,8 +195,9 @@ struct xt_match_param {
|
||||
const void *matchinfo;
|
||||
int fragoff;
|
||||
unsigned int thoff;
|
||||
bool *hotdrop;
|
||||
unsigned int hooknum;
|
||||
u_int8_t family;
|
||||
bool *hotdrop;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -15,4 +15,9 @@ struct xt_NFQ_info {
|
||||
__u16 queuenum;
|
||||
};
|
||||
|
||||
struct xt_NFQ_info_v1 {
|
||||
__u16 queuenum;
|
||||
__u16 queues_total;
|
||||
};
|
||||
|
||||
#endif /* _XT_NFQ_TARGET_H */
|
||||
|
133
include/linux/netfilter/xt_osf.h
Normal file
133
include/linux/netfilter/xt_osf.h
Normal file
@@ -0,0 +1,133 @@
|
||||
/*
|
||||
* Copyright (c) 2003+ Evgeniy Polyakov <johnpol@2ka.mxt.ru>
|
||||
*
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef _XT_OSF_H
|
||||
#define _XT_OSF_H
|
||||
|
||||
#define MAXGENRELEN 32
|
||||
|
||||
#define XT_OSF_GENRE (1<<0)
|
||||
#define XT_OSF_TTL (1<<1)
|
||||
#define XT_OSF_LOG (1<<2)
|
||||
#define XT_OSF_INVERT (1<<3)
|
||||
|
||||
#define XT_OSF_LOGLEVEL_ALL 0 /* log all matched fingerprints */
|
||||
#define XT_OSF_LOGLEVEL_FIRST 1 /* log only the first matced fingerprint */
|
||||
#define XT_OSF_LOGLEVEL_ALL_KNOWN 2 /* do not log unknown packets */
|
||||
|
||||
#define XT_OSF_TTL_TRUE 0 /* True ip and fingerprint TTL comparison */
|
||||
#define XT_OSF_TTL_LESS 1 /* Check if ip TTL is less than fingerprint one */
|
||||
#define XT_OSF_TTL_NOCHECK 2 /* Do not compare ip and fingerprint TTL at all */
|
||||
|
||||
struct xt_osf_info {
|
||||
char genre[MAXGENRELEN];
|
||||
__u32 len;
|
||||
__u32 flags;
|
||||
__u32 loglevel;
|
||||
__u32 ttl;
|
||||
};
|
||||
|
||||
/*
|
||||
* Wildcard MSS (kind of).
|
||||
* It is used to implement a state machine for the different wildcard values
|
||||
* of the MSS and window sizes.
|
||||
*/
|
||||
struct xt_osf_wc {
|
||||
__u32 wc;
|
||||
__u32 val;
|
||||
};
|
||||
|
||||
/*
|
||||
* This struct represents IANA options
|
||||
* http://www.iana.org/assignments/tcp-parameters
|
||||
*/
|
||||
struct xt_osf_opt {
|
||||
__u16 kind, length;
|
||||
struct xt_osf_wc wc;
|
||||
};
|
||||
|
||||
struct xt_osf_user_finger {
|
||||
struct xt_osf_wc wss;
|
||||
|
||||
__u8 ttl, df;
|
||||
__u16 ss, mss;
|
||||
__u16 opt_num;
|
||||
|
||||
char genre[MAXGENRELEN];
|
||||
char version[MAXGENRELEN];
|
||||
char subtype[MAXGENRELEN];
|
||||
|
||||
/* MAX_IPOPTLEN is maximum if all options are NOPs or EOLs */
|
||||
struct xt_osf_opt opt[MAX_IPOPTLEN];
|
||||
};
|
||||
|
||||
struct xt_osf_nlmsg {
|
||||
struct xt_osf_user_finger f;
|
||||
struct iphdr ip;
|
||||
struct tcphdr tcp;
|
||||
};
|
||||
|
||||
/* Defines for IANA option kinds */
|
||||
|
||||
enum iana_options {
|
||||
OSFOPT_EOL = 0, /* End of options */
|
||||
OSFOPT_NOP, /* NOP */
|
||||
OSFOPT_MSS, /* Maximum segment size */
|
||||
OSFOPT_WSO, /* Window scale option */
|
||||
OSFOPT_SACKP, /* SACK permitted */
|
||||
OSFOPT_SACK, /* SACK */
|
||||
OSFOPT_ECHO,
|
||||
OSFOPT_ECHOREPLY,
|
||||
OSFOPT_TS, /* Timestamp option */
|
||||
OSFOPT_POCP, /* Partial Order Connection Permitted */
|
||||
OSFOPT_POSP, /* Partial Order Service Profile */
|
||||
|
||||
/* Others are not used in the current OSF */
|
||||
OSFOPT_EMPTY = 255,
|
||||
};
|
||||
|
||||
/*
|
||||
* Initial window size option state machine: multiple of mss, mtu or
|
||||
* plain numeric value. Can also be made as plain numeric value which
|
||||
* is not a multiple of specified value.
|
||||
*/
|
||||
enum xt_osf_window_size_options {
|
||||
OSF_WSS_PLAIN = 0,
|
||||
OSF_WSS_MSS,
|
||||
OSF_WSS_MTU,
|
||||
OSF_WSS_MODULO,
|
||||
OSF_WSS_MAX,
|
||||
};
|
||||
|
||||
/*
|
||||
* Add/remove fingerprint from the kernel.
|
||||
*/
|
||||
enum xt_osf_msg_types {
|
||||
OSF_MSG_ADD,
|
||||
OSF_MSG_REMOVE,
|
||||
OSF_MSG_MAX,
|
||||
};
|
||||
|
||||
enum xt_osf_attr_type {
|
||||
OSF_ATTR_UNSPEC,
|
||||
OSF_ATTR_FINGER,
|
||||
OSF_ATTR_MAX,
|
||||
};
|
||||
|
||||
#endif /* _XT_OSF_H */
|
12
include/linux/netfilter/xt_socket.h
Normal file
12
include/linux/netfilter/xt_socket.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef _XT_SOCKET_H
|
||||
#define _XT_SOCKET_H
|
||||
|
||||
enum {
|
||||
XT_SOCKET_TRANSPARENT = 1 << 0,
|
||||
};
|
||||
|
||||
struct xt_socket_mtinfo1 {
|
||||
__u8 flags;
|
||||
};
|
||||
|
||||
#endif /* _XT_SOCKET_H */
|
@@ -7,7 +7,7 @@
|
||||
* Copyright 2008 Michael Wu <flamingice@sourmilk.net>
|
||||
* Copyright 2008 Luis Carlos Cobo <luisca@cozybit.com>
|
||||
* Copyright 2008 Michael Buesch <mb@bu3sch.de>
|
||||
* Copyright 2008 Luis R. Rodriguez <lrodriguez@atheros.com>
|
||||
* Copyright 2008, 2009 Luis R. Rodriguez <lrodriguez@atheros.com>
|
||||
* Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>
|
||||
* Copyright 2008 Colin McCabe <colin@cozybit.com>
|
||||
*
|
||||
@@ -25,6 +25,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/**
|
||||
* DOC: Station handling
|
||||
*
|
||||
@@ -46,8 +48,10 @@
|
||||
* to get a list of all present wiphys.
|
||||
* @NL80211_CMD_SET_WIPHY: set wiphy parameters, needs %NL80211_ATTR_WIPHY or
|
||||
* %NL80211_ATTR_IFINDEX; can be used to set %NL80211_ATTR_WIPHY_NAME,
|
||||
* %NL80211_ATTR_WIPHY_TXQ_PARAMS, %NL80211_ATTR_WIPHY_FREQ, and/or
|
||||
* %NL80211_ATTR_WIPHY_CHANNEL_TYPE.
|
||||
* %NL80211_ATTR_WIPHY_TXQ_PARAMS, %NL80211_ATTR_WIPHY_FREQ,
|
||||
* %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.
|
||||
* @NL80211_CMD_NEW_WIPHY: Newly created wiphy, response to get request
|
||||
* or rename notification. Has attributes %NL80211_ATTR_WIPHY and
|
||||
* %NL80211_ATTR_WIPHY_NAME.
|
||||
@@ -75,8 +79,8 @@
|
||||
* @NL80211_CMD_SET_KEY: Set key attributes %NL80211_ATTR_KEY_DEFAULT,
|
||||
* %NL80211_ATTR_KEY_DEFAULT_MGMT, or %NL80211_ATTR_KEY_THRESHOLD.
|
||||
* @NL80211_CMD_NEW_KEY: add a key with given %NL80211_ATTR_KEY_DATA,
|
||||
* %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC and %NL80211_ATTR_KEY_CIPHER
|
||||
* attributes.
|
||||
* %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC, %NL80211_ATTR_KEY_CIPHER,
|
||||
* and %NL80211_ATTR_KEY_SEQ attributes.
|
||||
* @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_IDX
|
||||
* or %NL80211_ATTR_MAC.
|
||||
*
|
||||
@@ -166,6 +170,22 @@
|
||||
* set (%NL80211_ATTR_REG_TYPE), if the type of regulatory domain is
|
||||
* %NL80211_REG_TYPE_COUNTRY the alpha2 to which we have moved on
|
||||
* to (%NL80211_ATTR_REG_ALPHA2).
|
||||
* @NL80211_CMD_REG_BEACON_HINT: indicates to userspace that an AP beacon
|
||||
* has been found while world roaming thus enabling active scan or
|
||||
* any mode of operation that initiates TX (beacons) on a channel
|
||||
* where we would not have been able to do either before. As an example
|
||||
* if you are world roaming (regulatory domain set to world or if your
|
||||
* driver is using a custom world roaming regulatory domain) and while
|
||||
* doing a passive scan on the 5 GHz band you find an AP there (if not
|
||||
* on a DFS channel) you will now be able to actively scan for that AP
|
||||
* or use AP mode on your card on that same channel. Note that this will
|
||||
* never be used for channels 1-11 on the 2 GHz band as they are always
|
||||
* enabled world wide. This beacon hint is only sent if your device had
|
||||
* either disabled active scanning or beaconing on a channel. We send to
|
||||
* userspace the wiphy on which we removed a restriction from
|
||||
* (%NL80211_ATTR_WIPHY) and the channel on which this occurred
|
||||
* before (%NL80211_ATTR_FREQ_BEFORE) and after (%NL80211_ATTR_FREQ_AFTER)
|
||||
* the beacon hint was processed.
|
||||
*
|
||||
* @NL80211_CMD_AUTHENTICATE: authentication request and notification.
|
||||
* This command is used both as a command (request to authenticate) and
|
||||
@@ -185,8 +205,12 @@
|
||||
* frame, i.e., it was for the local STA and was received in correct
|
||||
* state. This is similar to MLME-AUTHENTICATE.confirm primitive in the
|
||||
* MLME SAP interface (kernel providing MLME, userspace SME). The
|
||||
* included NL80211_ATTR_FRAME attribute contains the management frame
|
||||
* (including both the header and frame body, but not FCS).
|
||||
* included %NL80211_ATTR_FRAME attribute contains the management frame
|
||||
* (including both the header and frame body, but not FCS). This event is
|
||||
* also used to indicate if the authentication attempt timed out. In that
|
||||
* case the %NL80211_ATTR_FRAME attribute is replaced with a
|
||||
* %NL80211_ATTR_TIMED_OUT flag (and %NL80211_ATTR_MAC to indicate which
|
||||
* pending authentication timed out).
|
||||
* @NL80211_CMD_ASSOCIATE: association request and notification; like
|
||||
* NL80211_CMD_AUTHENTICATE but for Association and Reassociation
|
||||
* (similar to MLME-ASSOCIATE.request, MLME-REASSOCIATE.request,
|
||||
@@ -199,6 +223,25 @@
|
||||
* NL80211_CMD_AUTHENTICATE but for Disassociation frames (similar to
|
||||
* MLME-DISASSOCIATE.request and MLME-DISASSOCIATE.indication primitives).
|
||||
*
|
||||
* @NL80211_CMD_MICHAEL_MIC_FAILURE: notification of a locally detected Michael
|
||||
* MIC (part of TKIP) failure; sent on the "mlme" multicast group; the
|
||||
* event includes %NL80211_ATTR_MAC to describe the source MAC address of
|
||||
* the frame with invalid MIC, %NL80211_ATTR_KEY_TYPE to show the key
|
||||
* type, %NL80211_ATTR_KEY_IDX to indicate the key identifier, and
|
||||
* %NL80211_ATTR_KEY_SEQ to indicate the TSC value of the frame; this
|
||||
* event matches with MLME-MICHAELMICFAILURE.indication() primitive
|
||||
*
|
||||
* @NL80211_CMD_JOIN_IBSS: Join a new IBSS -- given at least an SSID and a
|
||||
* FREQ attribute (for the initial frequency if no peer can be found)
|
||||
* and optionally a MAC (as BSSID) and FREQ_FIXED attribute if those
|
||||
* should be fixed rather than automatically determined. Can only be
|
||||
* executed on a network interface that is UP, and fixed BSSID/FREQ
|
||||
* may be rejected. Another optional parameter is the beacon interval,
|
||||
* given in the %NL80211_ATTR_BEACON_INTERVAL attribute, which if not
|
||||
* given defaults to 100 TU (102.4ms).
|
||||
* @NL80211_CMD_LEAVE_IBSS: Leave the IBSS -- no special arguments, the IBSS is
|
||||
* determined by the network interface.
|
||||
*
|
||||
* @NL80211_CMD_MAX: highest used command number
|
||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -260,6 +303,13 @@ enum nl80211_commands {
|
||||
NL80211_CMD_DEAUTHENTICATE,
|
||||
NL80211_CMD_DISASSOCIATE,
|
||||
|
||||
NL80211_CMD_MICHAEL_MIC_FAILURE,
|
||||
|
||||
NL80211_CMD_REG_BEACON_HINT,
|
||||
|
||||
NL80211_CMD_JOIN_IBSS,
|
||||
NL80211_CMD_LEAVE_IBSS,
|
||||
|
||||
/* add new commands above here */
|
||||
|
||||
/* used to define NL80211_CMD_MAX below */
|
||||
@@ -278,6 +328,7 @@ enum nl80211_commands {
|
||||
#define NL80211_CMD_ASSOCIATE NL80211_CMD_ASSOCIATE
|
||||
#define NL80211_CMD_DEAUTHENTICATE NL80211_CMD_DEAUTHENTICATE
|
||||
#define NL80211_CMD_DISASSOCIATE NL80211_CMD_DISASSOCIATE
|
||||
#define NL80211_CMD_REG_BEACON_HINT NL80211_CMD_REG_BEACON_HINT
|
||||
|
||||
/**
|
||||
* enum nl80211_attrs - nl80211 netlink attributes
|
||||
@@ -296,6 +347,18 @@ enum nl80211_commands {
|
||||
* NL80211_CHAN_HT20 = HT20 only
|
||||
* NL80211_CHAN_HT40MINUS = secondary channel is below the primary channel
|
||||
* NL80211_CHAN_HT40PLUS = secondary channel is above the primary channel
|
||||
* @NL80211_ATTR_WIPHY_RETRY_SHORT: TX retry limit for frames whose length is
|
||||
* less than or equal to the RTS threshold; allowed range: 1..255;
|
||||
* dot11ShortRetryLimit; u8
|
||||
* @NL80211_ATTR_WIPHY_RETRY_LONG: TX retry limit for frames whose length is
|
||||
* greater than the RTS threshold; allowed range: 1..255;
|
||||
* dot11ShortLongLimit; u8
|
||||
* @NL80211_ATTR_WIPHY_FRAG_THRESHOLD: fragmentation threshold, i.e., maximum
|
||||
* length in octets for frames; allowed range: 256..8000, disable
|
||||
* fragmentation with (u32)-1; dot11FragmentationThreshold; u32
|
||||
* @NL80211_ATTR_WIPHY_RTS_THRESHOLD: RTS threshold (TX frames with length
|
||||
* larger than or equal to this use RTS/CTS handshake); allowed range:
|
||||
* 0..65536, disable with (u32)-1; dot11RTSThreshold; u32
|
||||
*
|
||||
* @NL80211_ATTR_IFINDEX: network interface index of the device to operate on
|
||||
* @NL80211_ATTR_IFNAME: network interface name
|
||||
@@ -319,7 +382,7 @@ enum nl80211_commands {
|
||||
*
|
||||
* @NL80211_ATTR_STA_AID: Association ID for the station (u16)
|
||||
* @NL80211_ATTR_STA_FLAGS: flags, nested element with NLA_FLAG attributes of
|
||||
* &enum nl80211_sta_flags.
|
||||
* &enum nl80211_sta_flags (deprecated, use %NL80211_ATTR_STA_FLAGS2)
|
||||
* @NL80211_ATTR_STA_LISTEN_INTERVAL: listen interval as defined by
|
||||
* IEEE 802.11 7.3.1.6 (u16).
|
||||
* @NL80211_ATTR_STA_SUPPORTED_RATES: supported rates, array of supported
|
||||
@@ -380,6 +443,8 @@ enum nl80211_commands {
|
||||
*
|
||||
* @NL80211_ATTR_MAX_NUM_SCAN_SSIDS: number of SSIDs you can scan with
|
||||
* a single scan request, a wiphy attribute.
|
||||
* @NL80211_ATTR_MAX_SCAN_IE_LEN: maximum length of information elements
|
||||
* that can be added to a scan request
|
||||
*
|
||||
* @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz)
|
||||
* @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive
|
||||
@@ -408,6 +473,44 @@ enum nl80211_commands {
|
||||
* @NL80211_ATTR_REASON_CODE: ReasonCode for %NL80211_CMD_DEAUTHENTICATE and
|
||||
* %NL80211_CMD_DISASSOCIATE, u16
|
||||
*
|
||||
* @NL80211_ATTR_KEY_TYPE: Key Type, see &enum nl80211_key_type, represented as
|
||||
* a u32
|
||||
*
|
||||
* @NL80211_ATTR_FREQ_BEFORE: A channel which has suffered a regulatory change
|
||||
* due to considerations from a beacon hint. This attribute reflects
|
||||
* the state of the channel _before_ the beacon hint processing. This
|
||||
* attributes consists of a nested attribute containing
|
||||
* NL80211_FREQUENCY_ATTR_*
|
||||
* @NL80211_ATTR_FREQ_AFTER: A channel which has suffered a regulatory change
|
||||
* due to considerations from a beacon hint. This attribute reflects
|
||||
* the state of the channel _after_ the beacon hint processing. This
|
||||
* attributes consists of a nested attribute containing
|
||||
* NL80211_FREQUENCY_ATTR_*
|
||||
*
|
||||
* @NL80211_ATTR_CIPHER_SUITES: a set of u32 values indicating the supported
|
||||
* cipher suites
|
||||
*
|
||||
* @NL80211_ATTR_FREQ_FIXED: a flag indicating the IBSS should not try to look
|
||||
* for other networks on different channels
|
||||
*
|
||||
* @NL80211_ATTR_TIMED_OUT: a flag indicating than an operation timed out; this
|
||||
* is used, e.g., with %NL80211_CMD_AUTHENTICATE event
|
||||
*
|
||||
* @NL80211_ATTR_USE_MFP: Whether management frame protection (IEEE 802.11w) is
|
||||
* used for the association (&enum nl80211_mfp, represented as a u32);
|
||||
* this attribute can be used
|
||||
* with %NL80211_CMD_ASSOCIATE request
|
||||
*
|
||||
* @NL80211_ATTR_STA_FLAGS2: Attribute containing a
|
||||
* &struct nl80211_sta_flag_update.
|
||||
*
|
||||
* @NL80211_ATTR_CONTROL_PORT: A flag indicating whether user space controls
|
||||
* IEEE 802.1X port, i.e., sets/clears %NL80211_STA_FLAG_AUTHORIZED, in
|
||||
* station mode. If the flag is included in %NL80211_CMD_ASSOCIATE
|
||||
* request, the driver will assume that the port is unauthorized until
|
||||
* authorized by user space. Otherwise, port is marked authorized by
|
||||
* default in station mode.
|
||||
*
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -492,6 +595,30 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_AUTH_TYPE,
|
||||
NL80211_ATTR_REASON_CODE,
|
||||
|
||||
NL80211_ATTR_KEY_TYPE,
|
||||
|
||||
NL80211_ATTR_MAX_SCAN_IE_LEN,
|
||||
NL80211_ATTR_CIPHER_SUITES,
|
||||
|
||||
NL80211_ATTR_FREQ_BEFORE,
|
||||
NL80211_ATTR_FREQ_AFTER,
|
||||
|
||||
NL80211_ATTR_FREQ_FIXED,
|
||||
|
||||
|
||||
NL80211_ATTR_WIPHY_RETRY_SHORT,
|
||||
NL80211_ATTR_WIPHY_RETRY_LONG,
|
||||
NL80211_ATTR_WIPHY_FRAG_THRESHOLD,
|
||||
NL80211_ATTR_WIPHY_RTS_THRESHOLD,
|
||||
|
||||
NL80211_ATTR_TIMED_OUT,
|
||||
|
||||
NL80211_ATTR_USE_MFP,
|
||||
|
||||
NL80211_ATTR_STA_FLAGS2,
|
||||
|
||||
NL80211_ATTR_CONTROL_PORT,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
@@ -580,6 +707,18 @@ enum nl80211_sta_flags {
|
||||
NL80211_STA_FLAG_MAX = __NL80211_STA_FLAG_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* struct nl80211_sta_flag_update - station flags mask/set
|
||||
* @mask: mask of station flags to set
|
||||
* @set: which values to set them to
|
||||
*
|
||||
* Both mask and set contain bits as per &enum nl80211_sta_flags.
|
||||
*/
|
||||
struct nl80211_sta_flag_update {
|
||||
__u32 mask;
|
||||
__u32 set;
|
||||
} __attribute__((packed));
|
||||
|
||||
/**
|
||||
* enum nl80211_rate_info - bitrate information
|
||||
*
|
||||
@@ -1062,4 +1201,27 @@ enum nl80211_auth_type {
|
||||
NL80211_AUTHTYPE_FT,
|
||||
NL80211_AUTHTYPE_NETWORK_EAP,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_key_type - Key Type
|
||||
* @NL80211_KEYTYPE_GROUP: Group (broadcast/multicast) key
|
||||
* @NL80211_KEYTYPE_PAIRWISE: Pairwise (unicast/individual) key
|
||||
* @NL80211_KEYTYPE_PEERKEY: PeerKey (DLS)
|
||||
*/
|
||||
enum nl80211_key_type {
|
||||
NL80211_KEYTYPE_GROUP,
|
||||
NL80211_KEYTYPE_PAIRWISE,
|
||||
NL80211_KEYTYPE_PEERKEY,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_mfp - Management frame protection state
|
||||
* @NL80211_MFP_NO: Management frame protection not used
|
||||
* @NL80211_MFP_REQUIRED: Management frame protection required
|
||||
*/
|
||||
enum nl80211_mfp {
|
||||
NL80211_MFP_NO,
|
||||
NL80211_MFP_REQUIRED,
|
||||
};
|
||||
|
||||
#endif /* __LINUX_NL80211_H */
|
||||
|
119
include/linux/nl802154.h
Normal file
119
include/linux/nl802154.h
Normal file
@@ -0,0 +1,119 @@
|
||||
/*
|
||||
* nl802154.h
|
||||
*
|
||||
* Copyright (C) 2007, 2008, 2009 Siemens AG
|
||||
*
|
||||
* 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.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NL802154_H
|
||||
#define NL802154_H
|
||||
|
||||
#define IEEE802154_NL_NAME "802.15.4 MAC"
|
||||
#define IEEE802154_MCAST_COORD_NAME "coordinator"
|
||||
#define IEEE802154_MCAST_BEACON_NAME "beacon"
|
||||
|
||||
enum {
|
||||
__IEEE802154_ATTR_INVALID,
|
||||
|
||||
IEEE802154_ATTR_DEV_NAME,
|
||||
IEEE802154_ATTR_DEV_INDEX,
|
||||
|
||||
IEEE802154_ATTR_STATUS,
|
||||
|
||||
IEEE802154_ATTR_SHORT_ADDR,
|
||||
IEEE802154_ATTR_HW_ADDR,
|
||||
IEEE802154_ATTR_PAN_ID,
|
||||
|
||||
IEEE802154_ATTR_CHANNEL,
|
||||
|
||||
IEEE802154_ATTR_COORD_SHORT_ADDR,
|
||||
IEEE802154_ATTR_COORD_HW_ADDR,
|
||||
IEEE802154_ATTR_COORD_PAN_ID,
|
||||
|
||||
IEEE802154_ATTR_SRC_SHORT_ADDR,
|
||||
IEEE802154_ATTR_SRC_HW_ADDR,
|
||||
IEEE802154_ATTR_SRC_PAN_ID,
|
||||
|
||||
IEEE802154_ATTR_DEST_SHORT_ADDR,
|
||||
IEEE802154_ATTR_DEST_HW_ADDR,
|
||||
IEEE802154_ATTR_DEST_PAN_ID,
|
||||
|
||||
IEEE802154_ATTR_CAPABILITY,
|
||||
IEEE802154_ATTR_REASON,
|
||||
IEEE802154_ATTR_SCAN_TYPE,
|
||||
IEEE802154_ATTR_CHANNELS,
|
||||
IEEE802154_ATTR_DURATION,
|
||||
IEEE802154_ATTR_ED_LIST,
|
||||
IEEE802154_ATTR_BCN_ORD,
|
||||
IEEE802154_ATTR_SF_ORD,
|
||||
IEEE802154_ATTR_PAN_COORD,
|
||||
IEEE802154_ATTR_BAT_EXT,
|
||||
IEEE802154_ATTR_COORD_REALIGN,
|
||||
IEEE802154_ATTR_SEC,
|
||||
|
||||
__IEEE802154_ATTR_MAX,
|
||||
};
|
||||
|
||||
#define IEEE802154_ATTR_MAX (__IEEE802154_ATTR_MAX - 1)
|
||||
|
||||
extern struct nla_policy ieee802154_policy[];
|
||||
|
||||
/* commands */
|
||||
/* REQ should be responded with CONF
|
||||
* and INDIC with RESP
|
||||
*/
|
||||
enum {
|
||||
__IEEE802154_COMMAND_INVALID,
|
||||
|
||||
IEEE802154_ASSOCIATE_REQ,
|
||||
IEEE802154_ASSOCIATE_CONF,
|
||||
IEEE802154_DISASSOCIATE_REQ,
|
||||
IEEE802154_DISASSOCIATE_CONF,
|
||||
IEEE802154_GET_REQ,
|
||||
IEEE802154_GET_CONF,
|
||||
IEEE802154_RESET_REQ,
|
||||
IEEE802154_RESET_CONF,
|
||||
IEEE802154_SCAN_REQ,
|
||||
IEEE802154_SCAN_CONF,
|
||||
IEEE802154_SET_REQ,
|
||||
IEEE802154_SET_CONF,
|
||||
IEEE802154_START_REQ,
|
||||
IEEE802154_START_CONF,
|
||||
IEEE802154_SYNC_REQ,
|
||||
IEEE802154_POLL_REQ,
|
||||
IEEE802154_POLL_CONF,
|
||||
|
||||
IEEE802154_ASSOCIATE_INDIC,
|
||||
IEEE802154_ASSOCIATE_RESP,
|
||||
IEEE802154_DISASSOCIATE_INDIC,
|
||||
IEEE802154_BEACON_NOTIFY_INDIC,
|
||||
IEEE802154_ORPHAN_INDIC,
|
||||
IEEE802154_ORPHAN_RESP,
|
||||
IEEE802154_COMM_STATUS_INDIC,
|
||||
IEEE802154_SYNC_LOSS_INDIC,
|
||||
|
||||
IEEE802154_GTS_REQ, /* Not supported yet */
|
||||
IEEE802154_GTS_INDIC, /* Not supported yet */
|
||||
IEEE802154_GTS_CONF, /* Not supported yet */
|
||||
IEEE802154_RX_ENABLE_REQ, /* Not supported yet */
|
||||
IEEE802154_RX_ENABLE_CONF, /* Not supported yet */
|
||||
|
||||
__IEEE802154_CMD_MAX,
|
||||
};
|
||||
|
||||
#define IEEE802154_CMD_MAX (__IEEE802154_CMD_MAX - 1)
|
||||
|
||||
#endif
|
@@ -198,6 +198,7 @@ static inline int notifier_to_errno(int ret)
|
||||
#define NETDEV_CHANGENAME 0x000A
|
||||
#define NETDEV_FEAT_CHANGE 0x000B
|
||||
#define NETDEV_BONDING_FAILOVER 0x000C
|
||||
#define NETDEV_PRE_UP 0x000D
|
||||
|
||||
#define SYS_DOWN 0x0001 /* Notify of system down */
|
||||
#define SYS_RESTART SYS_DOWN
|
||||
|
@@ -77,6 +77,9 @@ extern int of_n_size_cells(struct device_node *np);
|
||||
extern const struct of_device_id *of_match_node(
|
||||
const struct of_device_id *matches, const struct device_node *node);
|
||||
extern int of_modalias_node(struct device_node *node, char *modalias, int len);
|
||||
extern struct device_node *of_parse_phandle(struct device_node *np,
|
||||
const char *phandle_name,
|
||||
int index);
|
||||
extern int of_parse_phandles_with_args(struct device_node *np,
|
||||
const char *list_name, const char *cells_name, int index,
|
||||
struct device_node **out_node, const void **out_args);
|
||||
|
22
include/linux/of_mdio.h
Normal file
22
include/linux/of_mdio.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* OF helpers for the MDIO (Ethernet PHY) API
|
||||
*
|
||||
* Copyright (c) 2009 Secret Lab Technologies, Ltd.
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_OF_MDIO_H
|
||||
#define __LINUX_OF_MDIO_H
|
||||
|
||||
#include <linux/phy.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
extern int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np);
|
||||
extern struct phy_device *of_phy_find_device(struct device_node *phy_np);
|
||||
extern struct phy_device *of_phy_connect(struct net_device *dev,
|
||||
struct device_node *phy_np,
|
||||
void (*hndlr)(struct net_device *),
|
||||
u32 flags, phy_interface_t iface);
|
||||
|
||||
#endif /* __LINUX_OF_MDIO_H */
|
@@ -1067,8 +1067,6 @@
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SMBUS 0x0034
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_IDE 0x0035
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA 0x0036
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_10 0x0037
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_11 0x0038
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2 0x003e
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800_ULTRA 0x0040
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800 0x0041
|
||||
@@ -1079,21 +1077,16 @@
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_IDE 0x0053
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA 0x0054
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA2 0x0055
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_8 0x0056
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_9 0x0057
|
||||
#define PCI_DEVICE_ID_NVIDIA_CK804_AUDIO 0x0059
|
||||
#define PCI_DEVICE_ID_NVIDIA_CK804_PCIE 0x005d
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE2_SMBUS 0x0064
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE 0x0065
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_2 0x0066
|
||||
#define PCI_DEVICE_ID_NVIDIA_MCP2_MODEM 0x0069
|
||||
#define PCI_DEVICE_ID_NVIDIA_MCP2_AUDIO 0x006a
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SMBUS 0x0084
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE 0x0085
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_4 0x0086
|
||||
#define PCI_DEVICE_ID_NVIDIA_MCP2S_MODEM 0x0089
|
||||
#define PCI_DEVICE_ID_NVIDIA_CK8_AUDIO 0x008a
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_5 0x008c
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA 0x008e
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE_7800_GT 0x0090
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE_7800_GTX 0x0091
|
||||
@@ -1109,15 +1102,12 @@
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE3 0x00d1
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE3_SMBUS 0x00d4
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE 0x00d5
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_3 0x00d6
|
||||
#define PCI_DEVICE_ID_NVIDIA_MCP3_MODEM 0x00d9
|
||||
#define PCI_DEVICE_ID_NVIDIA_MCP3_AUDIO 0x00da
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_7 0x00df
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE3S 0x00e1
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA 0x00e3
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SMBUS 0x00e4
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE 0x00e5
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_6 0x00e6
|
||||
#define PCI_DEVICE_ID_NVIDIA_CK8S_AUDIO 0x00ea
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2 0x00ee
|
||||
#define PCIE_DEVICE_ID_NVIDIA_GEFORCE_6800_ALT1 0x00f0
|
||||
@@ -1177,7 +1167,6 @@
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_SMBUS 0x01b4
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_IDE 0x01bc
|
||||
#define PCI_DEVICE_ID_NVIDIA_MCP1_MODEM 0x01c1
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_1 0x01c3
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE2 0x01e0
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE3 0x0200
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE3_1 0x0201
|
||||
@@ -1200,8 +1189,6 @@
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE 0x036E
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA 0x037E
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2 0x037F
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_12 0x0268
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_13 0x0269
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800 0x0280
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800_8X 0x0281
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800SE 0x0282
|
||||
@@ -1248,46 +1235,21 @@
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700_2 0x0348
|
||||
#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO1000 0x034C
|
||||
#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1100 0x034E
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_14 0x0372
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_15 0x0373
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_16 0x03E5
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_17 0x03E6
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA 0x03E7
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SMBUS 0x03EB
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_IDE 0x03EC
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_18 0x03EE
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_19 0x03EF
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2 0x03F6
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3 0x03F7
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SMBUS 0x0446
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_IDE 0x0448
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_20 0x0450
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_21 0x0451
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_22 0x0452
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_23 0x0453
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_SMBUS 0x0542
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_24 0x054C
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_25 0x054D
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_26 0x054E
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_27 0x054F
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_28 0x07DC
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_29 0x07DD
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_30 0x07DE
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_31 0x07DF
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_IDE 0x0560
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_IDE 0x056C
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP78S_SMBUS 0x0752
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE 0x0759
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_32 0x0760
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_33 0x0761
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_34 0x0762
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_35 0x0763
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_SMBUS 0x07D8
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP79_SMBUS 0x0AA2
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_36 0x0AB0
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_37 0x0AB1
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_38 0x0AB2
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_39 0x0AB3
|
||||
|
||||
#define PCI_VENDOR_ID_IMS 0x10e0
|
||||
#define PCI_DEVICE_ID_IMS_TT128 0x9128
|
||||
@@ -1926,6 +1888,8 @@
|
||||
#define PCI_SUBDEVICE_ID_CCD_SWYX4S 0xB540
|
||||
#define PCI_SUBDEVICE_ID_CCD_JH4S20 0xB550
|
||||
#define PCI_SUBDEVICE_ID_CCD_IOB8ST_1 0xB552
|
||||
#define PCI_SUBDEVICE_ID_CCD_JHSE1 0xB553
|
||||
#define PCI_SUBDEVICE_ID_CCD_JH8S 0xB55B
|
||||
#define PCI_SUBDEVICE_ID_CCD_BN4S 0xB560
|
||||
#define PCI_SUBDEVICE_ID_CCD_BN8S 0xB562
|
||||
#define PCI_SUBDEVICE_ID_CCD_BNE1 0xB563
|
||||
@@ -2332,6 +2296,8 @@
|
||||
|
||||
#define PCI_VENDOR_ID_QMI 0x1a32
|
||||
|
||||
#define PCI_VENDOR_ID_AZWAVE 0x1a3b
|
||||
|
||||
#define PCI_VENDOR_ID_TEKRAM 0x1de1
|
||||
#define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29
|
||||
|
||||
|
@@ -79,7 +79,7 @@ typedef enum {
|
||||
* Need to be a little smaller than phydev->dev.bus_id to leave room
|
||||
* for the ":%02x"
|
||||
*/
|
||||
#define MII_BUS_ID_SIZE (BUS_ID_SIZE - 3)
|
||||
#define MII_BUS_ID_SIZE (20 - 3)
|
||||
|
||||
/*
|
||||
* The Bus class for PHYs. Devices which provide access to
|
||||
@@ -407,7 +407,7 @@ struct phy_driver {
|
||||
/* A Structure for boards to register fixups with the PHY Lib */
|
||||
struct phy_fixup {
|
||||
struct list_head list;
|
||||
char bus_id[BUS_ID_SIZE];
|
||||
char bus_id[20];
|
||||
u32 phy_uid;
|
||||
u32 phy_uid_mask;
|
||||
int (*run)(struct phy_device *phydev);
|
||||
@@ -444,10 +444,16 @@ static inline int phy_write(struct phy_device *phydev, u16 regnum, u16 val)
|
||||
|
||||
int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id);
|
||||
struct phy_device* get_phy_device(struct mii_bus *bus, int addr);
|
||||
int phy_device_register(struct phy_device *phy);
|
||||
int phy_clear_interrupt(struct phy_device *phydev);
|
||||
int phy_config_interrupt(struct phy_device *phydev, u32 interrupts);
|
||||
int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
|
||||
u32 flags, phy_interface_t interface);
|
||||
struct phy_device * phy_attach(struct net_device *dev,
|
||||
const char *bus_id, u32 flags, phy_interface_t interface);
|
||||
int phy_connect_direct(struct net_device *dev, struct phy_device *phydev,
|
||||
void (*handler)(struct net_device *), u32 flags,
|
||||
phy_interface_t interface);
|
||||
struct phy_device * phy_connect(struct net_device *dev, const char *bus_id,
|
||||
void (*handler)(struct net_device *), u32 flags,
|
||||
phy_interface_t interface);
|
||||
|
@@ -4,6 +4,7 @@
|
||||
/*
|
||||
* Copyright (C) 2006 - 2007 Ivo van Doorn
|
||||
* Copyright (C) 2007 Dmitry Torokhov
|
||||
* Copyright 2009 Johannes Berg <johannes@sipsolutions.net>
|
||||
*
|
||||
* 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
|
||||
@@ -21,132 +22,332 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* define userspace visible states */
|
||||
#define RFKILL_STATE_SOFT_BLOCKED 0
|
||||
#define RFKILL_STATE_UNBLOCKED 1
|
||||
#define RFKILL_STATE_HARD_BLOCKED 2
|
||||
|
||||
/**
|
||||
* enum rfkill_type - type of rfkill switch.
|
||||
*
|
||||
* @RFKILL_TYPE_ALL: toggles all switches (userspace only)
|
||||
* @RFKILL_TYPE_WLAN: switch is on a 802.11 wireless network device.
|
||||
* @RFKILL_TYPE_BLUETOOTH: switch is on a bluetooth device.
|
||||
* @RFKILL_TYPE_UWB: switch is on a ultra wideband device.
|
||||
* @RFKILL_TYPE_WIMAX: switch is on a WiMAX device.
|
||||
* @RFKILL_TYPE_WWAN: switch is on a wireless WAN device.
|
||||
* @NUM_RFKILL_TYPES: number of defined rfkill types
|
||||
*/
|
||||
enum rfkill_type {
|
||||
RFKILL_TYPE_ALL = 0,
|
||||
RFKILL_TYPE_WLAN,
|
||||
RFKILL_TYPE_BLUETOOTH,
|
||||
RFKILL_TYPE_UWB,
|
||||
RFKILL_TYPE_WIMAX,
|
||||
RFKILL_TYPE_WWAN,
|
||||
NUM_RFKILL_TYPES,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum rfkill_operation - operation types
|
||||
* @RFKILL_OP_ADD: a device was added
|
||||
* @RFKILL_OP_DEL: a device was removed
|
||||
* @RFKILL_OP_CHANGE: a device's state changed -- userspace changes one device
|
||||
* @RFKILL_OP_CHANGE_ALL: userspace changes all devices (of a type, or all)
|
||||
*/
|
||||
enum rfkill_operation {
|
||||
RFKILL_OP_ADD = 0,
|
||||
RFKILL_OP_DEL,
|
||||
RFKILL_OP_CHANGE,
|
||||
RFKILL_OP_CHANGE_ALL,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct rfkill_event - events for userspace on /dev/rfkill
|
||||
* @idx: index of dev rfkill
|
||||
* @type: type of the rfkill struct
|
||||
* @op: operation code
|
||||
* @hard: hard state (0/1)
|
||||
* @soft: soft state (0/1)
|
||||
*
|
||||
* Structure used for userspace communication on /dev/rfkill,
|
||||
* used for events from the kernel and control to the kernel.
|
||||
*/
|
||||
struct rfkill_event {
|
||||
__u32 idx;
|
||||
__u8 type;
|
||||
__u8 op;
|
||||
__u8 soft, hard;
|
||||
} __packed;
|
||||
|
||||
/* ioctl for turning off rfkill-input (if present) */
|
||||
#define RFKILL_IOC_MAGIC 'R'
|
||||
#define RFKILL_IOC_NOINPUT 1
|
||||
#define RFKILL_IOCTL_NOINPUT _IO(RFKILL_IOC_MAGIC, RFKILL_IOC_NOINPUT)
|
||||
|
||||
/* and that's all userspace gets */
|
||||
#ifdef __KERNEL__
|
||||
/* don't allow anyone to use these in the kernel */
|
||||
enum rfkill_user_states {
|
||||
RFKILL_USER_STATE_SOFT_BLOCKED = RFKILL_STATE_SOFT_BLOCKED,
|
||||
RFKILL_USER_STATE_UNBLOCKED = RFKILL_STATE_UNBLOCKED,
|
||||
RFKILL_USER_STATE_HARD_BLOCKED = RFKILL_STATE_HARD_BLOCKED,
|
||||
};
|
||||
#undef RFKILL_STATE_SOFT_BLOCKED
|
||||
#undef RFKILL_STATE_UNBLOCKED
|
||||
#undef RFKILL_STATE_HARD_BLOCKED
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/err.h>
|
||||
|
||||
/* this is opaque */
|
||||
struct rfkill;
|
||||
|
||||
/**
|
||||
* enum rfkill_type - type of rfkill switch.
|
||||
* RFKILL_TYPE_WLAN: switch is on a 802.11 wireless network device.
|
||||
* RFKILL_TYPE_BLUETOOTH: switch is on a bluetooth device.
|
||||
* RFKILL_TYPE_UWB: switch is on a ultra wideband device.
|
||||
* RFKILL_TYPE_WIMAX: switch is on a WiMAX device.
|
||||
* RFKILL_TYPE_WWAN: switch is on a wireless WAN device.
|
||||
*/
|
||||
enum rfkill_type {
|
||||
RFKILL_TYPE_WLAN ,
|
||||
RFKILL_TYPE_BLUETOOTH,
|
||||
RFKILL_TYPE_UWB,
|
||||
RFKILL_TYPE_WIMAX,
|
||||
RFKILL_TYPE_WWAN,
|
||||
RFKILL_TYPE_MAX,
|
||||
};
|
||||
|
||||
enum rfkill_state {
|
||||
RFKILL_STATE_SOFT_BLOCKED = 0, /* Radio output blocked */
|
||||
RFKILL_STATE_UNBLOCKED = 1, /* Radio output allowed */
|
||||
RFKILL_STATE_HARD_BLOCKED = 2, /* Output blocked, non-overrideable */
|
||||
RFKILL_STATE_MAX, /* marker for last valid state */
|
||||
};
|
||||
|
||||
/*
|
||||
* These are DEPRECATED, drivers using them should be verified to
|
||||
* comply with the rfkill usage guidelines in Documentation/rfkill.txt
|
||||
* and then converted to use the new names for rfkill_state
|
||||
*/
|
||||
#define RFKILL_STATE_OFF RFKILL_STATE_SOFT_BLOCKED
|
||||
#define RFKILL_STATE_ON RFKILL_STATE_UNBLOCKED
|
||||
|
||||
/**
|
||||
* struct rfkill - rfkill control structure.
|
||||
* @name: Name of the switch.
|
||||
* @type: Radio type which the button controls, the value stored
|
||||
* here should be a value from enum rfkill_type.
|
||||
* @state: State of the switch, "UNBLOCKED" means radio can operate.
|
||||
* @user_claim_unsupported: Whether the hardware supports exclusive
|
||||
* RF-kill control by userspace. Set this before registering.
|
||||
* @user_claim: Set when the switch is controlled exlusively by userspace.
|
||||
* @mutex: Guards switch state transitions. It serializes callbacks
|
||||
* and also protects the state.
|
||||
* @data: Pointer to the RF button drivers private data which will be
|
||||
* passed along when toggling radio state.
|
||||
* @toggle_radio(): Mandatory handler to control state of the radio.
|
||||
* only RFKILL_STATE_SOFT_BLOCKED and RFKILL_STATE_UNBLOCKED are
|
||||
* valid parameters.
|
||||
* @get_state(): handler to read current radio state from hardware,
|
||||
* may be called from atomic context, should return 0 on success.
|
||||
* Either this handler OR judicious use of rfkill_force_state() is
|
||||
* MANDATORY for any driver capable of RFKILL_STATE_HARD_BLOCKED.
|
||||
* @led_trigger: A LED trigger for this button's LED.
|
||||
* @dev: Device structure integrating the switch into device tree.
|
||||
* @node: Used to place switch into list of all switches known to the
|
||||
* the system.
|
||||
* struct rfkill_ops - rfkill driver methods
|
||||
*
|
||||
* This structure represents a RF switch located on a network device.
|
||||
* @poll: poll the rfkill block state(s) -- only assign this method
|
||||
* when you need polling. When called, simply call one of the
|
||||
* rfkill_set{,_hw,_sw}_state family of functions. If the hw
|
||||
* is getting unblocked you need to take into account the return
|
||||
* value of those functions to make sure the software block is
|
||||
* properly used.
|
||||
* @query: query the rfkill block state(s) and call exactly one of the
|
||||
* rfkill_set{,_hw,_sw}_state family of functions. Assign this
|
||||
* method if input events can cause hardware state changes to make
|
||||
* the rfkill core query your driver before setting a requested
|
||||
* block.
|
||||
* @set_block: turn the transmitter on (blocked == false) or off
|
||||
* (blocked == true) -- ignore and return 0 when hard blocked.
|
||||
* This callback must be assigned.
|
||||
*/
|
||||
struct rfkill {
|
||||
const char *name;
|
||||
enum rfkill_type type;
|
||||
|
||||
bool user_claim_unsupported;
|
||||
bool user_claim;
|
||||
|
||||
/* the mutex serializes callbacks and also protects
|
||||
* the state */
|
||||
struct mutex mutex;
|
||||
enum rfkill_state state;
|
||||
void *data;
|
||||
int (*toggle_radio)(void *data, enum rfkill_state state);
|
||||
int (*get_state)(void *data, enum rfkill_state *state);
|
||||
|
||||
#ifdef CONFIG_RFKILL_LEDS
|
||||
struct led_trigger led_trigger;
|
||||
#endif
|
||||
|
||||
struct device dev;
|
||||
struct list_head node;
|
||||
enum rfkill_state state_for_resume;
|
||||
struct rfkill_ops {
|
||||
void (*poll)(struct rfkill *rfkill, void *data);
|
||||
void (*query)(struct rfkill *rfkill, void *data);
|
||||
int (*set_block)(void *data, bool blocked);
|
||||
};
|
||||
#define to_rfkill(d) container_of(d, struct rfkill, dev)
|
||||
|
||||
struct rfkill * __must_check rfkill_allocate(struct device *parent,
|
||||
enum rfkill_type type);
|
||||
void rfkill_free(struct rfkill *rfkill);
|
||||
#if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE)
|
||||
/**
|
||||
* rfkill_alloc - allocate rfkill structure
|
||||
* @name: name of the struct -- the string is not copied internally
|
||||
* @parent: device that has rf switch on it
|
||||
* @type: type of the switch (RFKILL_TYPE_*)
|
||||
* @ops: rfkill methods
|
||||
* @ops_data: data passed to each method
|
||||
*
|
||||
* This function should be called by the transmitter driver to allocate an
|
||||
* rfkill structure. Returns %NULL on failure.
|
||||
*/
|
||||
struct rfkill * __must_check rfkill_alloc(const char *name,
|
||||
struct device *parent,
|
||||
const enum rfkill_type type,
|
||||
const struct rfkill_ops *ops,
|
||||
void *ops_data);
|
||||
|
||||
/**
|
||||
* rfkill_register - Register a rfkill structure.
|
||||
* @rfkill: rfkill structure to be registered
|
||||
*
|
||||
* This function should be called by the transmitter driver to register
|
||||
* the rfkill structure. Before calling this function the driver needs
|
||||
* to be ready to service method calls from rfkill.
|
||||
*
|
||||
* If the software blocked state is not set before registration,
|
||||
* set_block will be called to initialize it to a default value.
|
||||
*
|
||||
* If the hardware blocked state is not set before registration,
|
||||
* it is assumed to be unblocked.
|
||||
*/
|
||||
int __must_check rfkill_register(struct rfkill *rfkill);
|
||||
|
||||
/**
|
||||
* rfkill_pause_polling(struct rfkill *rfkill)
|
||||
*
|
||||
* Pause polling -- say transmitter is off for other reasons.
|
||||
* NOTE: not necessary for suspend/resume -- in that case the
|
||||
* core stops polling anyway
|
||||
*/
|
||||
void rfkill_pause_polling(struct rfkill *rfkill);
|
||||
|
||||
/**
|
||||
* rfkill_resume_polling(struct rfkill *rfkill)
|
||||
*
|
||||
* Pause polling -- say transmitter is off for other reasons.
|
||||
* NOTE: not necessary for suspend/resume -- in that case the
|
||||
* core stops polling anyway
|
||||
*/
|
||||
void rfkill_resume_polling(struct rfkill *rfkill);
|
||||
|
||||
|
||||
/**
|
||||
* rfkill_unregister - Unregister a rfkill structure.
|
||||
* @rfkill: rfkill structure to be unregistered
|
||||
*
|
||||
* This function should be called by the network driver during device
|
||||
* teardown to destroy rfkill structure. Until it returns, the driver
|
||||
* needs to be able to service method calls.
|
||||
*/
|
||||
void rfkill_unregister(struct rfkill *rfkill);
|
||||
|
||||
int rfkill_force_state(struct rfkill *rfkill, enum rfkill_state state);
|
||||
int rfkill_set_default(enum rfkill_type type, enum rfkill_state state);
|
||||
|
||||
/**
|
||||
* rfkill_state_complement - return complementar state
|
||||
* @state: state to return the complement of
|
||||
* rfkill_destroy - free rfkill structure
|
||||
* @rfkill: rfkill structure to be destroyed
|
||||
*
|
||||
* Returns RFKILL_STATE_SOFT_BLOCKED if @state is RFKILL_STATE_UNBLOCKED,
|
||||
* returns RFKILL_STATE_UNBLOCKED otherwise.
|
||||
* Destroys the rfkill structure.
|
||||
*/
|
||||
static inline enum rfkill_state rfkill_state_complement(enum rfkill_state state)
|
||||
{
|
||||
return (state == RFKILL_STATE_UNBLOCKED) ?
|
||||
RFKILL_STATE_SOFT_BLOCKED : RFKILL_STATE_UNBLOCKED;
|
||||
}
|
||||
void rfkill_destroy(struct rfkill *rfkill);
|
||||
|
||||
/**
|
||||
* rfkill_get_led_name - Get the LED trigger name for the button's LED.
|
||||
* This function might return a NULL pointer if registering of the
|
||||
* LED trigger failed.
|
||||
* Use this as "default_trigger" for the LED.
|
||||
* rfkill_set_hw_state - Set the internal rfkill hardware block state
|
||||
* @rfkill: pointer to the rfkill class to modify.
|
||||
* @state: the current hardware block state to set
|
||||
*
|
||||
* rfkill drivers that get events when the hard-blocked state changes
|
||||
* use this function to notify the rfkill core (and through that also
|
||||
* userspace) of the current state. They should also use this after
|
||||
* resume if the state could have changed.
|
||||
*
|
||||
* You need not (but may) call this function if poll_state is assigned.
|
||||
*
|
||||
* This function can be called in any context, even from within rfkill
|
||||
* callbacks.
|
||||
*
|
||||
* The function returns the combined block state (true if transmitter
|
||||
* should be blocked) so that drivers need not keep track of the soft
|
||||
* block state -- which they might not be able to.
|
||||
*/
|
||||
static inline char *rfkill_get_led_name(struct rfkill *rfkill)
|
||||
bool __must_check rfkill_set_hw_state(struct rfkill *rfkill, bool blocked);
|
||||
|
||||
/**
|
||||
* rfkill_set_sw_state - Set the internal rfkill software block state
|
||||
* @rfkill: pointer to the rfkill class to modify.
|
||||
* @state: the current software block state to set
|
||||
*
|
||||
* rfkill drivers that get events when the soft-blocked state changes
|
||||
* (yes, some platforms directly act on input but allow changing again)
|
||||
* use this function to notify the rfkill core (and through that also
|
||||
* userspace) of the current state. It is not necessary to notify on
|
||||
* resume; since hibernation can always change the soft-blocked state,
|
||||
* the rfkill core will unconditionally restore the previous state.
|
||||
*
|
||||
* This function can be called in any context, even from within rfkill
|
||||
* callbacks.
|
||||
*
|
||||
* The function returns the combined block state (true if transmitter
|
||||
* should be blocked).
|
||||
*/
|
||||
bool rfkill_set_sw_state(struct rfkill *rfkill, bool blocked);
|
||||
|
||||
/**
|
||||
* rfkill_set_states - Set the internal rfkill block states
|
||||
* @rfkill: pointer to the rfkill class to modify.
|
||||
* @sw: the current software block state to set
|
||||
* @hw: the current hardware block state to set
|
||||
*
|
||||
* This function can be called in any context, even from within rfkill
|
||||
* callbacks.
|
||||
*/
|
||||
void rfkill_set_states(struct rfkill *rfkill, bool sw, bool hw);
|
||||
|
||||
/**
|
||||
* rfkill_blocked - query rfkill block
|
||||
*
|
||||
* @rfkill: rfkill struct to query
|
||||
*/
|
||||
bool rfkill_blocked(struct rfkill *rfkill);
|
||||
#else /* !RFKILL */
|
||||
static inline struct rfkill * __must_check
|
||||
rfkill_alloc(const char *name,
|
||||
struct device *parent,
|
||||
const enum rfkill_type type,
|
||||
const struct rfkill_ops *ops,
|
||||
void *ops_data)
|
||||
{
|
||||
#ifdef CONFIG_RFKILL_LEDS
|
||||
return (char *)(rfkill->led_trigger.name);
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline int __must_check rfkill_register(struct rfkill *rfkill)
|
||||
{
|
||||
if (rfkill == ERR_PTR(-ENODEV))
|
||||
return 0;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline void rfkill_pause_polling(struct rfkill *rfkill)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void rfkill_resume_polling(struct rfkill *rfkill)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void rfkill_unregister(struct rfkill *rfkill)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void rfkill_destroy(struct rfkill *rfkill)
|
||||
{
|
||||
}
|
||||
|
||||
static inline bool rfkill_set_hw_state(struct rfkill *rfkill, bool blocked)
|
||||
{
|
||||
return blocked;
|
||||
}
|
||||
|
||||
static inline bool rfkill_set_sw_state(struct rfkill *rfkill, bool blocked)
|
||||
{
|
||||
return blocked;
|
||||
}
|
||||
|
||||
static inline void rfkill_set_states(struct rfkill *rfkill, bool sw, bool hw)
|
||||
{
|
||||
}
|
||||
|
||||
static inline bool rfkill_blocked(struct rfkill *rfkill)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif /* RFKILL || RFKILL_MODULE */
|
||||
|
||||
|
||||
#ifdef CONFIG_RFKILL_LEDS
|
||||
/**
|
||||
* rfkill_get_led_trigger_name - Get the LED trigger name for the button's LED.
|
||||
* This function might return a NULL pointer if registering of the
|
||||
* LED trigger failed. Use this as "default_trigger" for the LED.
|
||||
*/
|
||||
const char *rfkill_get_led_trigger_name(struct rfkill *rfkill);
|
||||
|
||||
/**
|
||||
* rfkill_set_led_trigger_name -- set the LED trigger name
|
||||
* @rfkill: rfkill struct
|
||||
* @name: LED trigger name
|
||||
*
|
||||
* This function sets the LED trigger name of the radio LED
|
||||
* trigger that rfkill creates. It is optional, but if called
|
||||
* must be called before rfkill_register() to be effective.
|
||||
*/
|
||||
void rfkill_set_led_trigger_name(struct rfkill *rfkill, const char *name);
|
||||
#else
|
||||
static inline const char *rfkill_get_led_trigger_name(struct rfkill *rfkill)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void
|
||||
rfkill_set_led_trigger_name(struct rfkill *rfkill, const char *name)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* RFKILL_H */
|
||||
|
@@ -2212,6 +2212,12 @@ static inline int test_tsk_need_resched(struct task_struct *tsk)
|
||||
return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED));
|
||||
}
|
||||
|
||||
static inline int restart_syscall(void)
|
||||
{
|
||||
set_tsk_thread_flag(current, TIF_SIGPENDING);
|
||||
return -ERESTARTNOINTR;
|
||||
}
|
||||
|
||||
static inline int signal_pending(struct task_struct *p)
|
||||
{
|
||||
return unlikely(test_tsk_thread_flag(p,TIF_SIGPENDING));
|
||||
|
@@ -487,17 +487,17 @@ typedef enum {
|
||||
*
|
||||
* Value Cause Code
|
||||
* --------- ----------------
|
||||
* 0x0100 Request to Delete Last Remaining IP Address.
|
||||
* 0x0101 Operation Refused Due to Resource Shortage.
|
||||
* 0x0102 Request to Delete Source IP Address.
|
||||
* 0x0103 Association Aborted due to illegal ASCONF-ACK
|
||||
* 0x0104 Request refused - no authorization.
|
||||
* 0x00A0 Request to Delete Last Remaining IP Address.
|
||||
* 0x00A1 Operation Refused Due to Resource Shortage.
|
||||
* 0x00A2 Request to Delete Source IP Address.
|
||||
* 0x00A3 Association Aborted due to illegal ASCONF-ACK
|
||||
* 0x00A4 Request refused - no authorization.
|
||||
*/
|
||||
SCTP_ERROR_DEL_LAST_IP = cpu_to_be16(0x0100),
|
||||
SCTP_ERROR_RSRC_LOW = cpu_to_be16(0x0101),
|
||||
SCTP_ERROR_DEL_SRC_IP = cpu_to_be16(0x0102),
|
||||
SCTP_ERROR_ASCONF_ACK = cpu_to_be16(0x0103),
|
||||
SCTP_ERROR_REQ_REFUSED = cpu_to_be16(0x0104),
|
||||
SCTP_ERROR_DEL_LAST_IP = cpu_to_be16(0x00A0),
|
||||
SCTP_ERROR_RSRC_LOW = cpu_to_be16(0x00A1),
|
||||
SCTP_ERROR_DEL_SRC_IP = cpu_to_be16(0x00A2),
|
||||
SCTP_ERROR_ASCONF_ACK = cpu_to_be16(0x00A3),
|
||||
SCTP_ERROR_REQ_REFUSED = cpu_to_be16(0x00A4),
|
||||
|
||||
/* AUTH Section 4. New Error Cause
|
||||
*
|
||||
|
@@ -189,20 +189,23 @@ struct skb_shared_info {
|
||||
atomic_t dataref;
|
||||
unsigned short nr_frags;
|
||||
unsigned short gso_size;
|
||||
#ifdef CONFIG_HAS_DMA
|
||||
dma_addr_t dma_head;
|
||||
#endif
|
||||
/* Warning: this field is not always filled in (UFO)! */
|
||||
unsigned short gso_segs;
|
||||
unsigned short gso_type;
|
||||
__be32 ip6_frag_id;
|
||||
union skb_shared_tx tx_flags;
|
||||
#ifdef CONFIG_HAS_DMA
|
||||
unsigned int num_dma_maps;
|
||||
#endif
|
||||
struct sk_buff *frag_list;
|
||||
struct skb_shared_hwtstamps hwtstamps;
|
||||
skb_frag_t frags[MAX_SKB_FRAGS];
|
||||
#ifdef CONFIG_HAS_DMA
|
||||
dma_addr_t dma_maps[MAX_SKB_FRAGS + 1];
|
||||
dma_addr_t dma_maps[MAX_SKB_FRAGS];
|
||||
#endif
|
||||
/* Intermediate layers must ensure that destructor_arg
|
||||
* remains valid until skb destructor */
|
||||
void * destructor_arg;
|
||||
};
|
||||
|
||||
/* We divide dataref into two halves. The higher 16 bits hold references
|
||||
@@ -301,9 +304,6 @@ typedef unsigned char *sk_buff_data_t;
|
||||
* @tc_verd: traffic control verdict
|
||||
* @ndisc_nodetype: router type (from link layer)
|
||||
* @do_not_encrypt: set to prevent encryption of this frame
|
||||
* @requeue: set to indicate that the wireless core should attempt
|
||||
* a software retry on this frame if we failed to
|
||||
* receive an ACK for it
|
||||
* @dma_cookie: a cookie to one of several possible DMA operations
|
||||
* done by skb DMA functions
|
||||
* @secmark: security marking
|
||||
@@ -319,10 +319,7 @@ struct sk_buff {
|
||||
ktime_t tstamp;
|
||||
struct net_device *dev;
|
||||
|
||||
union {
|
||||
struct dst_entry *dst;
|
||||
struct rtable *rtable;
|
||||
};
|
||||
unsigned long _skb_dst;
|
||||
#ifdef CONFIG_XFRM
|
||||
struct sec_path *sp;
|
||||
#endif
|
||||
@@ -380,7 +377,6 @@ struct sk_buff {
|
||||
#endif
|
||||
#if defined(CONFIG_MAC80211) || defined(CONFIG_MAC80211_MODULE)
|
||||
__u8 do_not_encrypt:1;
|
||||
__u8 requeue:1;
|
||||
#endif
|
||||
/* 0/13/14 bit hole */
|
||||
|
||||
@@ -423,6 +419,21 @@ extern void skb_dma_unmap(struct device *dev, struct sk_buff *skb,
|
||||
enum dma_data_direction dir);
|
||||
#endif
|
||||
|
||||
static inline struct dst_entry *skb_dst(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct dst_entry *)skb->_skb_dst;
|
||||
}
|
||||
|
||||
static inline void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst)
|
||||
{
|
||||
skb->_skb_dst = (unsigned long)dst;
|
||||
}
|
||||
|
||||
static inline struct rtable *skb_rtable(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct rtable *)skb_dst(skb);
|
||||
}
|
||||
|
||||
extern void kfree_skb(struct sk_buff *skb);
|
||||
extern void consume_skb(struct sk_buff *skb);
|
||||
extern void __kfree_skb(struct sk_buff *skb);
|
||||
@@ -1062,7 +1073,7 @@ extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page,
|
||||
int off, int size);
|
||||
|
||||
#define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags)
|
||||
#define SKB_FRAG_ASSERT(skb) BUG_ON(skb_shinfo(skb)->frag_list)
|
||||
#define SKB_FRAG_ASSERT(skb) BUG_ON(skb_has_frags(skb))
|
||||
#define SKB_LINEAR_ASSERT(skb) BUG_ON(skb_is_nonlinear(skb))
|
||||
|
||||
#ifdef NET_SKBUFF_DATA_USES_OFFSET
|
||||
@@ -1701,6 +1712,25 @@ static inline int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len)
|
||||
skb = skb->prev)
|
||||
|
||||
|
||||
static inline bool skb_has_frags(const struct sk_buff *skb)
|
||||
{
|
||||
return skb_shinfo(skb)->frag_list != NULL;
|
||||
}
|
||||
|
||||
static inline void skb_frag_list_init(struct sk_buff *skb)
|
||||
{
|
||||
skb_shinfo(skb)->frag_list = NULL;
|
||||
}
|
||||
|
||||
static inline void skb_frag_add_head(struct sk_buff *skb, struct sk_buff *frag)
|
||||
{
|
||||
frag->next = skb_shinfo(skb)->frag_list;
|
||||
skb_shinfo(skb)->frag_list = frag;
|
||||
}
|
||||
|
||||
#define skb_walk_frags(skb, iter) \
|
||||
for (iter = skb_shinfo(skb)->frag_list; iter; iter = iter->next)
|
||||
|
||||
extern struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned flags,
|
||||
int *peeked, int *err);
|
||||
extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags,
|
||||
@@ -1715,8 +1745,14 @@ extern int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb,
|
||||
struct iovec *iov);
|
||||
extern int skb_copy_datagram_from_iovec(struct sk_buff *skb,
|
||||
int offset,
|
||||
struct iovec *from,
|
||||
const struct iovec *from,
|
||||
int from_offset,
|
||||
int len);
|
||||
extern int skb_copy_datagram_const_iovec(const struct sk_buff *from,
|
||||
int offset,
|
||||
const struct iovec *to,
|
||||
int to_offset,
|
||||
int size);
|
||||
extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb);
|
||||
extern int skb_kill_datagram(struct sock *sk, struct sk_buff *skb,
|
||||
unsigned int flags);
|
||||
|
@@ -47,4 +47,14 @@ struct smsc911x_platform_config {
|
||||
#define SMSC911X_FORCE_EXTERNAL_PHY (BIT(3))
|
||||
#define SMSC911X_SAVE_MAC_ADDRESS (BIT(4))
|
||||
|
||||
/*
|
||||
* SMSC911X_SWAP_FIFO:
|
||||
* Enables software byte swap for fifo data. Should only be used as a
|
||||
* "last resort" in the case of big endian mode on boards with incorrectly
|
||||
* routed data bus to older devices such as LAN9118. Newer devices such as
|
||||
* LAN9221 can handle this in hardware, there are registers to control
|
||||
* this swapping but the driver doesn't currently use them.
|
||||
*/
|
||||
#define SMSC911X_SWAP_FIFO (BIT(5))
|
||||
|
||||
#endif /* __LINUX_SMSC911X_H__ */
|
||||
|
@@ -18,7 +18,7 @@
|
||||
enum
|
||||
{
|
||||
IPSTATS_MIB_NUM = 0,
|
||||
IPSTATS_MIB_INRECEIVES, /* InReceives */
|
||||
IPSTATS_MIB_INPKTS, /* InReceives */
|
||||
IPSTATS_MIB_INHDRERRORS, /* InHdrErrors */
|
||||
IPSTATS_MIB_INTOOBIGERRORS, /* InTooBigErrors */
|
||||
IPSTATS_MIB_INNOROUTES, /* InNoRoutes */
|
||||
@@ -28,7 +28,7 @@ enum
|
||||
IPSTATS_MIB_INDISCARDS, /* InDiscards */
|
||||
IPSTATS_MIB_INDELIVERS, /* InDelivers */
|
||||
IPSTATS_MIB_OUTFORWDATAGRAMS, /* OutForwDatagrams */
|
||||
IPSTATS_MIB_OUTREQUESTS, /* OutRequests */
|
||||
IPSTATS_MIB_OUTPKTS, /* OutRequests */
|
||||
IPSTATS_MIB_OUTDISCARDS, /* OutDiscards */
|
||||
IPSTATS_MIB_OUTNOROUTES, /* OutNoRoutes */
|
||||
IPSTATS_MIB_REASMTIMEOUT, /* ReasmTimeout */
|
||||
@@ -42,6 +42,12 @@ enum
|
||||
IPSTATS_MIB_OUTMCASTPKTS, /* OutMcastPkts */
|
||||
IPSTATS_MIB_INBCASTPKTS, /* InBcastPkts */
|
||||
IPSTATS_MIB_OUTBCASTPKTS, /* OutBcastPkts */
|
||||
IPSTATS_MIB_INOCTETS, /* InOctets */
|
||||
IPSTATS_MIB_OUTOCTETS, /* OutOctets */
|
||||
IPSTATS_MIB_INMCASTOCTETS, /* InMcastOctets */
|
||||
IPSTATS_MIB_OUTMCASTOCTETS, /* OutMcastOctets */
|
||||
IPSTATS_MIB_INBCASTOCTETS, /* InBcastOctets */
|
||||
IPSTATS_MIB_OUTBCASTOCTETS, /* OutBcastOctets */
|
||||
__IPSTATS_MIB_MAX
|
||||
};
|
||||
|
||||
|
@@ -194,7 +194,8 @@ struct ucred {
|
||||
#define AF_RXRPC 33 /* RxRPC sockets */
|
||||
#define AF_ISDN 34 /* mISDN sockets */
|
||||
#define AF_PHONET 35 /* Phonet sockets */
|
||||
#define AF_MAX 36 /* For now.. */
|
||||
#define AF_IEEE802154 36 /* IEEE802154 sockets */
|
||||
#define AF_MAX 37 /* For now.. */
|
||||
|
||||
/* Protocol families, same as address families. */
|
||||
#define PF_UNSPEC AF_UNSPEC
|
||||
@@ -233,6 +234,7 @@ struct ucred {
|
||||
#define PF_RXRPC AF_RXRPC
|
||||
#define PF_ISDN AF_ISDN
|
||||
#define PF_PHONET AF_PHONET
|
||||
#define PF_IEEE802154 AF_IEEE802154
|
||||
#define PF_MAX AF_MAX
|
||||
|
||||
/* Maximum queue length specifiable by listen. */
|
||||
@@ -303,14 +305,15 @@ struct ucred {
|
||||
#define SOL_BLUETOOTH 274
|
||||
#define SOL_PNPIPE 275
|
||||
#define SOL_RDS 276
|
||||
#define SOL_IUCV 277
|
||||
|
||||
/* IPX options */
|
||||
#define IPX_TYPE 1
|
||||
|
||||
#ifdef __KERNEL__
|
||||
extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len);
|
||||
extern int memcpy_fromiovecend(unsigned char *kdata, struct iovec *iov,
|
||||
int offset, int len);
|
||||
extern int memcpy_fromiovecend(unsigned char *kdata, const struct iovec *iov,
|
||||
int offset, int len);
|
||||
extern int csum_partial_copy_fromiovecend(unsigned char *kdata,
|
||||
struct iovec *iov,
|
||||
int offset,
|
||||
@@ -318,6 +321,8 @@ extern int csum_partial_copy_fromiovecend(unsigned char *kdata,
|
||||
|
||||
extern int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address, int mode);
|
||||
extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len);
|
||||
extern int memcpy_toiovecend(const struct iovec *v, unsigned char *kdata,
|
||||
int offset, int len);
|
||||
extern int move_addr_to_user(struct sockaddr *kaddr, int klen, void __user *uaddr, int __user *ulen);
|
||||
extern int move_addr_to_kernel(void __user *uaddr, int ulen, struct sockaddr *kaddr);
|
||||
extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data);
|
||||
|
@@ -22,9 +22,6 @@ struct libertas_spi_platform_data {
|
||||
* speed, you may want to use 0 here. */
|
||||
u16 use_dummy_writes;
|
||||
|
||||
/* GPIO number to use as chip select */
|
||||
u16 gpio_cs;
|
||||
|
||||
/* Board specific setup/teardown */
|
||||
int (*setup)(struct spi_device *spi);
|
||||
int (*teardown)(struct spi_device *spi);
|
||||
|
31
include/linux/spi/wl12xx.h
Normal file
31
include/linux/spi/wl12xx.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* This file is part of wl12xx
|
||||
*
|
||||
* Copyright (C) 2009 Nokia Corporation
|
||||
*
|
||||
* Contact: Kalle Valo <kalle.valo@nokia.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_SPI_WL12XX_H
|
||||
#define _LINUX_SPI_WL12XX_H
|
||||
|
||||
struct wl12xx_platform_data {
|
||||
void (*set_power)(bool enable);
|
||||
};
|
||||
|
||||
#endif
|
@@ -377,7 +377,7 @@ struct tcp_sock {
|
||||
unsigned int keepalive_time; /* time before keep alive takes place */
|
||||
unsigned int keepalive_intvl; /* time interval between keep alive probes */
|
||||
|
||||
unsigned long last_synq_overflow;
|
||||
int linger2;
|
||||
|
||||
/* Receiver side RTT estimation */
|
||||
struct {
|
||||
@@ -406,8 +406,6 @@ struct tcp_sock {
|
||||
/* TCP MD5 Signagure Option information */
|
||||
struct tcp_md5sig_info *md5sig_info;
|
||||
#endif
|
||||
|
||||
int linger2;
|
||||
};
|
||||
|
||||
static inline struct tcp_sock *tcp_sk(const struct sock *sk)
|
||||
|
@@ -183,6 +183,7 @@ extern void usbnet_tx_timeout (struct net_device *net);
|
||||
extern int usbnet_change_mtu (struct net_device *net, int new_mtu);
|
||||
|
||||
extern int usbnet_get_endpoints(struct usbnet *, struct usb_interface *);
|
||||
extern int usbnet_get_ethernet_addr(struct usbnet *, int);
|
||||
extern void usbnet_defer_kevent (struct usbnet *, int);
|
||||
extern void usbnet_skb_return (struct usbnet *, struct sk_buff *);
|
||||
extern void usbnet_unlink_rx_urbs(struct usbnet *);
|
||||
|
@@ -59,7 +59,7 @@ enum {
|
||||
* M - Major: change if removing or modifying an existing call.
|
||||
* m - minor: change when adding a new call
|
||||
*/
|
||||
WIMAX_GNL_VERSION = 00,
|
||||
WIMAX_GNL_VERSION = 01,
|
||||
/* Generic NetLink attributes */
|
||||
WIMAX_GNL_ATTR_INVALID = 0x00,
|
||||
WIMAX_GNL_ATTR_MAX = 10,
|
||||
@@ -78,6 +78,7 @@ enum {
|
||||
WIMAX_GNL_OP_RFKILL, /* Run wimax_rfkill() */
|
||||
WIMAX_GNL_OP_RESET, /* Run wimax_rfkill() */
|
||||
WIMAX_GNL_RE_STATE_CHANGE, /* Report: status change */
|
||||
WIMAX_GNL_OP_STATE_GET, /* Request for current state */
|
||||
};
|
||||
|
||||
|
||||
@@ -113,6 +114,10 @@ enum {
|
||||
WIMAX_GNL_RESET_IFIDX = 1,
|
||||
};
|
||||
|
||||
/* Atributes for wimax_state_get() */
|
||||
enum {
|
||||
WIMAX_GNL_STGET_IFIDX = 1,
|
||||
};
|
||||
|
||||
/*
|
||||
* Attributes for the Report State Change
|
||||
|
@@ -266,7 +266,7 @@ enum i2400m_ro_type {
|
||||
|
||||
/* Misc constants */
|
||||
enum {
|
||||
I2400M_PL_PAD = 16, /* Payload data size alignment */
|
||||
I2400M_PL_ALIGN = 16, /* Payload data size alignment */
|
||||
I2400M_PL_SIZE_MAX = 0x3EFF,
|
||||
I2400M_MAX_PLS_IN_MSG = 60,
|
||||
/* protocol barkers: sync sequences; for notifications they
|
||||
|
Reference in New Issue
Block a user