diff options
author | Patrick McHardy <kaber@trash.net> | 2010-02-10 08:17:10 -0500 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2010-02-10 08:17:10 -0500 |
commit | 9ab99d5a43e9f283738fd9fd365539306d13eaac (patch) | |
tree | 0214a63e3f4f7f4f187f0139e4a5d8abe453902b /include/net | |
parent | 76780373190d7e8ddfb6fed06aef068e2445c743 (diff) | |
parent | b1109bf085c8dd69537b7876ea83f914dd1fe46a (diff) |
Merge branch 'master' of /repos/git/net-next-2.6
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/cfg80211.h | 69 | ||||
-rw-r--r-- | include/net/icmp.h | 2 | ||||
-rw-r--r-- | include/net/inet_sock.h | 4 | ||||
-rw-r--r-- | include/net/ip.h | 16 | ||||
-rw-r--r-- | include/net/mac80211.h | 173 | ||||
-rw-r--r-- | include/net/netns/conntrack.h | 3 | ||||
-rw-r--r-- | include/net/netns/ipv4.h | 1 | ||||
-rw-r--r-- | include/net/netns/xfrm.h | 6 | ||||
-rw-r--r-- | include/net/netrom.h | 2 | ||||
-rw-r--r-- | include/net/phonet/pep.h | 3 | ||||
-rw-r--r-- | include/net/pkt_sched.h | 1 | ||||
-rw-r--r-- | include/net/regulatory.h | 1 | ||||
-rw-r--r-- | include/net/request_sock.h | 2 | ||||
-rw-r--r-- | include/net/sch_generic.h | 19 | ||||
-rw-r--r-- | include/net/snmp.h | 2 | ||||
-rw-r--r-- | include/net/tcp.h | 2 | ||||
-rw-r--r-- | include/net/xfrm.h | 10 |
17 files changed, 263 insertions, 53 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index add79930f47d..a3f0a7ed31ac 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -39,8 +39,8 @@ | |||
39 | * @IEEE80211_BAND_5GHZ: around 5GHz band (4.9-5.7) | 39 | * @IEEE80211_BAND_5GHZ: around 5GHz band (4.9-5.7) |
40 | */ | 40 | */ |
41 | enum ieee80211_band { | 41 | enum ieee80211_band { |
42 | IEEE80211_BAND_2GHZ, | 42 | IEEE80211_BAND_2GHZ = NL80211_BAND_2GHZ, |
43 | IEEE80211_BAND_5GHZ, | 43 | IEEE80211_BAND_5GHZ = NL80211_BAND_5GHZ, |
44 | 44 | ||
45 | /* keep last */ | 45 | /* keep last */ |
46 | IEEE80211_NUM_BANDS | 46 | IEEE80211_NUM_BANDS |
@@ -626,8 +626,14 @@ enum cfg80211_signal_type { | |||
626 | * @beacon_interval: the beacon interval as from the frame | 626 | * @beacon_interval: the beacon interval as from the frame |
627 | * @capability: the capability field in host byte order | 627 | * @capability: the capability field in host byte order |
628 | * @information_elements: the information elements (Note that there | 628 | * @information_elements: the information elements (Note that there |
629 | * is no guarantee that these are well-formed!) | 629 | * is no guarantee that these are well-formed!); this is a pointer to |
630 | * either the beacon_ies or proberesp_ies depending on whether Probe | ||
631 | * Response frame has been received | ||
630 | * @len_information_elements: total length of the information elements | 632 | * @len_information_elements: total length of the information elements |
633 | * @beacon_ies: the information elements from the last Beacon frame | ||
634 | * @len_beacon_ies: total length of the beacon_ies | ||
635 | * @proberesp_ies: the information elements from the last Probe Response frame | ||
636 | * @len_proberesp_ies: total length of the proberesp_ies | ||
631 | * @signal: signal strength value (type depends on the wiphy's signal_type) | 637 | * @signal: signal strength value (type depends on the wiphy's signal_type) |
632 | * @free_priv: function pointer to free private data | 638 | * @free_priv: function pointer to free private data |
633 | * @priv: private area for driver use, has at least wiphy->bss_priv_size bytes | 639 | * @priv: private area for driver use, has at least wiphy->bss_priv_size bytes |
@@ -641,6 +647,10 @@ struct cfg80211_bss { | |||
641 | u16 capability; | 647 | u16 capability; |
642 | u8 *information_elements; | 648 | u8 *information_elements; |
643 | size_t len_information_elements; | 649 | size_t len_information_elements; |
650 | u8 *beacon_ies; | ||
651 | size_t len_beacon_ies; | ||
652 | u8 *proberesp_ies; | ||
653 | size_t len_proberesp_ies; | ||
644 | 654 | ||
645 | s32 signal; | 655 | s32 signal; |
646 | 656 | ||
@@ -837,6 +847,7 @@ enum wiphy_params_flags { | |||
837 | WIPHY_PARAM_RETRY_LONG = 1 << 1, | 847 | WIPHY_PARAM_RETRY_LONG = 1 << 1, |
838 | WIPHY_PARAM_FRAG_THRESHOLD = 1 << 2, | 848 | WIPHY_PARAM_FRAG_THRESHOLD = 1 << 2, |
839 | WIPHY_PARAM_RTS_THRESHOLD = 1 << 3, | 849 | WIPHY_PARAM_RTS_THRESHOLD = 1 << 3, |
850 | WIPHY_PARAM_COVERAGE_CLASS = 1 << 4, | ||
840 | }; | 851 | }; |
841 | 852 | ||
842 | /** | 853 | /** |
@@ -856,20 +867,11 @@ enum tx_power_setting { | |||
856 | * cfg80211_bitrate_mask - masks for bitrate control | 867 | * cfg80211_bitrate_mask - masks for bitrate control |
857 | */ | 868 | */ |
858 | struct cfg80211_bitrate_mask { | 869 | struct cfg80211_bitrate_mask { |
859 | /* | ||
860 | * As discussed in Berlin, this struct really | ||
861 | * should look like this: | ||
862 | |||
863 | struct { | 870 | struct { |
864 | u32 legacy; | 871 | u32 legacy; |
865 | u8 mcs[IEEE80211_HT_MCS_MASK_LEN]; | 872 | /* TODO: add support for masking MCS rates; e.g.: */ |
873 | /* u8 mcs[IEEE80211_HT_MCS_MASK_LEN]; */ | ||
866 | } control[IEEE80211_NUM_BANDS]; | 874 | } control[IEEE80211_NUM_BANDS]; |
867 | |||
868 | * Since we can always fix in-kernel users, let's keep | ||
869 | * it simpler for now: | ||
870 | */ | ||
871 | u32 fixed; /* fixed bitrate, 0 == not fixed */ | ||
872 | u32 maxrate; /* in kbps, 0 == no limit */ | ||
873 | }; | 875 | }; |
874 | /** | 876 | /** |
875 | * struct cfg80211_pmksa - PMK Security Association | 877 | * struct cfg80211_pmksa - PMK Security Association |
@@ -1193,6 +1195,10 @@ enum wiphy_flags { | |||
1193 | WIPHY_FLAG_4ADDR_STATION = BIT(6), | 1195 | WIPHY_FLAG_4ADDR_STATION = BIT(6), |
1194 | }; | 1196 | }; |
1195 | 1197 | ||
1198 | struct mac_address { | ||
1199 | u8 addr[ETH_ALEN]; | ||
1200 | }; | ||
1201 | |||
1196 | /** | 1202 | /** |
1197 | * struct wiphy - wireless hardware description | 1203 | * struct wiphy - wireless hardware description |
1198 | * @idx: the wiphy index assigned to this item | 1204 | * @idx: the wiphy index assigned to this item |
@@ -1211,12 +1217,28 @@ enum wiphy_flags { | |||
1211 | * -1 = fragmentation disabled, only odd values >= 256 used | 1217 | * -1 = fragmentation disabled, only odd values >= 256 used |
1212 | * @rts_threshold: RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled | 1218 | * @rts_threshold: RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled |
1213 | * @net: the network namespace this wiphy currently lives in | 1219 | * @net: the network namespace this wiphy currently lives in |
1220 | * @perm_addr: permanent MAC address of this device | ||
1221 | * @addr_mask: If the device supports multiple MAC addresses by masking, | ||
1222 | * set this to a mask with variable bits set to 1, e.g. if the last | ||
1223 | * four bits are variable then set it to 00:...:00:0f. The actual | ||
1224 | * variable bits shall be determined by the interfaces added, with | ||
1225 | * interfaces not matching the mask being rejected to be brought up. | ||
1226 | * @n_addresses: number of addresses in @addresses. | ||
1227 | * @addresses: If the device has more than one address, set this pointer | ||
1228 | * to a list of addresses (6 bytes each). The first one will be used | ||
1229 | * by default for perm_addr. In this case, the mask should be set to | ||
1230 | * all-zeroes. In this case it is assumed that the device can handle | ||
1231 | * the same number of arbitrary MAC addresses. | ||
1214 | */ | 1232 | */ |
1215 | struct wiphy { | 1233 | struct wiphy { |
1216 | /* assign these fields before you register the wiphy */ | 1234 | /* assign these fields before you register the wiphy */ |
1217 | 1235 | ||
1218 | /* permanent MAC address */ | 1236 | /* permanent MAC address(es) */ |
1219 | u8 perm_addr[ETH_ALEN]; | 1237 | u8 perm_addr[ETH_ALEN]; |
1238 | u8 addr_mask[ETH_ALEN]; | ||
1239 | |||
1240 | u16 n_addresses; | ||
1241 | struct mac_address *addresses; | ||
1220 | 1242 | ||
1221 | /* Supported interface modes, OR together BIT(NL80211_IFTYPE_...) */ | 1243 | /* Supported interface modes, OR together BIT(NL80211_IFTYPE_...) */ |
1222 | u16 interface_modes; | 1244 | u16 interface_modes; |
@@ -1236,6 +1258,7 @@ struct wiphy { | |||
1236 | u8 retry_long; | 1258 | u8 retry_long; |
1237 | u32 frag_threshold; | 1259 | u32 frag_threshold; |
1238 | u32 rts_threshold; | 1260 | u32 rts_threshold; |
1261 | u8 coverage_class; | ||
1239 | 1262 | ||
1240 | char fw_version[ETHTOOL_BUSINFO_LEN]; | 1263 | char fw_version[ETHTOOL_BUSINFO_LEN]; |
1241 | u32 hw_version; | 1264 | u32 hw_version; |
@@ -1635,6 +1658,22 @@ void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list, | |||
1635 | */ | 1658 | */ |
1636 | unsigned int cfg80211_classify8021d(struct sk_buff *skb); | 1659 | unsigned int cfg80211_classify8021d(struct sk_buff *skb); |
1637 | 1660 | ||
1661 | /** | ||
1662 | * cfg80211_find_ie - find information element in data | ||
1663 | * | ||
1664 | * @eid: element ID | ||
1665 | * @ies: data consisting of IEs | ||
1666 | * @len: length of data | ||
1667 | * | ||
1668 | * This function will return %NULL if the element ID could | ||
1669 | * not be found or if the element is invalid (claims to be | ||
1670 | * longer than the given data), or a pointer to the first byte | ||
1671 | * of the requested element, that is the byte containing the | ||
1672 | * element ID. There are no checks on the element length | ||
1673 | * other than having to fit into the given data. | ||
1674 | */ | ||
1675 | const u8 *cfg80211_find_ie(u8 eid, const u8 *ies, int len); | ||
1676 | |||
1638 | /* | 1677 | /* |
1639 | * Regulatory helper functions for wiphys | 1678 | * Regulatory helper functions for wiphys |
1640 | */ | 1679 | */ |
diff --git a/include/net/icmp.h b/include/net/icmp.h index dfa72d4e8907..15b3dfe9fce8 100644 --- a/include/net/icmp.h +++ b/include/net/icmp.h | |||
@@ -28,7 +28,7 @@ struct icmp_err { | |||
28 | unsigned fatal:1; | 28 | unsigned fatal:1; |
29 | }; | 29 | }; |
30 | 30 | ||
31 | extern struct icmp_err icmp_err_convert[]; | 31 | extern const struct icmp_err icmp_err_convert[]; |
32 | #define ICMP_INC_STATS(net, field) SNMP_INC_STATS((net)->mib.icmp_statistics, field) | 32 | #define ICMP_INC_STATS(net, field) SNMP_INC_STATS((net)->mib.icmp_statistics, field) |
33 | #define ICMP_INC_STATS_BH(net, field) SNMP_INC_STATS_BH((net)->mib.icmp_statistics, field) | 33 | #define ICMP_INC_STATS_BH(net, field) SNMP_INC_STATS_BH((net)->mib.icmp_statistics, field) |
34 | #define ICMPMSGOUT_INC_STATS(net, field) SNMP_INC_STATS((net)->mib.icmpmsg_statistics, field+256) | 34 | #define ICMPMSGOUT_INC_STATS(net, field) SNMP_INC_STATS((net)->mib.icmpmsg_statistics, field+256) |
diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index bd4c53f75ac0..83fd34437cf1 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h | |||
@@ -122,10 +122,12 @@ struct inet_sock { | |||
122 | __be32 inet_saddr; | 122 | __be32 inet_saddr; |
123 | __s16 uc_ttl; | 123 | __s16 uc_ttl; |
124 | __u16 cmsg_flags; | 124 | __u16 cmsg_flags; |
125 | struct ip_options *opt; | ||
126 | __be16 inet_sport; | 125 | __be16 inet_sport; |
127 | __u16 inet_id; | 126 | __u16 inet_id; |
127 | |||
128 | struct ip_options *opt; | ||
128 | __u8 tos; | 129 | __u8 tos; |
130 | __u8 min_ttl; | ||
129 | __u8 mc_ttl; | 131 | __u8 mc_ttl; |
130 | __u8 pmtudisc; | 132 | __u8 pmtudisc; |
131 | __u8 recverr:1, | 133 | __u8 recverr:1, |
diff --git a/include/net/ip.h b/include/net/ip.h index 85108cfbb1ae..fb63371c07a8 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
@@ -326,6 +326,22 @@ static __inline__ void inet_reset_saddr(struct sock *sk) | |||
326 | 326 | ||
327 | #endif | 327 | #endif |
328 | 328 | ||
329 | static inline int sk_mc_loop(struct sock *sk) | ||
330 | { | ||
331 | if (!sk) | ||
332 | return 1; | ||
333 | switch (sk->sk_family) { | ||
334 | case AF_INET: | ||
335 | return inet_sk(sk)->mc_loop; | ||
336 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | ||
337 | case AF_INET6: | ||
338 | return inet6_sk(sk)->mc_loop; | ||
339 | #endif | ||
340 | } | ||
341 | WARN_ON(1); | ||
342 | return 1; | ||
343 | } | ||
344 | |||
329 | extern int ip_call_ra_chain(struct sk_buff *skb); | 345 | extern int ip_call_ra_chain(struct sk_buff *skb); |
330 | 346 | ||
331 | /* | 347 | /* |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index f073a2a50574..74ccf30fdf8e 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -107,12 +107,14 @@ enum ieee80211_max_queues { | |||
107 | * 2^n-1 in the range 1..32767] | 107 | * 2^n-1 in the range 1..32767] |
108 | * @cw_max: maximum contention window [like @cw_min] | 108 | * @cw_max: maximum contention window [like @cw_min] |
109 | * @txop: maximum burst time in units of 32 usecs, 0 meaning disabled | 109 | * @txop: maximum burst time in units of 32 usecs, 0 meaning disabled |
110 | * @uapsd: is U-APSD mode enabled for the queue | ||
110 | */ | 111 | */ |
111 | struct ieee80211_tx_queue_params { | 112 | struct ieee80211_tx_queue_params { |
112 | u16 txop; | 113 | u16 txop; |
113 | u16 cw_min; | 114 | u16 cw_min; |
114 | u16 cw_max; | 115 | u16 cw_max; |
115 | u8 aifs; | 116 | u8 aifs; |
117 | bool uapsd; | ||
116 | }; | 118 | }; |
117 | 119 | ||
118 | /** | 120 | /** |
@@ -184,7 +186,8 @@ enum ieee80211_bss_change { | |||
184 | * @use_short_slot: use short slot time (only relevant for ERP); | 186 | * @use_short_slot: use short slot time (only relevant for ERP); |
185 | * if the hardware cannot handle this it must set the | 187 | * if the hardware cannot handle this it must set the |
186 | * IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE hardware flag | 188 | * IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE hardware flag |
187 | * @dtim_period: num of beacons before the next DTIM, for PSM | 189 | * @dtim_period: num of beacons before the next DTIM, for beaconing, |
190 | * not valid in station mode (cf. hw conf ps_dtim_period) | ||
188 | * @timestamp: beacon timestamp | 191 | * @timestamp: beacon timestamp |
189 | * @beacon_int: beacon interval | 192 | * @beacon_int: beacon interval |
190 | * @assoc_capability: capabilities taken from assoc resp | 193 | * @assoc_capability: capabilities taken from assoc resp |
@@ -255,9 +258,6 @@ struct ieee80211_bss_conf { | |||
255 | * @IEEE80211_TX_CTL_RATE_CTRL_PROBE: internal to mac80211, can be | 258 | * @IEEE80211_TX_CTL_RATE_CTRL_PROBE: internal to mac80211, can be |
256 | * set by rate control algorithms to indicate probe rate, will | 259 | * set by rate control algorithms to indicate probe rate, will |
257 | * be cleared for fragmented frames (except on the last fragment) | 260 | * be cleared for fragmented frames (except on the last fragment) |
258 | * @IEEE80211_TX_INTFL_RCALGO: mac80211 internal flag, do not test or | ||
259 | * set this flag in the driver; indicates that the rate control | ||
260 | * algorithm was used and should be notified of TX status | ||
261 | * @IEEE80211_TX_INTFL_NEED_TXPROCESSING: completely internal to mac80211, | 261 | * @IEEE80211_TX_INTFL_NEED_TXPROCESSING: completely internal to mac80211, |
262 | * used to indicate that a pending frame requires TX processing before | 262 | * used to indicate that a pending frame requires TX processing before |
263 | * it can be sent out. | 263 | * it can be sent out. |
@@ -272,6 +272,11 @@ struct ieee80211_bss_conf { | |||
272 | * transmit function after the current frame, this can be used | 272 | * transmit function after the current frame, this can be used |
273 | * by drivers to kick the DMA queue only if unset or when the | 273 | * by drivers to kick the DMA queue only if unset or when the |
274 | * queue gets full. | 274 | * queue gets full. |
275 | * @IEEE80211_TX_INTFL_RETRANSMISSION: This frame is being retransmitted | ||
276 | * after TX status because the destination was asleep, it must not | ||
277 | * be modified again (no seqno assignment, crypto, etc.) | ||
278 | * @IEEE80211_TX_INTFL_HAS_RADIOTAP: This frame was injected and still | ||
279 | * has a radiotap header at skb->data. | ||
275 | */ | 280 | */ |
276 | enum mac80211_tx_control_flags { | 281 | enum mac80211_tx_control_flags { |
277 | IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), | 282 | IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), |
@@ -287,12 +292,13 @@ enum mac80211_tx_control_flags { | |||
287 | IEEE80211_TX_STAT_AMPDU = BIT(10), | 292 | IEEE80211_TX_STAT_AMPDU = BIT(10), |
288 | IEEE80211_TX_STAT_AMPDU_NO_BACK = BIT(11), | 293 | IEEE80211_TX_STAT_AMPDU_NO_BACK = BIT(11), |
289 | IEEE80211_TX_CTL_RATE_CTRL_PROBE = BIT(12), | 294 | IEEE80211_TX_CTL_RATE_CTRL_PROBE = BIT(12), |
290 | IEEE80211_TX_INTFL_RCALGO = BIT(13), | ||
291 | IEEE80211_TX_INTFL_NEED_TXPROCESSING = BIT(14), | 295 | IEEE80211_TX_INTFL_NEED_TXPROCESSING = BIT(14), |
292 | IEEE80211_TX_INTFL_RETRIED = BIT(15), | 296 | IEEE80211_TX_INTFL_RETRIED = BIT(15), |
293 | IEEE80211_TX_INTFL_DONT_ENCRYPT = BIT(16), | 297 | IEEE80211_TX_INTFL_DONT_ENCRYPT = BIT(16), |
294 | IEEE80211_TX_CTL_PSPOLL_RESPONSE = BIT(17), | 298 | IEEE80211_TX_CTL_PSPOLL_RESPONSE = BIT(17), |
295 | IEEE80211_TX_CTL_MORE_FRAMES = BIT(18), | 299 | IEEE80211_TX_CTL_MORE_FRAMES = BIT(18), |
300 | IEEE80211_TX_INTFL_RETRANSMISSION = BIT(19), | ||
301 | IEEE80211_TX_INTFL_HAS_RADIOTAP = BIT(20), | ||
296 | }; | 302 | }; |
297 | 303 | ||
298 | /** | 304 | /** |
@@ -571,7 +577,13 @@ struct ieee80211_rx_status { | |||
571 | * @IEEE80211_CONF_MONITOR: there's a monitor interface present -- use this | 577 | * @IEEE80211_CONF_MONITOR: there's a monitor interface present -- use this |
572 | * to determine for example whether to calculate timestamps for packets | 578 | * to determine for example whether to calculate timestamps for packets |
573 | * or not, do not use instead of filter flags! | 579 | * or not, do not use instead of filter flags! |
574 | * @IEEE80211_CONF_PS: Enable 802.11 power save mode (managed mode only) | 580 | * @IEEE80211_CONF_PS: Enable 802.11 power save mode (managed mode only). |
581 | * This is the power save mode defined by IEEE 802.11-2007 section 11.2, | ||
582 | * meaning that the hardware still wakes up for beacons, is able to | ||
583 | * transmit frames and receive the possible acknowledgment frames. | ||
584 | * Not to be confused with hardware specific wakeup/sleep states, | ||
585 | * driver is responsible for that. See the section "Powersave support" | ||
586 | * for more. | ||
575 | * @IEEE80211_CONF_IDLE: The device is running, but idle; if the flag is set | 587 | * @IEEE80211_CONF_IDLE: The device is running, but idle; if the flag is set |
576 | * the driver should be prepared to handle configuration requests but | 588 | * the driver should be prepared to handle configuration requests but |
577 | * may turn the device off as much as possible. Typically, this flag will | 589 | * may turn the device off as much as possible. Typically, this flag will |
@@ -611,7 +623,11 @@ enum ieee80211_conf_changed { | |||
611 | /** | 623 | /** |
612 | * enum ieee80211_smps_mode - spatial multiplexing power save mode | 624 | * enum ieee80211_smps_mode - spatial multiplexing power save mode |
613 | * | 625 | * |
614 | * @ | 626 | * @IEEE80211_SMPS_AUTOMATIC: automatic |
627 | * @IEEE80211_SMPS_OFF: off | ||
628 | * @IEEE80211_SMPS_STATIC: static | ||
629 | * @IEEE80211_SMPS_DYNAMIC: dynamic | ||
630 | * @IEEE80211_SMPS_NUM_MODES: internal, don't use | ||
615 | */ | 631 | */ |
616 | enum ieee80211_smps_mode { | 632 | enum ieee80211_smps_mode { |
617 | IEEE80211_SMPS_AUTOMATIC, | 633 | IEEE80211_SMPS_AUTOMATIC, |
@@ -636,6 +652,9 @@ enum ieee80211_smps_mode { | |||
636 | * value will be only achievable between DTIM frames, the hardware | 652 | * value will be only achievable between DTIM frames, the hardware |
637 | * needs to check for the multicast traffic bit in DTIM beacons. | 653 | * needs to check for the multicast traffic bit in DTIM beacons. |
638 | * This variable is valid only when the CONF_PS flag is set. | 654 | * This variable is valid only when the CONF_PS flag is set. |
655 | * @ps_dtim_period: The DTIM period of the AP we're connected to, for use | ||
656 | * in power saving. Power saving will not be enabled until a beacon | ||
657 | * has been received and the DTIM period is known. | ||
639 | * @dynamic_ps_timeout: The dynamic powersave timeout (in ms), see the | 658 | * @dynamic_ps_timeout: The dynamic powersave timeout (in ms), see the |
640 | * powersave documentation below. This variable is valid only when | 659 | * powersave documentation below. This variable is valid only when |
641 | * the CONF_PS flag is set. | 660 | * the CONF_PS flag is set. |
@@ -662,6 +681,7 @@ struct ieee80211_conf { | |||
662 | int max_sleep_period; | 681 | int max_sleep_period; |
663 | 682 | ||
664 | u16 listen_interval; | 683 | u16 listen_interval; |
684 | u8 ps_dtim_period; | ||
665 | 685 | ||
666 | u8 long_frame_max_tx_count, short_frame_max_tx_count; | 686 | u8 long_frame_max_tx_count, short_frame_max_tx_count; |
667 | 687 | ||
@@ -933,6 +953,11 @@ enum ieee80211_tkip_key_type { | |||
933 | * Hardware supports dynamic spatial multiplexing powersave, | 953 | * Hardware supports dynamic spatial multiplexing powersave, |
934 | * ie. can turn off all but one chain and then wake the rest | 954 | * ie. can turn off all but one chain and then wake the rest |
935 | * up as required after, for example, rts/cts handshake. | 955 | * up as required after, for example, rts/cts handshake. |
956 | * | ||
957 | * @IEEE80211_HW_SUPPORTS_UAPSD: | ||
958 | * Hardware supports Unscheduled Automatic Power Save Delivery | ||
959 | * (U-APSD) in managed mode. The mode is configured with | ||
960 | * conf_tx() operation. | ||
936 | */ | 961 | */ |
937 | enum ieee80211_hw_flags { | 962 | enum ieee80211_hw_flags { |
938 | IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, | 963 | IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, |
@@ -952,6 +977,7 @@ enum ieee80211_hw_flags { | |||
952 | IEEE80211_HW_BEACON_FILTER = 1<<14, | 977 | IEEE80211_HW_BEACON_FILTER = 1<<14, |
953 | IEEE80211_HW_SUPPORTS_STATIC_SMPS = 1<<15, | 978 | IEEE80211_HW_SUPPORTS_STATIC_SMPS = 1<<15, |
954 | IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS = 1<<16, | 979 | IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS = 1<<16, |
980 | IEEE80211_HW_SUPPORTS_UAPSD = 1<<17, | ||
955 | }; | 981 | }; |
956 | 982 | ||
957 | /** | 983 | /** |
@@ -1130,18 +1156,24 @@ ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw, | |||
1130 | * | 1156 | * |
1131 | * mac80211 has support for various powersave implementations. | 1157 | * mac80211 has support for various powersave implementations. |
1132 | * | 1158 | * |
1133 | * First, it can support hardware that handles all powersaving by | 1159 | * First, it can support hardware that handles all powersaving by itself, |
1134 | * itself, such hardware should simply set the %IEEE80211_HW_SUPPORTS_PS | 1160 | * such hardware should simply set the %IEEE80211_HW_SUPPORTS_PS hardware |
1135 | * hardware flag. In that case, it will be told about the desired | 1161 | * flag. In that case, it will be told about the desired powersave mode |
1136 | * powersave mode depending on the association status, and the driver | 1162 | * with the %IEEE80211_CONF_PS flag depending on the association status. |
1137 | * must take care of sending nullfunc frames when necessary, i.e. when | 1163 | * The hardware must take care of sending nullfunc frames when necessary, |
1138 | * entering and leaving powersave mode. The driver is required to look at | 1164 | * i.e. when entering and leaving powersave mode. The hardware is required |
1139 | * the AID in beacons and signal to the AP that it woke up when it finds | 1165 | * to look at the AID in beacons and signal to the AP that it woke up when |
1140 | * traffic directed to it. This mode supports dynamic PS by simply | 1166 | * it finds traffic directed to it. |
1141 | * enabling/disabling PS. | 1167 | * |
1142 | * | 1168 | * %IEEE80211_CONF_PS flag enabled means that the powersave mode defined in |
1143 | * Additionally, such hardware may set the %IEEE80211_HW_SUPPORTS_DYNAMIC_PS | 1169 | * IEEE 802.11-2007 section 11.2 is enabled. This is not to be confused |
1144 | * flag to indicate that it can support dynamic PS mode itself (see below). | 1170 | * with hardware wakeup and sleep states. Driver is responsible for waking |
1171 | * up the hardware before issueing commands to the hardware and putting it | ||
1172 | * back to sleep at approriate times. | ||
1173 | * | ||
1174 | * When PS is enabled, hardware needs to wakeup for beacons and receive the | ||
1175 | * buffered multicast/broadcast frames after the beacon. Also it must be | ||
1176 | * possible to send frames and receive the acknowledment frame. | ||
1145 | * | 1177 | * |
1146 | * Other hardware designs cannot send nullfunc frames by themselves and also | 1178 | * Other hardware designs cannot send nullfunc frames by themselves and also |
1147 | * need software support for parsing the TIM bitmap. This is also supported | 1179 | * need software support for parsing the TIM bitmap. This is also supported |
@@ -1149,14 +1181,35 @@ ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw, | |||
1149 | * %IEEE80211_HW_PS_NULLFUNC_STACK flags. The hardware is of course still | 1181 | * %IEEE80211_HW_PS_NULLFUNC_STACK flags. The hardware is of course still |
1150 | * required to pass up beacons. The hardware is still required to handle | 1182 | * required to pass up beacons. The hardware is still required to handle |
1151 | * waking up for multicast traffic; if it cannot the driver must handle that | 1183 | * waking up for multicast traffic; if it cannot the driver must handle that |
1152 | * as best as it can, mac80211 is too slow. | 1184 | * as best as it can, mac80211 is too slow to do that. |
1153 | * | 1185 | * |
1154 | * Dynamic powersave mode is an extension to normal powersave mode in which | 1186 | * Dynamic powersave is an extension to normal powersave in which the |
1155 | * the hardware stays awake for a user-specified period of time after sending | 1187 | * hardware stays awake for a user-specified period of time after sending a |
1156 | * a frame so that reply frames need not be buffered and therefore delayed | 1188 | * frame so that reply frames need not be buffered and therefore delayed to |
1157 | * to the next wakeup. This can either be supported by hardware, in which case | 1189 | * the next wakeup. It's compromise of getting good enough latency when |
1158 | * the driver needs to look at the @dynamic_ps_timeout hardware configuration | 1190 | * there's data traffic and still saving significantly power in idle |
1159 | * value, or by the stack if all nullfunc handling is in the stack. | 1191 | * periods. |
1192 | * | ||
1193 | * Dynamic powersave is supported by simply mac80211 enabling and disabling | ||
1194 | * PS based on traffic. Driver needs to only set %IEEE80211_HW_SUPPORTS_PS | ||
1195 | * flag and mac80211 will handle everything automatically. Additionally, | ||
1196 | * hardware having support for the dynamic PS feature may set the | ||
1197 | * %IEEE80211_HW_SUPPORTS_DYNAMIC_PS flag to indicate that it can support | ||
1198 | * dynamic PS mode itself. The driver needs to look at the | ||
1199 | * @dynamic_ps_timeout hardware configuration value and use it that value | ||
1200 | * whenever %IEEE80211_CONF_PS is set. In this case mac80211 will disable | ||
1201 | * dynamic PS feature in stack and will just keep %IEEE80211_CONF_PS | ||
1202 | * enabled whenever user has enabled powersave. | ||
1203 | * | ||
1204 | * Driver informs U-APSD client support by enabling | ||
1205 | * %IEEE80211_HW_SUPPORTS_UAPSD flag. The mode is configured through the | ||
1206 | * uapsd paramater in conf_tx() operation. Hardware needs to send the QoS | ||
1207 | * Nullfunc frames and stay awake until the service period has ended. To | ||
1208 | * utilize U-APSD, dynamic powersave is disabled for voip AC and all frames | ||
1209 | * from that AC are transmitted with powersave enabled. | ||
1210 | * | ||
1211 | * Note: U-APSD client mode is not yet supported with | ||
1212 | * %IEEE80211_HW_PS_NULLFUNC_STACK. | ||
1160 | */ | 1213 | */ |
1161 | 1214 | ||
1162 | /** | 1215 | /** |
@@ -1444,7 +1497,7 @@ enum ieee80211_ampdu_mlme_action { | |||
1444 | * @update_tkip_key: See the section "Hardware crypto acceleration" | 1497 | * @update_tkip_key: See the section "Hardware crypto acceleration" |
1445 | * This callback will be called in the context of Rx. Called for drivers | 1498 | * This callback will be called in the context of Rx. Called for drivers |
1446 | * which set IEEE80211_KEY_FLAG_TKIP_REQ_RX_P1_KEY. | 1499 | * which set IEEE80211_KEY_FLAG_TKIP_REQ_RX_P1_KEY. |
1447 | * The callback can sleep. | 1500 | * The callback must be atomic. |
1448 | * | 1501 | * |
1449 | * @hw_scan: Ask the hardware to service the scan request, no need to start | 1502 | * @hw_scan: Ask the hardware to service the scan request, no need to start |
1450 | * the scan state machine in stack. The scan must honour the channel | 1503 | * the scan state machine in stack. The scan must honour the channel |
@@ -1533,6 +1586,10 @@ enum ieee80211_ampdu_mlme_action { | |||
1533 | * and need to call wiphy_rfkill_set_hw_state() in the callback. | 1586 | * and need to call wiphy_rfkill_set_hw_state() in the callback. |
1534 | * The callback can sleep. | 1587 | * The callback can sleep. |
1535 | * | 1588 | * |
1589 | * @set_coverage_class: Set slot time for given coverage class as specified | ||
1590 | * in IEEE 802.11-2007 section 17.3.8.6 and modify ACK timeout | ||
1591 | * accordingly. This callback is not required and may sleep. | ||
1592 | * | ||
1536 | * @testmode_cmd: Implement a cfg80211 test mode command. | 1593 | * @testmode_cmd: Implement a cfg80211 test mode command. |
1537 | * The callback can sleep. | 1594 | * The callback can sleep. |
1538 | * | 1595 | * |
@@ -1565,8 +1622,10 @@ struct ieee80211_ops { | |||
1565 | struct ieee80211_vif *vif, struct ieee80211_sta *sta, | 1622 | struct ieee80211_vif *vif, struct ieee80211_sta *sta, |
1566 | struct ieee80211_key_conf *key); | 1623 | struct ieee80211_key_conf *key); |
1567 | void (*update_tkip_key)(struct ieee80211_hw *hw, | 1624 | void (*update_tkip_key)(struct ieee80211_hw *hw, |
1568 | struct ieee80211_key_conf *conf, const u8 *address, | 1625 | struct ieee80211_vif *vif, |
1569 | u32 iv32, u16 *phase1key); | 1626 | struct ieee80211_key_conf *conf, |
1627 | struct ieee80211_sta *sta, | ||
1628 | u32 iv32, u16 *phase1key); | ||
1570 | int (*hw_scan)(struct ieee80211_hw *hw, | 1629 | int (*hw_scan)(struct ieee80211_hw *hw, |
1571 | struct cfg80211_scan_request *req); | 1630 | struct cfg80211_scan_request *req); |
1572 | void (*sw_scan_start)(struct ieee80211_hw *hw); | 1631 | void (*sw_scan_start)(struct ieee80211_hw *hw); |
@@ -1592,6 +1651,7 @@ struct ieee80211_ops { | |||
1592 | struct ieee80211_sta *sta, u16 tid, u16 *ssn); | 1651 | struct ieee80211_sta *sta, u16 tid, u16 *ssn); |
1593 | 1652 | ||
1594 | void (*rfkill_poll)(struct ieee80211_hw *hw); | 1653 | void (*rfkill_poll)(struct ieee80211_hw *hw); |
1654 | void (*set_coverage_class)(struct ieee80211_hw *hw, u8 coverage_class); | ||
1595 | #ifdef CONFIG_NL80211_TESTMODE | 1655 | #ifdef CONFIG_NL80211_TESTMODE |
1596 | int (*testmode_cmd)(struct ieee80211_hw *hw, void *data, int len); | 1656 | int (*testmode_cmd)(struct ieee80211_hw *hw, void *data, int len); |
1597 | #endif | 1657 | #endif |
@@ -1874,6 +1934,53 @@ static inline struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw, | |||
1874 | } | 1934 | } |
1875 | 1935 | ||
1876 | /** | 1936 | /** |
1937 | * ieee80211_pspoll_get - retrieve a PS Poll template | ||
1938 | * @hw: pointer obtained from ieee80211_alloc_hw(). | ||
1939 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | ||
1940 | * | ||
1941 | * Creates a PS Poll a template which can, for example, uploaded to | ||
1942 | * hardware. The template must be updated after association so that correct | ||
1943 | * AID, BSSID and MAC address is used. | ||
1944 | * | ||
1945 | * Note: Caller (or hardware) is responsible for setting the | ||
1946 | * &IEEE80211_FCTL_PM bit. | ||
1947 | */ | ||
1948 | struct sk_buff *ieee80211_pspoll_get(struct ieee80211_hw *hw, | ||
1949 | struct ieee80211_vif *vif); | ||
1950 | |||
1951 | /** | ||
1952 | * ieee80211_nullfunc_get - retrieve a nullfunc template | ||
1953 | * @hw: pointer obtained from ieee80211_alloc_hw(). | ||
1954 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | ||
1955 | * | ||
1956 | * Creates a Nullfunc template which can, for example, uploaded to | ||
1957 | * hardware. The template must be updated after association so that correct | ||
1958 | * BSSID and address is used. | ||
1959 | * | ||
1960 | * Note: Caller (or hardware) is responsible for setting the | ||
1961 | * &IEEE80211_FCTL_PM bit as well as Duration and Sequence Control fields. | ||
1962 | */ | ||
1963 | struct sk_buff *ieee80211_nullfunc_get(struct ieee80211_hw *hw, | ||
1964 | struct ieee80211_vif *vif); | ||
1965 | |||
1966 | /** | ||
1967 | * ieee80211_probereq_get - retrieve a Probe Request template | ||
1968 | * @hw: pointer obtained from ieee80211_alloc_hw(). | ||
1969 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | ||
1970 | * @ssid: SSID buffer | ||
1971 | * @ssid_len: length of SSID | ||
1972 | * @ie: buffer containing all IEs except SSID for the template | ||
1973 | * @ie_len: length of the IE buffer | ||
1974 | * | ||
1975 | * Creates a Probe Request template which can, for example, be uploaded to | ||
1976 | * hardware. | ||
1977 | */ | ||
1978 | struct sk_buff *ieee80211_probereq_get(struct ieee80211_hw *hw, | ||
1979 | struct ieee80211_vif *vif, | ||
1980 | const u8 *ssid, size_t ssid_len, | ||
1981 | const u8 *ie, size_t ie_len); | ||
1982 | |||
1983 | /** | ||
1877 | * ieee80211_rts_get - RTS frame generation function | 1984 | * ieee80211_rts_get - RTS frame generation function |
1878 | * @hw: pointer obtained from ieee80211_alloc_hw(). | 1985 | * @hw: pointer obtained from ieee80211_alloc_hw(). |
1879 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | 1986 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. |
@@ -2292,8 +2399,12 @@ enum rate_control_changed { | |||
2292 | * @short_preamble: whether mac80211 will request short-preamble transmission | 2399 | * @short_preamble: whether mac80211 will request short-preamble transmission |
2293 | * if the selected rate supports it | 2400 | * if the selected rate supports it |
2294 | * @max_rate_idx: user-requested maximum rate (not MCS for now) | 2401 | * @max_rate_idx: user-requested maximum rate (not MCS for now) |
2402 | * (deprecated; this will be removed once drivers get updated to use | ||
2403 | * rate_idx_mask) | ||
2404 | * @rate_idx_mask: user-requested rate mask (not MCS for now) | ||
2295 | * @skb: the skb that will be transmitted, the control information in it needs | 2405 | * @skb: the skb that will be transmitted, the control information in it needs |
2296 | * to be filled in | 2406 | * to be filled in |
2407 | * @ap: whether this frame is sent out in AP mode | ||
2297 | */ | 2408 | */ |
2298 | struct ieee80211_tx_rate_control { | 2409 | struct ieee80211_tx_rate_control { |
2299 | struct ieee80211_hw *hw; | 2410 | struct ieee80211_hw *hw; |
@@ -2303,6 +2414,8 @@ struct ieee80211_tx_rate_control { | |||
2303 | struct ieee80211_tx_rate reported_rate; | 2414 | struct ieee80211_tx_rate reported_rate; |
2304 | bool rts, short_preamble; | 2415 | bool rts, short_preamble; |
2305 | u8 max_rate_idx; | 2416 | u8 max_rate_idx; |
2417 | u32 rate_idx_mask; | ||
2418 | bool ap; | ||
2306 | }; | 2419 | }; |
2307 | 2420 | ||
2308 | struct rate_control_ops { | 2421 | struct rate_control_ops { |
diff --git a/include/net/netns/conntrack.h b/include/net/netns/conntrack.h index ba1ba0c5efd1..63d449807d9b 100644 --- a/include/net/netns/conntrack.h +++ b/include/net/netns/conntrack.h | |||
@@ -11,6 +11,8 @@ struct nf_conntrack_ecache; | |||
11 | struct netns_ct { | 11 | struct netns_ct { |
12 | atomic_t count; | 12 | atomic_t count; |
13 | unsigned int expect_count; | 13 | unsigned int expect_count; |
14 | unsigned int htable_size; | ||
15 | struct kmem_cache *nf_conntrack_cachep; | ||
14 | struct hlist_nulls_head *hash; | 16 | struct hlist_nulls_head *hash; |
15 | struct hlist_head *expect_hash; | 17 | struct hlist_head *expect_hash; |
16 | struct hlist_nulls_head unconfirmed; | 18 | struct hlist_nulls_head unconfirmed; |
@@ -28,5 +30,6 @@ struct netns_ct { | |||
28 | #endif | 30 | #endif |
29 | int hash_vmalloc; | 31 | int hash_vmalloc; |
30 | int expect_vmalloc; | 32 | int expect_vmalloc; |
33 | char *slabname; | ||
31 | }; | 34 | }; |
32 | #endif | 35 | #endif |
diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h index 8098f6b8319d..2764994c9136 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h | |||
@@ -42,6 +42,7 @@ struct netns_ipv4 { | |||
42 | #endif | 42 | #endif |
43 | struct xt_table *nat_table; | 43 | struct xt_table *nat_table; |
44 | struct hlist_head *nat_bysource; | 44 | struct hlist_head *nat_bysource; |
45 | unsigned int nat_htable_size; | ||
45 | int nat_vmalloced; | 46 | int nat_vmalloced; |
46 | #endif | 47 | #endif |
47 | 48 | ||
diff --git a/include/net/netns/xfrm.h b/include/net/netns/xfrm.h index 56f8e5585df7..74f119a2829a 100644 --- a/include/net/netns/xfrm.h +++ b/include/net/netns/xfrm.h | |||
@@ -5,6 +5,7 @@ | |||
5 | #include <linux/wait.h> | 5 | #include <linux/wait.h> |
6 | #include <linux/workqueue.h> | 6 | #include <linux/workqueue.h> |
7 | #include <linux/xfrm.h> | 7 | #include <linux/xfrm.h> |
8 | #include <net/dst_ops.h> | ||
8 | 9 | ||
9 | struct ctl_table_header; | 10 | struct ctl_table_header; |
10 | 11 | ||
@@ -42,6 +43,11 @@ struct netns_xfrm { | |||
42 | unsigned int policy_count[XFRM_POLICY_MAX * 2]; | 43 | unsigned int policy_count[XFRM_POLICY_MAX * 2]; |
43 | struct work_struct policy_hash_work; | 44 | struct work_struct policy_hash_work; |
44 | 45 | ||
46 | struct dst_ops xfrm4_dst_ops; | ||
47 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | ||
48 | struct dst_ops xfrm6_dst_ops; | ||
49 | #endif | ||
50 | |||
45 | struct sock *nlsk; | 51 | struct sock *nlsk; |
46 | struct sock *nlsk_stash; | 52 | struct sock *nlsk_stash; |
47 | 53 | ||
diff --git a/include/net/netrom.h b/include/net/netrom.h index 15696b1fd30f..ab170a60e7d3 100644 --- a/include/net/netrom.h +++ b/include/net/netrom.h | |||
@@ -132,6 +132,8 @@ static __inline__ void nr_node_put(struct nr_node *nr_node) | |||
132 | static __inline__ void nr_neigh_put(struct nr_neigh *nr_neigh) | 132 | static __inline__ void nr_neigh_put(struct nr_neigh *nr_neigh) |
133 | { | 133 | { |
134 | if (atomic_dec_and_test(&nr_neigh->refcount)) { | 134 | if (atomic_dec_and_test(&nr_neigh->refcount)) { |
135 | if (nr_neigh->ax25) | ||
136 | ax25_cb_put(nr_neigh->ax25); | ||
135 | kfree(nr_neigh->digipeat); | 137 | kfree(nr_neigh->digipeat); |
136 | kfree(nr_neigh); | 138 | kfree(nr_neigh); |
137 | } | 139 | } |
diff --git a/include/net/phonet/pep.h b/include/net/phonet/pep.h index 4c61cdce4e5f..35672b1cf44a 100644 --- a/include/net/phonet/pep.h +++ b/include/net/phonet/pep.h | |||
@@ -44,6 +44,7 @@ struct pep_sock { | |||
44 | u8 rx_fc; /* RX flow control */ | 44 | u8 rx_fc; /* RX flow control */ |
45 | u8 tx_fc; /* TX flow control */ | 45 | u8 tx_fc; /* TX flow control */ |
46 | u8 init_enable; /* auto-enable at creation */ | 46 | u8 init_enable; /* auto-enable at creation */ |
47 | u8 aligned; | ||
47 | }; | 48 | }; |
48 | 49 | ||
49 | static inline struct pep_sock *pep_sk(struct sock *sk) | 50 | static inline struct pep_sock *pep_sk(struct sock *sk) |
@@ -77,6 +78,7 @@ static inline struct pnpipehdr *pnp_hdr(struct sk_buff *skb) | |||
77 | 78 | ||
78 | enum { | 79 | enum { |
79 | PNS_PIPE_DATA = 0x20, | 80 | PNS_PIPE_DATA = 0x20, |
81 | PNS_PIPE_ALIGNED_DATA, | ||
80 | 82 | ||
81 | PNS_PEP_CONNECT_REQ = 0x40, | 83 | PNS_PEP_CONNECT_REQ = 0x40, |
82 | PNS_PEP_CONNECT_RESP, | 84 | PNS_PEP_CONNECT_RESP, |
@@ -138,6 +140,7 @@ enum { | |||
138 | PN_PIPE_SB_NEGOTIATED_FC, | 140 | PN_PIPE_SB_NEGOTIATED_FC, |
139 | PN_PIPE_SB_REQUIRED_FC_TX, | 141 | PN_PIPE_SB_REQUIRED_FC_TX, |
140 | PN_PIPE_SB_PREFERRED_FC_RX, | 142 | PN_PIPE_SB_PREFERRED_FC_RX, |
143 | PN_PIPE_SB_ALIGNED_DATA, | ||
141 | }; | 144 | }; |
142 | 145 | ||
143 | /* Phonet pipe flow control models */ | 146 | /* Phonet pipe flow control models */ |
diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index 2d567265363e..b6cdc33b39c1 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h | |||
@@ -71,6 +71,7 @@ extern void qdisc_watchdog_cancel(struct qdisc_watchdog *wd); | |||
71 | 71 | ||
72 | extern struct Qdisc_ops pfifo_qdisc_ops; | 72 | extern struct Qdisc_ops pfifo_qdisc_ops; |
73 | extern struct Qdisc_ops bfifo_qdisc_ops; | 73 | extern struct Qdisc_ops bfifo_qdisc_ops; |
74 | extern struct Qdisc_ops pfifo_head_drop_qdisc_ops; | ||
74 | 75 | ||
75 | extern int fifo_set_limit(struct Qdisc *q, unsigned int limit); | 76 | extern int fifo_set_limit(struct Qdisc *q, unsigned int limit); |
76 | extern struct Qdisc *fifo_create_dflt(struct Qdisc *sch, struct Qdisc_ops *ops, | 77 | extern struct Qdisc *fifo_create_dflt(struct Qdisc *sch, struct Qdisc_ops *ops, |
diff --git a/include/net/regulatory.h b/include/net/regulatory.h index 47995b81c5d7..f873ee37f7e4 100644 --- a/include/net/regulatory.h +++ b/include/net/regulatory.h | |||
@@ -39,6 +39,7 @@ enum environment_cap { | |||
39 | * 00 - World regulatory domain | 39 | * 00 - World regulatory domain |
40 | * 99 - built by driver but a specific alpha2 cannot be determined | 40 | * 99 - built by driver but a specific alpha2 cannot be determined |
41 | * 98 - result of an intersection between two regulatory domains | 41 | * 98 - result of an intersection between two regulatory domains |
42 | * 97 - regulatory domain has not yet been configured | ||
42 | * @intersect: indicates whether the wireless core should intersect | 43 | * @intersect: indicates whether the wireless core should intersect |
43 | * the requested regulatory domain with the presently set regulatory | 44 | * the requested regulatory domain with the presently set regulatory |
44 | * domain. | 45 | * domain. |
diff --git a/include/net/request_sock.h b/include/net/request_sock.h index c9b50ebd9ce9..99e6e19b57c2 100644 --- a/include/net/request_sock.h +++ b/include/net/request_sock.h | |||
@@ -45,6 +45,8 @@ struct request_sock_ops { | |||
45 | void (*send_reset)(struct sock *sk, | 45 | void (*send_reset)(struct sock *sk, |
46 | struct sk_buff *skb); | 46 | struct sk_buff *skb); |
47 | void (*destructor)(struct request_sock *req); | 47 | void (*destructor)(struct request_sock *req); |
48 | void (*syn_ack_timeout)(struct sock *sk, | ||
49 | struct request_sock *req); | ||
48 | }; | 50 | }; |
49 | 51 | ||
50 | /* struct request_sock - mini sock to represent a connection request | 52 | /* struct request_sock - mini sock to represent a connection request |
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index dad558bc06fa..67dc08eaaa45 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h | |||
@@ -427,6 +427,25 @@ static inline struct sk_buff *qdisc_dequeue_head(struct Qdisc *sch) | |||
427 | return __qdisc_dequeue_head(sch, &sch->q); | 427 | return __qdisc_dequeue_head(sch, &sch->q); |
428 | } | 428 | } |
429 | 429 | ||
430 | static inline unsigned int __qdisc_queue_drop_head(struct Qdisc *sch, | ||
431 | struct sk_buff_head *list) | ||
432 | { | ||
433 | struct sk_buff *skb = __qdisc_dequeue_head(sch, list); | ||
434 | |||
435 | if (likely(skb != NULL)) { | ||
436 | unsigned int len = qdisc_pkt_len(skb); | ||
437 | kfree_skb(skb); | ||
438 | return len; | ||
439 | } | ||
440 | |||
441 | return 0; | ||
442 | } | ||
443 | |||
444 | static inline unsigned int qdisc_queue_drop_head(struct Qdisc *sch) | ||
445 | { | ||
446 | return __qdisc_queue_drop_head(sch, &sch->q); | ||
447 | } | ||
448 | |||
430 | static inline struct sk_buff *__qdisc_dequeue_tail(struct Qdisc *sch, | 449 | static inline struct sk_buff *__qdisc_dequeue_tail(struct Qdisc *sch, |
431 | struct sk_buff_head *list) | 450 | struct sk_buff_head *list) |
432 | { | 451 | { |
diff --git a/include/net/snmp.h b/include/net/snmp.h index f0d756f2ac99..da02ee027d69 100644 --- a/include/net/snmp.h +++ b/include/net/snmp.h | |||
@@ -32,7 +32,7 @@ | |||
32 | * - name of entries. | 32 | * - name of entries. |
33 | */ | 33 | */ |
34 | struct snmp_mib { | 34 | struct snmp_mib { |
35 | char *name; | 35 | const char *name; |
36 | int entry; | 36 | int entry; |
37 | }; | 37 | }; |
38 | 38 | ||
diff --git a/include/net/tcp.h b/include/net/tcp.h index 788c99f98597..87d164b9bd8f 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -400,6 +400,8 @@ extern int compat_tcp_setsockopt(struct sock *sk, | |||
400 | int level, int optname, | 400 | int level, int optname, |
401 | char __user *optval, unsigned int optlen); | 401 | char __user *optval, unsigned int optlen); |
402 | extern void tcp_set_keepalive(struct sock *sk, int val); | 402 | extern void tcp_set_keepalive(struct sock *sk, int val); |
403 | extern void tcp_syn_ack_timeout(struct sock *sk, | ||
404 | struct request_sock *req); | ||
403 | extern int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, | 405 | extern int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, |
404 | struct msghdr *msg, | 406 | struct msghdr *msg, |
405 | size_t len, int nonblock, | 407 | size_t len, int nonblock, |
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 6d85861ab990..fcee547ca7e3 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -1367,8 +1367,8 @@ struct xfrmk_spdinfo { | |||
1367 | extern struct xfrm_state *xfrm_find_acq_byseq(struct net *net, u32 seq); | 1367 | extern struct xfrm_state *xfrm_find_acq_byseq(struct net *net, u32 seq); |
1368 | extern int xfrm_state_delete(struct xfrm_state *x); | 1368 | extern int xfrm_state_delete(struct xfrm_state *x); |
1369 | extern int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info); | 1369 | extern int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info); |
1370 | extern void xfrm_sad_getinfo(struct xfrmk_sadinfo *si); | 1370 | extern void xfrm_sad_getinfo(struct net *net, struct xfrmk_sadinfo *si); |
1371 | extern void xfrm_spd_getinfo(struct xfrmk_spdinfo *si); | 1371 | extern void xfrm_spd_getinfo(struct net *net, struct xfrmk_spdinfo *si); |
1372 | extern int xfrm_replay_check(struct xfrm_state *x, | 1372 | extern int xfrm_replay_check(struct xfrm_state *x, |
1373 | struct sk_buff *skb, __be32 seq); | 1373 | struct sk_buff *skb, __be32 seq); |
1374 | extern void xfrm_replay_advance(struct xfrm_state *x, __be32 seq); | 1374 | extern void xfrm_replay_advance(struct xfrm_state *x, __be32 seq); |
@@ -1408,9 +1408,9 @@ extern int xfrm6_input_addr(struct sk_buff *skb, xfrm_address_t *daddr, | |||
1408 | xfrm_address_t *saddr, u8 proto); | 1408 | xfrm_address_t *saddr, u8 proto); |
1409 | extern int xfrm6_tunnel_register(struct xfrm6_tunnel *handler, unsigned short family); | 1409 | extern int xfrm6_tunnel_register(struct xfrm6_tunnel *handler, unsigned short family); |
1410 | extern int xfrm6_tunnel_deregister(struct xfrm6_tunnel *handler, unsigned short family); | 1410 | extern int xfrm6_tunnel_deregister(struct xfrm6_tunnel *handler, unsigned short family); |
1411 | extern __be32 xfrm6_tunnel_alloc_spi(xfrm_address_t *saddr); | 1411 | extern __be32 xfrm6_tunnel_alloc_spi(struct net *net, xfrm_address_t *saddr); |
1412 | extern void xfrm6_tunnel_free_spi(xfrm_address_t *saddr); | 1412 | extern void xfrm6_tunnel_free_spi(struct net *net, xfrm_address_t *saddr); |
1413 | extern __be32 xfrm6_tunnel_spi_lookup(xfrm_address_t *saddr); | 1413 | extern __be32 xfrm6_tunnel_spi_lookup(struct net *net, xfrm_address_t *saddr); |
1414 | extern int xfrm6_extract_output(struct xfrm_state *x, struct sk_buff *skb); | 1414 | extern int xfrm6_extract_output(struct xfrm_state *x, struct sk_buff *skb); |
1415 | extern int xfrm6_prepare_output(struct xfrm_state *x, struct sk_buff *skb); | 1415 | extern int xfrm6_prepare_output(struct xfrm_state *x, struct sk_buff *skb); |
1416 | extern int xfrm6_output(struct sk_buff *skb); | 1416 | extern int xfrm6_output(struct sk_buff *skb); |