aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/can/Kbuild1
-rw-r--r--include/linux/can/dev.h70
-rw-r--r--include/linux/can/netlink.h113
-rw-r--r--include/linux/can/platform/sja1000.h32
-rw-r--r--include/linux/etherdevice.h27
-rw-r--r--include/linux/ethtool.h15
-rw-r--r--include/linux/fs_enet_pd.h6
-rw-r--r--include/linux/ieee80211.h51
-rw-r--r--include/linux/if_tun.h1
-rw-r--r--include/linux/if_vlan.h6
-rw-r--r--include/linux/mdio.h347
-rw-r--r--include/linux/mii.h34
-rw-r--r--include/linux/mmc/sdio_ids.h2
-rw-r--r--include/linux/netdevice.h119
-rw-r--r--include/linux/nl80211.h178
-rw-r--r--include/linux/of.h3
-rw-r--r--include/linux/of_mdio.h22
-rw-r--r--include/linux/pci_ids.h2
-rw-r--r--include/linux/phy.h6
-rw-r--r--include/linux/rfkill.h14
-rw-r--r--include/linux/skbuff.h8
-rw-r--r--include/linux/smsc911x.h10
-rw-r--r--include/linux/snmp.h10
-rw-r--r--include/linux/socket.h7
-rw-r--r--include/linux/spi/wl12xx.h31
-rw-r--r--include/linux/tcp.h4
-rw-r--r--include/linux/usb/usbnet.h1
27 files changed, 1048 insertions, 72 deletions
diff --git a/include/linux/can/Kbuild b/include/linux/can/Kbuild
index eff898aac02b..8cb05aae661c 100644
--- a/include/linux/can/Kbuild
+++ b/include/linux/can/Kbuild
@@ -1,3 +1,4 @@
1header-y += raw.h 1header-y += raw.h
2header-y += bcm.h 2header-y += bcm.h
3header-y += error.h 3header-y += error.h
4header-y += netlink.h
diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h
new file mode 100644
index 000000000000..4a37a56f6cdd
--- /dev/null
+++ b/include/linux/can/dev.h
@@ -0,0 +1,70 @@
1/*
2 * linux/can/dev.h
3 *
4 * Definitions for the CAN network device driver interface
5 *
6 * Copyright (C) 2006 Andrey Volkov <avolkov@varma-el.com>
7 * Varma Electronics Oy
8 *
9 * Copyright (C) 2008 Wolfgang Grandegger <wg@grandegger.com>
10 *
11 * Send feedback to <socketcan-users@lists.berlios.de>
12 */
13
14#ifndef CAN_DEV_H
15#define CAN_DEV_H
16
17#include <linux/can/netlink.h>
18#include <linux/can/error.h>
19
20/*
21 * CAN mode
22 */
23enum can_mode {
24 CAN_MODE_STOP = 0,
25 CAN_MODE_START,
26 CAN_MODE_SLEEP
27};
28
29/*
30 * CAN common private data
31 */
32#define CAN_ECHO_SKB_MAX 4
33
34struct can_priv {
35 struct can_device_stats can_stats;
36
37 struct can_bittiming bittiming;
38 struct can_bittiming_const *bittiming_const;
39 struct can_clock clock;
40
41 enum can_state state;
42 u32 ctrlmode;
43
44 int restart_ms;
45 struct timer_list restart_timer;
46
47 struct sk_buff *echo_skb[CAN_ECHO_SKB_MAX];
48
49 int (*do_set_bittiming)(struct net_device *dev);
50 int (*do_set_mode)(struct net_device *dev, enum can_mode mode);
51 int (*do_get_state)(const struct net_device *dev,
52 enum can_state *state);
53};
54
55struct net_device *alloc_candev(int sizeof_priv);
56void free_candev(struct net_device *dev);
57
58int open_candev(struct net_device *dev);
59void close_candev(struct net_device *dev);
60
61int register_candev(struct net_device *dev);
62void unregister_candev(struct net_device *dev);
63
64int can_restart_now(struct net_device *dev);
65void can_bus_off(struct net_device *dev);
66
67void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev, int idx);
68void can_get_echo_skb(struct net_device *dev, int idx);
69
70#endif /* CAN_DEV_H */
diff --git a/include/linux/can/netlink.h b/include/linux/can/netlink.h
new file mode 100644
index 000000000000..9ecbb7871c0e
--- /dev/null
+++ b/include/linux/can/netlink.h
@@ -0,0 +1,113 @@
1/*
2 * linux/can/netlink.h
3 *
4 * Definitions for the CAN netlink interface
5 *
6 * Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com>
7 *
8 * Send feedback to <socketcan-users@lists.berlios.de>
9 *
10 */
11
12#ifndef CAN_NETLINK_H
13#define CAN_NETLINK_H
14
15#include <linux/types.h>
16
17/*
18 * CAN bit-timing parameters
19 *
20 * For futher information, please read chapter "8 BIT TIMING
21 * REQUIREMENTS" of the "Bosch CAN Specification version 2.0"
22 * at http://www.semiconductors.bosch.de/pdf/can2spec.pdf.
23 */
24struct can_bittiming {
25 __u32 bitrate; /* Bit-rate in bits/second */
26 __u32 sample_point; /* Sample point in one-tenth of a percent */
27 __u32 tq; /* Time quanta (TQ) in nanoseconds */
28 __u32 prop_seg; /* Propagation segment in TQs */
29 __u32 phase_seg1; /* Phase buffer segment 1 in TQs */
30 __u32 phase_seg2; /* Phase buffer segment 2 in TQs */
31 __u32 sjw; /* Synchronisation jump width in TQs */
32 __u32 brp; /* Bit-rate prescaler */
33};
34
35/*
36 * CAN harware-dependent bit-timing constant
37 *
38 * Used for calculating and checking bit-timing parameters
39 */
40struct can_bittiming_const {
41 char name[16]; /* Name of the CAN controller hardware */
42 __u32 tseg1_min; /* Time segement 1 = prop_seg + phase_seg1 */
43 __u32 tseg1_max;
44 __u32 tseg2_min; /* Time segement 2 = phase_seg2 */
45 __u32 tseg2_max;
46 __u32 sjw_max; /* Synchronisation jump width */
47 __u32 brp_min; /* Bit-rate prescaler */
48 __u32 brp_max;
49 __u32 brp_inc;
50};
51
52/*
53 * CAN clock parameters
54 */
55struct can_clock {
56 __u32 freq; /* CAN system clock frequency in Hz */
57};
58
59/*
60 * CAN operational and error states
61 */
62enum can_state {
63 CAN_STATE_ERROR_ACTIVE = 0, /* RX/TX error count < 96 */
64 CAN_STATE_ERROR_WARNING, /* RX/TX error count < 128 */
65 CAN_STATE_ERROR_PASSIVE, /* RX/TX error count < 256 */
66 CAN_STATE_BUS_OFF, /* RX/TX error count >= 256 */
67 CAN_STATE_STOPPED, /* Device is stopped */
68 CAN_STATE_SLEEPING, /* Device is sleeping */
69 CAN_STATE_MAX
70};
71
72/*
73 * CAN controller mode
74 */
75struct can_ctrlmode {
76 __u32 mask;
77 __u32 flags;
78};
79
80#define CAN_CTRLMODE_LOOPBACK 0x1 /* Loopback mode */
81#define CAN_CTRLMODE_LISTENONLY 0x2 /* Listen-only mode */
82#define CAN_CTRLMODE_3_SAMPLES 0x4 /* Triple sampling mode */
83
84/*
85 * CAN device statistics
86 */
87struct can_device_stats {
88 __u32 bus_error; /* Bus errors */
89 __u32 error_warning; /* Changes to error warning state */
90 __u32 error_passive; /* Changes to error passive state */
91 __u32 bus_off; /* Changes to bus off state */
92 __u32 arbitration_lost; /* Arbitration lost errors */
93 __u32 restarts; /* CAN controller re-starts */
94};
95
96/*
97 * CAN netlink interface
98 */
99enum {
100 IFLA_CAN_UNSPEC,
101 IFLA_CAN_BITTIMING,
102 IFLA_CAN_BITTIMING_CONST,
103 IFLA_CAN_CLOCK,
104 IFLA_CAN_STATE,
105 IFLA_CAN_CTRLMODE,
106 IFLA_CAN_RESTART_MS,
107 IFLA_CAN_RESTART,
108 __IFLA_CAN_MAX
109};
110
111#define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1)
112
113#endif /* CAN_NETLINK_H */
diff --git a/include/linux/can/platform/sja1000.h b/include/linux/can/platform/sja1000.h
new file mode 100644
index 000000000000..37966e630ff5
--- /dev/null
+++ b/include/linux/can/platform/sja1000.h
@@ -0,0 +1,32 @@
1#ifndef _CAN_PLATFORM_SJA1000_H_
2#define _CAN_PLATFORM_SJA1000_H_
3
4/* clock divider register */
5#define CDR_CLKOUT_MASK 0x07
6#define CDR_CLK_OFF 0x08 /* Clock off (CLKOUT pin) */
7#define CDR_RXINPEN 0x20 /* TX1 output is RX irq output */
8#define CDR_CBP 0x40 /* CAN input comparator bypass */
9#define CDR_PELICAN 0x80 /* PeliCAN mode */
10
11/* output control register */
12#define OCR_MODE_BIPHASE 0x00
13#define OCR_MODE_TEST 0x01
14#define OCR_MODE_NORMAL 0x02
15#define OCR_MODE_CLOCK 0x03
16#define OCR_TX0_INVERT 0x04
17#define OCR_TX0_PULLDOWN 0x08
18#define OCR_TX0_PULLUP 0x10
19#define OCR_TX0_PUSHPULL 0x18
20#define OCR_TX1_INVERT 0x20
21#define OCR_TX1_PULLDOWN 0x40
22#define OCR_TX1_PULLUP 0x80
23#define OCR_TX1_PUSHPULL 0xc0
24
25struct sja1000_platform_data {
26 u32 clock; /* CAN bus oscillator frequency in Hz */
27
28 u8 ocr; /* output control register */
29 u8 cdr; /* clock divider register */
30};
31
32#endif /* !_CAN_PLATFORM_SJA1000_H_ */
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h
index a1f17abba7dc..3d7a6687d247 100644
--- a/include/linux/etherdevice.h
+++ b/include/linux/etherdevice.h
@@ -182,6 +182,33 @@ static inline unsigned compare_ether_addr_64bits(const u8 addr1[6+2],
182 return compare_ether_addr(addr1, addr2); 182 return compare_ether_addr(addr1, addr2);
183#endif 183#endif
184} 184}
185
186/**
187 * is_etherdev_addr - Tell if given Ethernet address belongs to the device.
188 * @dev: Pointer to a device structure
189 * @addr: Pointer to a six-byte array containing the Ethernet address
190 *
191 * Compare passed address with all addresses of the device. Return true if the
192 * address if one of the device addresses.
193 *
194 * Note that this function calls compare_ether_addr_64bits() so take care of
195 * the right padding.
196 */
197static inline bool is_etherdev_addr(const struct net_device *dev,
198 const u8 addr[6 + 2])
199{
200 struct netdev_hw_addr *ha;
201 int res = 1;
202
203 rcu_read_lock();
204 for_each_dev_addr(dev, ha) {
205 res = compare_ether_addr_64bits(addr, ha->addr);
206 if (!res)
207 break;
208 }
209 rcu_read_unlock();
210 return !res;
211}
185#endif /* __KERNEL__ */ 212#endif /* __KERNEL__ */
186 213
187/** 214/**
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index 131b127b70f8..380b04272bf1 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -26,11 +26,13 @@ struct ethtool_cmd {
26 __u8 phy_address; 26 __u8 phy_address;
27 __u8 transceiver; /* Which transceiver to use */ 27 __u8 transceiver; /* Which transceiver to use */
28 __u8 autoneg; /* Enable or disable autonegotiation */ 28 __u8 autoneg; /* Enable or disable autonegotiation */
29 __u8 mdio_support;
29 __u32 maxtxpkt; /* Tx pkts before generating tx int */ 30 __u32 maxtxpkt; /* Tx pkts before generating tx int */
30 __u32 maxrxpkt; /* Rx pkts before generating rx int */ 31 __u32 maxrxpkt; /* Rx pkts before generating rx int */
31 __u16 speed_hi; 32 __u16 speed_hi;
32 __u16 reserved2; 33 __u16 reserved2;
33 __u32 reserved[3]; 34 __u32 lp_advertising; /* Features the link partner advertises */
35 __u32 reserved[2];
34}; 36};
35 37
36static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep, 38static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
@@ -563,6 +565,11 @@ struct ethtool_ops {
563#define SUPPORTED_Pause (1 << 13) 565#define SUPPORTED_Pause (1 << 13)
564#define SUPPORTED_Asym_Pause (1 << 14) 566#define SUPPORTED_Asym_Pause (1 << 14)
565#define SUPPORTED_2500baseX_Full (1 << 15) 567#define SUPPORTED_2500baseX_Full (1 << 15)
568#define SUPPORTED_Backplane (1 << 16)
569#define SUPPORTED_1000baseKX_Full (1 << 17)
570#define SUPPORTED_10000baseKX4_Full (1 << 18)
571#define SUPPORTED_10000baseKR_Full (1 << 19)
572#define SUPPORTED_10000baseR_FEC (1 << 20)
566 573
567/* Indicates what features are advertised by the interface. */ 574/* Indicates what features are advertised by the interface. */
568#define ADVERTISED_10baseT_Half (1 << 0) 575#define ADVERTISED_10baseT_Half (1 << 0)
@@ -581,6 +588,11 @@ struct ethtool_ops {
581#define ADVERTISED_Pause (1 << 13) 588#define ADVERTISED_Pause (1 << 13)
582#define ADVERTISED_Asym_Pause (1 << 14) 589#define ADVERTISED_Asym_Pause (1 << 14)
583#define ADVERTISED_2500baseX_Full (1 << 15) 590#define ADVERTISED_2500baseX_Full (1 << 15)
591#define ADVERTISED_Backplane (1 << 16)
592#define ADVERTISED_1000baseKX_Full (1 << 17)
593#define ADVERTISED_10000baseKX4_Full (1 << 18)
594#define ADVERTISED_10000baseKR_Full (1 << 19)
595#define ADVERTISED_10000baseR_FEC (1 << 20)
584 596
585/* The following are all involved in forcing a particular link 597/* The following are all involved in forcing a particular link
586 * mode for the device for setting things. When getting the 598 * mode for the device for setting things. When getting the
@@ -605,6 +617,7 @@ struct ethtool_ops {
605#define PORT_MII 0x02 617#define PORT_MII 0x02
606#define PORT_FIBRE 0x03 618#define PORT_FIBRE 0x03
607#define PORT_BNC 0x04 619#define PORT_BNC 0x04
620#define PORT_OTHER 0xff
608 621
609/* Which transceiver to use. */ 622/* Which transceiver to use. */
610#define XCVR_INTERNAL 0x00 623#define XCVR_INTERNAL 0x00
diff --git a/include/linux/fs_enet_pd.h b/include/linux/fs_enet_pd.h
index 8300cab30f9a..51b793466ff3 100644
--- a/include/linux/fs_enet_pd.h
+++ b/include/linux/fs_enet_pd.h
@@ -17,6 +17,7 @@
17#define FS_ENET_PD_H 17#define FS_ENET_PD_H
18 18
19#include <linux/string.h> 19#include <linux/string.h>
20#include <linux/of_mdio.h>
20#include <asm/types.h> 21#include <asm/types.h>
21 22
22#define FS_ENET_NAME "fs_enet" 23#define FS_ENET_NAME "fs_enet"
@@ -130,10 +131,7 @@ struct fs_platform_info {
130 131
131 u32 device_flags; 132 u32 device_flags;
132 133
133 int phy_addr; /* the phy address (-1 no phy) */ 134 struct device_node *phy_node;
134 char bus_id[16];
135 int phy_irq; /* the phy irq (if it exists) */
136
137 const struct fs_mii_bus_info *bus_info; 135 const struct fs_mii_bus_info *bus_info;
138 136
139 int rx_ring, tx_ring; /* number of buffers on rx */ 137 int rx_ring, tx_ring; /* number of buffers on rx */
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index 4b501b48ce86..05c29c01174c 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -540,10 +540,10 @@ struct ieee80211_tim_ie {
540 u8 dtim_period; 540 u8 dtim_period;
541 u8 bitmap_ctrl; 541 u8 bitmap_ctrl;
542 /* variable size: 1 - 251 bytes */ 542 /* variable size: 1 - 251 bytes */
543 u8 virtual_map[0]; 543 u8 virtual_map[1];
544} __attribute__ ((packed)); 544} __attribute__ ((packed));
545 545
546#define WLAN_SA_QUERY_TR_ID_LEN 16 546#define WLAN_SA_QUERY_TR_ID_LEN 2
547 547
548struct ieee80211_mgmt { 548struct ieee80211_mgmt {
549 __le16 frame_control; 549 __le16 frame_control;
@@ -1068,8 +1068,12 @@ enum ieee80211_category {
1068 WLAN_CATEGORY_DLS = 2, 1068 WLAN_CATEGORY_DLS = 2,
1069 WLAN_CATEGORY_BACK = 3, 1069 WLAN_CATEGORY_BACK = 3,
1070 WLAN_CATEGORY_PUBLIC = 4, 1070 WLAN_CATEGORY_PUBLIC = 4,
1071 WLAN_CATEGORY_HT = 7,
1071 WLAN_CATEGORY_SA_QUERY = 8, 1072 WLAN_CATEGORY_SA_QUERY = 8,
1073 WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9,
1072 WLAN_CATEGORY_WMM = 17, 1074 WLAN_CATEGORY_WMM = 17,
1075 WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
1076 WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
1073}; 1077};
1074 1078
1075/* SPECTRUM_MGMT action code */ 1079/* SPECTRUM_MGMT action code */
@@ -1261,7 +1265,9 @@ static inline bool ieee80211_is_robust_mgmt_frame(struct ieee80211_hdr *hdr)
1261 if (ieee80211_has_protected(hdr->frame_control)) 1265 if (ieee80211_has_protected(hdr->frame_control))
1262 return true; 1266 return true;
1263 category = ((u8 *) hdr) + 24; 1267 category = ((u8 *) hdr) + 24;
1264 return *category != WLAN_CATEGORY_PUBLIC; 1268 return *category != WLAN_CATEGORY_PUBLIC &&
1269 *category != WLAN_CATEGORY_HT &&
1270 *category != WLAN_CATEGORY_VENDOR_SPECIFIC;
1265 } 1271 }
1266 1272
1267 return false; 1273 return false;
@@ -1383,4 +1389,43 @@ static inline int ieee80211_freq_to_ofdm_chan(int s_freq, int freq)
1383 return -1; 1389 return -1;
1384} 1390}
1385 1391
1392/**
1393 * ieee80211_tu_to_usec - convert time units (TU) to microseconds
1394 * @tu: the TUs
1395 */
1396static inline unsigned long ieee80211_tu_to_usec(unsigned long tu)
1397{
1398 return 1024 * tu;
1399}
1400
1401/**
1402 * ieee80211_check_tim - check if AID bit is set in TIM
1403 * @tim: the TIM IE
1404 * @tim_len: length of the TIM IE
1405 * @aid: the AID to look for
1406 */
1407static inline bool ieee80211_check_tim(struct ieee80211_tim_ie *tim,
1408 u8 tim_len, u16 aid)
1409{
1410 u8 mask;
1411 u8 index, indexn1, indexn2;
1412
1413 if (unlikely(!tim || tim_len < sizeof(*tim)))
1414 return false;
1415
1416 aid &= 0x3fff;
1417 index = aid / 8;
1418 mask = 1 << (aid & 7);
1419
1420 indexn1 = tim->bitmap_ctrl & 0xfe;
1421 indexn2 = tim_len + indexn1 - 4;
1422
1423 if (index < indexn1 || index > indexn2)
1424 return false;
1425
1426 index -= indexn1;
1427
1428 return !!(tim->virtual_map[index] & mask);
1429}
1430
1386#endif /* LINUX_IEEE80211_H */ 1431#endif /* LINUX_IEEE80211_H */
diff --git a/include/linux/if_tun.h b/include/linux/if_tun.h
index 049d6c9428db..915ba5789f0e 100644
--- a/include/linux/if_tun.h
+++ b/include/linux/if_tun.h
@@ -55,6 +55,7 @@
55#define IFF_NO_PI 0x1000 55#define IFF_NO_PI 0x1000
56#define IFF_ONE_QUEUE 0x2000 56#define IFF_ONE_QUEUE 0x2000
57#define IFF_VNET_HDR 0x4000 57#define IFF_VNET_HDR 0x4000
58#define IFF_TUN_EXCL 0x8000
58 59
59/* Features for GSO (TUNSETOFFLOAD). */ 60/* Features for GSO (TUNSETOFFLOAD). */
60#define TUN_F_CSUM 0x01 /* You can hand me unchecksummed packets. */ 61#define TUN_F_CSUM 0x01 /* You can hand me unchecksummed packets. */
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
index e1ff5b14310e..7ff9af1d0f05 100644
--- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h
@@ -118,8 +118,7 @@ extern int vlan_hwaccel_do_receive(struct sk_buff *skb);
118extern int vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp, 118extern int vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp,
119 unsigned int vlan_tci, struct sk_buff *skb); 119 unsigned int vlan_tci, struct sk_buff *skb);
120extern int vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp, 120extern int vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp,
121 unsigned int vlan_tci, 121 unsigned int vlan_tci);
122 struct napi_gro_fraginfo *info);
123 122
124#else 123#else
125static inline struct net_device *vlan_dev_real_dev(const struct net_device *dev) 124static 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,
154} 153}
155 154
156static inline int vlan_gro_frags(struct napi_struct *napi, 155static inline int vlan_gro_frags(struct napi_struct *napi,
157 struct vlan_group *grp, unsigned int vlan_tci, 156 struct vlan_group *grp, unsigned int vlan_tci)
158 struct napi_gro_fraginfo *info)
159{ 157{
160 return NET_RX_DROP; 158 return NET_RX_DROP;
161} 159}
diff --git a/include/linux/mdio.h b/include/linux/mdio.h
new file mode 100644
index 000000000000..56851646529a
--- /dev/null
+++ b/include/linux/mdio.h
@@ -0,0 +1,347 @@
1/*
2 * linux/mdio.h: definitions for MDIO (clause 45) transceivers
3 * Copyright 2006-2009 Solarflare Communications Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 as published
7 * by the Free Software Foundation, incorporated herein by reference.
8 */
9
10#ifndef __LINUX_MDIO_H__
11#define __LINUX_MDIO_H__
12
13#include <linux/mii.h>
14
15/* MDIO Manageable Devices (MMDs). */
16#define MDIO_MMD_PMAPMD 1 /* Physical Medium Attachment/
17 * Physical Medium Dependent */
18#define MDIO_MMD_WIS 2 /* WAN Interface Sublayer */
19#define MDIO_MMD_PCS 3 /* Physical Coding Sublayer */
20#define MDIO_MMD_PHYXS 4 /* PHY Extender Sublayer */
21#define MDIO_MMD_DTEXS 5 /* DTE Extender Sublayer */
22#define MDIO_MMD_TC 6 /* Transmission Convergence */
23#define MDIO_MMD_AN 7 /* Auto-Negotiation */
24#define MDIO_MMD_C22EXT 29 /* Clause 22 extension */
25#define MDIO_MMD_VEND1 30 /* Vendor specific 1 */
26#define MDIO_MMD_VEND2 31 /* Vendor specific 2 */
27
28/* Generic MDIO registers. */
29#define MDIO_CTRL1 MII_BMCR
30#define MDIO_STAT1 MII_BMSR
31#define MDIO_DEVID1 MII_PHYSID1
32#define MDIO_DEVID2 MII_PHYSID2
33#define MDIO_SPEED 4 /* Speed ability */
34#define MDIO_DEVS1 5 /* Devices in package */
35#define MDIO_DEVS2 6
36#define MDIO_CTRL2 7 /* 10G control 2 */
37#define MDIO_STAT2 8 /* 10G status 2 */
38#define MDIO_PMA_TXDIS 9 /* 10G PMA/PMD transmit disable */
39#define MDIO_PMA_RXDET 10 /* 10G PMA/PMD receive signal detect */
40#define MDIO_PMA_EXTABLE 11 /* 10G PMA/PMD extended ability */
41#define MDIO_PKGID1 14 /* Package identifier */
42#define MDIO_PKGID2 15
43#define MDIO_AN_ADVERTISE 16 /* AN advertising (base page) */
44#define MDIO_AN_LPA 19 /* AN LP abilities (base page) */
45#define MDIO_PHYXS_LNSTAT 24 /* PHY XGXS lane state */
46
47/* Media-dependent registers. */
48#define MDIO_PMA_10GBT_TXPWR 131 /* 10GBASE-T TX power control */
49#define MDIO_PMA_10GBT_SNR 133 /* 10GBASE-T SNR margin, lane A.
50 * Lanes B-D are numbered 134-136. */
51#define MDIO_PMA_10GBR_FECABLE 170 /* 10GBASE-R FEC ability */
52#define MDIO_PCS_10GBX_STAT1 24 /* 10GBASE-X PCS status 1 */
53#define MDIO_PCS_10GBRT_STAT1 32 /* 10GBASE-R/-T PCS status 1 */
54#define MDIO_PCS_10GBRT_STAT2 33 /* 10GBASE-R/-T PCS status 2 */
55#define MDIO_AN_10GBT_CTRL 32 /* 10GBASE-T auto-negotiation control */
56#define MDIO_AN_10GBT_STAT 33 /* 10GBASE-T auto-negotiation status */
57
58/* LASI (Link Alarm Status Interrupt) registers, defined by XENPAK MSA. */
59#define MDIO_PMA_LASI_RXCTRL 0x9000 /* RX_ALARM control */
60#define MDIO_PMA_LASI_TXCTRL 0x9001 /* TX_ALARM control */
61#define MDIO_PMA_LASI_CTRL 0x9002 /* LASI control */
62#define MDIO_PMA_LASI_RXSTAT 0x9003 /* RX_ALARM status */
63#define MDIO_PMA_LASI_TXSTAT 0x9004 /* TX_ALARM status */
64#define MDIO_PMA_LASI_STAT 0x9005 /* LASI status */
65
66/* Control register 1. */
67/* Enable extended speed selection */
68#define MDIO_CTRL1_SPEEDSELEXT (BMCR_SPEED1000 | BMCR_SPEED100)
69/* All speed selection bits */
70#define MDIO_CTRL1_SPEEDSEL (MDIO_CTRL1_SPEEDSELEXT | 0x003c)
71#define MDIO_CTRL1_FULLDPLX BMCR_FULLDPLX
72#define MDIO_CTRL1_LPOWER BMCR_PDOWN
73#define MDIO_CTRL1_RESET BMCR_RESET
74#define MDIO_PMA_CTRL1_LOOPBACK 0x0001
75#define MDIO_PMA_CTRL1_SPEED1000 BMCR_SPEED1000
76#define MDIO_PMA_CTRL1_SPEED100 BMCR_SPEED100
77#define MDIO_PCS_CTRL1_LOOPBACK BMCR_LOOPBACK
78#define MDIO_PHYXS_CTRL1_LOOPBACK BMCR_LOOPBACK
79#define MDIO_AN_CTRL1_RESTART BMCR_ANRESTART
80#define MDIO_AN_CTRL1_ENABLE BMCR_ANENABLE
81#define MDIO_AN_CTRL1_XNP 0x2000 /* Enable extended next page */
82
83/* 10 Gb/s */
84#define MDIO_CTRL1_SPEED10G (MDIO_CTRL1_SPEEDSELEXT | 0x00)
85/* 10PASS-TS/2BASE-TL */
86#define MDIO_CTRL1_SPEED10P2B (MDIO_CTRL1_SPEEDSELEXT | 0x04)
87
88/* Status register 1. */
89#define MDIO_STAT1_LPOWERABLE 0x0002 /* Low-power ability */
90#define MDIO_STAT1_LSTATUS BMSR_LSTATUS
91#define MDIO_STAT1_FAULT 0x0080 /* Fault */
92#define MDIO_AN_STAT1_LPABLE 0x0001 /* Link partner AN ability */
93#define MDIO_AN_STAT1_ABLE BMSR_ANEGCAPABLE
94#define MDIO_AN_STAT1_RFAULT BMSR_RFAULT
95#define MDIO_AN_STAT1_COMPLETE BMSR_ANEGCOMPLETE
96#define MDIO_AN_STAT1_PAGE 0x0040 /* Page received */
97#define MDIO_AN_STAT1_XNP 0x0080 /* Extended next page status */
98
99/* Speed register. */
100#define MDIO_SPEED_10G 0x0001 /* 10G capable */
101#define MDIO_PMA_SPEED_2B 0x0002 /* 2BASE-TL capable */
102#define MDIO_PMA_SPEED_10P 0x0004 /* 10PASS-TS capable */
103#define MDIO_PMA_SPEED_1000 0x0010 /* 1000M capable */
104#define MDIO_PMA_SPEED_100 0x0020 /* 100M capable */
105#define MDIO_PMA_SPEED_10 0x0040 /* 10M capable */
106#define MDIO_PCS_SPEED_10P2B 0x0002 /* 10PASS-TS/2BASE-TL capable */
107
108/* Device present registers. */
109#define MDIO_DEVS_PRESENT(devad) (1 << (devad))
110#define MDIO_DEVS_PMAPMD MDIO_DEVS_PRESENT(MDIO_MMD_PMAPMD)
111#define MDIO_DEVS_WIS MDIO_DEVS_PRESENT(MDIO_MMD_WIS)
112#define MDIO_DEVS_PCS MDIO_DEVS_PRESENT(MDIO_MMD_PCS)
113#define MDIO_DEVS_PHYXS MDIO_DEVS_PRESENT(MDIO_MMD_PHYXS)
114#define MDIO_DEVS_DTEXS MDIO_DEVS_PRESENT(MDIO_MMD_DTEXS)
115#define MDIO_DEVS_TC MDIO_DEVS_PRESENT(MDIO_MMD_TC)
116#define MDIO_DEVS_AN MDIO_DEVS_PRESENT(MDIO_MMD_AN)
117#define MDIO_DEVS_C22EXT MDIO_DEVS_PRESENT(MDIO_MMD_C22EXT)
118
119/* Control register 2. */
120#define MDIO_PMA_CTRL2_TYPE 0x000f /* PMA/PMD type selection */
121#define MDIO_PMA_CTRL2_10GBCX4 0x0000 /* 10GBASE-CX4 type */
122#define MDIO_PMA_CTRL2_10GBEW 0x0001 /* 10GBASE-EW type */
123#define MDIO_PMA_CTRL2_10GBLW 0x0002 /* 10GBASE-LW type */
124#define MDIO_PMA_CTRL2_10GBSW 0x0003 /* 10GBASE-SW type */
125#define MDIO_PMA_CTRL2_10GBLX4 0x0004 /* 10GBASE-LX4 type */
126#define MDIO_PMA_CTRL2_10GBER 0x0005 /* 10GBASE-ER type */
127#define MDIO_PMA_CTRL2_10GBLR 0x0006 /* 10GBASE-LR type */
128#define MDIO_PMA_CTRL2_10GBSR 0x0007 /* 10GBASE-SR type */
129#define MDIO_PMA_CTRL2_10GBLRM 0x0008 /* 10GBASE-LRM type */
130#define MDIO_PMA_CTRL2_10GBT 0x0009 /* 10GBASE-T type */
131#define MDIO_PMA_CTRL2_10GBKX4 0x000a /* 10GBASE-KX4 type */
132#define MDIO_PMA_CTRL2_10GBKR 0x000b /* 10GBASE-KR type */
133#define MDIO_PMA_CTRL2_1000BT 0x000c /* 1000BASE-T type */
134#define MDIO_PMA_CTRL2_1000BKX 0x000d /* 1000BASE-KX type */
135#define MDIO_PMA_CTRL2_100BTX 0x000e /* 100BASE-TX type */
136#define MDIO_PMA_CTRL2_10BT 0x000f /* 10BASE-T type */
137#define MDIO_PCS_CTRL2_TYPE 0x0003 /* PCS type selection */
138#define MDIO_PCS_CTRL2_10GBR 0x0000 /* 10GBASE-R type */
139#define MDIO_PCS_CTRL2_10GBX 0x0001 /* 10GBASE-X type */
140#define MDIO_PCS_CTRL2_10GBW 0x0002 /* 10GBASE-W type */
141#define MDIO_PCS_CTRL2_10GBT 0x0003 /* 10GBASE-T type */
142
143/* Status register 2. */
144#define MDIO_STAT2_RXFAULT 0x0400 /* Receive fault */
145#define MDIO_STAT2_TXFAULT 0x0800 /* Transmit fault */
146#define MDIO_STAT2_DEVPRST 0xc000 /* Device present */
147#define MDIO_STAT2_DEVPRST_VAL 0x8000 /* Device present value */
148#define MDIO_PMA_STAT2_LBABLE 0x0001 /* PMA loopback ability */
149#define MDIO_PMA_STAT2_10GBEW 0x0002 /* 10GBASE-EW ability */
150#define MDIO_PMA_STAT2_10GBLW 0x0004 /* 10GBASE-LW ability */
151#define MDIO_PMA_STAT2_10GBSW 0x0008 /* 10GBASE-SW ability */
152#define MDIO_PMA_STAT2_10GBLX4 0x0010 /* 10GBASE-LX4 ability */
153#define MDIO_PMA_STAT2_10GBER 0x0020 /* 10GBASE-ER ability */
154#define MDIO_PMA_STAT2_10GBLR 0x0040 /* 10GBASE-LR ability */
155#define MDIO_PMA_STAT2_10GBSR 0x0080 /* 10GBASE-SR ability */
156#define MDIO_PMD_STAT2_TXDISAB 0x0100 /* PMD TX disable ability */
157#define MDIO_PMA_STAT2_EXTABLE 0x0200 /* Extended abilities */
158#define MDIO_PMA_STAT2_RXFLTABLE 0x1000 /* Receive fault ability */
159#define MDIO_PMA_STAT2_TXFLTABLE 0x2000 /* Transmit fault ability */
160#define MDIO_PCS_STAT2_10GBR 0x0001 /* 10GBASE-R capable */
161#define MDIO_PCS_STAT2_10GBX 0x0002 /* 10GBASE-X capable */
162#define MDIO_PCS_STAT2_10GBW 0x0004 /* 10GBASE-W capable */
163#define MDIO_PCS_STAT2_RXFLTABLE 0x1000 /* Receive fault ability */
164#define MDIO_PCS_STAT2_TXFLTABLE 0x2000 /* Transmit fault ability */
165
166/* Transmit disable register. */
167#define MDIO_PMD_TXDIS_GLOBAL 0x0001 /* Global PMD TX disable */
168#define MDIO_PMD_TXDIS_0 0x0002 /* PMD TX disable 0 */
169#define MDIO_PMD_TXDIS_1 0x0004 /* PMD TX disable 1 */
170#define MDIO_PMD_TXDIS_2 0x0008 /* PMD TX disable 2 */
171#define MDIO_PMD_TXDIS_3 0x0010 /* PMD TX disable 3 */
172
173/* Receive signal detect register. */
174#define MDIO_PMD_RXDET_GLOBAL 0x0001 /* Global PMD RX signal detect */
175#define MDIO_PMD_RXDET_0 0x0002 /* PMD RX signal detect 0 */
176#define MDIO_PMD_RXDET_1 0x0004 /* PMD RX signal detect 1 */
177#define MDIO_PMD_RXDET_2 0x0008 /* PMD RX signal detect 2 */
178#define MDIO_PMD_RXDET_3 0x0010 /* PMD RX signal detect 3 */
179
180/* Extended abilities register. */
181#define MDIO_PMA_EXTABLE_10GCX4 0x0001 /* 10GBASE-CX4 ability */
182#define MDIO_PMA_EXTABLE_10GBLRM 0x0002 /* 10GBASE-LRM ability */
183#define MDIO_PMA_EXTABLE_10GBT 0x0004 /* 10GBASE-T ability */
184#define MDIO_PMA_EXTABLE_10GBKX4 0x0008 /* 10GBASE-KX4 ability */
185#define MDIO_PMA_EXTABLE_10GBKR 0x0010 /* 10GBASE-KR ability */
186#define MDIO_PMA_EXTABLE_1000BT 0x0020 /* 1000BASE-T ability */
187#define MDIO_PMA_EXTABLE_1000BKX 0x0040 /* 1000BASE-KX ability */
188#define MDIO_PMA_EXTABLE_100BTX 0x0080 /* 100BASE-TX ability */
189#define MDIO_PMA_EXTABLE_10BT 0x0100 /* 10BASE-T ability */
190
191/* PHY XGXS lane state register. */
192#define MDIO_PHYXS_LNSTAT_SYNC0 0x0001
193#define MDIO_PHYXS_LNSTAT_SYNC1 0x0002
194#define MDIO_PHYXS_LNSTAT_SYNC2 0x0004
195#define MDIO_PHYXS_LNSTAT_SYNC3 0x0008
196#define MDIO_PHYXS_LNSTAT_ALIGN 0x1000
197
198/* PMA 10GBASE-T TX power register. */
199#define MDIO_PMA_10GBT_TXPWR_SHORT 0x0001 /* Short-reach mode */
200
201/* PMA 10GBASE-T SNR registers. */
202/* Value is SNR margin in dB, clamped to range [-127, 127], plus 0x8000. */
203#define MDIO_PMA_10GBT_SNR_BIAS 0x8000
204#define MDIO_PMA_10GBT_SNR_MAX 127
205
206/* PMA 10GBASE-R FEC ability register. */
207#define MDIO_PMA_10GBR_FECABLE_ABLE 0x0001 /* FEC ability */
208#define MDIO_PMA_10GBR_FECABLE_ERRABLE 0x0002 /* FEC error indic. ability */
209
210/* PCS 10GBASE-R/-T status register 1. */
211#define MDIO_PCS_10GBRT_STAT1_BLKLK 0x0001 /* Block lock attained */
212
213/* PCS 10GBASE-R/-T status register 2. */
214#define MDIO_PCS_10GBRT_STAT2_ERR 0x00ff
215#define MDIO_PCS_10GBRT_STAT2_BER 0x3f00
216
217/* AN 10GBASE-T control register. */
218#define MDIO_AN_10GBT_CTRL_ADV10G 0x1000 /* Advertise 10GBASE-T */
219
220/* AN 10GBASE-T status register. */
221#define MDIO_AN_10GBT_STAT_LPTRR 0x0200 /* LP training reset req. */
222#define MDIO_AN_10GBT_STAT_LPLTABLE 0x0400 /* LP loop timing ability */
223#define MDIO_AN_10GBT_STAT_LP10G 0x0800 /* LP is 10GBT capable */
224#define MDIO_AN_10GBT_STAT_REMOK 0x1000 /* Remote OK */
225#define MDIO_AN_10GBT_STAT_LOCOK 0x2000 /* Local OK */
226#define MDIO_AN_10GBT_STAT_MS 0x4000 /* Master/slave config */
227#define MDIO_AN_10GBT_STAT_MSFLT 0x8000 /* Master/slave config fault */
228
229/* LASI RX_ALARM control/status registers. */
230#define MDIO_PMA_LASI_RX_PHYXSLFLT 0x0001 /* PHY XS RX local fault */
231#define MDIO_PMA_LASI_RX_PCSLFLT 0x0008 /* PCS RX local fault */
232#define MDIO_PMA_LASI_RX_PMALFLT 0x0010 /* PMA/PMD RX local fault */
233#define MDIO_PMA_LASI_RX_OPTICPOWERFLT 0x0020 /* RX optical power fault */
234#define MDIO_PMA_LASI_RX_WISLFLT 0x0200 /* WIS local fault */
235
236/* LASI TX_ALARM control/status registers. */
237#define MDIO_PMA_LASI_TX_PHYXSLFLT 0x0001 /* PHY XS TX local fault */
238#define MDIO_PMA_LASI_TX_PCSLFLT 0x0008 /* PCS TX local fault */
239#define MDIO_PMA_LASI_TX_PMALFLT 0x0010 /* PMA/PMD TX local fault */
240#define MDIO_PMA_LASI_TX_LASERPOWERFLT 0x0080 /* Laser output power fault */
241#define MDIO_PMA_LASI_TX_LASERTEMPFLT 0x0100 /* Laser temperature fault */
242#define MDIO_PMA_LASI_TX_LASERBICURRFLT 0x0200 /* Laser bias current fault */
243
244/* LASI control/status registers. */
245#define MDIO_PMA_LASI_LSALARM 0x0001 /* LS_ALARM enable/status */
246#define MDIO_PMA_LASI_TXALARM 0x0002 /* TX_ALARM enable/status */
247#define MDIO_PMA_LASI_RXALARM 0x0004 /* RX_ALARM enable/status */
248
249/* Mapping between MDIO PRTAD/DEVAD and mii_ioctl_data::phy_id */
250
251#define MDIO_PHY_ID_C45 0x8000
252#define MDIO_PHY_ID_PRTAD 0x03e0
253#define MDIO_PHY_ID_DEVAD 0x001f
254#define MDIO_PHY_ID_C45_MASK \
255 (MDIO_PHY_ID_C45 | MDIO_PHY_ID_PRTAD | MDIO_PHY_ID_DEVAD)
256
257static inline __u16 mdio_phy_id_c45(int prtad, int devad)
258{
259 return MDIO_PHY_ID_C45 | (prtad << 5) | devad;
260}
261
262static inline bool mdio_phy_id_is_c45(int phy_id)
263{
264 return (phy_id & MDIO_PHY_ID_C45) && !(phy_id & ~MDIO_PHY_ID_C45_MASK);
265}
266
267static inline __u16 mdio_phy_id_prtad(int phy_id)
268{
269 return (phy_id & MDIO_PHY_ID_PRTAD) >> 5;
270}
271
272static inline __u16 mdio_phy_id_devad(int phy_id)
273{
274 return phy_id & MDIO_PHY_ID_DEVAD;
275}
276
277#define MDIO_SUPPORTS_C22 1
278#define MDIO_SUPPORTS_C45 2
279
280#ifdef __KERNEL__
281
282/**
283 * struct mdio_if_info - Ethernet controller MDIO interface
284 * @prtad: PRTAD of the PHY (%MDIO_PRTAD_NONE if not present/unknown)
285 * @mmds: Mask of MMDs expected to be present in the PHY. This must be
286 * non-zero unless @prtad = %MDIO_PRTAD_NONE.
287 * @mode_support: MDIO modes supported. If %MDIO_SUPPORTS_C22 is set then
288 * MII register access will be passed through with @devad =
289 * %MDIO_DEVAD_NONE. If %MDIO_EMULATE_C22 is set then access to
290 * commonly used clause 22 registers will be translated into
291 * clause 45 registers.
292 * @dev: Net device structure
293 * @mdio_read: Register read function; returns value or negative error code
294 * @mdio_write: Register write function; returns 0 or negative error code
295 */
296struct mdio_if_info {
297 int prtad;
298 u32 __bitwise mmds;
299 unsigned mode_support;
300
301 struct net_device *dev;
302 int (*mdio_read)(struct net_device *dev, int prtad, int devad,
303 u16 addr);
304 int (*mdio_write)(struct net_device *dev, int prtad, int devad,
305 u16 addr, u16 val);
306};
307
308#define MDIO_PRTAD_NONE (-1)
309#define MDIO_DEVAD_NONE (-1)
310#define MDIO_EMULATE_C22 4
311
312struct ethtool_cmd;
313struct ethtool_pauseparam;
314extern int mdio45_probe(struct mdio_if_info *mdio, int prtad);
315extern int mdio_set_flag(const struct mdio_if_info *mdio,
316 int prtad, int devad, u16 addr, int mask,
317 bool sense);
318extern int mdio45_links_ok(const struct mdio_if_info *mdio, u32 mmds);
319extern int mdio45_nway_restart(const struct mdio_if_info *mdio);
320extern void mdio45_ethtool_gset_npage(const struct mdio_if_info *mdio,
321 struct ethtool_cmd *ecmd,
322 u32 npage_adv, u32 npage_lpa);
323extern void
324mdio45_ethtool_spauseparam_an(const struct mdio_if_info *mdio,
325 const struct ethtool_pauseparam *ecmd);
326
327/**
328 * mdio45_ethtool_gset - get settings for ETHTOOL_GSET
329 * @mdio: MDIO interface
330 * @ecmd: Ethtool request structure
331 *
332 * Since the CSRs for auto-negotiation using next pages are not fully
333 * standardised, this function does not attempt to decode them. Use
334 * mdio45_ethtool_gset_npage() to specify advertisement bits from next
335 * pages.
336 */
337static inline void mdio45_ethtool_gset(const struct mdio_if_info *mdio,
338 struct ethtool_cmd *ecmd)
339{
340 mdio45_ethtool_gset_npage(mdio, ecmd, 0, 0);
341}
342
343extern int mdio_mii_ioctl(const struct mdio_if_info *mdio,
344 struct mii_ioctl_data *mii_data, int cmd);
345
346#endif /* __KERNEL__ */
347#endif /* __LINUX_MDIO_H__ */
diff --git a/include/linux/mii.h b/include/linux/mii.h
index ad748588faf1..359fba880274 100644
--- a/include/linux/mii.h
+++ b/include/linux/mii.h
@@ -240,6 +240,22 @@ static inline unsigned int mii_duplex (unsigned int duplex_lock,
240} 240}
241 241
242/** 242/**
243 * mii_advertise_flowctrl - get flow control advertisement flags
244 * @cap: Flow control capabilities (FLOW_CTRL_RX, FLOW_CTRL_TX or both)
245 */
246static inline u16 mii_advertise_flowctrl(int cap)
247{
248 u16 adv = 0;
249
250 if (cap & FLOW_CTRL_RX)
251 adv = ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM;
252 if (cap & FLOW_CTRL_TX)
253 adv ^= ADVERTISE_PAUSE_ASYM;
254
255 return adv;
256}
257
258/**
243 * mii_resolve_flowctrl_fdx 259 * mii_resolve_flowctrl_fdx
244 * @lcladv: value of MII ADVERTISE register 260 * @lcladv: value of MII ADVERTISE register
245 * @rmtadv: value of MII LPA register 261 * @rmtadv: value of MII LPA register
@@ -250,18 +266,12 @@ static inline u8 mii_resolve_flowctrl_fdx(u16 lcladv, u16 rmtadv)
250{ 266{
251 u8 cap = 0; 267 u8 cap = 0;
252 268
253 if (lcladv & ADVERTISE_PAUSE_CAP) { 269 if (lcladv & rmtadv & ADVERTISE_PAUSE_CAP) {
254 if (lcladv & ADVERTISE_PAUSE_ASYM) { 270 cap = FLOW_CTRL_TX | FLOW_CTRL_RX;
255 if (rmtadv & LPA_PAUSE_CAP) 271 } else if (lcladv & rmtadv & ADVERTISE_PAUSE_ASYM) {
256 cap = FLOW_CTRL_TX | FLOW_CTRL_RX; 272 if (lcladv & ADVERTISE_PAUSE_CAP)
257 else if (rmtadv & LPA_PAUSE_ASYM) 273 cap = FLOW_CTRL_RX;
258 cap = FLOW_CTRL_RX; 274 else if (rmtadv & ADVERTISE_PAUSE_CAP)
259 } else {
260 if (rmtadv & LPA_PAUSE_CAP)
261 cap = FLOW_CTRL_TX | FLOW_CTRL_RX;
262 }
263 } else if (lcladv & ADVERTISE_PAUSE_ASYM) {
264 if ((rmtadv & LPA_PAUSE_CAP) && (rmtadv & LPA_PAUSE_ASYM))
265 cap = FLOW_CTRL_TX; 275 cap = FLOW_CTRL_TX;
266 } 276 }
267 277
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
index ea1bf5ba092f..c7211ab6dd4b 100644
--- a/include/linux/mmc/sdio_ids.h
+++ b/include/linux/mmc/sdio_ids.h
@@ -25,5 +25,7 @@
25 25
26#define SDIO_VENDOR_ID_MARVELL 0x02df 26#define SDIO_VENDOR_ID_MARVELL 0x02df
27#define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103 27#define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103
28#define SDIO_DEVICE_ID_MARVELL_8688WLAN 0x9104
29#define SDIO_DEVICE_ID_MARVELL_8688BT 0x9105
28 30
29#endif 31#endif
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 5a96a1a406e9..f8574e76b743 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -39,9 +39,11 @@
39 39
40#include <linux/device.h> 40#include <linux/device.h>
41#include <linux/percpu.h> 41#include <linux/percpu.h>
42#include <linux/rculist.h>
42#include <linux/dmaengine.h> 43#include <linux/dmaengine.h>
43#include <linux/workqueue.h> 44#include <linux/workqueue.h>
44 45
46#include <linux/ethtool.h>
45#include <net/net_namespace.h> 47#include <net/net_namespace.h>
46#include <net/dsa.h> 48#include <net/dsa.h>
47#ifdef CONFIG_DCB 49#ifdef CONFIG_DCB
@@ -49,7 +51,6 @@
49#endif 51#endif
50 52
51struct vlan_group; 53struct vlan_group;
52struct ethtool_ops;
53struct netpoll_info; 54struct netpoll_info;
54/* 802.11 specific */ 55/* 802.11 specific */
55struct wireless_dev; 56struct wireless_dev;
@@ -210,6 +211,16 @@ struct dev_addr_list
210#define dmi_users da_users 211#define dmi_users da_users
211#define dmi_gusers da_gusers 212#define dmi_gusers da_gusers
212 213
214struct netdev_hw_addr {
215 struct list_head list;
216 unsigned char addr[MAX_ADDR_LEN];
217 unsigned char type;
218#define NETDEV_HW_ADDR_T_LAN 1
219#define NETDEV_HW_ADDR_T_SAN 2
220#define NETDEV_HW_ADDR_T_SLAVE 3
221 struct rcu_head rcu_head;
222};
223
213struct hh_cache 224struct hh_cache
214{ 225{
215 struct hh_cache *hh_next; /* Next entry */ 226 struct hh_cache *hh_next; /* Next entry */
@@ -447,12 +458,25 @@ enum netdev_queue_state_t
447}; 458};
448 459
449struct netdev_queue { 460struct netdev_queue {
461/*
462 * read mostly part
463 */
450 struct net_device *dev; 464 struct net_device *dev;
451 struct Qdisc *qdisc; 465 struct Qdisc *qdisc;
452 unsigned long state; 466 unsigned long state;
453 spinlock_t _xmit_lock;
454 int xmit_lock_owner;
455 struct Qdisc *qdisc_sleeping; 467 struct Qdisc *qdisc_sleeping;
468/*
469 * write mostly part
470 */
471 spinlock_t _xmit_lock ____cacheline_aligned_in_smp;
472 int xmit_lock_owner;
473 /*
474 * please use this field instead of dev->trans_start
475 */
476 unsigned long trans_start;
477 unsigned long tx_bytes;
478 unsigned long tx_packets;
479 unsigned long tx_dropped;
456} ____cacheline_aligned_in_smp; 480} ____cacheline_aligned_in_smp;
457 481
458 482
@@ -670,7 +694,9 @@ struct net_device
670#define NETIF_F_GRO 16384 /* Generic receive offload */ 694#define NETIF_F_GRO 16384 /* Generic receive offload */
671#define NETIF_F_LRO 32768 /* large receive offload */ 695#define NETIF_F_LRO 32768 /* large receive offload */
672 696
697/* the GSO_MASK reserves bits 16 through 23 */
673#define NETIF_F_FCOE_CRC (1 << 24) /* FCoE CRC32 */ 698#define NETIF_F_FCOE_CRC (1 << 24) /* FCoE CRC32 */
699#define NETIF_F_SCTP_CSUM (1 << 25) /* SCTP checksum offload */
674 700
675 /* Segmentation offload features */ 701 /* Segmentation offload features */
676#define NETIF_F_GSO_SHIFT 16 702#define NETIF_F_GSO_SHIFT 16
@@ -776,8 +802,11 @@ struct net_device
776 */ 802 */
777 unsigned long last_rx; /* Time of last Rx */ 803 unsigned long last_rx; /* Time of last Rx */
778 /* Interface address info used in eth_type_trans() */ 804 /* Interface address info used in eth_type_trans() */
779 unsigned char dev_addr[MAX_ADDR_LEN]; /* hw address, (before bcast 805 unsigned char *dev_addr; /* hw address, (before bcast
780 because most packets are unicast) */ 806 because most packets are
807 unicast) */
808
809 struct list_head dev_addr_list; /* list of device hw addresses */
781 810
782 unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */ 811 unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */
783 812
@@ -797,6 +826,11 @@ struct net_device
797 * One part is mostly used on xmit path (device) 826 * One part is mostly used on xmit path (device)
798 */ 827 */
799 /* These may be needed for future network-power-down code. */ 828 /* These may be needed for future network-power-down code. */
829
830 /*
831 * trans_start here is expensive for high speed devices on SMP,
832 * please use netdev_queue->trans_start instead.
833 */
800 unsigned long trans_start; /* Time (in jiffies) of last Tx */ 834 unsigned long trans_start; /* Time (in jiffies) of last Tx */
801 835
802 int watchdog_timeo; /* used by dev_watchdog() */ 836 int watchdog_timeo; /* used by dev_watchdog() */
@@ -1047,14 +1081,6 @@ struct packet_type {
1047 struct list_head list; 1081 struct list_head list;
1048}; 1082};
1049 1083
1050struct napi_gro_fraginfo {
1051 skb_frag_t frags[MAX_SKB_FRAGS];
1052 unsigned int nr_frags;
1053 unsigned int ip_summed;
1054 unsigned int len;
1055 __wsum csum;
1056};
1057
1058#include <linux/interrupt.h> 1084#include <linux/interrupt.h>
1059#include <linux/notifier.h> 1085#include <linux/notifier.h>
1060 1086
@@ -1145,11 +1171,18 @@ static inline void skb_gro_reset_offset(struct sk_buff *skb)
1145 1171
1146static inline void *skb_gro_mac_header(struct sk_buff *skb) 1172static inline void *skb_gro_mac_header(struct sk_buff *skb)
1147{ 1173{
1148 return skb_mac_header(skb) < skb->data ? skb_mac_header(skb) : 1174 return skb_headlen(skb) ? skb_mac_header(skb) :
1149 page_address(skb_shinfo(skb)->frags[0].page) + 1175 page_address(skb_shinfo(skb)->frags[0].page) +
1150 skb_shinfo(skb)->frags[0].page_offset; 1176 skb_shinfo(skb)->frags[0].page_offset;
1151} 1177}
1152 1178
1179static inline void *skb_gro_network_header(struct sk_buff *skb)
1180{
1181 return skb_headlen(skb) ? skb_network_header(skb) :
1182 page_address(skb_shinfo(skb)->frags[0].page) +
1183 skb_shinfo(skb)->frags[0].page_offset + skb_network_offset(skb);
1184}
1185
1153static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev, 1186static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
1154 unsigned short type, 1187 unsigned short type,
1155 const void *daddr, const void *saddr, 1188 const void *daddr, const void *saddr,
@@ -1442,12 +1475,18 @@ extern int napi_gro_receive(struct napi_struct *napi,
1442 struct sk_buff *skb); 1475 struct sk_buff *skb);
1443extern void napi_reuse_skb(struct napi_struct *napi, 1476extern void napi_reuse_skb(struct napi_struct *napi,
1444 struct sk_buff *skb); 1477 struct sk_buff *skb);
1445extern struct sk_buff * napi_fraginfo_skb(struct napi_struct *napi, 1478extern struct sk_buff * napi_get_frags(struct napi_struct *napi);
1446 struct napi_gro_fraginfo *info);
1447extern int napi_frags_finish(struct napi_struct *napi, 1479extern int napi_frags_finish(struct napi_struct *napi,
1448 struct sk_buff *skb, int ret); 1480 struct sk_buff *skb, int ret);
1449extern int napi_gro_frags(struct napi_struct *napi, 1481extern struct sk_buff * napi_frags_skb(struct napi_struct *napi);
1450 struct napi_gro_fraginfo *info); 1482extern int napi_gro_frags(struct napi_struct *napi);
1483
1484static inline void napi_free_frags(struct napi_struct *napi)
1485{
1486 kfree_skb(napi->skb);
1487 napi->skb = NULL;
1488}
1489
1451extern void netif_nit_deliver(struct sk_buff *skb); 1490extern void netif_nit_deliver(struct sk_buff *skb);
1452extern int dev_valid_name(const char *name); 1491extern int dev_valid_name(const char *name);
1453extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *); 1492extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *);
@@ -1514,6 +1553,8 @@ static inline int netif_carrier_ok(const struct net_device *dev)
1514 return !test_bit(__LINK_STATE_NOCARRIER, &dev->state); 1553 return !test_bit(__LINK_STATE_NOCARRIER, &dev->state);
1515} 1554}
1516 1555
1556extern unsigned long dev_trans_start(struct net_device *dev);
1557
1517extern void __netdev_watchdog_up(struct net_device *dev); 1558extern void __netdev_watchdog_up(struct net_device *dev);
1518 1559
1519extern void netif_carrier_on(struct net_device *dev); 1560extern void netif_carrier_on(struct net_device *dev);
@@ -1778,6 +1819,13 @@ static inline void netif_addr_unlock_bh(struct net_device *dev)
1778 spin_unlock_bh(&dev->addr_list_lock); 1819 spin_unlock_bh(&dev->addr_list_lock);
1779} 1820}
1780 1821
1822/*
1823 * dev_addr_list walker. Should be used only for read access. Call with
1824 * rcu_read_lock held.
1825 */
1826#define for_each_dev_addr(dev, ha) \
1827 list_for_each_entry_rcu(ha, &dev->dev_addr_list, list)
1828
1781/* These functions live elsewhere (drivers/net/net_init.c, but related) */ 1829/* These functions live elsewhere (drivers/net/net_init.c, but related) */
1782 1830
1783extern void ether_setup(struct net_device *dev); 1831extern void ether_setup(struct net_device *dev);
@@ -1790,6 +1838,19 @@ extern struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
1790 alloc_netdev_mq(sizeof_priv, name, setup, 1) 1838 alloc_netdev_mq(sizeof_priv, name, setup, 1)
1791extern int register_netdev(struct net_device *dev); 1839extern int register_netdev(struct net_device *dev);
1792extern void unregister_netdev(struct net_device *dev); 1840extern void unregister_netdev(struct net_device *dev);
1841
1842/* Functions used for device addresses handling */
1843extern int dev_addr_add(struct net_device *dev, unsigned char *addr,
1844 unsigned char addr_type);
1845extern int dev_addr_del(struct net_device *dev, unsigned char *addr,
1846 unsigned char addr_type);
1847extern int dev_addr_add_multiple(struct net_device *to_dev,
1848 struct net_device *from_dev,
1849 unsigned char addr_type);
1850extern int dev_addr_del_multiple(struct net_device *to_dev,
1851 struct net_device *from_dev,
1852 unsigned char addr_type);
1853
1793/* Functions used for secondary unicast and multicast support */ 1854/* Functions used for secondary unicast and multicast support */
1794extern void dev_set_rx_mode(struct net_device *dev); 1855extern void dev_set_rx_mode(struct net_device *dev);
1795extern void __dev_set_rx_mode(struct net_device *dev); 1856extern void __dev_set_rx_mode(struct net_device *dev);
@@ -1908,6 +1969,28 @@ static inline int skb_bond_should_drop(struct sk_buff *skb)
1908} 1969}
1909 1970
1910extern struct pernet_operations __net_initdata loopback_net_ops; 1971extern struct pernet_operations __net_initdata loopback_net_ops;
1972
1973static inline int dev_ethtool_get_settings(struct net_device *dev,
1974 struct ethtool_cmd *cmd)
1975{
1976 if (!dev->ethtool_ops || !dev->ethtool_ops->get_settings)
1977 return -EOPNOTSUPP;
1978 return dev->ethtool_ops->get_settings(dev, cmd);
1979}
1980
1981static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev)
1982{
1983 if (!dev->ethtool_ops || !dev->ethtool_ops->get_rx_csum)
1984 return 0;
1985 return dev->ethtool_ops->get_rx_csum(dev);
1986}
1987
1988static inline u32 dev_ethtool_get_flags(struct net_device *dev)
1989{
1990 if (!dev->ethtool_ops || !dev->ethtool_ops->get_flags)
1991 return 0;
1992 return dev->ethtool_ops->get_flags(dev);
1993}
1911#endif /* __KERNEL__ */ 1994#endif /* __KERNEL__ */
1912 1995
1913#endif /* _LINUX_DEV_H */ 1996#endif /* _LINUX_DEV_H */
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index cbe8ce3bf486..dbea93b694e5 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -7,7 +7,7 @@
7 * Copyright 2008 Michael Wu <flamingice@sourmilk.net> 7 * Copyright 2008 Michael Wu <flamingice@sourmilk.net>
8 * Copyright 2008 Luis Carlos Cobo <luisca@cozybit.com> 8 * Copyright 2008 Luis Carlos Cobo <luisca@cozybit.com>
9 * Copyright 2008 Michael Buesch <mb@bu3sch.de> 9 * Copyright 2008 Michael Buesch <mb@bu3sch.de>
10 * Copyright 2008 Luis R. Rodriguez <lrodriguez@atheros.com> 10 * Copyright 2008, 2009 Luis R. Rodriguez <lrodriguez@atheros.com>
11 * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com> 11 * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>
12 * Copyright 2008 Colin McCabe <colin@cozybit.com> 12 * Copyright 2008 Colin McCabe <colin@cozybit.com>
13 * 13 *
@@ -25,6 +25,8 @@
25 * 25 *
26 */ 26 */
27 27
28#include <linux/types.h>
29
28/** 30/**
29 * DOC: Station handling 31 * DOC: Station handling
30 * 32 *
@@ -46,8 +48,10 @@
46 * to get a list of all present wiphys. 48 * to get a list of all present wiphys.
47 * @NL80211_CMD_SET_WIPHY: set wiphy parameters, needs %NL80211_ATTR_WIPHY or 49 * @NL80211_CMD_SET_WIPHY: set wiphy parameters, needs %NL80211_ATTR_WIPHY or
48 * %NL80211_ATTR_IFINDEX; can be used to set %NL80211_ATTR_WIPHY_NAME, 50 * %NL80211_ATTR_IFINDEX; can be used to set %NL80211_ATTR_WIPHY_NAME,
49 * %NL80211_ATTR_WIPHY_TXQ_PARAMS, %NL80211_ATTR_WIPHY_FREQ, and/or 51 * %NL80211_ATTR_WIPHY_TXQ_PARAMS, %NL80211_ATTR_WIPHY_FREQ,
50 * %NL80211_ATTR_WIPHY_CHANNEL_TYPE. 52 * %NL80211_ATTR_WIPHY_CHANNEL_TYPE, %NL80211_ATTR_WIPHY_RETRY_SHORT,
53 * %NL80211_ATTR_WIPHY_RETRY_LONG, %NL80211_ATTR_WIPHY_FRAG_THRESHOLD,
54 * and/or %NL80211_ATTR_WIPHY_RTS_THRESHOLD.
51 * @NL80211_CMD_NEW_WIPHY: Newly created wiphy, response to get request 55 * @NL80211_CMD_NEW_WIPHY: Newly created wiphy, response to get request
52 * or rename notification. Has attributes %NL80211_ATTR_WIPHY and 56 * or rename notification. Has attributes %NL80211_ATTR_WIPHY and
53 * %NL80211_ATTR_WIPHY_NAME. 57 * %NL80211_ATTR_WIPHY_NAME.
@@ -75,8 +79,8 @@
75 * @NL80211_CMD_SET_KEY: Set key attributes %NL80211_ATTR_KEY_DEFAULT, 79 * @NL80211_CMD_SET_KEY: Set key attributes %NL80211_ATTR_KEY_DEFAULT,
76 * %NL80211_ATTR_KEY_DEFAULT_MGMT, or %NL80211_ATTR_KEY_THRESHOLD. 80 * %NL80211_ATTR_KEY_DEFAULT_MGMT, or %NL80211_ATTR_KEY_THRESHOLD.
77 * @NL80211_CMD_NEW_KEY: add a key with given %NL80211_ATTR_KEY_DATA, 81 * @NL80211_CMD_NEW_KEY: add a key with given %NL80211_ATTR_KEY_DATA,
78 * %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC and %NL80211_ATTR_KEY_CIPHER 82 * %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC, %NL80211_ATTR_KEY_CIPHER,
79 * attributes. 83 * and %NL80211_ATTR_KEY_SEQ attributes.
80 * @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_IDX 84 * @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_IDX
81 * or %NL80211_ATTR_MAC. 85 * or %NL80211_ATTR_MAC.
82 * 86 *
@@ -166,6 +170,22 @@
166 * set (%NL80211_ATTR_REG_TYPE), if the type of regulatory domain is 170 * set (%NL80211_ATTR_REG_TYPE), if the type of regulatory domain is
167 * %NL80211_REG_TYPE_COUNTRY the alpha2 to which we have moved on 171 * %NL80211_REG_TYPE_COUNTRY the alpha2 to which we have moved on
168 * to (%NL80211_ATTR_REG_ALPHA2). 172 * to (%NL80211_ATTR_REG_ALPHA2).
173 * @NL80211_CMD_REG_BEACON_HINT: indicates to userspace that an AP beacon
174 * has been found while world roaming thus enabling active scan or
175 * any mode of operation that initiates TX (beacons) on a channel
176 * where we would not have been able to do either before. As an example
177 * if you are world roaming (regulatory domain set to world or if your
178 * driver is using a custom world roaming regulatory domain) and while
179 * doing a passive scan on the 5 GHz band you find an AP there (if not
180 * on a DFS channel) you will now be able to actively scan for that AP
181 * or use AP mode on your card on that same channel. Note that this will
182 * never be used for channels 1-11 on the 2 GHz band as they are always
183 * enabled world wide. This beacon hint is only sent if your device had
184 * either disabled active scanning or beaconing on a channel. We send to
185 * userspace the wiphy on which we removed a restriction from
186 * (%NL80211_ATTR_WIPHY) and the channel on which this occurred
187 * before (%NL80211_ATTR_FREQ_BEFORE) and after (%NL80211_ATTR_FREQ_AFTER)
188 * the beacon hint was processed.
169 * 189 *
170 * @NL80211_CMD_AUTHENTICATE: authentication request and notification. 190 * @NL80211_CMD_AUTHENTICATE: authentication request and notification.
171 * This command is used both as a command (request to authenticate) and 191 * This command is used both as a command (request to authenticate) and
@@ -185,8 +205,12 @@
185 * frame, i.e., it was for the local STA and was received in correct 205 * frame, i.e., it was for the local STA and was received in correct
186 * state. This is similar to MLME-AUTHENTICATE.confirm primitive in the 206 * state. This is similar to MLME-AUTHENTICATE.confirm primitive in the
187 * MLME SAP interface (kernel providing MLME, userspace SME). The 207 * MLME SAP interface (kernel providing MLME, userspace SME). The
188 * included NL80211_ATTR_FRAME attribute contains the management frame 208 * included %NL80211_ATTR_FRAME attribute contains the management frame
189 * (including both the header and frame body, but not FCS). 209 * (including both the header and frame body, but not FCS). This event is
210 * also used to indicate if the authentication attempt timed out. In that
211 * case the %NL80211_ATTR_FRAME attribute is replaced with a
212 * %NL80211_ATTR_TIMED_OUT flag (and %NL80211_ATTR_MAC to indicate which
213 * pending authentication timed out).
190 * @NL80211_CMD_ASSOCIATE: association request and notification; like 214 * @NL80211_CMD_ASSOCIATE: association request and notification; like
191 * NL80211_CMD_AUTHENTICATE but for Association and Reassociation 215 * NL80211_CMD_AUTHENTICATE but for Association and Reassociation
192 * (similar to MLME-ASSOCIATE.request, MLME-REASSOCIATE.request, 216 * (similar to MLME-ASSOCIATE.request, MLME-REASSOCIATE.request,
@@ -199,6 +223,25 @@
199 * NL80211_CMD_AUTHENTICATE but for Disassociation frames (similar to 223 * NL80211_CMD_AUTHENTICATE but for Disassociation frames (similar to
200 * MLME-DISASSOCIATE.request and MLME-DISASSOCIATE.indication primitives). 224 * MLME-DISASSOCIATE.request and MLME-DISASSOCIATE.indication primitives).
201 * 225 *
226 * @NL80211_CMD_MICHAEL_MIC_FAILURE: notification of a locally detected Michael
227 * MIC (part of TKIP) failure; sent on the "mlme" multicast group; the
228 * event includes %NL80211_ATTR_MAC to describe the source MAC address of
229 * the frame with invalid MIC, %NL80211_ATTR_KEY_TYPE to show the key
230 * type, %NL80211_ATTR_KEY_IDX to indicate the key identifier, and
231 * %NL80211_ATTR_KEY_SEQ to indicate the TSC value of the frame; this
232 * event matches with MLME-MICHAELMICFAILURE.indication() primitive
233 *
234 * @NL80211_CMD_JOIN_IBSS: Join a new IBSS -- given at least an SSID and a
235 * FREQ attribute (for the initial frequency if no peer can be found)
236 * and optionally a MAC (as BSSID) and FREQ_FIXED attribute if those
237 * should be fixed rather than automatically determined. Can only be
238 * executed on a network interface that is UP, and fixed BSSID/FREQ
239 * may be rejected. Another optional parameter is the beacon interval,
240 * given in the %NL80211_ATTR_BEACON_INTERVAL attribute, which if not
241 * given defaults to 100 TU (102.4ms).
242 * @NL80211_CMD_LEAVE_IBSS: Leave the IBSS -- no special arguments, the IBSS is
243 * determined by the network interface.
244 *
202 * @NL80211_CMD_MAX: highest used command number 245 * @NL80211_CMD_MAX: highest used command number
203 * @__NL80211_CMD_AFTER_LAST: internal use 246 * @__NL80211_CMD_AFTER_LAST: internal use
204 */ 247 */
@@ -260,6 +303,13 @@ enum nl80211_commands {
260 NL80211_CMD_DEAUTHENTICATE, 303 NL80211_CMD_DEAUTHENTICATE,
261 NL80211_CMD_DISASSOCIATE, 304 NL80211_CMD_DISASSOCIATE,
262 305
306 NL80211_CMD_MICHAEL_MIC_FAILURE,
307
308 NL80211_CMD_REG_BEACON_HINT,
309
310 NL80211_CMD_JOIN_IBSS,
311 NL80211_CMD_LEAVE_IBSS,
312
263 /* add new commands above here */ 313 /* add new commands above here */
264 314
265 /* used to define NL80211_CMD_MAX below */ 315 /* used to define NL80211_CMD_MAX below */
@@ -278,6 +328,7 @@ enum nl80211_commands {
278#define NL80211_CMD_ASSOCIATE NL80211_CMD_ASSOCIATE 328#define NL80211_CMD_ASSOCIATE NL80211_CMD_ASSOCIATE
279#define NL80211_CMD_DEAUTHENTICATE NL80211_CMD_DEAUTHENTICATE 329#define NL80211_CMD_DEAUTHENTICATE NL80211_CMD_DEAUTHENTICATE
280#define NL80211_CMD_DISASSOCIATE NL80211_CMD_DISASSOCIATE 330#define NL80211_CMD_DISASSOCIATE NL80211_CMD_DISASSOCIATE
331#define NL80211_CMD_REG_BEACON_HINT NL80211_CMD_REG_BEACON_HINT
281 332
282/** 333/**
283 * enum nl80211_attrs - nl80211 netlink attributes 334 * enum nl80211_attrs - nl80211 netlink attributes
@@ -296,6 +347,18 @@ enum nl80211_commands {
296 * NL80211_CHAN_HT20 = HT20 only 347 * NL80211_CHAN_HT20 = HT20 only
297 * NL80211_CHAN_HT40MINUS = secondary channel is below the primary channel 348 * NL80211_CHAN_HT40MINUS = secondary channel is below the primary channel
298 * NL80211_CHAN_HT40PLUS = secondary channel is above the primary channel 349 * NL80211_CHAN_HT40PLUS = secondary channel is above the primary channel
350 * @NL80211_ATTR_WIPHY_RETRY_SHORT: TX retry limit for frames whose length is
351 * less than or equal to the RTS threshold; allowed range: 1..255;
352 * dot11ShortRetryLimit; u8
353 * @NL80211_ATTR_WIPHY_RETRY_LONG: TX retry limit for frames whose length is
354 * greater than the RTS threshold; allowed range: 1..255;
355 * dot11ShortLongLimit; u8
356 * @NL80211_ATTR_WIPHY_FRAG_THRESHOLD: fragmentation threshold, i.e., maximum
357 * length in octets for frames; allowed range: 256..8000, disable
358 * fragmentation with (u32)-1; dot11FragmentationThreshold; u32
359 * @NL80211_ATTR_WIPHY_RTS_THRESHOLD: RTS threshold (TX frames with length
360 * larger than or equal to this use RTS/CTS handshake); allowed range:
361 * 0..65536, disable with (u32)-1; dot11RTSThreshold; u32
299 * 362 *
300 * @NL80211_ATTR_IFINDEX: network interface index of the device to operate on 363 * @NL80211_ATTR_IFINDEX: network interface index of the device to operate on
301 * @NL80211_ATTR_IFNAME: network interface name 364 * @NL80211_ATTR_IFNAME: network interface name
@@ -319,7 +382,7 @@ enum nl80211_commands {
319 * 382 *
320 * @NL80211_ATTR_STA_AID: Association ID for the station (u16) 383 * @NL80211_ATTR_STA_AID: Association ID for the station (u16)
321 * @NL80211_ATTR_STA_FLAGS: flags, nested element with NLA_FLAG attributes of 384 * @NL80211_ATTR_STA_FLAGS: flags, nested element with NLA_FLAG attributes of
322 * &enum nl80211_sta_flags. 385 * &enum nl80211_sta_flags (deprecated, use %NL80211_ATTR_STA_FLAGS2)
323 * @NL80211_ATTR_STA_LISTEN_INTERVAL: listen interval as defined by 386 * @NL80211_ATTR_STA_LISTEN_INTERVAL: listen interval as defined by
324 * IEEE 802.11 7.3.1.6 (u16). 387 * IEEE 802.11 7.3.1.6 (u16).
325 * @NL80211_ATTR_STA_SUPPORTED_RATES: supported rates, array of supported 388 * @NL80211_ATTR_STA_SUPPORTED_RATES: supported rates, array of supported
@@ -380,6 +443,8 @@ enum nl80211_commands {
380 * 443 *
381 * @NL80211_ATTR_MAX_NUM_SCAN_SSIDS: number of SSIDs you can scan with 444 * @NL80211_ATTR_MAX_NUM_SCAN_SSIDS: number of SSIDs you can scan with
382 * a single scan request, a wiphy attribute. 445 * a single scan request, a wiphy attribute.
446 * @NL80211_ATTR_MAX_SCAN_IE_LEN: maximum length of information elements
447 * that can be added to a scan request
383 * 448 *
384 * @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz) 449 * @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz)
385 * @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive 450 * @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive
@@ -408,6 +473,44 @@ enum nl80211_commands {
408 * @NL80211_ATTR_REASON_CODE: ReasonCode for %NL80211_CMD_DEAUTHENTICATE and 473 * @NL80211_ATTR_REASON_CODE: ReasonCode for %NL80211_CMD_DEAUTHENTICATE and
409 * %NL80211_CMD_DISASSOCIATE, u16 474 * %NL80211_CMD_DISASSOCIATE, u16
410 * 475 *
476 * @NL80211_ATTR_KEY_TYPE: Key Type, see &enum nl80211_key_type, represented as
477 * a u32
478 *
479 * @NL80211_ATTR_FREQ_BEFORE: A channel which has suffered a regulatory change
480 * due to considerations from a beacon hint. This attribute reflects
481 * the state of the channel _before_ the beacon hint processing. This
482 * attributes consists of a nested attribute containing
483 * NL80211_FREQUENCY_ATTR_*
484 * @NL80211_ATTR_FREQ_AFTER: A channel which has suffered a regulatory change
485 * due to considerations from a beacon hint. This attribute reflects
486 * the state of the channel _after_ the beacon hint processing. This
487 * attributes consists of a nested attribute containing
488 * NL80211_FREQUENCY_ATTR_*
489 *
490 * @NL80211_ATTR_CIPHER_SUITES: a set of u32 values indicating the supported
491 * cipher suites
492 *
493 * @NL80211_ATTR_FREQ_FIXED: a flag indicating the IBSS should not try to look
494 * for other networks on different channels
495 *
496 * @NL80211_ATTR_TIMED_OUT: a flag indicating than an operation timed out; this
497 * is used, e.g., with %NL80211_CMD_AUTHENTICATE event
498 *
499 * @NL80211_ATTR_USE_MFP: Whether management frame protection (IEEE 802.11w) is
500 * used for the association (&enum nl80211_mfp, represented as a u32);
501 * this attribute can be used
502 * with %NL80211_CMD_ASSOCIATE request
503 *
504 * @NL80211_ATTR_STA_FLAGS2: Attribute containing a
505 * &struct nl80211_sta_flag_update.
506 *
507 * @NL80211_ATTR_CONTROL_PORT: A flag indicating whether user space controls
508 * IEEE 802.1X port, i.e., sets/clears %NL80211_STA_FLAG_AUTHORIZED, in
509 * station mode. If the flag is included in %NL80211_CMD_ASSOCIATE
510 * request, the driver will assume that the port is unauthorized until
511 * authorized by user space. Otherwise, port is marked authorized by
512 * default in station mode.
513 *
411 * @NL80211_ATTR_MAX: highest attribute number currently defined 514 * @NL80211_ATTR_MAX: highest attribute number currently defined
412 * @__NL80211_ATTR_AFTER_LAST: internal use 515 * @__NL80211_ATTR_AFTER_LAST: internal use
413 */ 516 */
@@ -492,6 +595,30 @@ enum nl80211_attrs {
492 NL80211_ATTR_AUTH_TYPE, 595 NL80211_ATTR_AUTH_TYPE,
493 NL80211_ATTR_REASON_CODE, 596 NL80211_ATTR_REASON_CODE,
494 597
598 NL80211_ATTR_KEY_TYPE,
599
600 NL80211_ATTR_MAX_SCAN_IE_LEN,
601 NL80211_ATTR_CIPHER_SUITES,
602
603 NL80211_ATTR_FREQ_BEFORE,
604 NL80211_ATTR_FREQ_AFTER,
605
606 NL80211_ATTR_FREQ_FIXED,
607
608
609 NL80211_ATTR_WIPHY_RETRY_SHORT,
610 NL80211_ATTR_WIPHY_RETRY_LONG,
611 NL80211_ATTR_WIPHY_FRAG_THRESHOLD,
612 NL80211_ATTR_WIPHY_RTS_THRESHOLD,
613
614 NL80211_ATTR_TIMED_OUT,
615
616 NL80211_ATTR_USE_MFP,
617
618 NL80211_ATTR_STA_FLAGS2,
619
620 NL80211_ATTR_CONTROL_PORT,
621
495 /* add attributes here, update the policy in nl80211.c */ 622 /* add attributes here, update the policy in nl80211.c */
496 623
497 __NL80211_ATTR_AFTER_LAST, 624 __NL80211_ATTR_AFTER_LAST,
@@ -581,6 +708,18 @@ enum nl80211_sta_flags {
581}; 708};
582 709
583/** 710/**
711 * struct nl80211_sta_flag_update - station flags mask/set
712 * @mask: mask of station flags to set
713 * @set: which values to set them to
714 *
715 * Both mask and set contain bits as per &enum nl80211_sta_flags.
716 */
717struct nl80211_sta_flag_update {
718 __u32 mask;
719 __u32 set;
720} __attribute__((packed));
721
722/**
584 * enum nl80211_rate_info - bitrate information 723 * enum nl80211_rate_info - bitrate information
585 * 724 *
586 * These attribute types are used with %NL80211_STA_INFO_TXRATE 725 * These attribute types are used with %NL80211_STA_INFO_TXRATE
@@ -1062,4 +1201,27 @@ enum nl80211_auth_type {
1062 NL80211_AUTHTYPE_FT, 1201 NL80211_AUTHTYPE_FT,
1063 NL80211_AUTHTYPE_NETWORK_EAP, 1202 NL80211_AUTHTYPE_NETWORK_EAP,
1064}; 1203};
1204
1205/**
1206 * enum nl80211_key_type - Key Type
1207 * @NL80211_KEYTYPE_GROUP: Group (broadcast/multicast) key
1208 * @NL80211_KEYTYPE_PAIRWISE: Pairwise (unicast/individual) key
1209 * @NL80211_KEYTYPE_PEERKEY: PeerKey (DLS)
1210 */
1211enum nl80211_key_type {
1212 NL80211_KEYTYPE_GROUP,
1213 NL80211_KEYTYPE_PAIRWISE,
1214 NL80211_KEYTYPE_PEERKEY,
1215};
1216
1217/**
1218 * enum nl80211_mfp - Management frame protection state
1219 * @NL80211_MFP_NO: Management frame protection not used
1220 * @NL80211_MFP_REQUIRED: Management frame protection required
1221 */
1222enum nl80211_mfp {
1223 NL80211_MFP_NO,
1224 NL80211_MFP_REQUIRED,
1225};
1226
1065#endif /* __LINUX_NL80211_H */ 1227#endif /* __LINUX_NL80211_H */
diff --git a/include/linux/of.h b/include/linux/of.h
index 6a7efa242f5e..7be2d1043c16 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -77,6 +77,9 @@ extern int of_n_size_cells(struct device_node *np);
77extern const struct of_device_id *of_match_node( 77extern const struct of_device_id *of_match_node(
78 const struct of_device_id *matches, const struct device_node *node); 78 const struct of_device_id *matches, const struct device_node *node);
79extern int of_modalias_node(struct device_node *node, char *modalias, int len); 79extern int of_modalias_node(struct device_node *node, char *modalias, int len);
80extern struct device_node *of_parse_phandle(struct device_node *np,
81 const char *phandle_name,
82 int index);
80extern int of_parse_phandles_with_args(struct device_node *np, 83extern int of_parse_phandles_with_args(struct device_node *np,
81 const char *list_name, const char *cells_name, int index, 84 const char *list_name, const char *cells_name, int index,
82 struct device_node **out_node, const void **out_args); 85 struct device_node **out_node, const void **out_args);
diff --git a/include/linux/of_mdio.h b/include/linux/of_mdio.h
new file mode 100644
index 000000000000..c9663c690303
--- /dev/null
+++ b/include/linux/of_mdio.h
@@ -0,0 +1,22 @@
1/*
2 * OF helpers for the MDIO (Ethernet PHY) API
3 *
4 * Copyright (c) 2009 Secret Lab Technologies, Ltd.
5 *
6 * This file is released under the GPLv2
7 */
8
9#ifndef __LINUX_OF_MDIO_H
10#define __LINUX_OF_MDIO_H
11
12#include <linux/phy.h>
13#include <linux/of.h>
14
15extern int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np);
16extern struct phy_device *of_phy_find_device(struct device_node *phy_np);
17extern struct phy_device *of_phy_connect(struct net_device *dev,
18 struct device_node *phy_np,
19 void (*hndlr)(struct net_device *),
20 u32 flags, phy_interface_t iface);
21
22#endif /* __LINUX_OF_MDIO_H */
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 06ba90c211a5..3038ac25491f 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2313,6 +2313,8 @@
2313 2313
2314#define PCI_VENDOR_ID_QMI 0x1a32 2314#define PCI_VENDOR_ID_QMI 0x1a32
2315 2315
2316#define PCI_VENDOR_ID_AZWAVE 0x1a3b
2317
2316#define PCI_VENDOR_ID_TEKRAM 0x1de1 2318#define PCI_VENDOR_ID_TEKRAM 0x1de1
2317#define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29 2319#define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29
2318 2320
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 97e40cb6b588..c216e4e503b3 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -444,10 +444,16 @@ static inline int phy_write(struct phy_device *phydev, u16 regnum, u16 val)
444 444
445int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id); 445int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id);
446struct phy_device* get_phy_device(struct mii_bus *bus, int addr); 446struct phy_device* get_phy_device(struct mii_bus *bus, int addr);
447int phy_device_register(struct phy_device *phy);
447int phy_clear_interrupt(struct phy_device *phydev); 448int phy_clear_interrupt(struct phy_device *phydev);
448int phy_config_interrupt(struct phy_device *phydev, u32 interrupts); 449int phy_config_interrupt(struct phy_device *phydev, u32 interrupts);
450int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
451 u32 flags, phy_interface_t interface);
449struct phy_device * phy_attach(struct net_device *dev, 452struct phy_device * phy_attach(struct net_device *dev,
450 const char *bus_id, u32 flags, phy_interface_t interface); 453 const char *bus_id, u32 flags, phy_interface_t interface);
454int phy_connect_direct(struct net_device *dev, struct phy_device *phydev,
455 void (*handler)(struct net_device *), u32 flags,
456 phy_interface_t interface);
451struct phy_device * phy_connect(struct net_device *dev, const char *bus_id, 457struct phy_device * phy_connect(struct net_device *dev, const char *bus_id,
452 void (*handler)(struct net_device *), u32 flags, 458 void (*handler)(struct net_device *), u32 flags,
453 phy_interface_t interface); 459 phy_interface_t interface);
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h
index 164332cbb77c..de18ef227e00 100644
--- a/include/linux/rfkill.h
+++ b/include/linux/rfkill.h
@@ -52,23 +52,12 @@ enum rfkill_state {
52 RFKILL_STATE_MAX, /* marker for last valid state */ 52 RFKILL_STATE_MAX, /* marker for last valid state */
53}; 53};
54 54
55/*
56 * These are DEPRECATED, drivers using them should be verified to
57 * comply with the rfkill usage guidelines in Documentation/rfkill.txt
58 * and then converted to use the new names for rfkill_state
59 */
60#define RFKILL_STATE_OFF RFKILL_STATE_SOFT_BLOCKED
61#define RFKILL_STATE_ON RFKILL_STATE_UNBLOCKED
62
63/** 55/**
64 * struct rfkill - rfkill control structure. 56 * struct rfkill - rfkill control structure.
65 * @name: Name of the switch. 57 * @name: Name of the switch.
66 * @type: Radio type which the button controls, the value stored 58 * @type: Radio type which the button controls, the value stored
67 * here should be a value from enum rfkill_type. 59 * here should be a value from enum rfkill_type.
68 * @state: State of the switch, "UNBLOCKED" means radio can operate. 60 * @state: State of the switch, "UNBLOCKED" means radio can operate.
69 * @user_claim_unsupported: Whether the hardware supports exclusive
70 * RF-kill control by userspace. Set this before registering.
71 * @user_claim: Set when the switch is controlled exlusively by userspace.
72 * @mutex: Guards switch state transitions. It serializes callbacks 61 * @mutex: Guards switch state transitions. It serializes callbacks
73 * and also protects the state. 62 * and also protects the state.
74 * @data: Pointer to the RF button drivers private data which will be 63 * @data: Pointer to the RF button drivers private data which will be
@@ -91,9 +80,6 @@ struct rfkill {
91 const char *name; 80 const char *name;
92 enum rfkill_type type; 81 enum rfkill_type type;
93 82
94 bool user_claim_unsupported;
95 bool user_claim;
96
97 /* the mutex serializes callbacks and also protects 83 /* the mutex serializes callbacks and also protects
98 * the state */ 84 * the state */
99 struct mutex mutex; 85 struct mutex mutex;
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 5fd389162f01..1b5c3d298f43 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -1715,8 +1715,14 @@ extern int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb,
1715 struct iovec *iov); 1715 struct iovec *iov);
1716extern int skb_copy_datagram_from_iovec(struct sk_buff *skb, 1716extern int skb_copy_datagram_from_iovec(struct sk_buff *skb,
1717 int offset, 1717 int offset,
1718 struct iovec *from, 1718 const struct iovec *from,
1719 int from_offset,
1719 int len); 1720 int len);
1721extern int skb_copy_datagram_const_iovec(const struct sk_buff *from,
1722 int offset,
1723 const struct iovec *to,
1724 int to_offset,
1725 int size);
1720extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb); 1726extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb);
1721extern int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, 1727extern int skb_kill_datagram(struct sock *sk, struct sk_buff *skb,
1722 unsigned int flags); 1728 unsigned int flags);
diff --git a/include/linux/smsc911x.h b/include/linux/smsc911x.h
index b32725075d71..5241e4fb4eca 100644
--- a/include/linux/smsc911x.h
+++ b/include/linux/smsc911x.h
@@ -47,4 +47,14 @@ struct smsc911x_platform_config {
47#define SMSC911X_FORCE_EXTERNAL_PHY (BIT(3)) 47#define SMSC911X_FORCE_EXTERNAL_PHY (BIT(3))
48#define SMSC911X_SAVE_MAC_ADDRESS (BIT(4)) 48#define SMSC911X_SAVE_MAC_ADDRESS (BIT(4))
49 49
50/*
51 * SMSC911X_SWAP_FIFO:
52 * Enables software byte swap for fifo data. Should only be used as a
53 * "last resort" in the case of big endian mode on boards with incorrectly
54 * routed data bus to older devices such as LAN9118. Newer devices such as
55 * LAN9221 can handle this in hardware, there are registers to control
56 * this swapping but the driver doesn't currently use them.
57 */
58#define SMSC911X_SWAP_FIFO (BIT(5))
59
50#endif /* __LINUX_SMSC911X_H__ */ 60#endif /* __LINUX_SMSC911X_H__ */
diff --git a/include/linux/snmp.h b/include/linux/snmp.h
index aee3f1e1d1ce..0f953fe40413 100644
--- a/include/linux/snmp.h
+++ b/include/linux/snmp.h
@@ -18,7 +18,7 @@
18enum 18enum
19{ 19{
20 IPSTATS_MIB_NUM = 0, 20 IPSTATS_MIB_NUM = 0,
21 IPSTATS_MIB_INRECEIVES, /* InReceives */ 21 IPSTATS_MIB_INPKTS, /* InReceives */
22 IPSTATS_MIB_INHDRERRORS, /* InHdrErrors */ 22 IPSTATS_MIB_INHDRERRORS, /* InHdrErrors */
23 IPSTATS_MIB_INTOOBIGERRORS, /* InTooBigErrors */ 23 IPSTATS_MIB_INTOOBIGERRORS, /* InTooBigErrors */
24 IPSTATS_MIB_INNOROUTES, /* InNoRoutes */ 24 IPSTATS_MIB_INNOROUTES, /* InNoRoutes */
@@ -28,7 +28,7 @@ enum
28 IPSTATS_MIB_INDISCARDS, /* InDiscards */ 28 IPSTATS_MIB_INDISCARDS, /* InDiscards */
29 IPSTATS_MIB_INDELIVERS, /* InDelivers */ 29 IPSTATS_MIB_INDELIVERS, /* InDelivers */
30 IPSTATS_MIB_OUTFORWDATAGRAMS, /* OutForwDatagrams */ 30 IPSTATS_MIB_OUTFORWDATAGRAMS, /* OutForwDatagrams */
31 IPSTATS_MIB_OUTREQUESTS, /* OutRequests */ 31 IPSTATS_MIB_OUTPKTS, /* OutRequests */
32 IPSTATS_MIB_OUTDISCARDS, /* OutDiscards */ 32 IPSTATS_MIB_OUTDISCARDS, /* OutDiscards */
33 IPSTATS_MIB_OUTNOROUTES, /* OutNoRoutes */ 33 IPSTATS_MIB_OUTNOROUTES, /* OutNoRoutes */
34 IPSTATS_MIB_REASMTIMEOUT, /* ReasmTimeout */ 34 IPSTATS_MIB_REASMTIMEOUT, /* ReasmTimeout */
@@ -42,6 +42,12 @@ enum
42 IPSTATS_MIB_OUTMCASTPKTS, /* OutMcastPkts */ 42 IPSTATS_MIB_OUTMCASTPKTS, /* OutMcastPkts */
43 IPSTATS_MIB_INBCASTPKTS, /* InBcastPkts */ 43 IPSTATS_MIB_INBCASTPKTS, /* InBcastPkts */
44 IPSTATS_MIB_OUTBCASTPKTS, /* OutBcastPkts */ 44 IPSTATS_MIB_OUTBCASTPKTS, /* OutBcastPkts */
45 IPSTATS_MIB_INOCTETS, /* InOctets */
46 IPSTATS_MIB_OUTOCTETS, /* OutOctets */
47 IPSTATS_MIB_INMCASTOCTETS, /* InMcastOctets */
48 IPSTATS_MIB_OUTMCASTOCTETS, /* OutMcastOctets */
49 IPSTATS_MIB_INBCASTOCTETS, /* InBcastOctets */
50 IPSTATS_MIB_OUTBCASTOCTETS, /* OutBcastOctets */
45 __IPSTATS_MIB_MAX 51 __IPSTATS_MIB_MAX
46}; 52};
47 53
diff --git a/include/linux/socket.h b/include/linux/socket.h
index 421afb4d29b0..d2310cb45d2f 100644
--- a/include/linux/socket.h
+++ b/include/linux/socket.h
@@ -303,14 +303,15 @@ struct ucred {
303#define SOL_BLUETOOTH 274 303#define SOL_BLUETOOTH 274
304#define SOL_PNPIPE 275 304#define SOL_PNPIPE 275
305#define SOL_RDS 276 305#define SOL_RDS 276
306#define SOL_IUCV 277
306 307
307/* IPX options */ 308/* IPX options */
308#define IPX_TYPE 1 309#define IPX_TYPE 1
309 310
310#ifdef __KERNEL__ 311#ifdef __KERNEL__
311extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len); 312extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len);
312extern int memcpy_fromiovecend(unsigned char *kdata, struct iovec *iov, 313extern int memcpy_fromiovecend(unsigned char *kdata, const struct iovec *iov,
313 int offset, int len); 314 int offset, int len);
314extern int csum_partial_copy_fromiovecend(unsigned char *kdata, 315extern int csum_partial_copy_fromiovecend(unsigned char *kdata,
315 struct iovec *iov, 316 struct iovec *iov,
316 int offset, 317 int offset,
@@ -318,6 +319,8 @@ extern int csum_partial_copy_fromiovecend(unsigned char *kdata,
318 319
319extern int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address, int mode); 320extern int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address, int mode);
320extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len); 321extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len);
322extern int memcpy_toiovecend(const struct iovec *v, unsigned char *kdata,
323 int offset, int len);
321extern int move_addr_to_user(struct sockaddr *kaddr, int klen, void __user *uaddr, int __user *ulen); 324extern int move_addr_to_user(struct sockaddr *kaddr, int klen, void __user *uaddr, int __user *ulen);
322extern int move_addr_to_kernel(void __user *uaddr, int ulen, struct sockaddr *kaddr); 325extern int move_addr_to_kernel(void __user *uaddr, int ulen, struct sockaddr *kaddr);
323extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data); 326extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data);
diff --git a/include/linux/spi/wl12xx.h b/include/linux/spi/wl12xx.h
new file mode 100644
index 000000000000..11430cab2aad
--- /dev/null
+++ b/include/linux/spi/wl12xx.h
@@ -0,0 +1,31 @@
1/*
2 * This file is part of wl12xx
3 *
4 * Copyright (C) 2009 Nokia Corporation
5 *
6 * Contact: Kalle Valo <kalle.valo@nokia.com>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * version 2 as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA
21 *
22 */
23
24#ifndef _LINUX_SPI_WL12XX_H
25#define _LINUX_SPI_WL12XX_H
26
27struct wl12xx_platform_data {
28 void (*set_power)(bool enable);
29};
30
31#endif
diff --git a/include/linux/tcp.h b/include/linux/tcp.h
index 9d5078bd23a3..8afac76cd748 100644
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
@@ -377,7 +377,7 @@ struct tcp_sock {
377 unsigned int keepalive_time; /* time before keep alive takes place */ 377 unsigned int keepalive_time; /* time before keep alive takes place */
378 unsigned int keepalive_intvl; /* time interval between keep alive probes */ 378 unsigned int keepalive_intvl; /* time interval between keep alive probes */
379 379
380 unsigned long last_synq_overflow; 380 int linger2;
381 381
382/* Receiver side RTT estimation */ 382/* Receiver side RTT estimation */
383 struct { 383 struct {
@@ -406,8 +406,6 @@ struct tcp_sock {
406/* TCP MD5 Signagure Option information */ 406/* TCP MD5 Signagure Option information */
407 struct tcp_md5sig_info *md5sig_info; 407 struct tcp_md5sig_info *md5sig_info;
408#endif 408#endif
409
410 int linger2;
411}; 409};
412 410
413static inline struct tcp_sock *tcp_sk(const struct sock *sk) 411static inline struct tcp_sock *tcp_sk(const struct sock *sk)
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h
index 36fabb95c7d3..5d44059f6d63 100644
--- a/include/linux/usb/usbnet.h
+++ b/include/linux/usb/usbnet.h
@@ -183,6 +183,7 @@ extern void usbnet_tx_timeout (struct net_device *net);
183extern int usbnet_change_mtu (struct net_device *net, int new_mtu); 183extern int usbnet_change_mtu (struct net_device *net, int new_mtu);
184 184
185extern int usbnet_get_endpoints(struct usbnet *, struct usb_interface *); 185extern int usbnet_get_endpoints(struct usbnet *, struct usb_interface *);
186extern int usbnet_get_ethernet_addr(struct usbnet *, int);
186extern void usbnet_defer_kevent (struct usbnet *, int); 187extern void usbnet_defer_kevent (struct usbnet *, int);
187extern void usbnet_skb_return (struct usbnet *, struct sk_buff *); 188extern void usbnet_skb_return (struct usbnet *, struct sk_buff *);
188extern void usbnet_unlink_rx_urbs(struct usbnet *); 189extern void usbnet_unlink_rx_urbs(struct usbnet *);