diff options
-rw-r--r-- | Documentation/networking/ip-sysctl.txt | 256 | ||||
-rw-r--r-- | drivers/net/arm/ixp4xx_eth.c | 3 | ||||
-rw-r--r-- | drivers/net/tun.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/scan.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2400pci.c | 11 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500pci.c | 11 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 9 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.c | 9 | ||||
-rw-r--r-- | drivers/net/wireless/zd1211rw/zd_mac.c | 1 | ||||
-rw-r--r-- | include/linux/xfrm.h | 1 | ||||
-rw-r--r-- | net/ipv4/fib_trie.c | 17 | ||||
-rw-r--r-- | net/ipv4/netfilter/nf_nat_snmp_basic.c | 2 | ||||
-rw-r--r-- | net/ipv4/tcp_probe.c | 2 | ||||
-rw-r--r-- | net/ipv6/exthdrs.c | 2 | ||||
-rw-r--r-- | net/mac80211/rc80211_pid.h | 5 | ||||
-rw-r--r-- | net/mac80211/rc80211_pid_algo.c | 31 | ||||
-rw-r--r-- | net/netfilter/nf_conntrack_proto_tcp.c | 10 | ||||
-rw-r--r-- | net/netlabel/netlabel_cipso_v4.c | 7 | ||||
-rw-r--r-- | net/netlabel/netlabel_mgmt.c | 12 | ||||
-rw-r--r-- | net/netlabel/netlabel_unlabeled.c | 6 | ||||
-rw-r--r-- | net/xfrm/xfrm_user.c | 3 |
22 files changed, 307 insertions, 108 deletions
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index a40feaee62ec..d84932650fd3 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -148,9 +148,9 @@ tcp_available_congestion_control - STRING | |||
148 | but not loaded. | 148 | but not loaded. |
149 | 149 | ||
150 | tcp_base_mss - INTEGER | 150 | tcp_base_mss - INTEGER |
151 | The initial value of search_low to be used by Packetization Layer | 151 | The initial value of search_low to be used by the packetization layer |
152 | Path MTU Discovery (MTU probing). If MTU probing is enabled, | 152 | Path MTU discovery (MTU probing). If MTU probing is enabled, |
153 | this is the inital MSS used by the connection. | 153 | this is the initial MSS used by the connection. |
154 | 154 | ||
155 | tcp_congestion_control - STRING | 155 | tcp_congestion_control - STRING |
156 | Set the congestion control algorithm to be used for new | 156 | Set the congestion control algorithm to be used for new |
@@ -185,10 +185,9 @@ tcp_frto - INTEGER | |||
185 | timeouts. It is particularly beneficial in wireless environments | 185 | timeouts. It is particularly beneficial in wireless environments |
186 | where packet loss is typically due to random radio interference | 186 | where packet loss is typically due to random radio interference |
187 | rather than intermediate router congestion. F-RTO is sender-side | 187 | rather than intermediate router congestion. F-RTO is sender-side |
188 | only modification. Therefore it does not require any support from | 188 | only modification. Therefore it does not require any support from |
189 | the peer, but in a typical case, however, where wireless link is | 189 | the peer. |
190 | the local access link and most of the data flows downlink, the | 190 | |
191 | faraway servers should have F-RTO enabled to take advantage of it. | ||
192 | If set to 1, basic version is enabled. 2 enables SACK enhanced | 191 | If set to 1, basic version is enabled. 2 enables SACK enhanced |
193 | F-RTO if flow uses SACK. The basic version can be used also when | 192 | F-RTO if flow uses SACK. The basic version can be used also when |
194 | SACK is in use though scenario(s) with it exists where F-RTO | 193 | SACK is in use though scenario(s) with it exists where F-RTO |
@@ -276,7 +275,7 @@ tcp_mem - vector of 3 INTEGERs: min, pressure, max | |||
276 | memory. | 275 | memory. |
277 | 276 | ||
278 | tcp_moderate_rcvbuf - BOOLEAN | 277 | tcp_moderate_rcvbuf - BOOLEAN |
279 | If set, TCP performs receive buffer autotuning, attempting to | 278 | If set, TCP performs receive buffer auto-tuning, attempting to |
280 | automatically size the buffer (no greater than tcp_rmem[2]) to | 279 | automatically size the buffer (no greater than tcp_rmem[2]) to |
281 | match the size required by the path for full throughput. Enabled by | 280 | match the size required by the path for full throughput. Enabled by |
282 | default. | 281 | default. |
@@ -336,7 +335,7 @@ tcp_rmem - vector of 3 INTEGERs: min, default, max | |||
336 | pressure. | 335 | pressure. |
337 | Default: 8K | 336 | Default: 8K |
338 | 337 | ||
339 | default: default size of receive buffer used by TCP sockets. | 338 | default: initial size of receive buffer used by TCP sockets. |
340 | This value overrides net.core.rmem_default used by other protocols. | 339 | This value overrides net.core.rmem_default used by other protocols. |
341 | Default: 87380 bytes. This value results in window of 65535 with | 340 | Default: 87380 bytes. This value results in window of 65535 with |
342 | default setting of tcp_adv_win_scale and tcp_app_win:0 and a bit | 341 | default setting of tcp_adv_win_scale and tcp_app_win:0 and a bit |
@@ -344,8 +343,10 @@ tcp_rmem - vector of 3 INTEGERs: min, default, max | |||
344 | 343 | ||
345 | max: maximal size of receive buffer allowed for automatically | 344 | max: maximal size of receive buffer allowed for automatically |
346 | selected receiver buffers for TCP socket. This value does not override | 345 | selected receiver buffers for TCP socket. This value does not override |
347 | net.core.rmem_max, "static" selection via SO_RCVBUF does not use this. | 346 | net.core.rmem_max. Calling setsockopt() with SO_RCVBUF disables |
348 | Default: 87380*2 bytes. | 347 | automatic tuning of that socket's receive buffer size, in which |
348 | case this value is ignored. | ||
349 | Default: between 87380B and 4MB, depending on RAM size. | ||
349 | 350 | ||
350 | tcp_sack - BOOLEAN | 351 | tcp_sack - BOOLEAN |
351 | Enable select acknowledgments (SACKS). | 352 | Enable select acknowledgments (SACKS). |
@@ -358,7 +359,7 @@ tcp_slow_start_after_idle - BOOLEAN | |||
358 | Default: 1 | 359 | Default: 1 |
359 | 360 | ||
360 | tcp_stdurg - BOOLEAN | 361 | tcp_stdurg - BOOLEAN |
361 | Use the Host requirements interpretation of the TCP urg pointer field. | 362 | Use the Host requirements interpretation of the TCP urgent pointer field. |
362 | Most hosts use the older BSD interpretation, so if you turn this on | 363 | Most hosts use the older BSD interpretation, so if you turn this on |
363 | Linux might not communicate correctly with them. | 364 | Linux might not communicate correctly with them. |
364 | Default: FALSE | 365 | Default: FALSE |
@@ -371,12 +372,12 @@ tcp_synack_retries - INTEGER | |||
371 | tcp_syncookies - BOOLEAN | 372 | tcp_syncookies - BOOLEAN |
372 | Only valid when the kernel was compiled with CONFIG_SYNCOOKIES | 373 | Only valid when the kernel was compiled with CONFIG_SYNCOOKIES |
373 | Send out syncookies when the syn backlog queue of a socket | 374 | Send out syncookies when the syn backlog queue of a socket |
374 | overflows. This is to prevent against the common 'syn flood attack' | 375 | overflows. This is to prevent against the common 'SYN flood attack' |
375 | Default: FALSE | 376 | Default: FALSE |
376 | 377 | ||
377 | Note, that syncookies is fallback facility. | 378 | Note, that syncookies is fallback facility. |
378 | It MUST NOT be used to help highly loaded servers to stand | 379 | It MUST NOT be used to help highly loaded servers to stand |
379 | against legal connection rate. If you see synflood warnings | 380 | against legal connection rate. If you see SYN flood warnings |
380 | in your logs, but investigation shows that they occur | 381 | in your logs, but investigation shows that they occur |
381 | because of overload with legal connections, you should tune | 382 | because of overload with legal connections, you should tune |
382 | another parameters until this warning disappear. | 383 | another parameters until this warning disappear. |
@@ -386,7 +387,7 @@ tcp_syncookies - BOOLEAN | |||
386 | to use TCP extensions, can result in serious degradation | 387 | to use TCP extensions, can result in serious degradation |
387 | of some services (f.e. SMTP relaying), visible not by you, | 388 | of some services (f.e. SMTP relaying), visible not by you, |
388 | but your clients and relays, contacting you. While you see | 389 | but your clients and relays, contacting you. While you see |
389 | synflood warnings in logs not being really flooded, your server | 390 | SYN flood warnings in logs not being really flooded, your server |
390 | is seriously misconfigured. | 391 | is seriously misconfigured. |
391 | 392 | ||
392 | tcp_syn_retries - INTEGER | 393 | tcp_syn_retries - INTEGER |
@@ -419,19 +420,21 @@ tcp_window_scaling - BOOLEAN | |||
419 | Enable window scaling as defined in RFC1323. | 420 | Enable window scaling as defined in RFC1323. |
420 | 421 | ||
421 | tcp_wmem - vector of 3 INTEGERs: min, default, max | 422 | tcp_wmem - vector of 3 INTEGERs: min, default, max |
422 | min: Amount of memory reserved for send buffers for TCP socket. | 423 | min: Amount of memory reserved for send buffers for TCP sockets. |
423 | Each TCP socket has rights to use it due to fact of its birth. | 424 | Each TCP socket has rights to use it due to fact of its birth. |
424 | Default: 4K | 425 | Default: 4K |
425 | 426 | ||
426 | default: Amount of memory allowed for send buffers for TCP socket | 427 | default: initial size of send buffer used by TCP sockets. This |
427 | by default. This value overrides net.core.wmem_default used | 428 | value overrides net.core.wmem_default used by other protocols. |
428 | by other protocols, it is usually lower than net.core.wmem_default. | 429 | It is usually lower than net.core.wmem_default. |
429 | Default: 16K | 430 | Default: 16K |
430 | 431 | ||
431 | max: Maximal amount of memory allowed for automatically selected | 432 | max: Maximal amount of memory allowed for automatically tuned |
432 | send buffers for TCP socket. This value does not override | 433 | send buffers for TCP sockets. This value does not override |
433 | net.core.wmem_max, "static" selection via SO_SNDBUF does not use this. | 434 | net.core.wmem_max. Calling setsockopt() with SO_SNDBUF disables |
434 | Default: 128K | 435 | automatic tuning of that socket's send buffer size, in which case |
436 | this value is ignored. | ||
437 | Default: between 64K and 4MB, depending on RAM size. | ||
435 | 438 | ||
436 | tcp_workaround_signed_windows - BOOLEAN | 439 | tcp_workaround_signed_windows - BOOLEAN |
437 | If set, assume no receipt of a window scaling option means the | 440 | If set, assume no receipt of a window scaling option means the |
@@ -1073,24 +1076,193 @@ bridge-nf-filter-pppoe-tagged - BOOLEAN | |||
1073 | Default: 1 | 1076 | Default: 1 |
1074 | 1077 | ||
1075 | 1078 | ||
1076 | UNDOCUMENTED: | 1079 | proc/sys/net/sctp/* Variables: |
1080 | |||
1081 | addip_enable - BOOLEAN | ||
1082 | Enable or disable extension of Dynamic Address Reconfiguration | ||
1083 | (ADD-IP) functionality specified in RFC5061. This extension provides | ||
1084 | the ability to dynamically add and remove new addresses for the SCTP | ||
1085 | associations. | ||
1086 | |||
1087 | 1: Enable extension. | ||
1088 | |||
1089 | 0: Disable extension. | ||
1090 | |||
1091 | Default: 0 | ||
1092 | |||
1093 | addip_noauth_enable - BOOLEAN | ||
1094 | Dynamic Address Reconfiguration (ADD-IP) requires the use of | ||
1095 | authentication to protect the operations of adding or removing new | ||
1096 | addresses. This requirement is mandated so that unauthorized hosts | ||
1097 | would not be able to hijack associations. However, older | ||
1098 | implementations may not have implemented this requirement while | ||
1099 | allowing the ADD-IP extension. For reasons of interoperability, | ||
1100 | we provide this variable to control the enforcement of the | ||
1101 | authentication requirement. | ||
1102 | |||
1103 | 1: Allow ADD-IP extension to be used without authentication. This | ||
1104 | should only be set in a closed environment for interoperability | ||
1105 | with older implementations. | ||
1106 | |||
1107 | 0: Enforce the authentication requirement | ||
1108 | |||
1109 | Default: 0 | ||
1110 | |||
1111 | auth_enable - BOOLEAN | ||
1112 | Enable or disable Authenticated Chunks extension. This extension | ||
1113 | provides the ability to send and receive authenticated chunks and is | ||
1114 | required for secure operation of Dynamic Address Reconfiguration | ||
1115 | (ADD-IP) extension. | ||
1116 | |||
1117 | 1: Enable this extension. | ||
1118 | 0: Disable this extension. | ||
1119 | |||
1120 | Default: 0 | ||
1121 | |||
1122 | prsctp_enable - BOOLEAN | ||
1123 | Enable or disable the Partial Reliability extension (RFC3758) which | ||
1124 | is used to notify peers that a given DATA should no longer be expected. | ||
1125 | |||
1126 | 1: Enable extension | ||
1127 | 0: Disable | ||
1128 | |||
1129 | Default: 1 | ||
1130 | |||
1131 | max_burst - INTEGER | ||
1132 | The limit of the number of new packets that can be initially sent. It | ||
1133 | controls how bursty the generated traffic can be. | ||
1134 | |||
1135 | Default: 4 | ||
1136 | |||
1137 | association_max_retrans - INTEGER | ||
1138 | Set the maximum number for retransmissions that an association can | ||
1139 | attempt deciding that the remote end is unreachable. If this value | ||
1140 | is exceeded, the association is terminated. | ||
1141 | |||
1142 | Default: 10 | ||
1143 | |||
1144 | max_init_retransmits - INTEGER | ||
1145 | The maximum number of retransmissions of INIT and COOKIE-ECHO chunks | ||
1146 | that an association will attempt before declaring the destination | ||
1147 | unreachable and terminating. | ||
1148 | |||
1149 | Default: 8 | ||
1150 | |||
1151 | path_max_retrans - INTEGER | ||
1152 | The maximum number of retransmissions that will be attempted on a given | ||
1153 | path. Once this threshold is exceeded, the path is considered | ||
1154 | unreachable, and new traffic will use a different path when the | ||
1155 | association is multihomed. | ||
1156 | |||
1157 | Default: 5 | ||
1158 | |||
1159 | rto_initial - INTEGER | ||
1160 | The initial round trip timeout value in milliseconds that will be used | ||
1161 | in calculating round trip times. This is the initial time interval | ||
1162 | for retransmissions. | ||
1163 | |||
1164 | Default: 3000 | ||
1077 | 1165 | ||
1078 | dev_weight FIXME | 1166 | rto_max - INTEGER |
1079 | discovery_slots FIXME | 1167 | The maximum value (in milliseconds) of the round trip timeout. This |
1080 | discovery_timeout FIXME | 1168 | is the largest time interval that can elapse between retransmissions. |
1081 | fast_poll_increase FIXME | 1169 | |
1082 | ip6_queue_maxlen FIXME | 1170 | Default: 60000 |
1083 | lap_keepalive_time FIXME | 1171 | |
1084 | lo_cong FIXME | 1172 | rto_min - INTEGER |
1085 | max_baud_rate FIXME | 1173 | The minimum value (in milliseconds) of the round trip timeout. This |
1086 | max_dgram_qlen FIXME | 1174 | is the smallest time interval the can elapse between retransmissions. |
1087 | max_noreply_time FIXME | 1175 | |
1088 | max_tx_data_size FIXME | 1176 | Default: 1000 |
1089 | max_tx_window FIXME | 1177 | |
1090 | min_tx_turn_time FIXME | 1178 | hb_interval - INTEGER |
1091 | mod_cong FIXME | 1179 | The interval (in milliseconds) between HEARTBEAT chunks. These chunks |
1092 | no_cong FIXME | 1180 | are sent at the specified interval on idle paths to probe the state of |
1093 | no_cong_thresh FIXME | 1181 | a given path between 2 associations. |
1094 | slot_timeout FIXME | 1182 | |
1095 | warn_noreply_time FIXME | 1183 | Default: 30000 |
1184 | |||
1185 | sack_timeout - INTEGER | ||
1186 | The amount of time (in milliseconds) that the implementation will wait | ||
1187 | to send a SACK. | ||
1188 | |||
1189 | Default: 200 | ||
1190 | |||
1191 | valid_cookie_life - INTEGER | ||
1192 | The default lifetime of the SCTP cookie (in milliseconds). The cookie | ||
1193 | is used during association establishment. | ||
1194 | |||
1195 | Default: 60000 | ||
1196 | |||
1197 | cookie_preserve_enable - BOOLEAN | ||
1198 | Enable or disable the ability to extend the lifetime of the SCTP cookie | ||
1199 | that is used during the establishment phase of SCTP association | ||
1200 | |||
1201 | 1: Enable cookie lifetime extension. | ||
1202 | 0: Disable | ||
1203 | |||
1204 | Default: 1 | ||
1205 | |||
1206 | rcvbuf_policy - INTEGER | ||
1207 | Determines if the receive buffer is attributed to the socket or to | ||
1208 | association. SCTP supports the capability to create multiple | ||
1209 | associations on a single socket. When using this capability, it is | ||
1210 | possible that a single stalled association that's buffering a lot | ||
1211 | of data may block other associations from delivering their data by | ||
1212 | consuming all of the receive buffer space. To work around this, | ||
1213 | the rcvbuf_policy could be set to attribute the receiver buffer space | ||
1214 | to each association instead of the socket. This prevents the described | ||
1215 | blocking. | ||
1216 | |||
1217 | 1: rcvbuf space is per association | ||
1218 | 0: recbuf space is per socket | ||
1219 | |||
1220 | Default: 0 | ||
1221 | |||
1222 | sndbuf_policy - INTEGER | ||
1223 | Similar to rcvbuf_policy above, this applies to send buffer space. | ||
1224 | |||
1225 | 1: Send buffer is tracked per association | ||
1226 | 0: Send buffer is tracked per socket. | ||
1227 | |||
1228 | Default: 0 | ||
1229 | |||
1230 | sctp_mem - vector of 3 INTEGERs: min, pressure, max | ||
1231 | Number of pages allowed for queueing by all SCTP sockets. | ||
1232 | |||
1233 | min: Below this number of pages SCTP is not bothered about its | ||
1234 | memory appetite. When amount of memory allocated by SCTP exceeds | ||
1235 | this number, SCTP starts to moderate memory usage. | ||
1236 | |||
1237 | pressure: This value was introduced to follow format of tcp_mem. | ||
1238 | |||
1239 | max: Number of pages allowed for queueing by all SCTP sockets. | ||
1240 | |||
1241 | Default is calculated at boot time from amount of available memory. | ||
1242 | |||
1243 | sctp_rmem - vector of 3 INTEGERs: min, default, max | ||
1244 | See tcp_rmem for a description. | ||
1245 | |||
1246 | sctp_wmem - vector of 3 INTEGERs: min, default, max | ||
1247 | See tcp_wmem for a description. | ||
1248 | |||
1249 | UNDOCUMENTED: | ||
1096 | 1250 | ||
1251 | /proc/sys/net/core/* | ||
1252 | dev_weight FIXME | ||
1253 | |||
1254 | /proc/sys/net/unix/* | ||
1255 | max_dgram_qlen FIXME | ||
1256 | |||
1257 | /proc/sys/net/irda/* | ||
1258 | fast_poll_increase FIXME | ||
1259 | warn_noreply_time FIXME | ||
1260 | discovery_slots FIXME | ||
1261 | slot_timeout FIXME | ||
1262 | max_baud_rate FIXME | ||
1263 | discovery_timeout FIXME | ||
1264 | lap_keepalive_time FIXME | ||
1265 | max_noreply_time FIXME | ||
1266 | max_tx_data_size FIXME | ||
1267 | max_tx_window FIXME | ||
1268 | min_tx_turn_time FIXME | ||
diff --git a/drivers/net/arm/ixp4xx_eth.c b/drivers/net/arm/ixp4xx_eth.c index c617b64c288e..9b777d9433cd 100644 --- a/drivers/net/arm/ixp4xx_eth.c +++ b/drivers/net/arm/ixp4xx_eth.c | |||
@@ -522,7 +522,6 @@ static int eth_poll(struct napi_struct *napi, int budget) | |||
522 | #endif | 522 | #endif |
523 | 523 | ||
524 | if ((n = queue_get_desc(rxq, port, 0)) < 0) { | 524 | if ((n = queue_get_desc(rxq, port, 0)) < 0) { |
525 | received = 0; /* No packet received */ | ||
526 | #if DEBUG_RX | 525 | #if DEBUG_RX |
527 | printk(KERN_DEBUG "%s: eth_poll netif_rx_complete\n", | 526 | printk(KERN_DEBUG "%s: eth_poll netif_rx_complete\n", |
528 | dev->name); | 527 | dev->name); |
@@ -543,7 +542,7 @@ static int eth_poll(struct napi_struct *napi, int budget) | |||
543 | printk(KERN_DEBUG "%s: eth_poll all done\n", | 542 | printk(KERN_DEBUG "%s: eth_poll all done\n", |
544 | dev->name); | 543 | dev->name); |
545 | #endif | 544 | #endif |
546 | return 0; /* all work done */ | 545 | return received; /* all work done */ |
547 | } | 546 | } |
548 | 547 | ||
549 | desc = rx_desc_ptr(port, n); | 548 | desc = rx_desc_ptr(port, n); |
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index aa4ee4439f04..2693f883ecda 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c | |||
@@ -690,6 +690,12 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr) | |||
690 | tun->attached = 1; | 690 | tun->attached = 1; |
691 | get_net(dev_net(tun->dev)); | 691 | get_net(dev_net(tun->dev)); |
692 | 692 | ||
693 | /* Make sure persistent devices do not get stuck in | ||
694 | * xoff state. | ||
695 | */ | ||
696 | if (netif_running(tun->dev)) | ||
697 | netif_wake_queue(tun->dev); | ||
698 | |||
693 | strcpy(ifr->ifr_name, tun->dev->name); | 699 | strcpy(ifr->ifr_name, tun->dev->name); |
694 | return 0; | 700 | return 0; |
695 | 701 | ||
diff --git a/drivers/net/wireless/libertas/scan.c b/drivers/net/wireless/libertas/scan.c index 343ed38f772d..4b274562f965 100644 --- a/drivers/net/wireless/libertas/scan.c +++ b/drivers/net/wireless/libertas/scan.c | |||
@@ -567,11 +567,11 @@ static int lbs_process_bss(struct bss_descriptor *bss, | |||
567 | pos += 8; | 567 | pos += 8; |
568 | 568 | ||
569 | /* beacon interval is 2 bytes long */ | 569 | /* beacon interval is 2 bytes long */ |
570 | bss->beaconperiod = le16_to_cpup((void *) pos); | 570 | bss->beaconperiod = get_unaligned_le16(pos); |
571 | pos += 2; | 571 | pos += 2; |
572 | 572 | ||
573 | /* capability information is 2 bytes long */ | 573 | /* capability information is 2 bytes long */ |
574 | bss->capability = le16_to_cpup((void *) pos); | 574 | bss->capability = get_unaligned_le16(pos); |
575 | lbs_deb_scan("process_bss: capabilities 0x%04x\n", bss->capability); | 575 | lbs_deb_scan("process_bss: capabilities 0x%04x\n", bss->capability); |
576 | pos += 2; | 576 | pos += 2; |
577 | 577 | ||
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c index ee953ca0c6a3..91cbd9e560bd 100644 --- a/drivers/net/wireless/rt2x00/rt2400pci.c +++ b/drivers/net/wireless/rt2x00/rt2400pci.c | |||
@@ -733,6 +733,17 @@ static int rt2400pci_init_registers(struct rt2x00_dev *rt2x00dev) | |||
733 | (rt2x00dev->rx->data_size / 128)); | 733 | (rt2x00dev->rx->data_size / 128)); |
734 | rt2x00pci_register_write(rt2x00dev, CSR9, reg); | 734 | rt2x00pci_register_write(rt2x00dev, CSR9, reg); |
735 | 735 | ||
736 | rt2x00pci_register_read(rt2x00dev, CSR14, ®); | ||
737 | rt2x00_set_field32(®, CSR14_TSF_COUNT, 0); | ||
738 | rt2x00_set_field32(®, CSR14_TSF_SYNC, 0); | ||
739 | rt2x00_set_field32(®, CSR14_TBCN, 0); | ||
740 | rt2x00_set_field32(®, CSR14_TCFP, 0); | ||
741 | rt2x00_set_field32(®, CSR14_TATIMW, 0); | ||
742 | rt2x00_set_field32(®, CSR14_BEACON_GEN, 0); | ||
743 | rt2x00_set_field32(®, CSR14_CFP_COUNT_PRELOAD, 0); | ||
744 | rt2x00_set_field32(®, CSR14_TBCM_PRELOAD, 0); | ||
745 | rt2x00pci_register_write(rt2x00dev, CSR14, reg); | ||
746 | |||
736 | rt2x00pci_register_write(rt2x00dev, CNT3, 0x3f080000); | 747 | rt2x00pci_register_write(rt2x00dev, CNT3, 0x3f080000); |
737 | 748 | ||
738 | rt2x00pci_register_read(rt2x00dev, ARCSR0, ®); | 749 | rt2x00pci_register_read(rt2x00dev, ARCSR0, ®); |
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c index 0423c251c78e..0f2a0e22fd71 100644 --- a/drivers/net/wireless/rt2x00/rt2500pci.c +++ b/drivers/net/wireless/rt2x00/rt2500pci.c | |||
@@ -831,6 +831,17 @@ static int rt2500pci_init_registers(struct rt2x00_dev *rt2x00dev) | |||
831 | rt2x00_set_field32(®, CSR11_CW_SELECT, 0); | 831 | rt2x00_set_field32(®, CSR11_CW_SELECT, 0); |
832 | rt2x00pci_register_write(rt2x00dev, CSR11, reg); | 832 | rt2x00pci_register_write(rt2x00dev, CSR11, reg); |
833 | 833 | ||
834 | rt2x00pci_register_read(rt2x00dev, CSR14, ®); | ||
835 | rt2x00_set_field32(®, CSR14_TSF_COUNT, 0); | ||
836 | rt2x00_set_field32(®, CSR14_TSF_SYNC, 0); | ||
837 | rt2x00_set_field32(®, CSR14_TBCN, 0); | ||
838 | rt2x00_set_field32(®, CSR14_TCFP, 0); | ||
839 | rt2x00_set_field32(®, CSR14_TATIMW, 0); | ||
840 | rt2x00_set_field32(®, CSR14_BEACON_GEN, 0); | ||
841 | rt2x00_set_field32(®, CSR14_CFP_COUNT_PRELOAD, 0); | ||
842 | rt2x00_set_field32(®, CSR14_TBCM_PRELOAD, 0); | ||
843 | rt2x00pci_register_write(rt2x00dev, CSR14, reg); | ||
844 | |||
834 | rt2x00pci_register_write(rt2x00dev, CNT3, 0); | 845 | rt2x00pci_register_write(rt2x00dev, CNT3, 0); |
835 | 846 | ||
836 | rt2x00pci_register_read(rt2x00dev, TXCSR8, ®); | 847 | rt2x00pci_register_read(rt2x00dev, TXCSR8, ®); |
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index 0dd1cb537b92..367db10b96d9 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -812,6 +812,13 @@ static int rt2500usb_init_registers(struct rt2x00_dev *rt2x00dev) | |||
812 | rt2x00_set_field16(®, TXRX_CSR8_BBP_ID1_VALID, 0); | 812 | rt2x00_set_field16(®, TXRX_CSR8_BBP_ID1_VALID, 0); |
813 | rt2500usb_register_write(rt2x00dev, TXRX_CSR8, reg); | 813 | rt2500usb_register_write(rt2x00dev, TXRX_CSR8, reg); |
814 | 814 | ||
815 | rt2500usb_register_read(rt2x00dev, TXRX_CSR19, ®); | ||
816 | rt2x00_set_field16(®, TXRX_CSR19_TSF_COUNT, 0); | ||
817 | rt2x00_set_field16(®, TXRX_CSR19_TSF_SYNC, 0); | ||
818 | rt2x00_set_field16(®, TXRX_CSR19_TBCN, 0); | ||
819 | rt2x00_set_field16(®, TXRX_CSR19_BEACON_GEN, 0); | ||
820 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); | ||
821 | |||
815 | rt2500usb_register_write(rt2x00dev, TXRX_CSR21, 0xe78f); | 822 | rt2500usb_register_write(rt2x00dev, TXRX_CSR21, 0xe78f); |
816 | rt2500usb_register_write(rt2x00dev, MAC_CSR9, 0xff1d); | 823 | rt2500usb_register_write(rt2x00dev, MAC_CSR9, 0xff1d); |
817 | 824 | ||
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index bbf1048f6400..5a1330c5de71 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
@@ -1198,6 +1198,15 @@ static int rt61pci_init_registers(struct rt2x00_dev *rt2x00dev) | |||
1198 | rt2x00_set_field32(®, TXRX_CSR8_ACK_CTS_54MBS, 42); | 1198 | rt2x00_set_field32(®, TXRX_CSR8_ACK_CTS_54MBS, 42); |
1199 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR8, reg); | 1199 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR8, reg); |
1200 | 1200 | ||
1201 | rt2x00pci_register_read(rt2x00dev, TXRX_CSR9, ®); | ||
1202 | rt2x00_set_field32(®, TXRX_CSR9_BEACON_INTERVAL, 0); | ||
1203 | rt2x00_set_field32(®, TXRX_CSR9_TSF_TICKING, 0); | ||
1204 | rt2x00_set_field32(®, TXRX_CSR9_TSF_SYNC, 0); | ||
1205 | rt2x00_set_field32(®, TXRX_CSR9_TBTT_ENABLE, 0); | ||
1206 | rt2x00_set_field32(®, TXRX_CSR9_BEACON_GEN, 0); | ||
1207 | rt2x00_set_field32(®, TXRX_CSR9_TIMESTAMP_COMPENSATE, 0); | ||
1208 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR9, reg); | ||
1209 | |||
1201 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR15, 0x0000000f); | 1210 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR15, 0x0000000f); |
1202 | 1211 | ||
1203 | rt2x00pci_register_write(rt2x00dev, MAC_CSR6, 0x00000fff); | 1212 | rt2x00pci_register_write(rt2x00dev, MAC_CSR6, 0x00000fff); |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index 3ef318e098e7..25d8b660051f 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -1016,6 +1016,15 @@ static int rt73usb_init_registers(struct rt2x00_dev *rt2x00dev) | |||
1016 | rt2x00_set_field32(®, TXRX_CSR8_ACK_CTS_54MBS, 42); | 1016 | rt2x00_set_field32(®, TXRX_CSR8_ACK_CTS_54MBS, 42); |
1017 | rt73usb_register_write(rt2x00dev, TXRX_CSR8, reg); | 1017 | rt73usb_register_write(rt2x00dev, TXRX_CSR8, reg); |
1018 | 1018 | ||
1019 | rt73usb_register_read(rt2x00dev, TXRX_CSR9, ®); | ||
1020 | rt2x00_set_field32(®, TXRX_CSR9_BEACON_INTERVAL, 0); | ||
1021 | rt2x00_set_field32(®, TXRX_CSR9_TSF_TICKING, 0); | ||
1022 | rt2x00_set_field32(®, TXRX_CSR9_TSF_SYNC, 0); | ||
1023 | rt2x00_set_field32(®, TXRX_CSR9_TBTT_ENABLE, 0); | ||
1024 | rt2x00_set_field32(®, TXRX_CSR9_BEACON_GEN, 0); | ||
1025 | rt2x00_set_field32(®, TXRX_CSR9_TIMESTAMP_COMPENSATE, 0); | ||
1026 | rt73usb_register_write(rt2x00dev, TXRX_CSR9, reg); | ||
1027 | |||
1019 | rt73usb_register_write(rt2x00dev, TXRX_CSR15, 0x0000000f); | 1028 | rt73usb_register_write(rt2x00dev, TXRX_CSR15, 0x0000000f); |
1020 | 1029 | ||
1021 | rt73usb_register_read(rt2x00dev, MAC_CSR6, ®); | 1030 | rt73usb_register_read(rt2x00dev, MAC_CSR6, ®); |
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c index 665f76af2fec..feaf43d17249 100644 --- a/drivers/net/wireless/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/zd1211rw/zd_mac.c | |||
@@ -707,6 +707,7 @@ static void zd_op_remove_interface(struct ieee80211_hw *hw, | |||
707 | { | 707 | { |
708 | struct zd_mac *mac = zd_hw_mac(hw); | 708 | struct zd_mac *mac = zd_hw_mac(hw); |
709 | mac->type = IEEE80211_IF_TYPE_INVALID; | 709 | mac->type = IEEE80211_IF_TYPE_INVALID; |
710 | zd_set_beacon_interval(&mac->chip, 0); | ||
710 | zd_write_mac_addr(&mac->chip, NULL); | 711 | zd_write_mac_addr(&mac->chip, NULL); |
711 | } | 712 | } |
712 | 713 | ||
diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h index 2ca6bae88721..fb0c215a3051 100644 --- a/include/linux/xfrm.h +++ b/include/linux/xfrm.h | |||
@@ -339,6 +339,7 @@ struct xfrm_usersa_info { | |||
339 | #define XFRM_STATE_NOPMTUDISC 4 | 339 | #define XFRM_STATE_NOPMTUDISC 4 |
340 | #define XFRM_STATE_WILDRECV 8 | 340 | #define XFRM_STATE_WILDRECV 8 |
341 | #define XFRM_STATE_ICMP 16 | 341 | #define XFRM_STATE_ICMP 16 |
342 | #define XFRM_STATE_AF_UNSPEC 32 | ||
342 | }; | 343 | }; |
343 | 344 | ||
344 | struct xfrm_usersa_id { | 345 | struct xfrm_usersa_id { |
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index d16ae4623be6..f155a66d6ebf 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c | |||
@@ -1357,17 +1357,17 @@ static int check_leaf(struct trie *t, struct leaf *l, | |||
1357 | t->stats.semantic_match_miss++; | 1357 | t->stats.semantic_match_miss++; |
1358 | #endif | 1358 | #endif |
1359 | if (err <= 0) | 1359 | if (err <= 0) |
1360 | return plen; | 1360 | return err; |
1361 | } | 1361 | } |
1362 | 1362 | ||
1363 | return -1; | 1363 | return 1; |
1364 | } | 1364 | } |
1365 | 1365 | ||
1366 | static int fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, | 1366 | static int fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, |
1367 | struct fib_result *res) | 1367 | struct fib_result *res) |
1368 | { | 1368 | { |
1369 | struct trie *t = (struct trie *) tb->tb_data; | 1369 | struct trie *t = (struct trie *) tb->tb_data; |
1370 | int plen, ret = 0; | 1370 | int ret; |
1371 | struct node *n; | 1371 | struct node *n; |
1372 | struct tnode *pn; | 1372 | struct tnode *pn; |
1373 | int pos, bits; | 1373 | int pos, bits; |
@@ -1391,10 +1391,7 @@ static int fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, | |||
1391 | 1391 | ||
1392 | /* Just a leaf? */ | 1392 | /* Just a leaf? */ |
1393 | if (IS_LEAF(n)) { | 1393 | if (IS_LEAF(n)) { |
1394 | plen = check_leaf(t, (struct leaf *)n, key, flp, res); | 1394 | ret = check_leaf(t, (struct leaf *)n, key, flp, res); |
1395 | if (plen < 0) | ||
1396 | goto failed; | ||
1397 | ret = 0; | ||
1398 | goto found; | 1395 | goto found; |
1399 | } | 1396 | } |
1400 | 1397 | ||
@@ -1419,11 +1416,9 @@ static int fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, | |||
1419 | } | 1416 | } |
1420 | 1417 | ||
1421 | if (IS_LEAF(n)) { | 1418 | if (IS_LEAF(n)) { |
1422 | plen = check_leaf(t, (struct leaf *)n, key, flp, res); | 1419 | ret = check_leaf(t, (struct leaf *)n, key, flp, res); |
1423 | if (plen < 0) | 1420 | if (ret > 0) |
1424 | goto backtrace; | 1421 | goto backtrace; |
1425 | |||
1426 | ret = 0; | ||
1427 | goto found; | 1422 | goto found; |
1428 | } | 1423 | } |
1429 | 1424 | ||
diff --git a/net/ipv4/netfilter/nf_nat_snmp_basic.c b/net/ipv4/netfilter/nf_nat_snmp_basic.c index 7750c97fde7b..ffeaffc3fffe 100644 --- a/net/ipv4/netfilter/nf_nat_snmp_basic.c +++ b/net/ipv4/netfilter/nf_nat_snmp_basic.c | |||
@@ -439,8 +439,8 @@ static unsigned char asn1_oid_decode(struct asn1_ctx *ctx, | |||
439 | unsigned int *len) | 439 | unsigned int *len) |
440 | { | 440 | { |
441 | unsigned long subid; | 441 | unsigned long subid; |
442 | unsigned int size; | ||
443 | unsigned long *optr; | 442 | unsigned long *optr; |
443 | size_t size; | ||
444 | 444 | ||
445 | size = eoc - ctx->pointer + 1; | 445 | size = eoc - ctx->pointer + 1; |
446 | 446 | ||
diff --git a/net/ipv4/tcp_probe.c b/net/ipv4/tcp_probe.c index 5ff0ce6e9d39..7ddc30f0744f 100644 --- a/net/ipv4/tcp_probe.c +++ b/net/ipv4/tcp_probe.c | |||
@@ -224,7 +224,7 @@ static __init int tcpprobe_init(void) | |||
224 | if (bufsize < 0) | 224 | if (bufsize < 0) |
225 | return -EINVAL; | 225 | return -EINVAL; |
226 | 226 | ||
227 | tcp_probe.log = kcalloc(sizeof(struct tcp_log), bufsize, GFP_KERNEL); | 227 | tcp_probe.log = kcalloc(bufsize, sizeof(struct tcp_log), GFP_KERNEL); |
228 | if (!tcp_probe.log) | 228 | if (!tcp_probe.log) |
229 | goto err0; | 229 | goto err0; |
230 | 230 | ||
diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c index 602ea826f0a5..9f1084b4c0e8 100644 --- a/net/ipv6/exthdrs.c +++ b/net/ipv6/exthdrs.c | |||
@@ -443,7 +443,7 @@ looped_back: | |||
443 | kfree_skb(skb); | 443 | kfree_skb(skb); |
444 | return -1; | 444 | return -1; |
445 | } | 445 | } |
446 | if (!ipv6_chk_home_addr(&init_net, addr)) { | 446 | if (!ipv6_chk_home_addr(dev_net(skb->dst->dev), addr)) { |
447 | IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), | 447 | IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), |
448 | IPSTATS_MIB_INADDRERRORS); | 448 | IPSTATS_MIB_INADDRERRORS); |
449 | kfree_skb(skb); | 449 | kfree_skb(skb); |
diff --git a/net/mac80211/rc80211_pid.h b/net/mac80211/rc80211_pid.h index 2078803d3581..0a9135b974b5 100644 --- a/net/mac80211/rc80211_pid.h +++ b/net/mac80211/rc80211_pid.h | |||
@@ -141,7 +141,6 @@ struct rc_pid_events_file_info { | |||
141 | * rate behaviour values (lower means we should trust more what we learnt | 141 | * rate behaviour values (lower means we should trust more what we learnt |
142 | * about behaviour of rates, higher means we should trust more the natural | 142 | * about behaviour of rates, higher means we should trust more the natural |
143 | * ordering of rates) | 143 | * ordering of rates) |
144 | * @fast_start: if Y, push high rates right after initialization | ||
145 | */ | 144 | */ |
146 | struct rc_pid_debugfs_entries { | 145 | struct rc_pid_debugfs_entries { |
147 | struct dentry *dir; | 146 | struct dentry *dir; |
@@ -154,7 +153,6 @@ struct rc_pid_debugfs_entries { | |||
154 | struct dentry *sharpen_factor; | 153 | struct dentry *sharpen_factor; |
155 | struct dentry *sharpen_duration; | 154 | struct dentry *sharpen_duration; |
156 | struct dentry *norm_offset; | 155 | struct dentry *norm_offset; |
157 | struct dentry *fast_start; | ||
158 | }; | 156 | }; |
159 | 157 | ||
160 | void rate_control_pid_event_tx_status(struct rc_pid_event_buffer *buf, | 158 | void rate_control_pid_event_tx_status(struct rc_pid_event_buffer *buf, |
@@ -267,9 +265,6 @@ struct rc_pid_info { | |||
267 | /* Normalization offset. */ | 265 | /* Normalization offset. */ |
268 | unsigned int norm_offset; | 266 | unsigned int norm_offset; |
269 | 267 | ||
270 | /* Fast starst parameter. */ | ||
271 | unsigned int fast_start; | ||
272 | |||
273 | /* Rates information. */ | 268 | /* Rates information. */ |
274 | struct rc_pid_rateinfo *rinfo; | 269 | struct rc_pid_rateinfo *rinfo; |
275 | 270 | ||
diff --git a/net/mac80211/rc80211_pid_algo.c b/net/mac80211/rc80211_pid_algo.c index 62388f8e9024..742c5b06cffd 100644 --- a/net/mac80211/rc80211_pid_algo.c +++ b/net/mac80211/rc80211_pid_algo.c | |||
@@ -398,13 +398,25 @@ static void *rate_control_pid_alloc(struct ieee80211_local *local) | |||
398 | return NULL; | 398 | return NULL; |
399 | } | 399 | } |
400 | 400 | ||
401 | pinfo->target = RC_PID_TARGET_PF; | ||
402 | pinfo->sampling_period = RC_PID_INTERVAL; | ||
403 | pinfo->coeff_p = RC_PID_COEFF_P; | ||
404 | pinfo->coeff_i = RC_PID_COEFF_I; | ||
405 | pinfo->coeff_d = RC_PID_COEFF_D; | ||
406 | pinfo->smoothing_shift = RC_PID_SMOOTHING_SHIFT; | ||
407 | pinfo->sharpen_factor = RC_PID_SHARPENING_FACTOR; | ||
408 | pinfo->sharpen_duration = RC_PID_SHARPENING_DURATION; | ||
409 | pinfo->norm_offset = RC_PID_NORM_OFFSET; | ||
410 | pinfo->rinfo = rinfo; | ||
411 | pinfo->oldrate = 0; | ||
412 | |||
401 | /* Sort the rates. This is optimized for the most common case (i.e. | 413 | /* Sort the rates. This is optimized for the most common case (i.e. |
402 | * almost-sorted CCK+OFDM rates). Kind of bubble-sort with reversed | 414 | * almost-sorted CCK+OFDM rates). Kind of bubble-sort with reversed |
403 | * mapping too. */ | 415 | * mapping too. */ |
404 | for (i = 0; i < sband->n_bitrates; i++) { | 416 | for (i = 0; i < sband->n_bitrates; i++) { |
405 | rinfo[i].index = i; | 417 | rinfo[i].index = i; |
406 | rinfo[i].rev_index = i; | 418 | rinfo[i].rev_index = i; |
407 | if (pinfo->fast_start) | 419 | if (RC_PID_FAST_START) |
408 | rinfo[i].diff = 0; | 420 | rinfo[i].diff = 0; |
409 | else | 421 | else |
410 | rinfo[i].diff = i * pinfo->norm_offset; | 422 | rinfo[i].diff = i * pinfo->norm_offset; |
@@ -425,19 +437,6 @@ static void *rate_control_pid_alloc(struct ieee80211_local *local) | |||
425 | break; | 437 | break; |
426 | } | 438 | } |
427 | 439 | ||
428 | pinfo->target = RC_PID_TARGET_PF; | ||
429 | pinfo->sampling_period = RC_PID_INTERVAL; | ||
430 | pinfo->coeff_p = RC_PID_COEFF_P; | ||
431 | pinfo->coeff_i = RC_PID_COEFF_I; | ||
432 | pinfo->coeff_d = RC_PID_COEFF_D; | ||
433 | pinfo->smoothing_shift = RC_PID_SMOOTHING_SHIFT; | ||
434 | pinfo->sharpen_factor = RC_PID_SHARPENING_FACTOR; | ||
435 | pinfo->sharpen_duration = RC_PID_SHARPENING_DURATION; | ||
436 | pinfo->norm_offset = RC_PID_NORM_OFFSET; | ||
437 | pinfo->fast_start = RC_PID_FAST_START; | ||
438 | pinfo->rinfo = rinfo; | ||
439 | pinfo->oldrate = 0; | ||
440 | |||
441 | #ifdef CONFIG_MAC80211_DEBUGFS | 440 | #ifdef CONFIG_MAC80211_DEBUGFS |
442 | de = &pinfo->dentries; | 441 | de = &pinfo->dentries; |
443 | de->dir = debugfs_create_dir("rc80211_pid", | 442 | de->dir = debugfs_create_dir("rc80211_pid", |
@@ -465,9 +464,6 @@ static void *rate_control_pid_alloc(struct ieee80211_local *local) | |||
465 | de->norm_offset = debugfs_create_u32("norm_offset", | 464 | de->norm_offset = debugfs_create_u32("norm_offset", |
466 | S_IRUSR | S_IWUSR, de->dir, | 465 | S_IRUSR | S_IWUSR, de->dir, |
467 | &pinfo->norm_offset); | 466 | &pinfo->norm_offset); |
468 | de->fast_start = debugfs_create_bool("fast_start", | ||
469 | S_IRUSR | S_IWUSR, de->dir, | ||
470 | &pinfo->fast_start); | ||
471 | #endif | 467 | #endif |
472 | 468 | ||
473 | return pinfo; | 469 | return pinfo; |
@@ -479,7 +475,6 @@ static void rate_control_pid_free(void *priv) | |||
479 | #ifdef CONFIG_MAC80211_DEBUGFS | 475 | #ifdef CONFIG_MAC80211_DEBUGFS |
480 | struct rc_pid_debugfs_entries *de = &pinfo->dentries; | 476 | struct rc_pid_debugfs_entries *de = &pinfo->dentries; |
481 | 477 | ||
482 | debugfs_remove(de->fast_start); | ||
483 | debugfs_remove(de->norm_offset); | 478 | debugfs_remove(de->norm_offset); |
484 | debugfs_remove(de->sharpen_duration); | 479 | debugfs_remove(de->sharpen_duration); |
485 | debugfs_remove(de->sharpen_factor); | 480 | debugfs_remove(de->sharpen_factor); |
diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c index 740acd6bc7d9..420a10d8eb1e 100644 --- a/net/netfilter/nf_conntrack_proto_tcp.c +++ b/net/netfilter/nf_conntrack_proto_tcp.c | |||
@@ -844,8 +844,14 @@ static int tcp_packet(struct nf_conn *ct, | |||
844 | /* Attempt to reopen a closed/aborted connection. | 844 | /* Attempt to reopen a closed/aborted connection. |
845 | * Delete this connection and look up again. */ | 845 | * Delete this connection and look up again. */ |
846 | write_unlock_bh(&tcp_lock); | 846 | write_unlock_bh(&tcp_lock); |
847 | nf_ct_kill(ct); | 847 | |
848 | return -NF_REPEAT; | 848 | /* Only repeat if we can actually remove the timer. |
849 | * Destruction may already be in progress in process | ||
850 | * context and we must give it a chance to terminate. | ||
851 | */ | ||
852 | if (nf_ct_kill(ct)) | ||
853 | return -NF_REPEAT; | ||
854 | return -NF_DROP; | ||
849 | } | 855 | } |
850 | /* Fall through */ | 856 | /* Fall through */ |
851 | case TCP_CONNTRACK_IGNORE: | 857 | case TCP_CONNTRACK_IGNORE: |
diff --git a/net/netlabel/netlabel_cipso_v4.c b/net/netlabel/netlabel_cipso_v4.c index fdc14a0d21af..9080c61b71a5 100644 --- a/net/netlabel/netlabel_cipso_v4.c +++ b/net/netlabel/netlabel_cipso_v4.c | |||
@@ -584,12 +584,7 @@ list_start: | |||
584 | rcu_read_unlock(); | 584 | rcu_read_unlock(); |
585 | 585 | ||
586 | genlmsg_end(ans_skb, data); | 586 | genlmsg_end(ans_skb, data); |
587 | 587 | return genlmsg_reply(ans_skb, info); | |
588 | ret_val = genlmsg_reply(ans_skb, info); | ||
589 | if (ret_val != 0) | ||
590 | goto list_failure; | ||
591 | |||
592 | return 0; | ||
593 | 588 | ||
594 | list_retry: | 589 | list_retry: |
595 | /* XXX - this limit is a guesstimate */ | 590 | /* XXX - this limit is a guesstimate */ |
diff --git a/net/netlabel/netlabel_mgmt.c b/net/netlabel/netlabel_mgmt.c index 22c191267808..44be5d5261f4 100644 --- a/net/netlabel/netlabel_mgmt.c +++ b/net/netlabel/netlabel_mgmt.c | |||
@@ -386,11 +386,7 @@ static int netlbl_mgmt_listdef(struct sk_buff *skb, struct genl_info *info) | |||
386 | rcu_read_unlock(); | 386 | rcu_read_unlock(); |
387 | 387 | ||
388 | genlmsg_end(ans_skb, data); | 388 | genlmsg_end(ans_skb, data); |
389 | 389 | return genlmsg_reply(ans_skb, info); | |
390 | ret_val = genlmsg_reply(ans_skb, info); | ||
391 | if (ret_val != 0) | ||
392 | goto listdef_failure; | ||
393 | return 0; | ||
394 | 390 | ||
395 | listdef_failure_lock: | 391 | listdef_failure_lock: |
396 | rcu_read_unlock(); | 392 | rcu_read_unlock(); |
@@ -501,11 +497,7 @@ static int netlbl_mgmt_version(struct sk_buff *skb, struct genl_info *info) | |||
501 | goto version_failure; | 497 | goto version_failure; |
502 | 498 | ||
503 | genlmsg_end(ans_skb, data); | 499 | genlmsg_end(ans_skb, data); |
504 | 500 | return genlmsg_reply(ans_skb, info); | |
505 | ret_val = genlmsg_reply(ans_skb, info); | ||
506 | if (ret_val != 0) | ||
507 | goto version_failure; | ||
508 | return 0; | ||
509 | 501 | ||
510 | version_failure: | 502 | version_failure: |
511 | kfree_skb(ans_skb); | 503 | kfree_skb(ans_skb); |
diff --git a/net/netlabel/netlabel_unlabeled.c b/net/netlabel/netlabel_unlabeled.c index 52b2611a6eb6..56f80872924e 100644 --- a/net/netlabel/netlabel_unlabeled.c +++ b/net/netlabel/netlabel_unlabeled.c | |||
@@ -1107,11 +1107,7 @@ static int netlbl_unlabel_list(struct sk_buff *skb, struct genl_info *info) | |||
1107 | goto list_failure; | 1107 | goto list_failure; |
1108 | 1108 | ||
1109 | genlmsg_end(ans_skb, data); | 1109 | genlmsg_end(ans_skb, data); |
1110 | 1110 | return genlmsg_reply(ans_skb, info); | |
1111 | ret_val = genlmsg_reply(ans_skb, info); | ||
1112 | if (ret_val != 0) | ||
1113 | goto list_failure; | ||
1114 | return 0; | ||
1115 | 1111 | ||
1116 | list_failure: | 1112 | list_failure: |
1117 | kfree_skb(ans_skb); | 1113 | kfree_skb(ans_skb); |
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index b976d9ed10e4..04c41504f84c 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c | |||
@@ -277,9 +277,8 @@ static void copy_from_user_state(struct xfrm_state *x, struct xfrm_usersa_info * | |||
277 | memcpy(&x->props.saddr, &p->saddr, sizeof(x->props.saddr)); | 277 | memcpy(&x->props.saddr, &p->saddr, sizeof(x->props.saddr)); |
278 | x->props.flags = p->flags; | 278 | x->props.flags = p->flags; |
279 | 279 | ||
280 | if (!x->sel.family) | 280 | if (!x->sel.family && !(p->flags & XFRM_STATE_AF_UNSPEC)) |
281 | x->sel.family = p->family; | 281 | x->sel.family = p->family; |
282 | |||
283 | } | 282 | } |
284 | 283 | ||
285 | /* | 284 | /* |