diff options
Diffstat (limited to 'include')
27 files changed, 435 insertions, 299 deletions
diff --git a/include/linux/brcmphy.h b/include/linux/brcmphy.h new file mode 100644 index 000000000000..9b64b6d67873 --- /dev/null +++ b/include/linux/brcmphy.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #define PHY_BRCM_WIRESPEED_ENABLE 0x00000001 | ||
2 | #define PHY_BRCM_AUTO_PWRDWN_ENABLE 0x00000002 | ||
3 | #define PHY_BRCM_APD_CLK125_ENABLE 0x00000004 | ||
4 | #define PHY_BRCM_STD_IBND_DISABLE 0x00000008 | ||
5 | #define PHY_BRCM_EXT_IBND_RX_ENABLE 0x00000010 | ||
6 | #define PHY_BRCM_EXT_IBND_TX_ENABLE 0x00000020 | ||
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 0b5e03eae6d2..9300f37cd7e8 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h | |||
@@ -306,20 +306,32 @@ struct ieee80211_ht_addt_info { | |||
306 | #define IEEE80211_HT_CAP_SGI_40 0x0040 | 306 | #define IEEE80211_HT_CAP_SGI_40 0x0040 |
307 | #define IEEE80211_HT_CAP_DELAY_BA 0x0400 | 307 | #define IEEE80211_HT_CAP_DELAY_BA 0x0400 |
308 | #define IEEE80211_HT_CAP_MAX_AMSDU 0x0800 | 308 | #define IEEE80211_HT_CAP_MAX_AMSDU 0x0800 |
309 | /* 802.11n HT capability AMPDU settings */ | ||
309 | #define IEEE80211_HT_CAP_AMPDU_FACTOR 0x03 | 310 | #define IEEE80211_HT_CAP_AMPDU_FACTOR 0x03 |
310 | #define IEEE80211_HT_CAP_AMPDU_DENSITY 0x1C | 311 | #define IEEE80211_HT_CAP_AMPDU_DENSITY 0x1C |
312 | /* 802.11n HT capability MSC set */ | ||
313 | #define IEEE80211_SUPP_MCS_SET_UEQM 4 | ||
314 | #define IEEE80211_HT_CAP_MAX_STREAMS 4 | ||
315 | #define IEEE80211_SUPP_MCS_SET_LEN 10 | ||
316 | /* maximum streams the spec allows */ | ||
317 | #define IEEE80211_HT_CAP_MCS_TX_DEFINED 0x01 | ||
318 | #define IEEE80211_HT_CAP_MCS_TX_RX_DIFF 0x02 | ||
319 | #define IEEE80211_HT_CAP_MCS_TX_STREAMS 0x0C | ||
320 | #define IEEE80211_HT_CAP_MCS_TX_UEQM 0x10 | ||
311 | /* 802.11n HT IE masks */ | 321 | /* 802.11n HT IE masks */ |
312 | #define IEEE80211_HT_IE_CHA_SEC_OFFSET 0x03 | 322 | #define IEEE80211_HT_IE_CHA_SEC_OFFSET 0x03 |
323 | #define IEEE80211_HT_IE_CHA_SEC_ABOVE 0x01 | ||
324 | #define IEEE80211_HT_IE_CHA_SEC_BELOW 0x03 | ||
313 | #define IEEE80211_HT_IE_CHA_WIDTH 0x04 | 325 | #define IEEE80211_HT_IE_CHA_WIDTH 0x04 |
314 | #define IEEE80211_HT_IE_HT_PROTECTION 0x0003 | 326 | #define IEEE80211_HT_IE_HT_PROTECTION 0x0003 |
315 | #define IEEE80211_HT_IE_NON_GF_STA_PRSNT 0x0004 | 327 | #define IEEE80211_HT_IE_NON_GF_STA_PRSNT 0x0004 |
316 | #define IEEE80211_HT_IE_NON_HT_STA_PRSNT 0x0010 | 328 | #define IEEE80211_HT_IE_NON_HT_STA_PRSNT 0x0010 |
317 | 329 | ||
318 | /* MIMO Power Save Modes */ | 330 | /* MIMO Power Save Modes */ |
319 | #define WLAN_HT_CAP_MIMO_PS_STATIC 0 | 331 | #define WLAN_HT_CAP_MIMO_PS_STATIC 0 |
320 | #define WLAN_HT_CAP_MIMO_PS_DYNAMIC 1 | 332 | #define WLAN_HT_CAP_MIMO_PS_DYNAMIC 1 |
321 | #define WLAN_HT_CAP_MIMO_PS_INVALID 2 | 333 | #define WLAN_HT_CAP_MIMO_PS_INVALID 2 |
322 | #define WLAN_HT_CAP_MIMO_PS_DISABLED 3 | 334 | #define WLAN_HT_CAP_MIMO_PS_DISABLED 3 |
323 | 335 | ||
324 | /* Authentication algorithms */ | 336 | /* Authentication algorithms */ |
325 | #define WLAN_AUTH_OPEN 0 | 337 | #define WLAN_AUTH_OPEN 0 |
@@ -552,16 +564,17 @@ enum ieee80211_back_parties { | |||
552 | */ | 564 | */ |
553 | static inline u8 *ieee80211_get_SA(struct ieee80211_hdr *hdr) | 565 | static inline u8 *ieee80211_get_SA(struct ieee80211_hdr *hdr) |
554 | { | 566 | { |
555 | u8 *raw = (u8 *) hdr; | 567 | __le16 fc = hdr->frame_control; |
556 | u8 tofrom = (*(raw+1)) & 3; /* get the TODS and FROMDS bits */ | 568 | fc &= cpu_to_le16(IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS); |
557 | 569 | ||
558 | switch (tofrom) { | 570 | switch (fc) { |
559 | case 2: | 571 | case __constant_cpu_to_le16(IEEE80211_FCTL_FROMDS): |
560 | return hdr->addr3; | 572 | return hdr->addr3; |
561 | case 3: | 573 | case __constant_cpu_to_le16(IEEE80211_FCTL_TODS|IEEE80211_FCTL_FROMDS): |
562 | return hdr->addr4; | 574 | return hdr->addr4; |
575 | default: | ||
576 | return hdr->addr2; | ||
563 | } | 577 | } |
564 | return hdr->addr2; | ||
565 | } | 578 | } |
566 | 579 | ||
567 | /** | 580 | /** |
@@ -577,12 +590,13 @@ static inline u8 *ieee80211_get_SA(struct ieee80211_hdr *hdr) | |||
577 | */ | 590 | */ |
578 | static inline u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr) | 591 | static inline u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr) |
579 | { | 592 | { |
580 | u8 *raw = (u8 *) hdr; | 593 | __le16 fc = hdr->frame_control; |
581 | u8 to_ds = (*(raw+1)) & 1; /* get the TODS bit */ | 594 | fc &= cpu_to_le16(IEEE80211_FCTL_TODS); |
582 | 595 | ||
583 | if (to_ds) | 596 | if (fc) |
584 | return hdr->addr3; | 597 | return hdr->addr3; |
585 | return hdr->addr1; | 598 | else |
599 | return hdr->addr1; | ||
586 | } | 600 | } |
587 | 601 | ||
588 | /** | 602 | /** |
@@ -595,8 +609,8 @@ static inline u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr) | |||
595 | */ | 609 | */ |
596 | static inline int ieee80211_get_morefrag(struct ieee80211_hdr *hdr) | 610 | static inline int ieee80211_get_morefrag(struct ieee80211_hdr *hdr) |
597 | { | 611 | { |
598 | return (le16_to_cpu(hdr->frame_control) & | 612 | __le16 fc = hdr->frame_control; |
599 | IEEE80211_FCTL_MOREFRAGS) != 0; | 613 | return !!(fc & cpu_to_le16(IEEE80211_FCTL_MOREFRAGS)); |
600 | } | 614 | } |
601 | 615 | ||
602 | #endif /* IEEE80211_H */ | 616 | #endif /* IEEE80211_H */ |
diff --git a/include/linux/netfilter/nfnetlink_conntrack.h b/include/linux/netfilter/nfnetlink_conntrack.h index 0a383ac083cb..759bc043dc65 100644 --- a/include/linux/netfilter/nfnetlink_conntrack.h +++ b/include/linux/netfilter/nfnetlink_conntrack.h | |||
@@ -81,6 +81,7 @@ enum ctattr_protoinfo { | |||
81 | CTA_PROTOINFO_UNSPEC, | 81 | CTA_PROTOINFO_UNSPEC, |
82 | CTA_PROTOINFO_TCP, | 82 | CTA_PROTOINFO_TCP, |
83 | CTA_PROTOINFO_DCCP, | 83 | CTA_PROTOINFO_DCCP, |
84 | CTA_PROTOINFO_SCTP, | ||
84 | __CTA_PROTOINFO_MAX | 85 | __CTA_PROTOINFO_MAX |
85 | }; | 86 | }; |
86 | #define CTA_PROTOINFO_MAX (__CTA_PROTOINFO_MAX - 1) | 87 | #define CTA_PROTOINFO_MAX (__CTA_PROTOINFO_MAX - 1) |
@@ -103,6 +104,15 @@ enum ctattr_protoinfo_dccp { | |||
103 | }; | 104 | }; |
104 | #define CTA_PROTOINFO_DCCP_MAX (__CTA_PROTOINFO_DCCP_MAX - 1) | 105 | #define CTA_PROTOINFO_DCCP_MAX (__CTA_PROTOINFO_DCCP_MAX - 1) |
105 | 106 | ||
107 | enum ctattr_protoinfo_sctp { | ||
108 | CTA_PROTOINFO_SCTP_UNSPEC, | ||
109 | CTA_PROTOINFO_SCTP_STATE, | ||
110 | CTA_PROTOINFO_SCTP_VTAG_ORIGINAL, | ||
111 | CTA_PROTOINFO_SCTP_VTAG_REPLY, | ||
112 | __CTA_PROTOINFO_SCTP_MAX | ||
113 | }; | ||
114 | #define CTA_PROTOINFO_SCTP_MAX (__CTA_PROTOINFO_SCTP_MAX - 1) | ||
115 | |||
106 | enum ctattr_counters { | 116 | enum ctattr_counters { |
107 | CTA_COUNTERS_UNSPEC, | 117 | CTA_COUNTERS_UNSPEC, |
108 | CTA_COUNTERS_PACKETS, /* old 64bit counters */ | 118 | CTA_COUNTERS_PACKETS, /* old 64bit counters */ |
diff --git a/include/linux/netfilter_bridge/ebt_ip6.h b/include/linux/netfilter_bridge/ebt_ip6.h new file mode 100644 index 000000000000..2273c3ae33ca --- /dev/null +++ b/include/linux/netfilter_bridge/ebt_ip6.h | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | * ebt_ip6 | ||
3 | * | ||
4 | * Authors: | ||
5 | * Kuo-Lang Tseng <kuo-lang.tseng@intel.com> | ||
6 | * Manohar Castelino <manohar.r.castelino@intel.com> | ||
7 | * | ||
8 | * Jan 11, 2008 | ||
9 | * | ||
10 | */ | ||
11 | |||
12 | #ifndef __LINUX_BRIDGE_EBT_IP6_H | ||
13 | #define __LINUX_BRIDGE_EBT_IP6_H | ||
14 | |||
15 | #define EBT_IP6_SOURCE 0x01 | ||
16 | #define EBT_IP6_DEST 0x02 | ||
17 | #define EBT_IP6_TCLASS 0x04 | ||
18 | #define EBT_IP6_PROTO 0x08 | ||
19 | #define EBT_IP6_SPORT 0x10 | ||
20 | #define EBT_IP6_DPORT 0x20 | ||
21 | #define EBT_IP6_MASK (EBT_IP6_SOURCE | EBT_IP6_DEST | EBT_IP6_TCLASS |\ | ||
22 | EBT_IP6_PROTO | EBT_IP6_SPORT | EBT_IP6_DPORT) | ||
23 | #define EBT_IP6_MATCH "ip6" | ||
24 | |||
25 | /* the same values are used for the invflags */ | ||
26 | struct ebt_ip6_info | ||
27 | { | ||
28 | struct in6_addr saddr; | ||
29 | struct in6_addr daddr; | ||
30 | struct in6_addr smsk; | ||
31 | struct in6_addr dmsk; | ||
32 | uint8_t tclass; | ||
33 | uint8_t protocol; | ||
34 | uint8_t bitmask; | ||
35 | uint8_t invflags; | ||
36 | uint16_t sport[2]; | ||
37 | uint16_t dport[2]; | ||
38 | }; | ||
39 | |||
40 | #endif | ||
diff --git a/include/linux/netfilter_bridge/ebt_log.h b/include/linux/netfilter_bridge/ebt_log.h index 96e231ae7554..b76e653157e5 100644 --- a/include/linux/netfilter_bridge/ebt_log.h +++ b/include/linux/netfilter_bridge/ebt_log.h | |||
@@ -4,7 +4,8 @@ | |||
4 | #define EBT_LOG_IP 0x01 /* if the frame is made by ip, log the ip information */ | 4 | #define EBT_LOG_IP 0x01 /* if the frame is made by ip, log the ip information */ |
5 | #define EBT_LOG_ARP 0x02 | 5 | #define EBT_LOG_ARP 0x02 |
6 | #define EBT_LOG_NFLOG 0x04 | 6 | #define EBT_LOG_NFLOG 0x04 |
7 | #define EBT_LOG_MASK (EBT_LOG_IP | EBT_LOG_ARP) | 7 | #define EBT_LOG_IP6 0x08 |
8 | #define EBT_LOG_MASK (EBT_LOG_IP | EBT_LOG_ARP | EBT_LOG_IP6) | ||
8 | #define EBT_LOG_PREFIX_SIZE 30 | 9 | #define EBT_LOG_PREFIX_SIZE 30 |
9 | #define EBT_LOG_WATCHER "log" | 10 | #define EBT_LOG_WATCHER "log" |
10 | 11 | ||
diff --git a/include/linux/netfilter_ipv4.h b/include/linux/netfilter_ipv4.h index 650318b0c405..29c7727ff0e8 100644 --- a/include/linux/netfilter_ipv4.h +++ b/include/linux/netfilter_ipv4.h | |||
@@ -60,6 +60,7 @@ enum nf_ip_hook_priorities { | |||
60 | NF_IP_PRI_MANGLE = -150, | 60 | NF_IP_PRI_MANGLE = -150, |
61 | NF_IP_PRI_NAT_DST = -100, | 61 | NF_IP_PRI_NAT_DST = -100, |
62 | NF_IP_PRI_FILTER = 0, | 62 | NF_IP_PRI_FILTER = 0, |
63 | NF_IP_PRI_SECURITY = 50, | ||
63 | NF_IP_PRI_NAT_SRC = 100, | 64 | NF_IP_PRI_NAT_SRC = 100, |
64 | NF_IP_PRI_SELINUX_LAST = 225, | 65 | NF_IP_PRI_SELINUX_LAST = 225, |
65 | NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX, | 66 | NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX, |
diff --git a/include/linux/netfilter_ipv6.h b/include/linux/netfilter_ipv6.h index 3475a65dae9b..fd50988b83ec 100644 --- a/include/linux/netfilter_ipv6.h +++ b/include/linux/netfilter_ipv6.h | |||
@@ -64,6 +64,7 @@ enum nf_ip6_hook_priorities { | |||
64 | NF_IP6_PRI_MANGLE = -150, | 64 | NF_IP6_PRI_MANGLE = -150, |
65 | NF_IP6_PRI_NAT_DST = -100, | 65 | NF_IP6_PRI_NAT_DST = -100, |
66 | NF_IP6_PRI_FILTER = 0, | 66 | NF_IP6_PRI_FILTER = 0, |
67 | NF_IP6_PRI_SECURITY = 50, | ||
67 | NF_IP6_PRI_NAT_SRC = 100, | 68 | NF_IP6_PRI_NAT_SRC = 100, |
68 | NF_IP6_PRI_SELINUX_LAST = 225, | 69 | NF_IP6_PRI_SELINUX_LAST = 225, |
69 | NF_IP6_PRI_LAST = INT_MAX, | 70 | NF_IP6_PRI_LAST = INT_MAX, |
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index bec1062a25a1..9ff1b54908f3 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
@@ -193,7 +193,7 @@ extern int netlink_unregister_notifier(struct notifier_block *nb); | |||
193 | 193 | ||
194 | /* finegrained unicast helpers: */ | 194 | /* finegrained unicast helpers: */ |
195 | struct sock *netlink_getsockbyfilp(struct file *filp); | 195 | struct sock *netlink_getsockbyfilp(struct file *filp); |
196 | int netlink_attachskb(struct sock *sk, struct sk_buff *skb, int nonblock, | 196 | int netlink_attachskb(struct sock *sk, struct sk_buff *skb, |
197 | long *timeo, struct sock *ssk); | 197 | long *timeo, struct sock *ssk); |
198 | void netlink_detachskb(struct sock *sk, struct sk_buff *skb); | 198 | void netlink_detachskb(struct sock *sk, struct sk_buff *skb); |
199 | int netlink_sendskb(struct sock *sk, struct sk_buff *skb); | 199 | int netlink_sendskb(struct sock *sk, struct sk_buff *skb); |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 9b940e644179..1bbb346066dd 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -1980,6 +1980,7 @@ | |||
1980 | #define PCI_DEVICE_ID_TIGON3_5787M 0x1693 | 1980 | #define PCI_DEVICE_ID_TIGON3_5787M 0x1693 |
1981 | #define PCI_DEVICE_ID_TIGON3_5782 0x1696 | 1981 | #define PCI_DEVICE_ID_TIGON3_5782 0x1696 |
1982 | #define PCI_DEVICE_ID_TIGON3_5784 0x1698 | 1982 | #define PCI_DEVICE_ID_TIGON3_5784 0x1698 |
1983 | #define PCI_DEVICE_ID_TIGON3_5785 0x1699 | ||
1983 | #define PCI_DEVICE_ID_TIGON3_5786 0x169a | 1984 | #define PCI_DEVICE_ID_TIGON3_5786 0x169a |
1984 | #define PCI_DEVICE_ID_TIGON3_5787 0x169b | 1985 | #define PCI_DEVICE_ID_TIGON3_5787 0x169b |
1985 | #define PCI_DEVICE_ID_TIGON3_5788 0x169c | 1986 | #define PCI_DEVICE_ID_TIGON3_5788 0x169c |
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 18e62e3d406f..9881295f3857 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
@@ -296,10 +296,9 @@ struct tcp_sock { | |||
296 | u32 rcv_ssthresh; /* Current window clamp */ | 296 | u32 rcv_ssthresh; /* Current window clamp */ |
297 | 297 | ||
298 | u32 frto_highmark; /* snd_nxt when RTO occurred */ | 298 | u32 frto_highmark; /* snd_nxt when RTO occurred */ |
299 | u8 reordering; /* Packet reordering metric. */ | 299 | u16 advmss; /* Advertised MSS */ |
300 | u8 frto_counter; /* Number of new acks after RTO */ | 300 | u8 frto_counter; /* Number of new acks after RTO */ |
301 | u8 nonagle; /* Disable Nagle algorithm? */ | 301 | u8 nonagle; /* Disable Nagle algorithm? */ |
302 | u8 keepalive_probes; /* num of allowed keep alive probes */ | ||
303 | 302 | ||
304 | /* RTT measurement */ | 303 | /* RTT measurement */ |
305 | u32 srtt; /* smoothed round trip time << 3 */ | 304 | u32 srtt; /* smoothed round trip time << 3 */ |
@@ -310,6 +309,10 @@ struct tcp_sock { | |||
310 | 309 | ||
311 | u32 packets_out; /* Packets which are "in flight" */ | 310 | u32 packets_out; /* Packets which are "in flight" */ |
312 | u32 retrans_out; /* Retransmitted packets out */ | 311 | u32 retrans_out; /* Retransmitted packets out */ |
312 | |||
313 | u16 urg_data; /* Saved octet of OOB data and control flags */ | ||
314 | u8 urg_mode; /* In urgent mode */ | ||
315 | u8 ecn_flags; /* ECN status bits. */ | ||
313 | /* | 316 | /* |
314 | * Options received (usually on last packet, some only on SYN packets). | 317 | * Options received (usually on last packet, some only on SYN packets). |
315 | */ | 318 | */ |
@@ -325,13 +328,24 @@ struct tcp_sock { | |||
325 | u32 snd_cwnd_used; | 328 | u32 snd_cwnd_used; |
326 | u32 snd_cwnd_stamp; | 329 | u32 snd_cwnd_stamp; |
327 | 330 | ||
328 | struct sk_buff_head out_of_order_queue; /* Out of order segments go here */ | ||
329 | |||
330 | u32 rcv_wnd; /* Current receiver window */ | 331 | u32 rcv_wnd; /* Current receiver window */ |
331 | u32 write_seq; /* Tail(+1) of data held in tcp send buffer */ | 332 | u32 write_seq; /* Tail(+1) of data held in tcp send buffer */ |
332 | u32 pushed_seq; /* Last pushed seq, required to talk to windows */ | 333 | u32 pushed_seq; /* Last pushed seq, required to talk to windows */ |
334 | u32 lost_out; /* Lost packets */ | ||
335 | u32 sacked_out; /* SACK'd packets */ | ||
336 | u32 fackets_out; /* FACK'd packets */ | ||
337 | u32 tso_deferred; | ||
338 | u32 bytes_acked; /* Appropriate Byte Counting - RFC3465 */ | ||
333 | 339 | ||
334 | /* SACKs data */ | 340 | /* from STCP, retrans queue hinting */ |
341 | struct sk_buff* lost_skb_hint; | ||
342 | struct sk_buff *scoreboard_skb_hint; | ||
343 | struct sk_buff *retransmit_skb_hint; | ||
344 | struct sk_buff *forward_skb_hint; | ||
345 | |||
346 | struct sk_buff_head out_of_order_queue; /* Out of order segments go here */ | ||
347 | |||
348 | /* SACKs data, these 2 need to be together (see tcp_build_and_update_options) */ | ||
335 | struct tcp_sack_block duplicate_sack[1]; /* D-SACK block */ | 349 | struct tcp_sack_block duplicate_sack[1]; /* D-SACK block */ |
336 | struct tcp_sack_block selective_acks[4]; /* The SACKS themselves*/ | 350 | struct tcp_sack_block selective_acks[4]; /* The SACKS themselves*/ |
337 | 351 | ||
@@ -342,23 +356,14 @@ struct tcp_sock { | |||
342 | * sacked_out > 0) | 356 | * sacked_out > 0) |
343 | */ | 357 | */ |
344 | 358 | ||
345 | /* from STCP, retrans queue hinting */ | ||
346 | struct sk_buff* lost_skb_hint; | ||
347 | |||
348 | struct sk_buff *scoreboard_skb_hint; | ||
349 | struct sk_buff *retransmit_skb_hint; | ||
350 | struct sk_buff *forward_skb_hint; | ||
351 | |||
352 | int lost_cnt_hint; | 359 | int lost_cnt_hint; |
353 | int retransmit_cnt_hint; | 360 | int retransmit_cnt_hint; |
354 | 361 | ||
355 | u32 lost_retrans_low; /* Sent seq after any rxmit (lowest) */ | 362 | u32 lost_retrans_low; /* Sent seq after any rxmit (lowest) */ |
356 | 363 | ||
357 | u16 advmss; /* Advertised MSS */ | 364 | u8 reordering; /* Packet reordering metric. */ |
365 | u8 keepalive_probes; /* num of allowed keep alive probes */ | ||
358 | u32 prior_ssthresh; /* ssthresh saved at recovery start */ | 366 | u32 prior_ssthresh; /* ssthresh saved at recovery start */ |
359 | u32 lost_out; /* Lost packets */ | ||
360 | u32 sacked_out; /* SACK'd packets */ | ||
361 | u32 fackets_out; /* FACK'd packets */ | ||
362 | u32 high_seq; /* snd_nxt at onset of congestion */ | 367 | u32 high_seq; /* snd_nxt at onset of congestion */ |
363 | 368 | ||
364 | u32 retrans_stamp; /* Timestamp of the last retransmit, | 369 | u32 retrans_stamp; /* Timestamp of the last retransmit, |
@@ -366,25 +371,18 @@ struct tcp_sock { | |||
366 | * the first SYN. */ | 371 | * the first SYN. */ |
367 | u32 undo_marker; /* tracking retrans started here. */ | 372 | u32 undo_marker; /* tracking retrans started here. */ |
368 | int undo_retrans; /* number of undoable retransmissions. */ | 373 | int undo_retrans; /* number of undoable retransmissions. */ |
374 | u32 total_retrans; /* Total retransmits for entire connection */ | ||
375 | |||
369 | u32 urg_seq; /* Seq of received urgent pointer */ | 376 | u32 urg_seq; /* Seq of received urgent pointer */ |
370 | u16 urg_data; /* Saved octet of OOB data and control flags */ | ||
371 | u8 urg_mode; /* In urgent mode */ | ||
372 | u8 ecn_flags; /* ECN status bits. */ | ||
373 | u32 snd_up; /* Urgent pointer */ | 377 | u32 snd_up; /* Urgent pointer */ |
374 | 378 | ||
375 | u32 total_retrans; /* Total retransmits for entire connection */ | ||
376 | u32 bytes_acked; /* Appropriate Byte Counting - RFC3465 */ | ||
377 | |||
378 | unsigned int keepalive_time; /* time before keep alive takes place */ | 379 | unsigned int keepalive_time; /* time before keep alive takes place */ |
379 | unsigned int keepalive_intvl; /* time interval between keep alive probes */ | 380 | unsigned int keepalive_intvl; /* time interval between keep alive probes */ |
380 | int linger2; | ||
381 | 381 | ||
382 | struct tcp_deferred_accept_info defer_tcp_accept; | 382 | struct tcp_deferred_accept_info defer_tcp_accept; |
383 | 383 | ||
384 | unsigned long last_synq_overflow; | 384 | unsigned long last_synq_overflow; |
385 | 385 | ||
386 | u32 tso_deferred; | ||
387 | |||
388 | /* Receiver side RTT estimation */ | 386 | /* Receiver side RTT estimation */ |
389 | struct { | 387 | struct { |
390 | u32 rtt; | 388 | u32 rtt; |
@@ -412,6 +410,8 @@ struct tcp_sock { | |||
412 | /* TCP MD5 Signagure Option information */ | 410 | /* TCP MD5 Signagure Option information */ |
413 | struct tcp_md5sig_info *md5sig_info; | 411 | struct tcp_md5sig_info *md5sig_info; |
414 | #endif | 412 | #endif |
413 | |||
414 | int linger2; | ||
415 | }; | 415 | }; |
416 | 416 | ||
417 | static inline struct tcp_sock *tcp_sk(const struct sock *sk) | 417 | static inline struct tcp_sock *tcp_sk(const struct sock *sk) |
diff --git a/include/linux/tipc_config.h b/include/linux/tipc_config.h index b0c916d1f375..2bc6fa4adeb5 100644 --- a/include/linux/tipc_config.h +++ b/include/linux/tipc_config.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * include/linux/tipc_config.h: Include file for TIPC configuration interface | 2 | * include/linux/tipc_config.h: Include file for TIPC configuration interface |
3 | * | 3 | * |
4 | * Copyright (c) 2003-2006, Ericsson AB | 4 | * Copyright (c) 2003-2006, Ericsson AB |
5 | * Copyright (c) 2005, Wind River Systems | 5 | * Copyright (c) 2005-2007, Wind River Systems |
6 | * All rights reserved. | 6 | * All rights reserved. |
7 | * | 7 | * |
8 | * Redistribution and use in source and binary forms, with or without | 8 | * Redistribution and use in source and binary forms, with or without |
@@ -136,6 +136,14 @@ | |||
136 | #define TIPC_CMD_SET_NETID 0x800B /* tx unsigned, rx none */ | 136 | #define TIPC_CMD_SET_NETID 0x800B /* tx unsigned, rx none */ |
137 | 137 | ||
138 | /* | 138 | /* |
139 | * Reserved commands: | ||
140 | * May not be issued by any process. | ||
141 | * Used internally by TIPC. | ||
142 | */ | ||
143 | |||
144 | #define TIPC_CMD_NOT_NET_ADMIN 0xC001 /* tx none, rx none */ | ||
145 | |||
146 | /* | ||
139 | * TLV types defined for TIPC | 147 | * TLV types defined for TIPC |
140 | */ | 148 | */ |
141 | 149 | ||
diff --git a/include/linux/wanrouter.h b/include/linux/wanrouter.h index 3add87465b1f..e0aa39612eba 100644 --- a/include/linux/wanrouter.h +++ b/include/linux/wanrouter.h | |||
@@ -522,7 +522,7 @@ extern int wanrouter_proc_init(void); | |||
522 | extern void wanrouter_proc_cleanup(void); | 522 | extern void wanrouter_proc_cleanup(void); |
523 | extern int wanrouter_proc_add(struct wan_device *wandev); | 523 | extern int wanrouter_proc_add(struct wan_device *wandev); |
524 | extern int wanrouter_proc_delete(struct wan_device *wandev); | 524 | extern int wanrouter_proc_delete(struct wan_device *wandev); |
525 | extern int wanrouter_ioctl( struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg); | 525 | extern long wanrouter_ioctl(struct file *file, unsigned int cmd, unsigned long arg); |
526 | 526 | ||
527 | /* Public Data */ | 527 | /* Public Data */ |
528 | /* list of registered devices */ | 528 | /* list of registered devices */ |
diff --git a/include/linux/wireless.h b/include/linux/wireless.h index 0a9b5b41ed67..4a95a0e5eeca 100644 --- a/include/linux/wireless.h +++ b/include/linux/wireless.h | |||
@@ -611,6 +611,7 @@ | |||
611 | #define IW_ENCODE_ALG_WEP 1 | 611 | #define IW_ENCODE_ALG_WEP 1 |
612 | #define IW_ENCODE_ALG_TKIP 2 | 612 | #define IW_ENCODE_ALG_TKIP 2 |
613 | #define IW_ENCODE_ALG_CCMP 3 | 613 | #define IW_ENCODE_ALG_CCMP 3 |
614 | #define IW_ENCODE_ALG_PMK 4 | ||
614 | /* struct iw_encode_ext ->ext_flags */ | 615 | /* struct iw_encode_ext ->ext_flags */ |
615 | #define IW_ENCODE_EXT_TX_SEQ_VALID 0x00000001 | 616 | #define IW_ENCODE_EXT_TX_SEQ_VALID 0x00000001 |
616 | #define IW_ENCODE_EXT_RX_SEQ_VALID 0x00000002 | 617 | #define IW_ENCODE_EXT_RX_SEQ_VALID 0x00000002 |
@@ -630,6 +631,7 @@ | |||
630 | #define IW_ENC_CAPA_WPA2 0x00000002 | 631 | #define IW_ENC_CAPA_WPA2 0x00000002 |
631 | #define IW_ENC_CAPA_CIPHER_TKIP 0x00000004 | 632 | #define IW_ENC_CAPA_CIPHER_TKIP 0x00000004 |
632 | #define IW_ENC_CAPA_CIPHER_CCMP 0x00000008 | 633 | #define IW_ENC_CAPA_CIPHER_CCMP 0x00000008 |
634 | #define IW_ENC_CAPA_4WAY_HANDSHAKE 0x00000010 | ||
633 | 635 | ||
634 | /* Event capability macros - in (struct iw_range *)->event_capa | 636 | /* Event capability macros - in (struct iw_range *)->event_capa |
635 | * Because we have more than 32 possible events, we use an array of | 637 | * Because we have more than 32 possible events, we use an array of |
diff --git a/include/net/ieee80211.h b/include/net/ieee80211.h index 529816bfbc52..b31399e1fd83 100644 --- a/include/net/ieee80211.h +++ b/include/net/ieee80211.h | |||
@@ -1262,9 +1262,6 @@ extern int ieee80211_set_encryption(struct ieee80211_device *ieee); | |||
1262 | /* ieee80211_tx.c */ | 1262 | /* ieee80211_tx.c */ |
1263 | extern int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev); | 1263 | extern int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev); |
1264 | extern void ieee80211_txb_free(struct ieee80211_txb *); | 1264 | extern void ieee80211_txb_free(struct ieee80211_txb *); |
1265 | extern int ieee80211_tx_frame(struct ieee80211_device *ieee, | ||
1266 | struct ieee80211_hdr *frame, int hdr_len, | ||
1267 | int total_len, int encrypt_mpdu); | ||
1268 | 1265 | ||
1269 | /* ieee80211_rx.c */ | 1266 | /* ieee80211_rx.c */ |
1270 | extern void ieee80211_rx_any(struct ieee80211_device *ieee, | 1267 | extern void ieee80211_rx_any(struct ieee80211_device *ieee, |
@@ -1312,14 +1309,6 @@ extern int ieee80211_wx_set_encodeext(struct ieee80211_device *ieee, | |||
1312 | extern int ieee80211_wx_get_encodeext(struct ieee80211_device *ieee, | 1309 | extern int ieee80211_wx_get_encodeext(struct ieee80211_device *ieee, |
1313 | struct iw_request_info *info, | 1310 | struct iw_request_info *info, |
1314 | union iwreq_data *wrqu, char *extra); | 1311 | union iwreq_data *wrqu, char *extra); |
1315 | extern int ieee80211_wx_set_auth(struct net_device *dev, | ||
1316 | struct iw_request_info *info, | ||
1317 | union iwreq_data *wrqu, | ||
1318 | char *extra); | ||
1319 | extern int ieee80211_wx_get_auth(struct net_device *dev, | ||
1320 | struct iw_request_info *info, | ||
1321 | union iwreq_data *wrqu, | ||
1322 | char *extra); | ||
1323 | 1312 | ||
1324 | static inline void ieee80211_increment_scans(struct ieee80211_device *ieee) | 1313 | static inline void ieee80211_increment_scans(struct ieee80211_device *ieee) |
1325 | { | 1314 | { |
diff --git a/include/net/ip6_tunnel.h b/include/net/ip6_tunnel.h index 6512d85f11b3..3780592ebe8e 100644 --- a/include/net/ip6_tunnel.h +++ b/include/net/ip6_tunnel.h | |||
@@ -19,7 +19,6 @@ | |||
19 | struct ip6_tnl { | 19 | struct ip6_tnl { |
20 | struct ip6_tnl *next; /* next tunnel in list */ | 20 | struct ip6_tnl *next; /* next tunnel in list */ |
21 | struct net_device *dev; /* virtual device associated with tunnel */ | 21 | struct net_device *dev; /* virtual device associated with tunnel */ |
22 | struct net_device_stats stat; /* statistics for tunnel device */ | ||
23 | int recursion; /* depth of hard_start_xmit recursion */ | 22 | int recursion; /* depth of hard_start_xmit recursion */ |
24 | struct ip6_tnl_parm parms; /* tunnel configuration parameters */ | 23 | struct ip6_tnl_parm parms; /* tunnel configuration parameters */ |
25 | struct flowi fl; /* flowi template for xmit */ | 24 | struct flowi fl; /* flowi template for xmit */ |
diff --git a/include/net/ipip.h b/include/net/ipip.h index 633ed4def8e3..a85bda64b852 100644 --- a/include/net/ipip.h +++ b/include/net/ipip.h | |||
@@ -11,7 +11,6 @@ struct ip_tunnel | |||
11 | { | 11 | { |
12 | struct ip_tunnel *next; | 12 | struct ip_tunnel *next; |
13 | struct net_device *dev; | 13 | struct net_device *dev; |
14 | struct net_device_stats stat; | ||
15 | 14 | ||
16 | int recursion; /* Depth of hard_start_xmit recursion */ | 15 | int recursion; /* Depth of hard_start_xmit recursion */ |
17 | int err_count; /* Number of arrived ICMP errors */ | 16 | int err_count; /* Number of arrived ICMP errors */ |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index dae3f9ec1154..1196de85f8db 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -98,6 +98,18 @@ struct ieee80211_ht_bss_info { | |||
98 | }; | 98 | }; |
99 | 99 | ||
100 | /** | 100 | /** |
101 | * enum ieee80211_max_queues - maximum number of queues | ||
102 | * | ||
103 | * @IEEE80211_MAX_QUEUES: Maximum number of regular device queues. | ||
104 | * @IEEE80211_MAX_AMPDU_QUEUES: Maximum number of queues usable | ||
105 | * for A-MPDU operation. | ||
106 | */ | ||
107 | enum ieee80211_max_queues { | ||
108 | IEEE80211_MAX_QUEUES = 16, | ||
109 | IEEE80211_MAX_AMPDU_QUEUES = 16, | ||
110 | }; | ||
111 | |||
112 | /** | ||
101 | * struct ieee80211_tx_queue_params - transmit queue configuration | 113 | * struct ieee80211_tx_queue_params - transmit queue configuration |
102 | * | 114 | * |
103 | * The information provided in this structure is required for QoS | 115 | * The information provided in this structure is required for QoS |
@@ -117,58 +129,18 @@ struct ieee80211_tx_queue_params { | |||
117 | }; | 129 | }; |
118 | 130 | ||
119 | /** | 131 | /** |
120 | * struct ieee80211_tx_queue_stats_data - transmit queue statistics | 132 | * struct ieee80211_tx_queue_stats - transmit queue statistics |
121 | * | 133 | * |
122 | * @len: number of packets in queue | 134 | * @len: number of packets in queue |
123 | * @limit: queue length limit | 135 | * @limit: queue length limit |
124 | * @count: number of frames sent | 136 | * @count: number of frames sent |
125 | */ | 137 | */ |
126 | struct ieee80211_tx_queue_stats_data { | 138 | struct ieee80211_tx_queue_stats { |
127 | unsigned int len; | 139 | unsigned int len; |
128 | unsigned int limit; | 140 | unsigned int limit; |
129 | unsigned int count; | 141 | unsigned int count; |
130 | }; | 142 | }; |
131 | 143 | ||
132 | /** | ||
133 | * enum ieee80211_tx_queue - transmit queue number | ||
134 | * | ||
135 | * These constants are used with some callbacks that take a | ||
136 | * queue number to set parameters for a queue. | ||
137 | * | ||
138 | * @IEEE80211_TX_QUEUE_DATA0: data queue 0 | ||
139 | * @IEEE80211_TX_QUEUE_DATA1: data queue 1 | ||
140 | * @IEEE80211_TX_QUEUE_DATA2: data queue 2 | ||
141 | * @IEEE80211_TX_QUEUE_DATA3: data queue 3 | ||
142 | * @IEEE80211_TX_QUEUE_DATA4: data queue 4 | ||
143 | * @IEEE80211_TX_QUEUE_SVP: ?? | ||
144 | * @NUM_TX_DATA_QUEUES: number of data queues | ||
145 | * @IEEE80211_TX_QUEUE_AFTER_BEACON: transmit queue for frames to be | ||
146 | * sent after a beacon | ||
147 | * @IEEE80211_TX_QUEUE_BEACON: transmit queue for beacon frames | ||
148 | * @NUM_TX_DATA_QUEUES_AMPDU: adding more queues for A-MPDU | ||
149 | */ | ||
150 | enum ieee80211_tx_queue { | ||
151 | IEEE80211_TX_QUEUE_DATA0, | ||
152 | IEEE80211_TX_QUEUE_DATA1, | ||
153 | IEEE80211_TX_QUEUE_DATA2, | ||
154 | IEEE80211_TX_QUEUE_DATA3, | ||
155 | IEEE80211_TX_QUEUE_DATA4, | ||
156 | IEEE80211_TX_QUEUE_SVP, | ||
157 | |||
158 | NUM_TX_DATA_QUEUES, | ||
159 | |||
160 | /* due to stupidity in the sub-ioctl userspace interface, the items in | ||
161 | * this struct need to have fixed values. As soon as it is removed, we can | ||
162 | * fix these entries. */ | ||
163 | IEEE80211_TX_QUEUE_AFTER_BEACON = 6, | ||
164 | IEEE80211_TX_QUEUE_BEACON = 7, | ||
165 | NUM_TX_DATA_QUEUES_AMPDU = 16 | ||
166 | }; | ||
167 | |||
168 | struct ieee80211_tx_queue_stats { | ||
169 | struct ieee80211_tx_queue_stats_data data[NUM_TX_DATA_QUEUES_AMPDU]; | ||
170 | }; | ||
171 | |||
172 | struct ieee80211_low_level_stats { | 144 | struct ieee80211_low_level_stats { |
173 | unsigned int dot11ACKFailureCount; | 145 | unsigned int dot11ACKFailureCount; |
174 | unsigned int dot11RTSFailureCount; | 146 | unsigned int dot11RTSFailureCount; |
@@ -229,91 +201,128 @@ struct ieee80211_bss_conf { | |||
229 | }; | 201 | }; |
230 | 202 | ||
231 | /** | 203 | /** |
232 | * enum mac80211_tx_control_flags - flags to describe Tx configuration for | 204 | * enum mac80211_tx_flags - flags to transmission information/status |
233 | * the Tx frame | 205 | * |
234 | * | 206 | * These flags are used with the @flags member of &ieee80211_tx_info |
235 | * These flags are used with the @flags member of &ieee80211_tx_control | 207 | * |
236 | * | 208 | * @IEEE80211_TX_CTL_REQ_TX_STATUS: request TX status callback for this frame. |
237 | * @IEEE80211_TXCTL_REQ_TX_STATUS: request TX status callback for this frame. | 209 | * @IEEE80211_TX_CTL_DO_NOT_ENCRYPT: send this frame without encryption; |
238 | * @IEEE80211_TXCTL_DO_NOT_ENCRYPT: send this frame without encryption; | 210 | * e.g., for EAPOL frame |
239 | * e.g., for EAPOL frame | 211 | * @IEEE80211_TX_CTL_USE_RTS_CTS: use RTS-CTS before sending frame |
240 | * @IEEE80211_TXCTL_USE_RTS_CTS: use RTS-CTS before sending frame | 212 | * @IEEE80211_TX_CTL_USE_CTS_PROTECT: use CTS protection for the frame (e.g., |
241 | * @IEEE80211_TXCTL_USE_CTS_PROTECT: use CTS protection for the frame (e.g., | 213 | * for combined 802.11g / 802.11b networks) |
242 | * for combined 802.11g / 802.11b networks) | 214 | * @IEEE80211_TX_CTL_NO_ACK: tell the low level not to wait for an ack |
243 | * @IEEE80211_TXCTL_NO_ACK: tell the low level not to wait for an ack | 215 | * @IEEE80211_TX_CTL_RATE_CTRL_PROBE |
244 | * @IEEE80211_TXCTL_RATE_CTRL_PROBE | 216 | * @IEEE80211_TX_CTL_CLEAR_PS_FILT: clear powersave filter for destination |
245 | * @EEE80211_TXCTL_CLEAR_PS_FILT: clear powersave filter | 217 | * station |
246 | * for destination station | 218 | * @IEEE80211_TX_CTL_REQUEUE: |
247 | * @IEEE80211_TXCTL_REQUEUE: | 219 | * @IEEE80211_TX_CTL_FIRST_FRAGMENT: this is a first fragment of the frame |
248 | * @IEEE80211_TXCTL_FIRST_FRAGMENT: this is a first fragment of the frame | 220 | * @IEEE80211_TX_CTL_LONG_RETRY_LIMIT: this frame should be send using the |
249 | * @IEEE80211_TXCTL_LONG_RETRY_LIMIT: this frame should be send using the | 221 | * through set_retry_limit configured long retry value |
250 | * through set_retry_limit configured long | 222 | * @IEEE80211_TX_CTL_EAPOL_FRAME: internal to mac80211 |
251 | * retry value | 223 | * @IEEE80211_TX_CTL_SEND_AFTER_DTIM: send this frame after DTIM beacon |
252 | * @IEEE80211_TXCTL_EAPOL_FRAME: internal to mac80211 | 224 | * @IEEE80211_TX_CTL_AMPDU: this frame should be sent as part of an A-MPDU |
253 | * @IEEE80211_TXCTL_SEND_AFTER_DTIM: send this frame after DTIM beacon | 225 | * @IEEE80211_TX_CTL_OFDM_HT: this frame can be sent in HT OFDM rates. number |
254 | * @IEEE80211_TXCTL_AMPDU: this frame should be sent as part of an A-MPDU | 226 | * of streams when this flag is on can be extracted from antenna_sel_tx, |
255 | * @IEEE80211_TXCTL_OFDM_HT: this frame can be sent in HT OFDM rates. number | 227 | * so if 1 antenna is marked use SISO, 2 antennas marked use MIMO, n |
256 | * of streams when this flag is on can be extracted | 228 | * antennas marked use MIMO_n. |
257 | * from antenna_sel_tx, so if 1 antenna is marked | 229 | * @IEEE80211_TX_CTL_GREEN_FIELD: use green field protection for this frame |
258 | * use SISO, 2 antennas marked use MIMO, n antennas | 230 | * @IEEE80211_TX_CTL_40_MHZ_WIDTH: send this frame using 40 Mhz channel width |
259 | * marked use MIMO_n. | 231 | * @IEEE80211_TX_CTL_DUP_DATA: duplicate data frame on both 20 Mhz channels |
260 | * @IEEE80211_TXCTL_GREEN_FIELD: use green field protection for this frame | 232 | * @IEEE80211_TX_CTL_SHORT_GI: send this frame using short guard interval |
261 | * @IEEE80211_TXCTL_40_MHZ_WIDTH: send this frame using 40 Mhz channel width | 233 | * @IEEE80211_TX_STAT_TX_FILTERED: The frame was not transmitted |
262 | * @IEEE80211_TXCTL_DUP_DATA: duplicate data frame on both 20 Mhz channels | 234 | * because the destination STA was in powersave mode. |
263 | * @IEEE80211_TXCTL_SHORT_GI: send this frame using short guard interval | 235 | * @IEEE80211_TX_STAT_ACK: Frame was acknowledged |
236 | * @IEEE80211_TX_STAT_AMPDU: The frame was aggregated, so status | ||
237 | * is for the whole aggregation. | ||
264 | */ | 238 | */ |
265 | enum mac80211_tx_control_flags { | 239 | enum mac80211_tx_control_flags { |
266 | IEEE80211_TXCTL_REQ_TX_STATUS = (1<<0), | 240 | IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), |
267 | IEEE80211_TXCTL_DO_NOT_ENCRYPT = (1<<1), | 241 | IEEE80211_TX_CTL_DO_NOT_ENCRYPT = BIT(1), |
268 | IEEE80211_TXCTL_USE_RTS_CTS = (1<<2), | 242 | IEEE80211_TX_CTL_USE_RTS_CTS = BIT(2), |
269 | IEEE80211_TXCTL_USE_CTS_PROTECT = (1<<3), | 243 | IEEE80211_TX_CTL_USE_CTS_PROTECT = BIT(3), |
270 | IEEE80211_TXCTL_NO_ACK = (1<<4), | 244 | IEEE80211_TX_CTL_NO_ACK = BIT(4), |
271 | IEEE80211_TXCTL_RATE_CTRL_PROBE = (1<<5), | 245 | IEEE80211_TX_CTL_RATE_CTRL_PROBE = BIT(5), |
272 | IEEE80211_TXCTL_CLEAR_PS_FILT = (1<<6), | 246 | IEEE80211_TX_CTL_CLEAR_PS_FILT = BIT(6), |
273 | IEEE80211_TXCTL_REQUEUE = (1<<7), | 247 | IEEE80211_TX_CTL_REQUEUE = BIT(7), |
274 | IEEE80211_TXCTL_FIRST_FRAGMENT = (1<<8), | 248 | IEEE80211_TX_CTL_FIRST_FRAGMENT = BIT(8), |
275 | IEEE80211_TXCTL_SHORT_PREAMBLE = (1<<9), | 249 | IEEE80211_TX_CTL_SHORT_PREAMBLE = BIT(9), |
276 | IEEE80211_TXCTL_LONG_RETRY_LIMIT = (1<<10), | 250 | IEEE80211_TX_CTL_LONG_RETRY_LIMIT = BIT(10), |
277 | IEEE80211_TXCTL_EAPOL_FRAME = (1<<11), | 251 | IEEE80211_TX_CTL_EAPOL_FRAME = BIT(11), |
278 | IEEE80211_TXCTL_SEND_AFTER_DTIM = (1<<12), | 252 | IEEE80211_TX_CTL_SEND_AFTER_DTIM = BIT(12), |
279 | IEEE80211_TXCTL_AMPDU = (1<<13), | 253 | IEEE80211_TX_CTL_AMPDU = BIT(13), |
280 | IEEE80211_TXCTL_OFDM_HT = (1<<14), | 254 | IEEE80211_TX_CTL_OFDM_HT = BIT(14), |
281 | IEEE80211_TXCTL_GREEN_FIELD = (1<<15), | 255 | IEEE80211_TX_CTL_GREEN_FIELD = BIT(15), |
282 | IEEE80211_TXCTL_40_MHZ_WIDTH = (1<<16), | 256 | IEEE80211_TX_CTL_40_MHZ_WIDTH = BIT(16), |
283 | IEEE80211_TXCTL_DUP_DATA = (1<<17), | 257 | IEEE80211_TX_CTL_DUP_DATA = BIT(17), |
284 | IEEE80211_TXCTL_SHORT_GI = (1<<18), | 258 | IEEE80211_TX_CTL_SHORT_GI = BIT(18), |
259 | IEEE80211_TX_CTL_INJECTED = BIT(19), | ||
260 | IEEE80211_TX_STAT_TX_FILTERED = BIT(20), | ||
261 | IEEE80211_TX_STAT_ACK = BIT(21), | ||
262 | IEEE80211_TX_STAT_AMPDU = BIT(22), | ||
285 | }; | 263 | }; |
286 | 264 | ||
287 | /* Transmit control fields. This data structure is passed to low-level driver | ||
288 | * with each TX frame. The low-level driver is responsible for configuring | ||
289 | * the hardware to use given values (depending on what is supported). */ | ||
290 | 265 | ||
291 | struct ieee80211_tx_control { | 266 | #define IEEE80211_TX_INFO_DRIVER_DATA_SIZE \ |
292 | struct ieee80211_vif *vif; | 267 | (sizeof(((struct sk_buff *)0)->cb) - 8) |
293 | struct ieee80211_rate *tx_rate; | 268 | #define IEEE80211_TX_INFO_DRIVER_DATA_PTRS \ |
294 | 269 | (IEEE80211_TX_INFO_DRIVER_DATA_SIZE / sizeof(void *)) | |
295 | /* Transmit rate for RTS/CTS frame */ | 270 | |
296 | struct ieee80211_rate *rts_cts_rate; | 271 | /** |
297 | 272 | * struct ieee80211_tx_info - skb transmit information | |
298 | /* retry rate for the last retries */ | 273 | * |
299 | struct ieee80211_rate *alt_retry_rate; | 274 | * This structure is placed in skb->cb for three uses: |
300 | 275 | * (1) mac80211 TX control - mac80211 tells the driver what to do | |
301 | u32 flags; /* tx control flags defined above */ | 276 | * (2) driver internal use (if applicable) |
302 | u8 key_idx; /* keyidx from hw->set_key(), undefined if | 277 | * (3) TX status information - driver tells mac80211 what happened |
303 | * IEEE80211_TXCTL_DO_NOT_ENCRYPT is set */ | 278 | * |
304 | u8 retry_limit; /* 1 = only first attempt, 2 = one retry, .. | 279 | * @flags: transmit info flags, defined above |
305 | * This could be used when set_retry_limit | 280 | * @retry_count: number of retries |
306 | * is not implemented by the driver */ | 281 | * @excessive_retries: set to 1 if the frame was retried many times |
307 | u8 antenna_sel_tx; /* 0 = default/diversity, otherwise bit | 282 | * but not acknowledged |
308 | * position represents antenna number used */ | 283 | * @ampdu_ack_len: number of aggregated frames. |
309 | u8 icv_len; /* length of the ICV/MIC field in octets */ | 284 | * relevant only if IEEE80211_TX_STATUS_AMPDU was set. |
310 | u8 iv_len; /* length of the IV field in octets */ | 285 | * @ampdu_ack_map: block ack bit map for the aggregation. |
311 | u8 queue; /* hardware queue to use for this frame; | 286 | * relevant only if IEEE80211_TX_STATUS_AMPDU was set. |
312 | * 0 = highest, hw->queues-1 = lowest */ | 287 | * @ack_signal: signal strength of the ACK frame |
313 | u16 aid; /* Station AID */ | 288 | */ |
314 | int type; /* internal */ | 289 | struct ieee80211_tx_info { |
290 | /* common information */ | ||
291 | u32 flags; | ||
292 | u8 band; | ||
293 | s8 tx_rate_idx; | ||
294 | u8 antenna_sel_tx; | ||
295 | |||
296 | /* 1 byte hole */ | ||
297 | |||
298 | union { | ||
299 | struct { | ||
300 | struct ieee80211_vif *vif; | ||
301 | struct ieee80211_key_conf *hw_key; | ||
302 | unsigned long jiffies; | ||
303 | int ifindex; | ||
304 | u16 aid; | ||
305 | s8 rts_cts_rate_idx, alt_retry_rate_idx; | ||
306 | u8 retry_limit; | ||
307 | u8 icv_len; | ||
308 | u8 iv_len; | ||
309 | } control; | ||
310 | struct { | ||
311 | u64 ampdu_ack_map; | ||
312 | int ack_signal; | ||
313 | u8 retry_count; | ||
314 | bool excessive_retries; | ||
315 | u8 ampdu_ack_len; | ||
316 | } status; | ||
317 | void *driver_data[IEEE80211_TX_INFO_DRIVER_DATA_PTRS]; | ||
318 | }; | ||
315 | }; | 319 | }; |
316 | 320 | ||
321 | static inline struct ieee80211_tx_info *IEEE80211_SKB_CB(struct sk_buff *skb) | ||
322 | { | ||
323 | return (struct ieee80211_tx_info *)skb->cb; | ||
324 | } | ||
325 | |||
317 | 326 | ||
318 | /** | 327 | /** |
319 | * enum mac80211_rx_flags - receive flags | 328 | * enum mac80211_rx_flags - receive flags |
@@ -353,13 +362,16 @@ enum mac80211_rx_flags { | |||
353 | * The low-level driver should provide this information (the subset | 362 | * The low-level driver should provide this information (the subset |
354 | * supported by hardware) to the 802.11 code with each received | 363 | * supported by hardware) to the 802.11 code with each received |
355 | * frame. | 364 | * frame. |
365 | * | ||
356 | * @mactime: value in microseconds of the 64-bit Time Synchronization Function | 366 | * @mactime: value in microseconds of the 64-bit Time Synchronization Function |
357 | * (TSF) timer when the first data symbol (MPDU) arrived at the hardware. | 367 | * (TSF) timer when the first data symbol (MPDU) arrived at the hardware. |
358 | * @band: the active band when this frame was received | 368 | * @band: the active band when this frame was received |
359 | * @freq: frequency the radio was tuned to when receiving this frame, in MHz | 369 | * @freq: frequency the radio was tuned to when receiving this frame, in MHz |
360 | * @ssi: signal strength when receiving this frame | 370 | * @signal: signal strength when receiving this frame, either in dBm, in dB or |
361 | * @signal: used as 'qual' in statistics reporting | 371 | * unspecified depending on the hardware capabilities flags |
362 | * @noise: PHY noise when receiving this frame | 372 | * @IEEE80211_HW_SIGNAL_* |
373 | * @noise: noise when receiving this frame, in dBm. | ||
374 | * @qual: overall signal quality indication, in percent (0-100). | ||
363 | * @antenna: antenna used | 375 | * @antenna: antenna used |
364 | * @rate_idx: index of data rate into band's supported rates | 376 | * @rate_idx: index of data rate into band's supported rates |
365 | * @flag: %RX_FLAG_* | 377 | * @flag: %RX_FLAG_* |
@@ -368,64 +380,15 @@ struct ieee80211_rx_status { | |||
368 | u64 mactime; | 380 | u64 mactime; |
369 | enum ieee80211_band band; | 381 | enum ieee80211_band band; |
370 | int freq; | 382 | int freq; |
371 | int ssi; | ||
372 | int signal; | 383 | int signal; |
373 | int noise; | 384 | int noise; |
385 | int qual; | ||
374 | int antenna; | 386 | int antenna; |
375 | int rate_idx; | 387 | int rate_idx; |
376 | int flag; | 388 | int flag; |
377 | }; | 389 | }; |
378 | 390 | ||
379 | /** | 391 | /** |
380 | * enum ieee80211_tx_status_flags - transmit status flags | ||
381 | * | ||
382 | * Status flags to indicate various transmit conditions. | ||
383 | * | ||
384 | * @IEEE80211_TX_STATUS_TX_FILTERED: The frame was not transmitted | ||
385 | * because the destination STA was in powersave mode. | ||
386 | * @IEEE80211_TX_STATUS_ACK: Frame was acknowledged | ||
387 | * @IEEE80211_TX_STATUS_AMPDU: The frame was aggregated, so status | ||
388 | * is for the whole aggregation. | ||
389 | */ | ||
390 | enum ieee80211_tx_status_flags { | ||
391 | IEEE80211_TX_STATUS_TX_FILTERED = 1<<0, | ||
392 | IEEE80211_TX_STATUS_ACK = 1<<1, | ||
393 | IEEE80211_TX_STATUS_AMPDU = 1<<2, | ||
394 | }; | ||
395 | |||
396 | /** | ||
397 | * struct ieee80211_tx_status - transmit status | ||
398 | * | ||
399 | * As much information as possible should be provided for each transmitted | ||
400 | * frame with ieee80211_tx_status(). | ||
401 | * | ||
402 | * @control: a copy of the &struct ieee80211_tx_control passed to the driver | ||
403 | * in the tx() callback. | ||
404 | * @flags: transmit status flags, defined above | ||
405 | * @retry_count: number of retries | ||
406 | * @excessive_retries: set to 1 if the frame was retried many times | ||
407 | * but not acknowledged | ||
408 | * @ampdu_ack_len: number of aggregated frames. | ||
409 | * relevant only if IEEE80211_TX_STATUS_AMPDU was set. | ||
410 | * @ampdu_ack_map: block ack bit map for the aggregation. | ||
411 | * relevant only if IEEE80211_TX_STATUS_AMPDU was set. | ||
412 | * @ack_signal: signal strength of the ACK frame | ||
413 | * @queue_length: ?? REMOVE | ||
414 | * @queue_number: ?? REMOVE | ||
415 | */ | ||
416 | struct ieee80211_tx_status { | ||
417 | struct ieee80211_tx_control control; | ||
418 | u8 flags; | ||
419 | u8 retry_count; | ||
420 | bool excessive_retries; | ||
421 | u8 ampdu_ack_len; | ||
422 | u64 ampdu_ack_map; | ||
423 | int ack_signal; | ||
424 | int queue_length; | ||
425 | int queue_number; | ||
426 | }; | ||
427 | |||
428 | /** | ||
429 | * enum ieee80211_conf_flags - configuration flags | 392 | * enum ieee80211_conf_flags - configuration flags |
430 | * | 393 | * |
431 | * Flags to define PHY configuration options | 394 | * Flags to define PHY configuration options |
@@ -580,7 +543,6 @@ struct ieee80211_if_conf { | |||
580 | u8 *ssid; | 543 | u8 *ssid; |
581 | size_t ssid_len; | 544 | size_t ssid_len; |
582 | struct sk_buff *beacon; | 545 | struct sk_buff *beacon; |
583 | struct ieee80211_tx_control *beacon_control; | ||
584 | }; | 546 | }; |
585 | 547 | ||
586 | /** | 548 | /** |
@@ -610,11 +572,14 @@ enum ieee80211_key_alg { | |||
610 | * @IEEE80211_KEY_FLAG_GENERATE_MMIC: This flag should be set by | 572 | * @IEEE80211_KEY_FLAG_GENERATE_MMIC: This flag should be set by |
611 | * the driver for a TKIP key if it requires Michael MIC | 573 | * the driver for a TKIP key if it requires Michael MIC |
612 | * generation in software. | 574 | * generation in software. |
575 | * @IEEE80211_KEY_FLAG_PAIRWISE: Set by mac80211, this flag indicates | ||
576 | * that the key is pairwise rather then a shared key. | ||
613 | */ | 577 | */ |
614 | enum ieee80211_key_flags { | 578 | enum ieee80211_key_flags { |
615 | IEEE80211_KEY_FLAG_WMM_STA = 1<<0, | 579 | IEEE80211_KEY_FLAG_WMM_STA = 1<<0, |
616 | IEEE80211_KEY_FLAG_GENERATE_IV = 1<<1, | 580 | IEEE80211_KEY_FLAG_GENERATE_IV = 1<<1, |
617 | IEEE80211_KEY_FLAG_GENERATE_MMIC= 1<<2, | 581 | IEEE80211_KEY_FLAG_GENERATE_MMIC= 1<<2, |
582 | IEEE80211_KEY_FLAG_PAIRWISE = 1<<3, | ||
618 | }; | 583 | }; |
619 | 584 | ||
620 | /** | 585 | /** |
@@ -721,6 +686,25 @@ enum ieee80211_tkip_key_type { | |||
721 | * @IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE: | 686 | * @IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE: |
722 | * Hardware is not capable of receiving frames with short preamble on | 687 | * Hardware is not capable of receiving frames with short preamble on |
723 | * the 2.4 GHz band. | 688 | * the 2.4 GHz band. |
689 | * | ||
690 | * @IEEE80211_HW_SIGNAL_UNSPEC: | ||
691 | * Hardware can provide signal values but we don't know its units. We | ||
692 | * expect values between 0 and @max_signal. | ||
693 | * If possible please provide dB or dBm instead. | ||
694 | * | ||
695 | * @IEEE80211_HW_SIGNAL_DB: | ||
696 | * Hardware gives signal values in dB, decibel difference from an | ||
697 | * arbitrary, fixed reference. We expect values between 0 and @max_signal. | ||
698 | * If possible please provide dBm instead. | ||
699 | * | ||
700 | * @IEEE80211_HW_SIGNAL_DBM: | ||
701 | * Hardware gives signal values in dBm, decibel difference from | ||
702 | * one milliwatt. This is the preferred method since it is standardized | ||
703 | * between different devices. @max_signal does not need to be set. | ||
704 | * | ||
705 | * @IEEE80211_HW_NOISE_DBM: | ||
706 | * Hardware can provide noise (radio interference) values in units dBm, | ||
707 | * decibel difference from one milliwatt. | ||
724 | */ | 708 | */ |
725 | enum ieee80211_hw_flags { | 709 | enum ieee80211_hw_flags { |
726 | IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE = 1<<0, | 710 | IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE = 1<<0, |
@@ -728,6 +712,10 @@ enum ieee80211_hw_flags { | |||
728 | IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING = 1<<2, | 712 | IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING = 1<<2, |
729 | IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE = 1<<3, | 713 | IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE = 1<<3, |
730 | IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE = 1<<4, | 714 | IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE = 1<<4, |
715 | IEEE80211_HW_SIGNAL_UNSPEC = 1<<5, | ||
716 | IEEE80211_HW_SIGNAL_DB = 1<<6, | ||
717 | IEEE80211_HW_SIGNAL_DBM = 1<<7, | ||
718 | IEEE80211_HW_NOISE_DBM = 1<<8, | ||
731 | }; | 719 | }; |
732 | 720 | ||
733 | /** | 721 | /** |
@@ -758,15 +746,18 @@ enum ieee80211_hw_flags { | |||
758 | * | 746 | * |
759 | * @channel_change_time: time (in microseconds) it takes to change channels. | 747 | * @channel_change_time: time (in microseconds) it takes to change channels. |
760 | * | 748 | * |
761 | * @max_rssi: Maximum value for ssi in RX information, use | 749 | * @max_signal: Maximum value for signal (rssi) in RX information, used |
762 | * negative numbers for dBm and 0 to indicate no support. | 750 | * only when @IEEE80211_HW_SIGNAL_UNSPEC or @IEEE80211_HW_SIGNAL_DB |
763 | * | ||
764 | * @max_signal: like @max_rssi, but for the signal value. | ||
765 | * | ||
766 | * @max_noise: like @max_rssi, but for the noise value. | ||
767 | * | 751 | * |
768 | * @queues: number of available hardware transmit queues for | 752 | * @queues: number of available hardware transmit queues for |
769 | * data packets. WMM/QoS requires at least four. | 753 | * data packets. WMM/QoS requires at least four, these |
754 | * queues need to have configurable access parameters. | ||
755 | * | ||
756 | * @ampdu_queues: number of available hardware transmit queues | ||
757 | * for A-MPDU packets, these have no access parameters | ||
758 | * because they're used only for A-MPDU frames. Note that | ||
759 | * mac80211 will not currently use any of the regular queues | ||
760 | * for aggregation. | ||
770 | * | 761 | * |
771 | * @rate_control_algorithm: rate control algorithm for this hardware. | 762 | * @rate_control_algorithm: rate control algorithm for this hardware. |
772 | * If unset (NULL), the default algorithm will be used. Must be | 763 | * If unset (NULL), the default algorithm will be used. Must be |
@@ -785,10 +776,8 @@ struct ieee80211_hw { | |||
785 | unsigned int extra_tx_headroom; | 776 | unsigned int extra_tx_headroom; |
786 | int channel_change_time; | 777 | int channel_change_time; |
787 | int vif_data_size; | 778 | int vif_data_size; |
788 | u8 queues; | 779 | u16 queues, ampdu_queues; |
789 | s8 max_rssi; | ||
790 | s8 max_signal; | 780 | s8 max_signal; |
791 | s8 max_noise; | ||
792 | }; | 781 | }; |
793 | 782 | ||
794 | /** | 783 | /** |
@@ -813,6 +802,51 @@ static inline void SET_IEEE80211_PERM_ADDR(struct ieee80211_hw *hw, u8 *addr) | |||
813 | memcpy(hw->wiphy->perm_addr, addr, ETH_ALEN); | 802 | memcpy(hw->wiphy->perm_addr, addr, ETH_ALEN); |
814 | } | 803 | } |
815 | 804 | ||
805 | static inline int ieee80211_num_regular_queues(struct ieee80211_hw *hw) | ||
806 | { | ||
807 | #ifdef CONFIG_MAC80211_QOS | ||
808 | return hw->queues; | ||
809 | #else | ||
810 | return 1; | ||
811 | #endif | ||
812 | } | ||
813 | |||
814 | static inline int ieee80211_num_queues(struct ieee80211_hw *hw) | ||
815 | { | ||
816 | #ifdef CONFIG_MAC80211_QOS | ||
817 | return hw->queues + hw->ampdu_queues; | ||
818 | #else | ||
819 | return 1; | ||
820 | #endif | ||
821 | } | ||
822 | |||
823 | static inline struct ieee80211_rate * | ||
824 | ieee80211_get_tx_rate(const struct ieee80211_hw *hw, | ||
825 | const struct ieee80211_tx_info *c) | ||
826 | { | ||
827 | if (WARN_ON(c->tx_rate_idx < 0)) | ||
828 | return NULL; | ||
829 | return &hw->wiphy->bands[c->band]->bitrates[c->tx_rate_idx]; | ||
830 | } | ||
831 | |||
832 | static inline struct ieee80211_rate * | ||
833 | ieee80211_get_rts_cts_rate(const struct ieee80211_hw *hw, | ||
834 | const struct ieee80211_tx_info *c) | ||
835 | { | ||
836 | if (c->control.rts_cts_rate_idx < 0) | ||
837 | return NULL; | ||
838 | return &hw->wiphy->bands[c->band]->bitrates[c->control.rts_cts_rate_idx]; | ||
839 | } | ||
840 | |||
841 | static inline struct ieee80211_rate * | ||
842 | ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw, | ||
843 | const struct ieee80211_tx_info *c) | ||
844 | { | ||
845 | if (c->control.alt_retry_rate_idx < 0) | ||
846 | return NULL; | ||
847 | return &hw->wiphy->bands[c->band]->bitrates[c->control.alt_retry_rate_idx]; | ||
848 | } | ||
849 | |||
816 | /** | 850 | /** |
817 | * DOC: Hardware crypto acceleration | 851 | * DOC: Hardware crypto acceleration |
818 | * | 852 | * |
@@ -970,8 +1004,10 @@ enum ieee80211_ampdu_mlme_action { | |||
970 | * @tx: Handler that 802.11 module calls for each transmitted frame. | 1004 | * @tx: Handler that 802.11 module calls for each transmitted frame. |
971 | * skb contains the buffer starting from the IEEE 802.11 header. | 1005 | * skb contains the buffer starting from the IEEE 802.11 header. |
972 | * The low-level driver should send the frame out based on | 1006 | * The low-level driver should send the frame out based on |
973 | * configuration in the TX control data. Must be implemented and | 1007 | * configuration in the TX control data. This handler should, |
974 | * atomic. | 1008 | * preferably, never fail and stop queues appropriately, more |
1009 | * importantly, however, it must never fail for A-MPDU-queues. | ||
1010 | * Must be implemented and atomic. | ||
975 | * | 1011 | * |
976 | * @start: Called before the first netdevice attached to the hardware | 1012 | * @start: Called before the first netdevice attached to the hardware |
977 | * is enabled. This should turn on the hardware and must turn on | 1013 | * is enabled. This should turn on the hardware and must turn on |
@@ -1063,15 +1099,13 @@ enum ieee80211_ampdu_mlme_action { | |||
1063 | * of assocaited station or AP. | 1099 | * of assocaited station or AP. |
1064 | * | 1100 | * |
1065 | * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max), | 1101 | * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max), |
1066 | * bursting) for a hardware TX queue. The @queue parameter uses the | 1102 | * bursting) for a hardware TX queue. Must be atomic. |
1067 | * %IEEE80211_TX_QUEUE_* constants. Must be atomic. | ||
1068 | * | 1103 | * |
1069 | * @get_tx_stats: Get statistics of the current TX queue status. This is used | 1104 | * @get_tx_stats: Get statistics of the current TX queue status. This is used |
1070 | * to get number of currently queued packets (queue length), maximum queue | 1105 | * to get number of currently queued packets (queue length), maximum queue |
1071 | * size (limit), and total number of packets sent using each TX queue | 1106 | * size (limit), and total number of packets sent using each TX queue |
1072 | * (count). This information is used for WMM to find out which TX | 1107 | * (count). The 'stats' pointer points to an array that has hw->queues + |
1073 | * queues have room for more packets and by hostapd to provide | 1108 | * hw->ampdu_queues items. |
1074 | * statistics about the current queueing state to external programs. | ||
1075 | * | 1109 | * |
1076 | * @get_tsf: Get the current TSF timer value from firmware/hardware. Currently, | 1110 | * @get_tsf: Get the current TSF timer value from firmware/hardware. Currently, |
1077 | * this is only used for IBSS mode debugging and, as such, is not a | 1111 | * this is only used for IBSS mode debugging and, as such, is not a |
@@ -1107,8 +1141,7 @@ enum ieee80211_ampdu_mlme_action { | |||
1107 | * that TX/RX_STOP can pass NULL for this parameter. | 1141 | * that TX/RX_STOP can pass NULL for this parameter. |
1108 | */ | 1142 | */ |
1109 | struct ieee80211_ops { | 1143 | struct ieee80211_ops { |
1110 | int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb, | 1144 | int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); |
1111 | struct ieee80211_tx_control *control); | ||
1112 | int (*start)(struct ieee80211_hw *hw); | 1145 | int (*start)(struct ieee80211_hw *hw); |
1113 | void (*stop)(struct ieee80211_hw *hw); | 1146 | void (*stop)(struct ieee80211_hw *hw); |
1114 | int (*add_interface)(struct ieee80211_hw *hw, | 1147 | int (*add_interface)(struct ieee80211_hw *hw, |
@@ -1145,15 +1178,14 @@ struct ieee80211_ops { | |||
1145 | u32 short_retry, u32 long_retr); | 1178 | u32 short_retry, u32 long_retr); |
1146 | void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 1179 | void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
1147 | enum sta_notify_cmd, const u8 *addr); | 1180 | enum sta_notify_cmd, const u8 *addr); |
1148 | int (*conf_tx)(struct ieee80211_hw *hw, int queue, | 1181 | int (*conf_tx)(struct ieee80211_hw *hw, u16 queue, |
1149 | const struct ieee80211_tx_queue_params *params); | 1182 | const struct ieee80211_tx_queue_params *params); |
1150 | int (*get_tx_stats)(struct ieee80211_hw *hw, | 1183 | int (*get_tx_stats)(struct ieee80211_hw *hw, |
1151 | struct ieee80211_tx_queue_stats *stats); | 1184 | struct ieee80211_tx_queue_stats *stats); |
1152 | u64 (*get_tsf)(struct ieee80211_hw *hw); | 1185 | u64 (*get_tsf)(struct ieee80211_hw *hw); |
1153 | void (*reset_tsf)(struct ieee80211_hw *hw); | 1186 | void (*reset_tsf)(struct ieee80211_hw *hw); |
1154 | int (*beacon_update)(struct ieee80211_hw *hw, | 1187 | int (*beacon_update)(struct ieee80211_hw *hw, |
1155 | struct sk_buff *skb, | 1188 | struct sk_buff *skb); |
1156 | struct ieee80211_tx_control *control); | ||
1157 | int (*tx_last_beacon)(struct ieee80211_hw *hw); | 1189 | int (*tx_last_beacon)(struct ieee80211_hw *hw); |
1158 | int (*ampdu_action)(struct ieee80211_hw *hw, | 1190 | int (*ampdu_action)(struct ieee80211_hw *hw, |
1159 | enum ieee80211_ampdu_mlme_action action, | 1191 | enum ieee80211_ampdu_mlme_action action, |
@@ -1349,13 +1381,9 @@ void ieee80211_rx_irqsafe(struct ieee80211_hw *hw, | |||
1349 | * | 1381 | * |
1350 | * @hw: the hardware the frame was transmitted by | 1382 | * @hw: the hardware the frame was transmitted by |
1351 | * @skb: the frame that was transmitted, owned by mac80211 after this call | 1383 | * @skb: the frame that was transmitted, owned by mac80211 after this call |
1352 | * @status: status information for this frame; the status pointer need not | ||
1353 | * be valid after this function returns and is not freed by mac80211, | ||
1354 | * it is recommended that it points to a stack area | ||
1355 | */ | 1384 | */ |
1356 | void ieee80211_tx_status(struct ieee80211_hw *hw, | 1385 | void ieee80211_tx_status(struct ieee80211_hw *hw, |
1357 | struct sk_buff *skb, | 1386 | struct sk_buff *skb); |
1358 | struct ieee80211_tx_status *status); | ||
1359 | 1387 | ||
1360 | /** | 1388 | /** |
1361 | * ieee80211_tx_status_irqsafe - irq-safe transmit status callback | 1389 | * ieee80211_tx_status_irqsafe - irq-safe transmit status callback |
@@ -1368,13 +1396,9 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, | |||
1368 | * | 1396 | * |
1369 | * @hw: the hardware the frame was transmitted by | 1397 | * @hw: the hardware the frame was transmitted by |
1370 | * @skb: the frame that was transmitted, owned by mac80211 after this call | 1398 | * @skb: the frame that was transmitted, owned by mac80211 after this call |
1371 | * @status: status information for this frame; the status pointer need not | ||
1372 | * be valid after this function returns and is not freed by mac80211, | ||
1373 | * it is recommended that it points to a stack area | ||
1374 | */ | 1399 | */ |
1375 | void ieee80211_tx_status_irqsafe(struct ieee80211_hw *hw, | 1400 | void ieee80211_tx_status_irqsafe(struct ieee80211_hw *hw, |
1376 | struct sk_buff *skb, | 1401 | struct sk_buff *skb); |
1377 | struct ieee80211_tx_status *status); | ||
1378 | 1402 | ||
1379 | /** | 1403 | /** |
1380 | * ieee80211_beacon_get - beacon generation function | 1404 | * ieee80211_beacon_get - beacon generation function |
@@ -1390,8 +1414,7 @@ void ieee80211_tx_status_irqsafe(struct ieee80211_hw *hw, | |||
1390 | * is responsible of freeing it. | 1414 | * is responsible of freeing it. |
1391 | */ | 1415 | */ |
1392 | struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw, | 1416 | struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw, |
1393 | struct ieee80211_vif *vif, | 1417 | struct ieee80211_vif *vif); |
1394 | struct ieee80211_tx_control *control); | ||
1395 | 1418 | ||
1396 | /** | 1419 | /** |
1397 | * ieee80211_rts_get - RTS frame generation function | 1420 | * ieee80211_rts_get - RTS frame generation function |
@@ -1399,7 +1422,7 @@ struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw, | |||
1399 | * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf. | 1422 | * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf. |
1400 | * @frame: pointer to the frame that is going to be protected by the RTS. | 1423 | * @frame: pointer to the frame that is going to be protected by the RTS. |
1401 | * @frame_len: the frame length (in octets). | 1424 | * @frame_len: the frame length (in octets). |
1402 | * @frame_txctl: &struct ieee80211_tx_control of the frame. | 1425 | * @frame_txctl: &struct ieee80211_tx_info of the frame. |
1403 | * @rts: The buffer where to store the RTS frame. | 1426 | * @rts: The buffer where to store the RTS frame. |
1404 | * | 1427 | * |
1405 | * If the RTS frames are generated by the host system (i.e., not in | 1428 | * If the RTS frames are generated by the host system (i.e., not in |
@@ -1409,7 +1432,7 @@ struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw, | |||
1409 | */ | 1432 | */ |
1410 | void ieee80211_rts_get(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 1433 | void ieee80211_rts_get(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
1411 | const void *frame, size_t frame_len, | 1434 | const void *frame, size_t frame_len, |
1412 | const struct ieee80211_tx_control *frame_txctl, | 1435 | const struct ieee80211_tx_info *frame_txctl, |
1413 | struct ieee80211_rts *rts); | 1436 | struct ieee80211_rts *rts); |
1414 | 1437 | ||
1415 | /** | 1438 | /** |
@@ -1417,7 +1440,7 @@ void ieee80211_rts_get(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | |||
1417 | * @hw: pointer obtained from ieee80211_alloc_hw(). | 1440 | * @hw: pointer obtained from ieee80211_alloc_hw(). |
1418 | * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf. | 1441 | * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf. |
1419 | * @frame_len: the length of the frame that is going to be protected by the RTS. | 1442 | * @frame_len: the length of the frame that is going to be protected by the RTS. |
1420 | * @frame_txctl: &struct ieee80211_tx_control of the frame. | 1443 | * @frame_txctl: &struct ieee80211_tx_info of the frame. |
1421 | * | 1444 | * |
1422 | * If the RTS is generated in firmware, but the host system must provide | 1445 | * If the RTS is generated in firmware, but the host system must provide |
1423 | * the duration field, the low-level driver uses this function to receive | 1446 | * the duration field, the low-level driver uses this function to receive |
@@ -1425,7 +1448,7 @@ void ieee80211_rts_get(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | |||
1425 | */ | 1448 | */ |
1426 | __le16 ieee80211_rts_duration(struct ieee80211_hw *hw, | 1449 | __le16 ieee80211_rts_duration(struct ieee80211_hw *hw, |
1427 | struct ieee80211_vif *vif, size_t frame_len, | 1450 | struct ieee80211_vif *vif, size_t frame_len, |
1428 | const struct ieee80211_tx_control *frame_txctl); | 1451 | const struct ieee80211_tx_info *frame_txctl); |
1429 | 1452 | ||
1430 | /** | 1453 | /** |
1431 | * ieee80211_ctstoself_get - CTS-to-self frame generation function | 1454 | * ieee80211_ctstoself_get - CTS-to-self frame generation function |
@@ -1433,7 +1456,7 @@ __le16 ieee80211_rts_duration(struct ieee80211_hw *hw, | |||
1433 | * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf. | 1456 | * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf. |
1434 | * @frame: pointer to the frame that is going to be protected by the CTS-to-self. | 1457 | * @frame: pointer to the frame that is going to be protected by the CTS-to-self. |
1435 | * @frame_len: the frame length (in octets). | 1458 | * @frame_len: the frame length (in octets). |
1436 | * @frame_txctl: &struct ieee80211_tx_control of the frame. | 1459 | * @frame_txctl: &struct ieee80211_tx_info of the frame. |
1437 | * @cts: The buffer where to store the CTS-to-self frame. | 1460 | * @cts: The buffer where to store the CTS-to-self frame. |
1438 | * | 1461 | * |
1439 | * If the CTS-to-self frames are generated by the host system (i.e., not in | 1462 | * If the CTS-to-self frames are generated by the host system (i.e., not in |
@@ -1444,7 +1467,7 @@ __le16 ieee80211_rts_duration(struct ieee80211_hw *hw, | |||
1444 | void ieee80211_ctstoself_get(struct ieee80211_hw *hw, | 1467 | void ieee80211_ctstoself_get(struct ieee80211_hw *hw, |
1445 | struct ieee80211_vif *vif, | 1468 | struct ieee80211_vif *vif, |
1446 | const void *frame, size_t frame_len, | 1469 | const void *frame, size_t frame_len, |
1447 | const struct ieee80211_tx_control *frame_txctl, | 1470 | const struct ieee80211_tx_info *frame_txctl, |
1448 | struct ieee80211_cts *cts); | 1471 | struct ieee80211_cts *cts); |
1449 | 1472 | ||
1450 | /** | 1473 | /** |
@@ -1452,7 +1475,7 @@ void ieee80211_ctstoself_get(struct ieee80211_hw *hw, | |||
1452 | * @hw: pointer obtained from ieee80211_alloc_hw(). | 1475 | * @hw: pointer obtained from ieee80211_alloc_hw(). |
1453 | * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf. | 1476 | * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf. |
1454 | * @frame_len: the length of the frame that is going to be protected by the CTS-to-self. | 1477 | * @frame_len: the length of the frame that is going to be protected by the CTS-to-self. |
1455 | * @frame_txctl: &struct ieee80211_tx_control of the frame. | 1478 | * @frame_txctl: &struct ieee80211_tx_info of the frame. |
1456 | * | 1479 | * |
1457 | * If the CTS-to-self is generated in firmware, but the host system must provide | 1480 | * If the CTS-to-self is generated in firmware, but the host system must provide |
1458 | * the duration field, the low-level driver uses this function to receive | 1481 | * the duration field, the low-level driver uses this function to receive |
@@ -1461,7 +1484,7 @@ void ieee80211_ctstoself_get(struct ieee80211_hw *hw, | |||
1461 | __le16 ieee80211_ctstoself_duration(struct ieee80211_hw *hw, | 1484 | __le16 ieee80211_ctstoself_duration(struct ieee80211_hw *hw, |
1462 | struct ieee80211_vif *vif, | 1485 | struct ieee80211_vif *vif, |
1463 | size_t frame_len, | 1486 | size_t frame_len, |
1464 | const struct ieee80211_tx_control *frame_txctl); | 1487 | const struct ieee80211_tx_info *frame_txctl); |
1465 | 1488 | ||
1466 | /** | 1489 | /** |
1467 | * ieee80211_generic_frame_duration - Calculate the duration field for a frame | 1490 | * ieee80211_generic_frame_duration - Calculate the duration field for a frame |
@@ -1500,8 +1523,7 @@ __le16 ieee80211_generic_frame_duration(struct ieee80211_hw *hw, | |||
1500 | * use common code for all beacons. | 1523 | * use common code for all beacons. |
1501 | */ | 1524 | */ |
1502 | struct sk_buff * | 1525 | struct sk_buff * |
1503 | ieee80211_get_buffered_bc(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 1526 | ieee80211_get_buffered_bc(struct ieee80211_hw *hw, struct ieee80211_vif *vif); |
1504 | struct ieee80211_tx_control *control); | ||
1505 | 1527 | ||
1506 | /** | 1528 | /** |
1507 | * ieee80211_get_hdrlen_from_skb - get header length from data | 1529 | * ieee80211_get_hdrlen_from_skb - get header length from data |
@@ -1559,14 +1581,6 @@ void ieee80211_wake_queue(struct ieee80211_hw *hw, int queue); | |||
1559 | void ieee80211_stop_queue(struct ieee80211_hw *hw, int queue); | 1581 | void ieee80211_stop_queue(struct ieee80211_hw *hw, int queue); |
1560 | 1582 | ||
1561 | /** | 1583 | /** |
1562 | * ieee80211_start_queues - start all queues | ||
1563 | * @hw: pointer to as obtained from ieee80211_alloc_hw(). | ||
1564 | * | ||
1565 | * Drivers should use this function instead of netif_start_queue. | ||
1566 | */ | ||
1567 | void ieee80211_start_queues(struct ieee80211_hw *hw); | ||
1568 | |||
1569 | /** | ||
1570 | * ieee80211_stop_queues - stop all queues | 1584 | * ieee80211_stop_queues - stop all queues |
1571 | * @hw: pointer as obtained from ieee80211_alloc_hw(). | 1585 | * @hw: pointer as obtained from ieee80211_alloc_hw(). |
1572 | * | 1586 | * |
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index aa540e6be502..8df751b3be55 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h | |||
@@ -201,8 +201,11 @@ extern void unregister_pernet_gen_device(int id, struct pernet_operations *); | |||
201 | struct ctl_path; | 201 | struct ctl_path; |
202 | struct ctl_table; | 202 | struct ctl_table; |
203 | struct ctl_table_header; | 203 | struct ctl_table_header; |
204 | |||
204 | extern struct ctl_table_header *register_net_sysctl_table(struct net *net, | 205 | extern struct ctl_table_header *register_net_sysctl_table(struct net *net, |
205 | const struct ctl_path *path, struct ctl_table *table); | 206 | const struct ctl_path *path, struct ctl_table *table); |
207 | extern struct ctl_table_header *register_net_sysctl_rotable( | ||
208 | const struct ctl_path *path, struct ctl_table *table); | ||
206 | extern void unregister_net_sysctl_table(struct ctl_table_header *header); | 209 | extern void unregister_net_sysctl_table(struct ctl_table_header *header); |
207 | 210 | ||
208 | #endif /* __NET_NET_NAMESPACE_H */ | 211 | #endif /* __NET_NET_NAMESPACE_H */ |
diff --git a/include/net/netfilter/ipv4/nf_conntrack_ipv4.h b/include/net/netfilter/ipv4/nf_conntrack_ipv4.h index 9bf059817aec..7573d52a4346 100644 --- a/include/net/netfilter/ipv4/nf_conntrack_ipv4.h +++ b/include/net/netfilter/ipv4/nf_conntrack_ipv4.h | |||
@@ -9,8 +9,6 @@ | |||
9 | #ifndef _NF_CONNTRACK_IPV4_H | 9 | #ifndef _NF_CONNTRACK_IPV4_H |
10 | #define _NF_CONNTRACK_IPV4_H | 10 | #define _NF_CONNTRACK_IPV4_H |
11 | 11 | ||
12 | /* Returns new sk_buff, or NULL */ | ||
13 | struct sk_buff *nf_ct_ipv4_ct_gather_frags(struct sk_buff *skb); | ||
14 | 12 | ||
15 | extern struct nf_conntrack_l3proto nf_conntrack_l3proto_ipv4; | 13 | extern struct nf_conntrack_l3proto nf_conntrack_l3proto_ipv4; |
16 | 14 | ||
diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h index 2dbd6c015b94..d77dec768dc2 100644 --- a/include/net/netfilter/nf_conntrack.h +++ b/include/net/netfilter/nf_conntrack.h | |||
@@ -223,6 +223,25 @@ static inline void nf_ct_refresh(struct nf_conn *ct, | |||
223 | __nf_ct_refresh_acct(ct, 0, skb, extra_jiffies, 0); | 223 | __nf_ct_refresh_acct(ct, 0, skb, extra_jiffies, 0); |
224 | } | 224 | } |
225 | 225 | ||
226 | extern void __nf_ct_kill_acct(struct nf_conn *ct, | ||
227 | enum ip_conntrack_info ctinfo, | ||
228 | const struct sk_buff *skb, | ||
229 | int do_acct); | ||
230 | |||
231 | /* kill conntrack and do accounting */ | ||
232 | static inline void nf_ct_kill_acct(struct nf_conn *ct, | ||
233 | enum ip_conntrack_info ctinfo, | ||
234 | const struct sk_buff *skb) | ||
235 | { | ||
236 | __nf_ct_kill_acct(ct, ctinfo, skb, 1); | ||
237 | } | ||
238 | |||
239 | /* kill conntrack without accounting */ | ||
240 | static inline void nf_ct_kill(struct nf_conn *ct) | ||
241 | { | ||
242 | __nf_ct_kill_acct(ct, 0, NULL, 0); | ||
243 | } | ||
244 | |||
226 | /* These are for NAT. Icky. */ | 245 | /* These are for NAT. Icky. */ |
227 | /* Update TCP window tracking data when NAT mangles the packet */ | 246 | /* Update TCP window tracking data when NAT mangles the packet */ |
228 | extern void nf_conntrack_tcp_update(const struct sk_buff *skb, | 247 | extern void nf_conntrack_tcp_update(const struct sk_buff *skb, |
diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h index 34ee348a2cf2..6ef90b5fafb3 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h | |||
@@ -36,6 +36,7 @@ struct netns_ipv4 { | |||
36 | struct xt_table *iptable_mangle; | 36 | struct xt_table *iptable_mangle; |
37 | struct xt_table *iptable_raw; | 37 | struct xt_table *iptable_raw; |
38 | struct xt_table *arptable_filter; | 38 | struct xt_table *arptable_filter; |
39 | struct xt_table *iptable_security; | ||
39 | #endif | 40 | #endif |
40 | 41 | ||
41 | int sysctl_icmp_echo_ignore_all; | 42 | int sysctl_icmp_echo_ignore_all; |
diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h index ac053be6c256..5bacd838e88b 100644 --- a/include/net/netns/ipv6.h +++ b/include/net/netns/ipv6.h | |||
@@ -35,6 +35,7 @@ struct netns_ipv6 { | |||
35 | struct xt_table *ip6table_filter; | 35 | struct xt_table *ip6table_filter; |
36 | struct xt_table *ip6table_mangle; | 36 | struct xt_table *ip6table_mangle; |
37 | struct xt_table *ip6table_raw; | 37 | struct xt_table *ip6table_raw; |
38 | struct xt_table *ip6table_security; | ||
38 | #endif | 39 | #endif |
39 | struct rt6_info *ip6_null_entry; | 40 | struct rt6_info *ip6_null_entry; |
40 | struct rt6_statistics *rt6_stats; | 41 | struct rt6_statistics *rt6_stats; |
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 90b1e8d23b16..5672d489e924 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h | |||
@@ -179,6 +179,8 @@ int sctp_eps_proc_init(void); | |||
179 | void sctp_eps_proc_exit(void); | 179 | void sctp_eps_proc_exit(void); |
180 | int sctp_assocs_proc_init(void); | 180 | int sctp_assocs_proc_init(void); |
181 | void sctp_assocs_proc_exit(void); | 181 | void sctp_assocs_proc_exit(void); |
182 | int sctp_remaddr_proc_init(void); | ||
183 | void sctp_remaddr_proc_exit(void); | ||
182 | 184 | ||
183 | 185 | ||
184 | /* | 186 | /* |
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 7f25195f9855..fbc27ac8a09e 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h | |||
@@ -300,6 +300,7 @@ struct sctp_sock { | |||
300 | 300 | ||
301 | /* The default SACK delay timeout for new associations. */ | 301 | /* The default SACK delay timeout for new associations. */ |
302 | __u32 sackdelay; | 302 | __u32 sackdelay; |
303 | __u32 sackfreq; | ||
303 | 304 | ||
304 | /* Flags controlling Heartbeat, SACK delay, and Path MTU Discovery. */ | 305 | /* Flags controlling Heartbeat, SACK delay, and Path MTU Discovery. */ |
305 | __u32 param_flags; | 306 | __u32 param_flags; |
@@ -946,6 +947,7 @@ struct sctp_transport { | |||
946 | 947 | ||
947 | /* SACK delay timeout */ | 948 | /* SACK delay timeout */ |
948 | unsigned long sackdelay; | 949 | unsigned long sackdelay; |
950 | __u32 sackfreq; | ||
949 | 951 | ||
950 | /* When was the last time (in jiffies) that we heard from this | 952 | /* When was the last time (in jiffies) that we heard from this |
951 | * transport? We use this to pick new active and retran paths. | 953 | * transport? We use this to pick new active and retran paths. |
@@ -1553,6 +1555,7 @@ struct sctp_association { | |||
1553 | * : SACK's are not delayed (see Section 6). | 1555 | * : SACK's are not delayed (see Section 6). |
1554 | */ | 1556 | */ |
1555 | __u8 sack_needed; /* Do we need to sack the peer? */ | 1557 | __u8 sack_needed; /* Do we need to sack the peer? */ |
1558 | __u32 sack_cnt; | ||
1556 | 1559 | ||
1557 | /* These are capabilities which our peer advertised. */ | 1560 | /* These are capabilities which our peer advertised. */ |
1558 | __u8 ecn_capable; /* Can peer do ECN? */ | 1561 | __u8 ecn_capable; /* Can peer do ECN? */ |
@@ -1662,6 +1665,7 @@ struct sctp_association { | |||
1662 | 1665 | ||
1663 | /* SACK delay timeout */ | 1666 | /* SACK delay timeout */ |
1664 | unsigned long sackdelay; | 1667 | unsigned long sackdelay; |
1668 | __u32 sackfreq; | ||
1665 | 1669 | ||
1666 | 1670 | ||
1667 | unsigned long timeouts[SCTP_NUM_TIMEOUT_TYPES]; | 1671 | unsigned long timeouts[SCTP_NUM_TIMEOUT_TYPES]; |
diff --git a/include/net/sctp/user.h b/include/net/sctp/user.h index 9619b9d35c9e..f205b10f0ab9 100644 --- a/include/net/sctp/user.h +++ b/include/net/sctp/user.h | |||
@@ -93,8 +93,9 @@ enum sctp_optname { | |||
93 | #define SCTP_STATUS SCTP_STATUS | 93 | #define SCTP_STATUS SCTP_STATUS |
94 | SCTP_GET_PEER_ADDR_INFO, | 94 | SCTP_GET_PEER_ADDR_INFO, |
95 | #define SCTP_GET_PEER_ADDR_INFO SCTP_GET_PEER_ADDR_INFO | 95 | #define SCTP_GET_PEER_ADDR_INFO SCTP_GET_PEER_ADDR_INFO |
96 | SCTP_DELAYED_ACK_TIME, | 96 | SCTP_DELAYED_ACK, |
97 | #define SCTP_DELAYED_ACK_TIME SCTP_DELAYED_ACK_TIME | 97 | #define SCTP_DELAYED_ACK_TIME SCTP_DELAYED_ACK |
98 | #define SCTP_DELAYED_ACK SCTP_DELAYED_ACK | ||
98 | SCTP_CONTEXT, /* Receive Context */ | 99 | SCTP_CONTEXT, /* Receive Context */ |
99 | #define SCTP_CONTEXT SCTP_CONTEXT | 100 | #define SCTP_CONTEXT SCTP_CONTEXT |
100 | SCTP_FRAGMENT_INTERLEAVE, | 101 | SCTP_FRAGMENT_INTERLEAVE, |
@@ -136,12 +137,14 @@ enum sctp_optname { | |||
136 | #define SCTP_GET_LOCAL_ADDRS_NUM_OLD SCTP_GET_LOCAL_ADDRS_NUM_OLD | 137 | #define SCTP_GET_LOCAL_ADDRS_NUM_OLD SCTP_GET_LOCAL_ADDRS_NUM_OLD |
137 | SCTP_GET_LOCAL_ADDRS_OLD, /* Get all local addresss. */ | 138 | SCTP_GET_LOCAL_ADDRS_OLD, /* Get all local addresss. */ |
138 | #define SCTP_GET_LOCAL_ADDRS_OLD SCTP_GET_LOCAL_ADDRS_OLD | 139 | #define SCTP_GET_LOCAL_ADDRS_OLD SCTP_GET_LOCAL_ADDRS_OLD |
139 | SCTP_SOCKOPT_CONNECTX, /* CONNECTX requests. */ | 140 | SCTP_SOCKOPT_CONNECTX_OLD, /* CONNECTX old requests. */ |
140 | #define SCTP_SOCKOPT_CONNECTX SCTP_SOCKOPT_CONNECTX | 141 | #define SCTP_SOCKOPT_CONNECTX_OLD SCTP_SOCKOPT_CONNECTX_OLD |
141 | SCTP_GET_PEER_ADDRS, /* Get all peer addresss. */ | 142 | SCTP_GET_PEER_ADDRS, /* Get all peer addresss. */ |
142 | #define SCTP_GET_PEER_ADDRS SCTP_GET_PEER_ADDRS | 143 | #define SCTP_GET_PEER_ADDRS SCTP_GET_PEER_ADDRS |
143 | SCTP_GET_LOCAL_ADDRS, /* Get all local addresss. */ | 144 | SCTP_GET_LOCAL_ADDRS, /* Get all local addresss. */ |
144 | #define SCTP_GET_LOCAL_ADDRS SCTP_GET_LOCAL_ADDRS | 145 | #define SCTP_GET_LOCAL_ADDRS SCTP_GET_LOCAL_ADDRS |
146 | SCTP_SOCKOPT_CONNECTX, /* CONNECTX requests. */ | ||
147 | #define SCTP_SOCKOPT_CONNECTX SCTP_SOCKOPT_CONNECTX | ||
145 | }; | 148 | }; |
146 | 149 | ||
147 | /* | 150 | /* |
@@ -618,13 +621,26 @@ struct sctp_authkeyid { | |||
618 | }; | 621 | }; |
619 | 622 | ||
620 | 623 | ||
621 | /* 7.1.23. Delayed Ack Timer (SCTP_DELAYED_ACK_TIME) | 624 | /* |
625 | * 7.1.23. Get or set delayed ack timer (SCTP_DELAYED_SACK) | ||
622 | * | 626 | * |
623 | * This options will get or set the delayed ack timer. The time is set | 627 | * This option will effect the way delayed acks are performed. This |
624 | * in milliseconds. If the assoc_id is 0, then this sets or gets the | 628 | * option allows you to get or set the delayed ack time, in |
625 | * endpoints default delayed ack timer value. If the assoc_id field is | 629 | * milliseconds. It also allows changing the delayed ack frequency. |
626 | * non-zero, then the set or get effects the specified association. | 630 | * Changing the frequency to 1 disables the delayed sack algorithm. If |
631 | * the assoc_id is 0, then this sets or gets the endpoints default | ||
632 | * values. If the assoc_id field is non-zero, then the set or get | ||
633 | * effects the specified association for the one to many model (the | ||
634 | * assoc_id field is ignored by the one to one model). Note that if | ||
635 | * sack_delay or sack_freq are 0 when setting this option, then the | ||
636 | * current values will remain unchanged. | ||
627 | */ | 637 | */ |
638 | struct sctp_sack_info { | ||
639 | sctp_assoc_t sack_assoc_id; | ||
640 | uint32_t sack_delay; | ||
641 | uint32_t sack_freq; | ||
642 | }; | ||
643 | |||
628 | struct sctp_assoc_value { | 644 | struct sctp_assoc_value { |
629 | sctp_assoc_t assoc_id; | 645 | sctp_assoc_t assoc_id; |
630 | uint32_t assoc_value; | 646 | uint32_t assoc_value; |
diff --git a/include/net/tipc/tipc_port.h b/include/net/tipc/tipc_port.h index 11105bcc4457..9923e41a8215 100644 --- a/include/net/tipc/tipc_port.h +++ b/include/net/tipc/tipc_port.h | |||
@@ -84,7 +84,8 @@ struct tipc_port { | |||
84 | u32 tipc_createport_raw(void *usr_handle, | 84 | u32 tipc_createport_raw(void *usr_handle, |
85 | u32 (*dispatcher)(struct tipc_port *, struct sk_buff *), | 85 | u32 (*dispatcher)(struct tipc_port *, struct sk_buff *), |
86 | void (*wakeup)(struct tipc_port *), | 86 | void (*wakeup)(struct tipc_port *), |
87 | const u32 importance); | 87 | const u32 importance, |
88 | struct tipc_port **tp_ptr); | ||
88 | 89 | ||
89 | int tipc_reject_msg(struct sk_buff *buf, u32 err); | 90 | int tipc_reject_msg(struct sk_buff *buf, u32 err); |
90 | 91 | ||
diff --git a/include/net/wireless.h b/include/net/wireless.h index 667b4080d30f..9324f8dd183e 100644 --- a/include/net/wireless.h +++ b/include/net/wireless.h | |||
@@ -39,12 +39,18 @@ enum ieee80211_band { | |||
39 | * on this channel. | 39 | * on this channel. |
40 | * @IEEE80211_CHAN_NO_IBSS: IBSS is not allowed on this channel. | 40 | * @IEEE80211_CHAN_NO_IBSS: IBSS is not allowed on this channel. |
41 | * @IEEE80211_CHAN_RADAR: Radar detection is required on this channel. | 41 | * @IEEE80211_CHAN_RADAR: Radar detection is required on this channel. |
42 | * @IEEE80211_CHAN_NO_FAT_ABOVE: extension channel above this channel | ||
43 | * is not permitted. | ||
44 | * @IEEE80211_CHAN_NO_FAT_BELOW: extension channel below this channel | ||
45 | * is not permitted. | ||
42 | */ | 46 | */ |
43 | enum ieee80211_channel_flags { | 47 | enum ieee80211_channel_flags { |
44 | IEEE80211_CHAN_DISABLED = 1<<0, | 48 | IEEE80211_CHAN_DISABLED = 1<<0, |
45 | IEEE80211_CHAN_PASSIVE_SCAN = 1<<1, | 49 | IEEE80211_CHAN_PASSIVE_SCAN = 1<<1, |
46 | IEEE80211_CHAN_NO_IBSS = 1<<2, | 50 | IEEE80211_CHAN_NO_IBSS = 1<<2, |
47 | IEEE80211_CHAN_RADAR = 1<<3, | 51 | IEEE80211_CHAN_RADAR = 1<<3, |
52 | IEEE80211_CHAN_NO_FAT_ABOVE = 1<<4, | ||
53 | IEEE80211_CHAN_NO_FAT_BELOW = 1<<5, | ||
48 | }; | 54 | }; |
49 | 55 | ||
50 | /** | 56 | /** |