aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
Diffstat (limited to 'include/net')
-rw-r--r--include/net/ieee80211.h11
-rw-r--r--include/net/ip6_tunnel.h1
-rw-r--r--include/net/ipip.h1
-rw-r--r--include/net/mac80211.h152
-rw-r--r--include/net/net_namespace.h3
-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/tipc/tipc_port.h3
9 files changed, 116 insertions, 95 deletions
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/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 @@
19struct ip6_tnl { 19struct 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..2f9853997992 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;
@@ -286,8 +258,17 @@ enum mac80211_tx_control_flags {
286 258
287/* Transmit control fields. This data structure is passed to low-level driver 259/* 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 260 * with each TX frame. The low-level driver is responsible for configuring
289 * the hardware to use given values (depending on what is supported). */ 261 * the hardware to use given values (depending on what is supported).
290 262 *
263 * NOTE: Be careful with using the pointers outside of the ieee80211_ops->tx()
264 * context (i.e. when defering the work to a workqueue).
265 * The vif pointer is valid until the it has been removed with the
266 * ieee80211_ops->remove_interface() callback funtion.
267 * The hw_key pointer is valid until it has been removed with the
268 * ieee80211_ops->set_key() callback function.
269 * The tx_rate and alt_retry_rate pointers are valid until the phy is
270 * deregistered.
271 */
291struct ieee80211_tx_control { 272struct ieee80211_tx_control {
292 struct ieee80211_vif *vif; 273 struct ieee80211_vif *vif;
293 struct ieee80211_rate *tx_rate; 274 struct ieee80211_rate *tx_rate;
@@ -298,9 +279,11 @@ struct ieee80211_tx_control {
298 /* retry rate for the last retries */ 279 /* retry rate for the last retries */
299 struct ieee80211_rate *alt_retry_rate; 280 struct ieee80211_rate *alt_retry_rate;
300 281
282 /* Key used for hardware encryption
283 * NULL if IEEE80211_TXCTL_DO_NOT_ENCRYPT is set */
284 struct ieee80211_key_conf *hw_key;
285
301 u32 flags; /* tx control flags defined above */ 286 u32 flags; /* tx control flags defined above */
302 u8 key_idx; /* keyidx from hw->set_key(), undefined if
303 * IEEE80211_TXCTL_DO_NOT_ENCRYPT is set */
304 u8 retry_limit; /* 1 = only first attempt, 2 = one retry, .. 287 u8 retry_limit; /* 1 = only first attempt, 2 = one retry, ..
305 * This could be used when set_retry_limit 288 * This could be used when set_retry_limit
306 * is not implemented by the driver */ 289 * is not implemented by the driver */
@@ -308,7 +291,7 @@ struct ieee80211_tx_control {
308 * position represents antenna number used */ 291 * position represents antenna number used */
309 u8 icv_len; /* length of the ICV/MIC field in octets */ 292 u8 icv_len; /* length of the ICV/MIC field in octets */
310 u8 iv_len; /* length of the IV field in octets */ 293 u8 iv_len; /* length of the IV field in octets */
311 u8 queue; /* hardware queue to use for this frame; 294 u16 queue; /* hardware queue to use for this frame;
312 * 0 = highest, hw->queues-1 = lowest */ 295 * 0 = highest, hw->queues-1 = lowest */
313 u16 aid; /* Station AID */ 296 u16 aid; /* Station AID */
314 int type; /* internal */ 297 int type; /* internal */
@@ -353,13 +336,16 @@ enum mac80211_rx_flags {
353 * The low-level driver should provide this information (the subset 336 * The low-level driver should provide this information (the subset
354 * supported by hardware) to the 802.11 code with each received 337 * supported by hardware) to the 802.11 code with each received
355 * frame. 338 * frame.
339 *
356 * @mactime: value in microseconds of the 64-bit Time Synchronization Function 340 * @mactime: value in microseconds of the 64-bit Time Synchronization Function
357 * (TSF) timer when the first data symbol (MPDU) arrived at the hardware. 341 * (TSF) timer when the first data symbol (MPDU) arrived at the hardware.
358 * @band: the active band when this frame was received 342 * @band: the active band when this frame was received
359 * @freq: frequency the radio was tuned to when receiving this frame, in MHz 343 * @freq: frequency the radio was tuned to when receiving this frame, in MHz
360 * @ssi: signal strength when receiving this frame 344 * @signal: signal strength when receiving this frame, either in dBm, in dB or
361 * @signal: used as 'qual' in statistics reporting 345 * unspecified depending on the hardware capabilities flags
362 * @noise: PHY noise when receiving this frame 346 * @IEEE80211_HW_SIGNAL_*
347 * @noise: noise when receiving this frame, in dBm.
348 * @qual: overall signal quality indication, in percent (0-100).
363 * @antenna: antenna used 349 * @antenna: antenna used
364 * @rate_idx: index of data rate into band's supported rates 350 * @rate_idx: index of data rate into band's supported rates
365 * @flag: %RX_FLAG_* 351 * @flag: %RX_FLAG_*
@@ -368,9 +354,9 @@ struct ieee80211_rx_status {
368 u64 mactime; 354 u64 mactime;
369 enum ieee80211_band band; 355 enum ieee80211_band band;
370 int freq; 356 int freq;
371 int ssi;
372 int signal; 357 int signal;
373 int noise; 358 int noise;
359 int qual;
374 int antenna; 360 int antenna;
375 int rate_idx; 361 int rate_idx;
376 int flag; 362 int flag;
@@ -409,9 +395,8 @@ enum ieee80211_tx_status_flags {
409 * relevant only if IEEE80211_TX_STATUS_AMPDU was set. 395 * relevant only if IEEE80211_TX_STATUS_AMPDU was set.
410 * @ampdu_ack_map: block ack bit map for the aggregation. 396 * @ampdu_ack_map: block ack bit map for the aggregation.
411 * relevant only if IEEE80211_TX_STATUS_AMPDU was set. 397 * relevant only if IEEE80211_TX_STATUS_AMPDU was set.
412 * @ack_signal: signal strength of the ACK frame 398 * @ack_signal: signal strength of the ACK frame either in dBm, dB or unspec
413 * @queue_length: ?? REMOVE 399 * depending on hardware capabilites flags @IEEE80211_HW_SIGNAL_*
414 * @queue_number: ?? REMOVE
415 */ 400 */
416struct ieee80211_tx_status { 401struct ieee80211_tx_status {
417 struct ieee80211_tx_control control; 402 struct ieee80211_tx_control control;
@@ -421,8 +406,6 @@ struct ieee80211_tx_status {
421 u8 ampdu_ack_len; 406 u8 ampdu_ack_len;
422 u64 ampdu_ack_map; 407 u64 ampdu_ack_map;
423 int ack_signal; 408 int ack_signal;
424 int queue_length;
425 int queue_number;
426}; 409};
427 410
428/** 411/**
@@ -610,11 +593,14 @@ enum ieee80211_key_alg {
610 * @IEEE80211_KEY_FLAG_GENERATE_MMIC: This flag should be set by 593 * @IEEE80211_KEY_FLAG_GENERATE_MMIC: This flag should be set by
611 * the driver for a TKIP key if it requires Michael MIC 594 * the driver for a TKIP key if it requires Michael MIC
612 * generation in software. 595 * generation in software.
596 * @IEEE80211_KEY_FLAG_PAIRWISE: Set by mac80211, this flag indicates
597 * that the key is pairwise rather then a shared key.
613 */ 598 */
614enum ieee80211_key_flags { 599enum ieee80211_key_flags {
615 IEEE80211_KEY_FLAG_WMM_STA = 1<<0, 600 IEEE80211_KEY_FLAG_WMM_STA = 1<<0,
616 IEEE80211_KEY_FLAG_GENERATE_IV = 1<<1, 601 IEEE80211_KEY_FLAG_GENERATE_IV = 1<<1,
617 IEEE80211_KEY_FLAG_GENERATE_MMIC= 1<<2, 602 IEEE80211_KEY_FLAG_GENERATE_MMIC= 1<<2,
603 IEEE80211_KEY_FLAG_PAIRWISE = 1<<3,
618}; 604};
619 605
620/** 606/**
@@ -721,6 +707,25 @@ enum ieee80211_tkip_key_type {
721 * @IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE: 707 * @IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE:
722 * Hardware is not capable of receiving frames with short preamble on 708 * Hardware is not capable of receiving frames with short preamble on
723 * the 2.4 GHz band. 709 * the 2.4 GHz band.
710 *
711 * @IEEE80211_HW_SIGNAL_UNSPEC:
712 * Hardware can provide signal values but we don't know its units. We
713 * expect values between 0 and @max_signal.
714 * If possible please provide dB or dBm instead.
715 *
716 * @IEEE80211_HW_SIGNAL_DB:
717 * Hardware gives signal values in dB, decibel difference from an
718 * arbitrary, fixed reference. We expect values between 0 and @max_signal.
719 * If possible please provide dBm instead.
720 *
721 * @IEEE80211_HW_SIGNAL_DBM:
722 * Hardware gives signal values in dBm, decibel difference from
723 * one milliwatt. This is the preferred method since it is standardized
724 * between different devices. @max_signal does not need to be set.
725 *
726 * @IEEE80211_HW_NOISE_DBM:
727 * Hardware can provide noise (radio interference) values in units dBm,
728 * decibel difference from one milliwatt.
724 */ 729 */
725enum ieee80211_hw_flags { 730enum ieee80211_hw_flags {
726 IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE = 1<<0, 731 IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE = 1<<0,
@@ -728,6 +733,10 @@ enum ieee80211_hw_flags {
728 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING = 1<<2, 733 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING = 1<<2,
729 IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE = 1<<3, 734 IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE = 1<<3,
730 IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE = 1<<4, 735 IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE = 1<<4,
736 IEEE80211_HW_SIGNAL_UNSPEC = 1<<5,
737 IEEE80211_HW_SIGNAL_DB = 1<<6,
738 IEEE80211_HW_SIGNAL_DBM = 1<<7,
739 IEEE80211_HW_NOISE_DBM = 1<<8,
731}; 740};
732 741
733/** 742/**
@@ -758,15 +767,18 @@ enum ieee80211_hw_flags {
758 * 767 *
759 * @channel_change_time: time (in microseconds) it takes to change channels. 768 * @channel_change_time: time (in microseconds) it takes to change channels.
760 * 769 *
761 * @max_rssi: Maximum value for ssi in RX information, use 770 * @max_signal: Maximum value for signal (rssi) in RX information, used
762 * negative numbers for dBm and 0 to indicate no support. 771 * 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 * 772 *
768 * @queues: number of available hardware transmit queues for 773 * @queues: number of available hardware transmit queues for
769 * data packets. WMM/QoS requires at least four. 774 * data packets. WMM/QoS requires at least four, these
775 * queues need to have configurable access parameters.
776 *
777 * @ampdu_queues: number of available hardware transmit queues
778 * for A-MPDU packets, these have no access parameters
779 * because they're used only for A-MPDU frames. Note that
780 * mac80211 will not currently use any of the regular queues
781 * for aggregation.
770 * 782 *
771 * @rate_control_algorithm: rate control algorithm for this hardware. 783 * @rate_control_algorithm: rate control algorithm for this hardware.
772 * If unset (NULL), the default algorithm will be used. Must be 784 * If unset (NULL), the default algorithm will be used. Must be
@@ -785,10 +797,8 @@ struct ieee80211_hw {
785 unsigned int extra_tx_headroom; 797 unsigned int extra_tx_headroom;
786 int channel_change_time; 798 int channel_change_time;
787 int vif_data_size; 799 int vif_data_size;
788 u8 queues; 800 u16 queues, ampdu_queues;
789 s8 max_rssi;
790 s8 max_signal; 801 s8 max_signal;
791 s8 max_noise;
792}; 802};
793 803
794/** 804/**
@@ -1063,15 +1073,13 @@ enum ieee80211_ampdu_mlme_action {
1063 * of assocaited station or AP. 1073 * of assocaited station or AP.
1064 * 1074 *
1065 * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max), 1075 * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max),
1066 * bursting) for a hardware TX queue. The @queue parameter uses the 1076 * bursting) for a hardware TX queue. Must be atomic.
1067 * %IEEE80211_TX_QUEUE_* constants. Must be atomic.
1068 * 1077 *
1069 * @get_tx_stats: Get statistics of the current TX queue status. This is used 1078 * @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 1079 * to get number of currently queued packets (queue length), maximum queue
1071 * size (limit), and total number of packets sent using each TX queue 1080 * 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 1081 * (count). The 'stats' pointer points to an array that has hw->queues +
1073 * queues have room for more packets and by hostapd to provide 1082 * hw->ampdu_queues items.
1074 * statistics about the current queueing state to external programs.
1075 * 1083 *
1076 * @get_tsf: Get the current TSF timer value from firmware/hardware. Currently, 1084 * @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 1085 * this is only used for IBSS mode debugging and, as such, is not a
@@ -1145,7 +1153,7 @@ struct ieee80211_ops {
1145 u32 short_retry, u32 long_retr); 1153 u32 short_retry, u32 long_retr);
1146 void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 1154 void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1147 enum sta_notify_cmd, const u8 *addr); 1155 enum sta_notify_cmd, const u8 *addr);
1148 int (*conf_tx)(struct ieee80211_hw *hw, int queue, 1156 int (*conf_tx)(struct ieee80211_hw *hw, u16 queue,
1149 const struct ieee80211_tx_queue_params *params); 1157 const struct ieee80211_tx_queue_params *params);
1150 int (*get_tx_stats)(struct ieee80211_hw *hw, 1158 int (*get_tx_stats)(struct ieee80211_hw *hw,
1151 struct ieee80211_tx_queue_stats *stats); 1159 struct ieee80211_tx_queue_stats *stats);
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/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 0ce0443c5b79..e11151702bee 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;
@@ -938,6 +939,7 @@ struct sctp_transport {
938 939
939 /* SACK delay timeout */ 940 /* SACK delay timeout */
940 unsigned long sackdelay; 941 unsigned long sackdelay;
942 __u32 sackfreq;
941 943
942 /* When was the last time (in jiffies) that we heard from this 944 /* When was the last time (in jiffies) that we heard from this
943 * transport? We use this to pick new active and retran paths. 945 * transport? We use this to pick new active and retran paths.
@@ -1542,6 +1544,7 @@ struct sctp_association {
1542 * : SACK's are not delayed (see Section 6). 1544 * : SACK's are not delayed (see Section 6).
1543 */ 1545 */
1544 __u8 sack_needed; /* Do we need to sack the peer? */ 1546 __u8 sack_needed; /* Do we need to sack the peer? */
1547 __u32 sack_cnt;
1545 1548
1546 /* These are capabilities which our peer advertised. */ 1549 /* These are capabilities which our peer advertised. */
1547 __u8 ecn_capable; /* Can peer do ECN? */ 1550 __u8 ecn_capable; /* Can peer do ECN? */
@@ -1651,6 +1654,7 @@ struct sctp_association {
1651 1654
1652 /* SACK delay timeout */ 1655 /* SACK delay timeout */
1653 unsigned long sackdelay; 1656 unsigned long sackdelay;
1657 __u32 sackfreq;
1654 1658
1655 1659
1656 unsigned long timeouts[SCTP_NUM_TIMEOUT_TYPES]; 1660 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/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