Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
This commit is contained in:
commit
36432dae73
518 changed files with 20761 additions and 11393 deletions
|
|
@ -311,6 +311,7 @@ unifdef-y += ptrace.h
|
|||
unifdef-y += qnx4_fs.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
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
#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
|
||||
|
|
@ -21,6 +22,8 @@
|
|||
#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 */
|
||||
|
|
|
|||
|
|
@ -30,7 +30,8 @@ struct ethtool_cmd {
|
|||
__u32 maxtxpkt; /* Tx pkts before generating tx int */
|
||||
__u32 maxrxpkt; /* Rx pkts before generating rx int */
|
||||
__u16 speed_hi;
|
||||
__u16 reserved2;
|
||||
__u8 eth_tp_mdix;
|
||||
__u8 reserved2;
|
||||
__u32 lp_advertising; /* Features the link partner advertises */
|
||||
__u32 reserved[2];
|
||||
};
|
||||
|
|
@ -632,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)
|
||||
|
|
|
|||
|
|
@ -1092,6 +1092,7 @@ enum ieee80211_key_len {
|
|||
WLAN_KEY_LEN_WEP104 = 13,
|
||||
WLAN_KEY_LEN_CCMP = 16,
|
||||
WLAN_KEY_LEN_TKIP = 32,
|
||||
WLAN_KEY_LEN_AES_CMAC = 16,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -106,6 +106,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.
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@
|
|||
#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. */
|
||||
|
|
@ -195,6 +196,14 @@
|
|||
#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 */
|
||||
|
||||
|
|
|
|||
|
|
@ -215,9 +215,12 @@ 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_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;
|
||||
};
|
||||
|
||||
|
|
@ -773,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;
|
||||
|
|
@ -905,7 +909,6 @@ struct net_device
|
|||
#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,
|
||||
|
|
@ -976,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
|
||||
|
|
@ -1839,8 +1840,8 @@ extern int dev_addr_del_multiple(struct net_device *to_dev,
|
|||
/* Functions used for secondary unicast and multicast support */
|
||||
extern void dev_set_rx_mode(struct net_device *dev);
|
||||
extern void __dev_set_rx_mode(struct net_device *dev);
|
||||
extern int dev_unicast_delete(struct net_device *dev, void *addr, 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);
|
||||
|
|
@ -1902,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));
|
||||
}
|
||||
|
||||
|
|
@ -1920,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.
|
||||
|
|
@ -1933,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))
|
||||
|
|
@ -1978,4 +1996,4 @@ static inline u32 dev_ethtool_get_flags(struct net_device *dev)
|
|||
}
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _LINUX_DEV_H */
|
||||
#endif /* _LINUX_NETDEVICE_H */
|
||||
|
|
|
|||
|
|
@ -36,6 +36,9 @@ enum tcp_conntrack {
|
|||
/* Has unacknowledged data */
|
||||
#define IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED 0x10
|
||||
|
||||
/* The field td_maxack has been set */
|
||||
#define IP_CT_TCP_FLAG_MAXACK_SET 0x20
|
||||
|
||||
struct nf_ct_tcp_flags {
|
||||
__u8 flags;
|
||||
__u8 mask;
|
||||
|
|
@ -47,6 +50,7 @@ struct ip_ct_tcp_state {
|
|||
u_int32_t td_end; /* max of seq + len */
|
||||
u_int32_t td_maxend; /* max of ack + max(win, 1) */
|
||||
u_int32_t td_maxwin; /* max(win) */
|
||||
u_int32_t td_maxack; /* max of ack */
|
||||
u_int8_t td_scale; /* window scale factor */
|
||||
u_int8_t flags; /* per direction options */
|
||||
};
|
||||
|
|
|
|||
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
|
||||
|
|
|
|||
|
|
@ -1066,8 +1066,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
|
||||
|
|
@ -1078,21 +1076,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
|
||||
|
|
@ -1108,15 +1101,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
|
||||
|
|
@ -1176,7 +1166,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
|
||||
|
|
@ -1199,8 +1188,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
|
||||
|
|
@ -1247,46 +1234,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
|
||||
|
|
|
|||
|
|
@ -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,118 +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 */
|
||||
};
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* @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;
|
||||
|
||||
/* 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 */
|
||||
|
|
|
|||
|
|
@ -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,19 +189,19 @@ 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 */
|
||||
|
|
@ -304,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
|
||||
|
|
@ -322,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
|
||||
|
|
@ -383,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 */
|
||||
|
||||
|
|
@ -426,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);
|
||||
|
|
@ -1065,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
|
||||
|
|
@ -1704,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,
|
||||
|
|
|
|||
|
|
@ -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. */
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue