diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/can/Kbuild | 1 | ||||
-rw-r--r-- | include/linux/can/dev.h | 70 | ||||
-rw-r--r-- | include/linux/can/netlink.h | 113 | ||||
-rw-r--r-- | include/linux/can/platform/sja1000.h | 32 | ||||
-rw-r--r-- | include/linux/etherdevice.h | 27 | ||||
-rw-r--r-- | include/linux/ethtool.h | 15 | ||||
-rw-r--r-- | include/linux/fs_enet_pd.h | 6 | ||||
-rw-r--r-- | include/linux/ieee80211.h | 51 | ||||
-rw-r--r-- | include/linux/if_tun.h | 1 | ||||
-rw-r--r-- | include/linux/if_vlan.h | 6 | ||||
-rw-r--r-- | include/linux/mdio.h | 347 | ||||
-rw-r--r-- | include/linux/mii.h | 34 | ||||
-rw-r--r-- | include/linux/mmc/sdio_ids.h | 2 | ||||
-rw-r--r-- | include/linux/netdevice.h | 119 | ||||
-rw-r--r-- | include/linux/nl80211.h | 178 | ||||
-rw-r--r-- | include/linux/of.h | 3 | ||||
-rw-r--r-- | include/linux/of_mdio.h | 22 | ||||
-rw-r--r-- | include/linux/pci_ids.h | 2 | ||||
-rw-r--r-- | include/linux/phy.h | 6 | ||||
-rw-r--r-- | include/linux/rfkill.h | 14 | ||||
-rw-r--r-- | include/linux/skbuff.h | 8 | ||||
-rw-r--r-- | include/linux/smsc911x.h | 10 | ||||
-rw-r--r-- | include/linux/snmp.h | 10 | ||||
-rw-r--r-- | include/linux/socket.h | 7 | ||||
-rw-r--r-- | include/linux/spi/wl12xx.h | 31 | ||||
-rw-r--r-- | include/linux/tcp.h | 4 | ||||
-rw-r--r-- | include/linux/usb/usbnet.h | 1 |
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 @@ | |||
1 | header-y += raw.h | 1 | header-y += raw.h |
2 | header-y += bcm.h | 2 | header-y += bcm.h |
3 | header-y += error.h | 3 | header-y += error.h |
4 | header-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 | */ | ||
23 | enum 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 | |||
34 | struct 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 | |||
55 | struct net_device *alloc_candev(int sizeof_priv); | ||
56 | void free_candev(struct net_device *dev); | ||
57 | |||
58 | int open_candev(struct net_device *dev); | ||
59 | void close_candev(struct net_device *dev); | ||
60 | |||
61 | int register_candev(struct net_device *dev); | ||
62 | void unregister_candev(struct net_device *dev); | ||
63 | |||
64 | int can_restart_now(struct net_device *dev); | ||
65 | void can_bus_off(struct net_device *dev); | ||
66 | |||
67 | void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev, int idx); | ||
68 | void 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 | */ | ||
24 | struct 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 | */ | ||
40 | struct 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 | */ | ||
55 | struct can_clock { | ||
56 | __u32 freq; /* CAN system clock frequency in Hz */ | ||
57 | }; | ||
58 | |||
59 | /* | ||
60 | * CAN operational and error states | ||
61 | */ | ||
62 | enum 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 | */ | ||
75 | struct 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 | */ | ||
87 | struct 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 | */ | ||
99 | enum { | ||
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 | |||
25 | struct 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 | */ | ||
197 | static 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 | ||
36 | static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep, | 38 | static 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 | ||
548 | struct ieee80211_mgmt { | 548 | struct 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 | */ | ||
1396 | static 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 | */ | ||
1407 | static 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); | |||
118 | extern int vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp, | 118 | extern 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); |
120 | extern int vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp, | 120 | extern 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 |
125 | static inline struct net_device *vlan_dev_real_dev(const struct net_device *dev) | 124 | static inline struct net_device *vlan_dev_real_dev(const struct net_device *dev) |
@@ -154,8 +153,7 @@ static inline int vlan_gro_receive(struct napi_struct *napi, | |||
154 | } | 153 | } |
155 | 154 | ||
156 | static inline int vlan_gro_frags(struct napi_struct *napi, | 155 | static 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 | |||
257 | static inline __u16 mdio_phy_id_c45(int prtad, int devad) | ||
258 | { | ||
259 | return MDIO_PHY_ID_C45 | (prtad << 5) | devad; | ||
260 | } | ||
261 | |||
262 | static 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 | |||
267 | static inline __u16 mdio_phy_id_prtad(int phy_id) | ||
268 | { | ||
269 | return (phy_id & MDIO_PHY_ID_PRTAD) >> 5; | ||
270 | } | ||
271 | |||
272 | static 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 | */ | ||
296 | struct 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 | |||
312 | struct ethtool_cmd; | ||
313 | struct ethtool_pauseparam; | ||
314 | extern int mdio45_probe(struct mdio_if_info *mdio, int prtad); | ||
315 | extern int mdio_set_flag(const struct mdio_if_info *mdio, | ||
316 | int prtad, int devad, u16 addr, int mask, | ||
317 | bool sense); | ||
318 | extern int mdio45_links_ok(const struct mdio_if_info *mdio, u32 mmds); | ||
319 | extern int mdio45_nway_restart(const struct mdio_if_info *mdio); | ||
320 | extern void mdio45_ethtool_gset_npage(const struct mdio_if_info *mdio, | ||
321 | struct ethtool_cmd *ecmd, | ||
322 | u32 npage_adv, u32 npage_lpa); | ||
323 | extern void | ||
324 | mdio45_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 | */ | ||
337 | static 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 | |||
343 | extern 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 | */ | ||
246 | static 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 | ||
51 | struct vlan_group; | 53 | struct vlan_group; |
52 | struct ethtool_ops; | ||
53 | struct netpoll_info; | 54 | struct netpoll_info; |
54 | /* 802.11 specific */ | 55 | /* 802.11 specific */ |
55 | struct wireless_dev; | 56 | struct 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 | ||
214 | struct 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 | |||
213 | struct hh_cache | 224 | struct 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 | ||
449 | struct netdev_queue { | 460 | struct 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 | ||
1050 | struct 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 | ||
1146 | static inline void *skb_gro_mac_header(struct sk_buff *skb) | 1172 | static 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 | ||
1179 | static 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 | |||
1153 | static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev, | 1186 | static 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); |
1443 | extern void napi_reuse_skb(struct napi_struct *napi, | 1476 | extern void napi_reuse_skb(struct napi_struct *napi, |
1444 | struct sk_buff *skb); | 1477 | struct sk_buff *skb); |
1445 | extern struct sk_buff * napi_fraginfo_skb(struct napi_struct *napi, | 1478 | extern struct sk_buff * napi_get_frags(struct napi_struct *napi); |
1446 | struct napi_gro_fraginfo *info); | ||
1447 | extern int napi_frags_finish(struct napi_struct *napi, | 1479 | extern int napi_frags_finish(struct napi_struct *napi, |
1448 | struct sk_buff *skb, int ret); | 1480 | struct sk_buff *skb, int ret); |
1449 | extern int napi_gro_frags(struct napi_struct *napi, | 1481 | extern struct sk_buff * napi_frags_skb(struct napi_struct *napi); |
1450 | struct napi_gro_fraginfo *info); | 1482 | extern int napi_gro_frags(struct napi_struct *napi); |
1483 | |||
1484 | static inline void napi_free_frags(struct napi_struct *napi) | ||
1485 | { | ||
1486 | kfree_skb(napi->skb); | ||
1487 | napi->skb = NULL; | ||
1488 | } | ||
1489 | |||
1451 | extern void netif_nit_deliver(struct sk_buff *skb); | 1490 | extern void netif_nit_deliver(struct sk_buff *skb); |
1452 | extern int dev_valid_name(const char *name); | 1491 | extern int dev_valid_name(const char *name); |
1453 | extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *); | 1492 | extern 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 | ||
1556 | extern unsigned long dev_trans_start(struct net_device *dev); | ||
1557 | |||
1517 | extern void __netdev_watchdog_up(struct net_device *dev); | 1558 | extern void __netdev_watchdog_up(struct net_device *dev); |
1518 | 1559 | ||
1519 | extern void netif_carrier_on(struct net_device *dev); | 1560 | extern 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 | ||
1783 | extern void ether_setup(struct net_device *dev); | 1831 | extern 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) |
1791 | extern int register_netdev(struct net_device *dev); | 1839 | extern int register_netdev(struct net_device *dev); |
1792 | extern void unregister_netdev(struct net_device *dev); | 1840 | extern void unregister_netdev(struct net_device *dev); |
1841 | |||
1842 | /* Functions used for device addresses handling */ | ||
1843 | extern int dev_addr_add(struct net_device *dev, unsigned char *addr, | ||
1844 | unsigned char addr_type); | ||
1845 | extern int dev_addr_del(struct net_device *dev, unsigned char *addr, | ||
1846 | unsigned char addr_type); | ||
1847 | extern int dev_addr_add_multiple(struct net_device *to_dev, | ||
1848 | struct net_device *from_dev, | ||
1849 | unsigned char addr_type); | ||
1850 | extern 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 */ |
1794 | extern void dev_set_rx_mode(struct net_device *dev); | 1855 | extern void dev_set_rx_mode(struct net_device *dev); |
1795 | extern void __dev_set_rx_mode(struct net_device *dev); | 1856 | extern 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 | ||
1910 | extern struct pernet_operations __net_initdata loopback_net_ops; | 1971 | extern struct pernet_operations __net_initdata loopback_net_ops; |
1972 | |||
1973 | static 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 | |||
1981 | static 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 | |||
1988 | static 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 | */ | ||
717 | struct 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 | */ | ||
1211 | enum 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 | */ | ||
1222 | enum 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); | |||
77 | extern const struct of_device_id *of_match_node( | 77 | extern 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); |
79 | extern int of_modalias_node(struct device_node *node, char *modalias, int len); | 79 | extern int of_modalias_node(struct device_node *node, char *modalias, int len); |
80 | extern struct device_node *of_parse_phandle(struct device_node *np, | ||
81 | const char *phandle_name, | ||
82 | int index); | ||
80 | extern int of_parse_phandles_with_args(struct device_node *np, | 83 | extern 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 | |||
15 | extern int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np); | ||
16 | extern struct phy_device *of_phy_find_device(struct device_node *phy_np); | ||
17 | extern 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 | ||
445 | int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id); | 445 | int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id); |
446 | struct phy_device* get_phy_device(struct mii_bus *bus, int addr); | 446 | struct phy_device* get_phy_device(struct mii_bus *bus, int addr); |
447 | int phy_device_register(struct phy_device *phy); | ||
447 | int phy_clear_interrupt(struct phy_device *phydev); | 448 | int phy_clear_interrupt(struct phy_device *phydev); |
448 | int phy_config_interrupt(struct phy_device *phydev, u32 interrupts); | 449 | int phy_config_interrupt(struct phy_device *phydev, u32 interrupts); |
450 | int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, | ||
451 | u32 flags, phy_interface_t interface); | ||
449 | struct phy_device * phy_attach(struct net_device *dev, | 452 | struct 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); |
454 | int phy_connect_direct(struct net_device *dev, struct phy_device *phydev, | ||
455 | void (*handler)(struct net_device *), u32 flags, | ||
456 | phy_interface_t interface); | ||
451 | struct phy_device * phy_connect(struct net_device *dev, const char *bus_id, | 457 | struct 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); |
1716 | extern int skb_copy_datagram_from_iovec(struct sk_buff *skb, | 1716 | extern 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); |
1721 | extern 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); | ||
1720 | extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb); | 1726 | extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb); |
1721 | extern int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, | 1727 | extern 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 @@ | |||
18 | enum | 18 | enum |
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__ |
311 | extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len); | 312 | extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len); |
312 | extern int memcpy_fromiovecend(unsigned char *kdata, struct iovec *iov, | 313 | extern int memcpy_fromiovecend(unsigned char *kdata, const struct iovec *iov, |
313 | int offset, int len); | 314 | int offset, int len); |
314 | extern int csum_partial_copy_fromiovecend(unsigned char *kdata, | 315 | extern 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 | ||
319 | extern int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address, int mode); | 320 | extern int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address, int mode); |
320 | extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len); | 321 | extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len); |
322 | extern int memcpy_toiovecend(const struct iovec *v, unsigned char *kdata, | ||
323 | int offset, int len); | ||
321 | extern int move_addr_to_user(struct sockaddr *kaddr, int klen, void __user *uaddr, int __user *ulen); | 324 | extern int move_addr_to_user(struct sockaddr *kaddr, int klen, void __user *uaddr, int __user *ulen); |
322 | extern int move_addr_to_kernel(void __user *uaddr, int ulen, struct sockaddr *kaddr); | 325 | extern int move_addr_to_kernel(void __user *uaddr, int ulen, struct sockaddr *kaddr); |
323 | extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data); | 326 | extern 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 | |||
27 | struct 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 | ||
413 | static inline struct tcp_sock *tcp_sk(const struct sock *sk) | 411 | static 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); | |||
183 | extern int usbnet_change_mtu (struct net_device *net, int new_mtu); | 183 | extern int usbnet_change_mtu (struct net_device *net, int new_mtu); |
184 | 184 | ||
185 | extern int usbnet_get_endpoints(struct usbnet *, struct usb_interface *); | 185 | extern int usbnet_get_endpoints(struct usbnet *, struct usb_interface *); |
186 | extern int usbnet_get_ethernet_addr(struct usbnet *, int); | ||
186 | extern void usbnet_defer_kevent (struct usbnet *, int); | 187 | extern void usbnet_defer_kevent (struct usbnet *, int); |
187 | extern void usbnet_skb_return (struct usbnet *, struct sk_buff *); | 188 | extern void usbnet_skb_return (struct usbnet *, struct sk_buff *); |
188 | extern void usbnet_unlink_rx_urbs(struct usbnet *); | 189 | extern void usbnet_unlink_rx_urbs(struct usbnet *); |