aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/brcmphy.h6
-rw-r--r--include/linux/ieee80211.h52
-rw-r--r--include/linux/if_bridge.h2
-rw-r--r--include/linux/if_ppp.h2
-rw-r--r--include/linux/if_tun.h2
-rw-r--r--include/linux/ip6_tunnel.h4
-rw-r--r--include/linux/netfilter/nfnetlink_conntrack.h10
-rw-r--r--include/linux/netfilter_bridge/ebt_ip6.h40
-rw-r--r--include/linux/netfilter_bridge/ebt_log.h3
-rw-r--r--include/linux/netfilter_ipv4.h1
-rw-r--r--include/linux/netfilter_ipv6.h1
-rw-r--r--include/linux/netlink.h2
-rw-r--r--include/linux/pci_ids.h1
-rw-r--r--include/linux/ppp-comp.h2
-rw-r--r--include/linux/ppp_defs.h2
-rw-r--r--include/linux/smc911x.h12
-rw-r--r--include/linux/sunrpc/auth_gss.h2
-rw-r--r--include/linux/sunrpc/gss_api.h2
-rw-r--r--include/linux/sunrpc/svcauth_gss.h3
-rw-r--r--include/linux/tcp.h50
-rw-r--r--include/linux/tipc_config.h10
-rw-r--r--include/linux/wanrouter.h2
-rw-r--r--include/linux/wireless.h2
-rw-r--r--include/net/addrconf.h3
-rw-r--r--include/net/ieee80211.h11
-rw-r--r--include/net/if_inet6.h1
-rw-r--r--include/net/inetpeer.h2
-rw-r--r--include/net/ip6_tunnel.h5
-rw-r--r--include/net/ipconfig.h2
-rw-r--r--include/net/ipip.h1
-rw-r--r--include/net/ipv6.h2
-rw-r--r--include/net/mac80211.h466
-rw-r--r--include/net/net_namespace.h3
-rw-r--r--include/net/netfilter/ipv4/nf_conntrack_ipv4.h2
-rw-r--r--include/net/netfilter/nf_conntrack.h19
-rw-r--r--include/net/netns/ipv4.h1
-rw-r--r--include/net/netns/ipv6.h1
-rw-r--r--include/net/sctp/sctp.h2
-rw-r--r--include/net/sctp/structs.h4
-rw-r--r--include/net/sctp/user.h34
-rw-r--r--include/net/snmp.h2
-rw-r--r--include/net/tcp.h21
-rw-r--r--include/net/tipc/tipc_port.h3
-rw-r--r--include/net/udp.h2
-rw-r--r--include/net/wireless.h6
45 files changed, 469 insertions, 337 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 */
553static inline u8 *ieee80211_get_SA(struct ieee80211_hdr *hdr) 565static 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 */
578static inline u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr) 591static 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 */
596static inline int ieee80211_get_morefrag(struct ieee80211_hdr *hdr) 610static 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/if_bridge.h b/include/linux/if_bridge.h
index 950e13d09e06..6badb3e2c4e4 100644
--- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h
@@ -4,8 +4,6 @@
4 * Authors: 4 * Authors:
5 * Lennert Buytenhek <buytenh@gnu.org> 5 * Lennert Buytenhek <buytenh@gnu.org>
6 * 6 *
7 * $Id: if_bridge.h,v 1.1 2000/02/18 16:47:01 davem Exp $
8 *
9 * This program is free software; you can redistribute it and/or 7 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License 8 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 9 * as published by the Free Software Foundation; either version
diff --git a/include/linux/if_ppp.h b/include/linux/if_ppp.h
index 0f2f70d4e48c..c3b1f8562709 100644
--- a/include/linux/if_ppp.h
+++ b/include/linux/if_ppp.h
@@ -1,5 +1,3 @@
1/* $Id: if_ppp.h,v 1.21 2000/03/27 06:03:36 paulus Exp $ */
2
3/* 1/*
4 * if_ppp.h - Point-to-Point Protocol definitions. 2 * if_ppp.h - Point-to-Point Protocol definitions.
5 * 3 *
diff --git a/include/linux/if_tun.h b/include/linux/if_tun.h
index 8c71fe2fb1f5..18f31b6187a3 100644
--- a/include/linux/if_tun.h
+++ b/include/linux/if_tun.h
@@ -11,8 +11,6 @@
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details. 13 * GNU General Public License for more details.
14 *
15 * $Id: if_tun.h,v 1.2 2001/06/01 18:39:47 davem Exp $
16 */ 14 */
17 15
18#ifndef __IF_TUN_H 16#ifndef __IF_TUN_H
diff --git a/include/linux/ip6_tunnel.h b/include/linux/ip6_tunnel.h
index af3f4a70f3df..1e7cc4af40de 100644
--- a/include/linux/ip6_tunnel.h
+++ b/include/linux/ip6_tunnel.h
@@ -1,7 +1,3 @@
1/*
2 * $Id$
3 */
4
5#ifndef _IP6_TUNNEL_H 1#ifndef _IP6_TUNNEL_H
6#define _IP6_TUNNEL_H 2#define _IP6_TUNNEL_H
7 3
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
107enum 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
106enum ctattr_counters { 116enum 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 */
26struct 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: */
195struct sock *netlink_getsockbyfilp(struct file *filp); 195struct sock *netlink_getsockbyfilp(struct file *filp);
196int netlink_attachskb(struct sock *sk, struct sk_buff *skb, int nonblock, 196int netlink_attachskb(struct sock *sk, struct sk_buff *skb,
197 long *timeo, struct sock *ssk); 197 long *timeo, struct sock *ssk);
198void netlink_detachskb(struct sock *sk, struct sk_buff *skb); 198void netlink_detachskb(struct sock *sk, struct sk_buff *skb);
199int netlink_sendskb(struct sock *sk, struct sk_buff *skb); 199int netlink_sendskb(struct sock *sk, struct sk_buff *skb);
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index eafc9d6d2b35..caa000596b25 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -1981,6 +1981,7 @@
1981#define PCI_DEVICE_ID_TIGON3_5787M 0x1693 1981#define PCI_DEVICE_ID_TIGON3_5787M 0x1693
1982#define PCI_DEVICE_ID_TIGON3_5782 0x1696 1982#define PCI_DEVICE_ID_TIGON3_5782 0x1696
1983#define PCI_DEVICE_ID_TIGON3_5784 0x1698 1983#define PCI_DEVICE_ID_TIGON3_5784 0x1698
1984#define PCI_DEVICE_ID_TIGON3_5785 0x1699
1984#define PCI_DEVICE_ID_TIGON3_5786 0x169a 1985#define PCI_DEVICE_ID_TIGON3_5786 0x169a
1985#define PCI_DEVICE_ID_TIGON3_5787 0x169b 1986#define PCI_DEVICE_ID_TIGON3_5787 0x169b
1986#define PCI_DEVICE_ID_TIGON3_5788 0x169c 1987#define PCI_DEVICE_ID_TIGON3_5788 0x169c
diff --git a/include/linux/ppp-comp.h b/include/linux/ppp-comp.h
index e86a7a5cf355..b8d4ddd22736 100644
--- a/include/linux/ppp-comp.h
+++ b/include/linux/ppp-comp.h
@@ -23,8 +23,6 @@
23 * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO 23 * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
24 * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, 24 * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
25 * OR MODIFICATIONS. 25 * OR MODIFICATIONS.
26 *
27 * $Id: ppp-comp.h,v 1.6 1997/11/27 06:04:44 paulus Exp $
28 */ 26 */
29 27
30/* 28/*
diff --git a/include/linux/ppp_defs.h b/include/linux/ppp_defs.h
index c6b13ff85028..6e8adc77522c 100644
--- a/include/linux/ppp_defs.h
+++ b/include/linux/ppp_defs.h
@@ -1,5 +1,3 @@
1/* $Id: ppp_defs.h,v 1.2 1994/09/21 01:31:06 paulus Exp $ */
2
3/* 1/*
4 * ppp_defs.h - PPP definitions. 2 * ppp_defs.h - PPP definitions.
5 * 3 *
diff --git a/include/linux/smc911x.h b/include/linux/smc911x.h
new file mode 100644
index 000000000000..b58f54c24183
--- /dev/null
+++ b/include/linux/smc911x.h
@@ -0,0 +1,12 @@
1#ifndef __SMC911X_H__
2#define __SMC911X_H__
3
4#define SMC911X_USE_16BIT (1 << 0)
5#define SMC911X_USE_32BIT (1 << 1)
6
7struct smc911x_platdata {
8 unsigned long flags;
9 unsigned long irq_flags; /* IRQF_... */
10};
11
12#endif /* __SMC911X_H__ */
diff --git a/include/linux/sunrpc/auth_gss.h b/include/linux/sunrpc/auth_gss.h
index fec6899bf355..d48d4e605f74 100644
--- a/include/linux/sunrpc/auth_gss.h
+++ b/include/linux/sunrpc/auth_gss.h
@@ -7,8 +7,6 @@
7 * Andy Adamson <andros@umich.edu> 7 * Andy Adamson <andros@umich.edu>
8 * Bruce Fields <bfields@umich.edu> 8 * Bruce Fields <bfields@umich.edu>
9 * Copyright (c) 2000 The Regents of the University of Michigan 9 * Copyright (c) 2000 The Regents of the University of Michigan
10 *
11 * $Id$
12 */ 10 */
13 11
14#ifndef _LINUX_SUNRPC_AUTH_GSS_H 12#ifndef _LINUX_SUNRPC_AUTH_GSS_H
diff --git a/include/linux/sunrpc/gss_api.h b/include/linux/sunrpc/gss_api.h
index 459c5fc11d51..03f33330ece2 100644
--- a/include/linux/sunrpc/gss_api.h
+++ b/include/linux/sunrpc/gss_api.h
@@ -7,8 +7,6 @@
7 * Andy Adamson <andros@umich.edu> 7 * Andy Adamson <andros@umich.edu>
8 * Bruce Fields <bfields@umich.edu> 8 * Bruce Fields <bfields@umich.edu>
9 * Copyright (c) 2000 The Regents of the University of Michigan 9 * Copyright (c) 2000 The Regents of the University of Michigan
10 *
11 * $Id$
12 */ 10 */
13 11
14#ifndef _LINUX_SUNRPC_GSS_API_H 12#ifndef _LINUX_SUNRPC_GSS_API_H
diff --git a/include/linux/sunrpc/svcauth_gss.h b/include/linux/sunrpc/svcauth_gss.h
index 417a1def56db..c9165d9771a8 100644
--- a/include/linux/sunrpc/svcauth_gss.h
+++ b/include/linux/sunrpc/svcauth_gss.h
@@ -3,9 +3,6 @@
3 * 3 *
4 * Bruce Fields <bfields@umich.edu> 4 * Bruce Fields <bfields@umich.edu>
5 * Copyright (c) 2002 The Regents of the Unviersity of Michigan 5 * Copyright (c) 2002 The Regents of the Unviersity of Michigan
6 *
7 * $Id$
8 *
9 */ 6 */
10 7
11#ifndef _LINUX_SUNRPC_SVCAUTH_GSS_H 8#ifndef _LINUX_SUNRPC_SVCAUTH_GSS_H
diff --git a/include/linux/tcp.h b/include/linux/tcp.h
index b31b6b74aa28..07e79bdb9cdf 100644
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
@@ -291,10 +291,9 @@ struct tcp_sock {
291 u32 rcv_ssthresh; /* Current window clamp */ 291 u32 rcv_ssthresh; /* Current window clamp */
292 292
293 u32 frto_highmark; /* snd_nxt when RTO occurred */ 293 u32 frto_highmark; /* snd_nxt when RTO occurred */
294 u8 reordering; /* Packet reordering metric. */ 294 u16 advmss; /* Advertised MSS */
295 u8 frto_counter; /* Number of new acks after RTO */ 295 u8 frto_counter; /* Number of new acks after RTO */
296 u8 nonagle; /* Disable Nagle algorithm? */ 296 u8 nonagle; /* Disable Nagle algorithm? */
297 u8 keepalive_probes; /* num of allowed keep alive probes */
298 297
299/* RTT measurement */ 298/* RTT measurement */
300 u32 srtt; /* smoothed round trip time << 3 */ 299 u32 srtt; /* smoothed round trip time << 3 */
@@ -305,6 +304,10 @@ struct tcp_sock {
305 304
306 u32 packets_out; /* Packets which are "in flight" */ 305 u32 packets_out; /* Packets which are "in flight" */
307 u32 retrans_out; /* Retransmitted packets out */ 306 u32 retrans_out; /* Retransmitted packets out */
307
308 u16 urg_data; /* Saved octet of OOB data and control flags */
309 u8 urg_mode; /* In urgent mode */
310 u8 ecn_flags; /* ECN status bits. */
308/* 311/*
309 * Options received (usually on last packet, some only on SYN packets). 312 * Options received (usually on last packet, some only on SYN packets).
310 */ 313 */
@@ -320,13 +323,24 @@ struct tcp_sock {
320 u32 snd_cwnd_used; 323 u32 snd_cwnd_used;
321 u32 snd_cwnd_stamp; 324 u32 snd_cwnd_stamp;
322 325
323 struct sk_buff_head out_of_order_queue; /* Out of order segments go here */
324
325 u32 rcv_wnd; /* Current receiver window */ 326 u32 rcv_wnd; /* Current receiver window */
326 u32 write_seq; /* Tail(+1) of data held in tcp send buffer */ 327 u32 write_seq; /* Tail(+1) of data held in tcp send buffer */
327 u32 pushed_seq; /* Last pushed seq, required to talk to windows */ 328 u32 pushed_seq; /* Last pushed seq, required to talk to windows */
329 u32 lost_out; /* Lost packets */
330 u32 sacked_out; /* SACK'd packets */
331 u32 fackets_out; /* FACK'd packets */
332 u32 tso_deferred;
333 u32 bytes_acked; /* Appropriate Byte Counting - RFC3465 */
328 334
329/* SACKs data */ 335 /* from STCP, retrans queue hinting */
336 struct sk_buff* lost_skb_hint;
337 struct sk_buff *scoreboard_skb_hint;
338 struct sk_buff *retransmit_skb_hint;
339 struct sk_buff *forward_skb_hint;
340
341 struct sk_buff_head out_of_order_queue; /* Out of order segments go here */
342
343 /* SACKs data, these 2 need to be together (see tcp_build_and_update_options) */
330 struct tcp_sack_block duplicate_sack[1]; /* D-SACK block */ 344 struct tcp_sack_block duplicate_sack[1]; /* D-SACK block */
331 struct tcp_sack_block selective_acks[4]; /* The SACKS themselves*/ 345 struct tcp_sack_block selective_acks[4]; /* The SACKS themselves*/
332 346
@@ -337,23 +351,14 @@ struct tcp_sock {
337 * sacked_out > 0) 351 * sacked_out > 0)
338 */ 352 */
339 353
340 /* from STCP, retrans queue hinting */
341 struct sk_buff* lost_skb_hint;
342
343 struct sk_buff *scoreboard_skb_hint;
344 struct sk_buff *retransmit_skb_hint;
345 struct sk_buff *forward_skb_hint;
346
347 int lost_cnt_hint; 354 int lost_cnt_hint;
348 int retransmit_cnt_hint; 355 int retransmit_cnt_hint;
349 356
350 u32 lost_retrans_low; /* Sent seq after any rxmit (lowest) */ 357 u32 lost_retrans_low; /* Sent seq after any rxmit (lowest) */
351 358
352 u16 advmss; /* Advertised MSS */ 359 u8 reordering; /* Packet reordering metric. */
360 u8 keepalive_probes; /* num of allowed keep alive probes */
353 u32 prior_ssthresh; /* ssthresh saved at recovery start */ 361 u32 prior_ssthresh; /* ssthresh saved at recovery start */
354 u32 lost_out; /* Lost packets */
355 u32 sacked_out; /* SACK'd packets */
356 u32 fackets_out; /* FACK'd packets */
357 u32 high_seq; /* snd_nxt at onset of congestion */ 362 u32 high_seq; /* snd_nxt at onset of congestion */
358 363
359 u32 retrans_stamp; /* Timestamp of the last retransmit, 364 u32 retrans_stamp; /* Timestamp of the last retransmit,
@@ -361,23 +366,16 @@ struct tcp_sock {
361 * the first SYN. */ 366 * the first SYN. */
362 u32 undo_marker; /* tracking retrans started here. */ 367 u32 undo_marker; /* tracking retrans started here. */
363 int undo_retrans; /* number of undoable retransmissions. */ 368 int undo_retrans; /* number of undoable retransmissions. */
369 u32 total_retrans; /* Total retransmits for entire connection */
370
364 u32 urg_seq; /* Seq of received urgent pointer */ 371 u32 urg_seq; /* Seq of received urgent pointer */
365 u16 urg_data; /* Saved octet of OOB data and control flags */
366 u8 urg_mode; /* In urgent mode */
367 u8 ecn_flags; /* ECN status bits. */
368 u32 snd_up; /* Urgent pointer */ 372 u32 snd_up; /* Urgent pointer */
369 373
370 u32 total_retrans; /* Total retransmits for entire connection */
371 u32 bytes_acked; /* Appropriate Byte Counting - RFC3465 */
372
373 unsigned int keepalive_time; /* time before keep alive takes place */ 374 unsigned int keepalive_time; /* time before keep alive takes place */
374 unsigned int keepalive_intvl; /* time interval between keep alive probes */ 375 unsigned int keepalive_intvl; /* time interval between keep alive probes */
375 int linger2;
376 376
377 unsigned long last_synq_overflow; 377 unsigned long last_synq_overflow;
378 378
379 u32 tso_deferred;
380
381/* Receiver side RTT estimation */ 379/* Receiver side RTT estimation */
382 struct { 380 struct {
383 u32 rtt; 381 u32 rtt;
@@ -405,6 +403,8 @@ struct tcp_sock {
405/* TCP MD5 Signagure Option information */ 403/* TCP MD5 Signagure Option information */
406 struct tcp_md5sig_info *md5sig_info; 404 struct tcp_md5sig_info *md5sig_info;
407#endif 405#endif
406
407 int linger2;
408}; 408};
409 409
410static inline struct tcp_sock *tcp_sk(const struct sock *sk) 410static 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);
522extern void wanrouter_proc_cleanup(void); 522extern void wanrouter_proc_cleanup(void);
523extern int wanrouter_proc_add(struct wan_device *wandev); 523extern int wanrouter_proc_add(struct wan_device *wandev);
524extern int wanrouter_proc_delete(struct wan_device *wandev); 524extern int wanrouter_proc_delete(struct wan_device *wandev);
525extern int wanrouter_ioctl( struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg); 525extern 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/addrconf.h b/include/net/addrconf.h
index bbd3d583c6e6..06b28142b3ab 100644
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -121,7 +121,8 @@ static inline int addrconf_finite_timeout(unsigned long timeout)
121 */ 121 */
122extern int ipv6_addr_label_init(void); 122extern int ipv6_addr_label_init(void);
123extern void ipv6_addr_label_rtnl_register(void); 123extern void ipv6_addr_label_rtnl_register(void);
124extern u32 ipv6_addr_label(const struct in6_addr *addr, 124extern u32 ipv6_addr_label(struct net *net,
125 const struct in6_addr *addr,
125 int type, int ifindex); 126 int type, int ifindex);
126 127
127/* 128/*
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 */
1263extern int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev); 1263extern int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev);
1264extern void ieee80211_txb_free(struct ieee80211_txb *); 1264extern void ieee80211_txb_free(struct ieee80211_txb *);
1265extern 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 */
1270extern void ieee80211_rx_any(struct ieee80211_device *ieee, 1267extern void ieee80211_rx_any(struct ieee80211_device *ieee,
@@ -1312,14 +1309,6 @@ extern int ieee80211_wx_set_encodeext(struct ieee80211_device *ieee,
1312extern int ieee80211_wx_get_encodeext(struct ieee80211_device *ieee, 1309extern 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);
1315extern int ieee80211_wx_set_auth(struct net_device *dev,
1316 struct iw_request_info *info,
1317 union iwreq_data *wrqu,
1318 char *extra);
1319extern 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
1324static inline void ieee80211_increment_scans(struct ieee80211_device *ieee) 1313static inline void ieee80211_increment_scans(struct ieee80211_device *ieee)
1325{ 1314{
diff --git a/include/net/if_inet6.h b/include/net/if_inet6.h
index b2cfc4927257..db66c7927743 100644
--- a/include/net/if_inet6.h
+++ b/include/net/if_inet6.h
@@ -148,7 +148,6 @@ struct ifacaddr6
148#define IFA_HOST IPV6_ADDR_LOOPBACK 148#define IFA_HOST IPV6_ADDR_LOOPBACK
149#define IFA_LINK IPV6_ADDR_LINKLOCAL 149#define IFA_LINK IPV6_ADDR_LINKLOCAL
150#define IFA_SITE IPV6_ADDR_SITELOCAL 150#define IFA_SITE IPV6_ADDR_SITELOCAL
151#define IFA_GLOBAL 0x0000U
152 151
153struct ipv6_devstat { 152struct ipv6_devstat {
154 struct proc_dir_entry *proc_dir_entry; 153 struct proc_dir_entry *proc_dir_entry;
diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h
index ad8404b56113..15e1f8fe4c1f 100644
--- a/include/net/inetpeer.h
+++ b/include/net/inetpeer.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * INETPEER - A storage for permanent information about peers 2 * INETPEER - A storage for permanent information about peers
3 * 3 *
4 * Version: $Id: inetpeer.h,v 1.2 2002/01/12 07:54:56 davem Exp $
5 *
6 * Authors: Andrey V. Savochkin <saw@msu.ru> 4 * Authors: Andrey V. Savochkin <saw@msu.ru>
7 */ 5 */
8 6
diff --git a/include/net/ip6_tunnel.h b/include/net/ip6_tunnel.h
index 6512d85f11b3..83b4e008b16d 100644
--- a/include/net/ip6_tunnel.h
+++ b/include/net/ip6_tunnel.h
@@ -1,7 +1,3 @@
1/*
2 * $Id$
3 */
4
5#ifndef _NET_IP6_TUNNEL_H 1#ifndef _NET_IP6_TUNNEL_H
6#define _NET_IP6_TUNNEL_H 2#define _NET_IP6_TUNNEL_H
7 3
@@ -19,7 +15,6 @@
19struct ip6_tnl { 15struct ip6_tnl {
20 struct ip6_tnl *next; /* next tunnel in list */ 16 struct ip6_tnl *next; /* next tunnel in list */
21 struct net_device *dev; /* virtual device associated with tunnel */ 17 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 */ 18 int recursion; /* depth of hard_start_xmit recursion */
24 struct ip6_tnl_parm parms; /* tunnel configuration parameters */ 19 struct ip6_tnl_parm parms; /* tunnel configuration parameters */
25 struct flowi fl; /* flowi template for xmit */ 20 struct flowi fl; /* flowi template for xmit */
diff --git a/include/net/ipconfig.h b/include/net/ipconfig.h
index 3924d7d2cb11..c74cc1bd5a02 100644
--- a/include/net/ipconfig.h
+++ b/include/net/ipconfig.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: ipconfig.h,v 1.4 2001/04/30 04:51:46 davem Exp $
3 *
4 * Copyright (C) 1997 Martin Mares 2 * Copyright (C) 1997 Martin Mares
5 * 3 *
6 * Automatic IP Layer Configuration 4 * Automatic IP Layer Configuration
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/ipv6.h b/include/net/ipv6.h
index e0a612bc9c4e..7f7db8d57934 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -4,8 +4,6 @@
4 * Authors: 4 * Authors:
5 * Pedro Roque <roque@di.fc.ul.pt> 5 * Pedro Roque <roque@di.fc.ul.pt>
6 * 6 *
7 * $Id: ipv6.h,v 1.1 2002/05/20 15:13:07 jgrimm Exp $
8 *
9 * This program is free software; you can redistribute it and/or 7 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License 8 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 9 * as published by the Free Software Foundation; either version
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 */
107enum 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 */
126struct ieee80211_tx_queue_stats_data { 138struct 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 */
150enum 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
168struct ieee80211_tx_queue_stats {
169 struct ieee80211_tx_queue_stats_data data[NUM_TX_DATA_QUEUES_AMPDU];
170};
171
172struct ieee80211_low_level_stats { 144struct 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 */
265enum mac80211_tx_control_flags { 239enum 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
291struct 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 */ 289struct 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
321static 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 */
390enum 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 */
416struct 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 */
614enum ieee80211_key_flags { 578enum 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 */
725enum ieee80211_hw_flags { 709enum 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
805static 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
814static 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
823static inline struct ieee80211_rate *
824ieee80211_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
832static inline struct ieee80211_rate *
833ieee80211_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
841static inline struct ieee80211_rate *
842ieee80211_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 */
1109struct ieee80211_ops { 1143struct 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 */
1356void ieee80211_tx_status(struct ieee80211_hw *hw, 1385void 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 */
1375void ieee80211_tx_status_irqsafe(struct ieee80211_hw *hw, 1400void 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 */
1392struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw, 1416struct 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 */
1410void ieee80211_rts_get(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 1433void 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,
1444void ieee80211_ctstoself_get(struct ieee80211_hw *hw, 1467void 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 */
1502struct sk_buff * 1525struct sk_buff *
1503ieee80211_get_buffered_bc(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 1526ieee80211_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);
1559void ieee80211_stop_queue(struct ieee80211_hw *hw, int queue); 1581void 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 */
1567void 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 *);
201struct ctl_path; 201struct ctl_path;
202struct ctl_table; 202struct ctl_table;
203struct ctl_table_header; 203struct ctl_table_header;
204
204extern struct ctl_table_header *register_net_sysctl_table(struct net *net, 205extern 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);
207extern struct ctl_table_header *register_net_sysctl_rotable(
208 const struct ctl_path *path, struct ctl_table *table);
206extern void unregister_net_sysctl_table(struct ctl_table_header *header); 209extern 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 */
13struct sk_buff *nf_ct_ipv4_ct_gather_frags(struct sk_buff *skb);
14 12
15extern struct nf_conntrack_l3proto nf_conntrack_l3proto_ipv4; 13extern 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
226extern 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 */
232static 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 */
240static 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 */
228extern void nf_conntrack_tcp_update(const struct sk_buff *skb, 247extern 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);
179void sctp_eps_proc_exit(void); 179void sctp_eps_proc_exit(void);
180int sctp_assocs_proc_init(void); 180int sctp_assocs_proc_init(void);
181void sctp_assocs_proc_exit(void); 181void sctp_assocs_proc_exit(void);
182int sctp_remaddr_proc_init(void);
183void 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 */
638struct sctp_sack_info {
639 sctp_assoc_t sack_assoc_id;
640 uint32_t sack_delay;
641 uint32_t sack_freq;
642};
643
628struct sctp_assoc_value { 644struct 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/snmp.h b/include/net/snmp.h
index ce2f48507510..57c93628695f 100644
--- a/include/net/snmp.h
+++ b/include/net/snmp.h
@@ -14,8 +14,6 @@
14 * as published by the Free Software Foundation; either version 14 * as published by the Free Software Foundation; either version
15 * 2 of the License, or (at your option) any later version. 15 * 2 of the License, or (at your option) any later version.
16 * 16 *
17 * $Id: snmp.h,v 1.19 2001/06/14 13:40:46 davem Exp $
18 *
19 */ 17 */
20 18
21#ifndef _SNMP_H 19#ifndef _SNMP_H
diff --git a/include/net/tcp.h b/include/net/tcp.h
index cf54034019d9..b5a1b9eb12e8 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -398,6 +398,8 @@ extern void tcp_parse_options(struct sk_buff *skb,
398 struct tcp_options_received *opt_rx, 398 struct tcp_options_received *opt_rx,
399 int estab); 399 int estab);
400 400
401extern u8 *tcp_parse_md5sig_option(struct tcphdr *th);
402
401/* 403/*
402 * TCP v4 functions exported for the inet6 API 404 * TCP v4 functions exported for the inet6 API
403 */ 405 */
@@ -1113,13 +1115,19 @@ struct tcp_md5sig_pool {
1113#define TCP_MD5SIG_MAXKEYS (~(u32)0) /* really?! */ 1115#define TCP_MD5SIG_MAXKEYS (~(u32)0) /* really?! */
1114 1116
1115/* - functions */ 1117/* - functions */
1118extern int tcp_calc_md5_hash(char *md5_hash,
1119 struct tcp_md5sig_key *key,
1120 int bplen,
1121 struct tcphdr *th,
1122 unsigned int tcplen,
1123 struct tcp_md5sig_pool *hp);
1124
1116extern int tcp_v4_calc_md5_hash(char *md5_hash, 1125extern int tcp_v4_calc_md5_hash(char *md5_hash,
1117 struct tcp_md5sig_key *key, 1126 struct tcp_md5sig_key *key,
1118 struct sock *sk, 1127 struct sock *sk,
1119 struct dst_entry *dst, 1128 struct dst_entry *dst,
1120 struct request_sock *req, 1129 struct request_sock *req,
1121 struct tcphdr *th, 1130 struct tcphdr *th,
1122 int protocol,
1123 unsigned int tcplen); 1131 unsigned int tcplen);
1124extern struct tcp_md5sig_key *tcp_v4_md5_lookup(struct sock *sk, 1132extern struct tcp_md5sig_key *tcp_v4_md5_lookup(struct sock *sk,
1125 struct sock *addr_sk); 1133 struct sock *addr_sk);
@@ -1132,6 +1140,16 @@ extern int tcp_v4_md5_do_add(struct sock *sk,
1132extern int tcp_v4_md5_do_del(struct sock *sk, 1140extern int tcp_v4_md5_do_del(struct sock *sk,
1133 __be32 addr); 1141 __be32 addr);
1134 1142
1143#ifdef CONFIG_TCP_MD5SIG
1144#define tcp_twsk_md5_key(twsk) ((twsk)->tw_md5_keylen ? \
1145 &(struct tcp_md5sig_key) { \
1146 .key = (twsk)->tw_md5_key, \
1147 .keylen = (twsk)->tw_md5_keylen, \
1148 } : NULL)
1149#else
1150#define tcp_twsk_md5_key(twsk) NULL
1151#endif
1152
1135extern struct tcp_md5sig_pool **tcp_alloc_md5sig_pool(void); 1153extern struct tcp_md5sig_pool **tcp_alloc_md5sig_pool(void);
1136extern void tcp_free_md5sig_pool(void); 1154extern void tcp_free_md5sig_pool(void);
1137 1155
@@ -1369,7 +1387,6 @@ struct tcp_sock_af_ops {
1369 struct dst_entry *dst, 1387 struct dst_entry *dst,
1370 struct request_sock *req, 1388 struct request_sock *req,
1371 struct tcphdr *th, 1389 struct tcphdr *th,
1372 int protocol,
1373 unsigned int len); 1390 unsigned int len);
1374 int (*md5_add) (struct sock *sk, 1391 int (*md5_add) (struct sock *sk,
1375 struct sock *addr_sk, 1392 struct sock *addr_sk,
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 {
84u32 tipc_createport_raw(void *usr_handle, 84u32 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
89int tipc_reject_msg(struct sk_buff *buf, u32 err); 90int tipc_reject_msg(struct sk_buff *buf, u32 err);
90 91
diff --git a/include/net/udp.h b/include/net/udp.h
index ccce83707046..7a8684855245 100644
--- a/include/net/udp.h
+++ b/include/net/udp.h
@@ -196,8 +196,8 @@ struct udp_seq_afinfo {
196struct udp_iter_state { 196struct udp_iter_state {
197 struct seq_net_private p; 197 struct seq_net_private p;
198 sa_family_t family; 198 sa_family_t family;
199 struct hlist_head *hashtable;
200 int bucket; 199 int bucket;
200 struct hlist_head *hashtable;
201}; 201};
202 202
203#ifdef CONFIG_PROC_FS 203#ifdef CONFIG_PROC_FS
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 */
43enum ieee80211_channel_flags { 47enum 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/**