diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-25 07:25:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-25 07:25:22 -0400 |
commit | 8a9ea3237e7eb5c25f09e429ad242ae5a3d5ea22 (patch) | |
tree | a0a63398a9983667d52cbbbf4e2405b4f22b1d83 /net/sctp | |
parent | 1be025d3cb40cd295123af2c394f7229ef9b30ca (diff) | |
parent | 8b3408f8ee994973869d8ba32c5bf482bc4ddca4 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1745 commits)
dp83640: free packet queues on remove
dp83640: use proper function to free transmit time stamping packets
ipv6: Do not use routes from locally generated RAs
|PATCH net-next] tg3: add tx_dropped counter
be2net: don't create multiple RX/TX rings in multi channel mode
be2net: don't create multiple TXQs in BE2
be2net: refactor VF setup/teardown code into be_vf_setup/clear()
be2net: add vlan/rx-mode/flow-control config to be_setup()
net_sched: cls_flow: use skb_header_pointer()
ipv4: avoid useless call of the function check_peer_pmtu
TCP: remove TCP_DEBUG
net: Fix driver name for mdio-gpio.c
ipv4: tcp: fix TOS value in ACK messages sent from TIME_WAIT
rtnetlink: Add missing manual netlink notification in dev_change_net_namespaces
ipv4: fix ipsec forward performance regression
jme: fix irq storm after suspend/resume
route: fix ICMP redirect validation
net: hold sock reference while processing tx timestamps
tcp: md5: add more const attributes
Add ethtool -g support to virtio_net
...
Fix up conflicts in:
- drivers/net/Kconfig:
The split-up generated a trivial conflict with removal of a
stale reference to Documentation/networking/net-modules.txt.
Remove it from the new location instead.
- fs/sysfs/dir.c:
Fairly nasty conflicts with the sysfs rb-tree usage, conflicting
with Eric Biederman's changes for tagged directories.
Diffstat (limited to 'net/sctp')
-rw-r--r-- | net/sctp/associola.c | 1 | ||||
-rw-r--r-- | net/sctp/outqueue.c | 4 | ||||
-rw-r--r-- | net/sctp/protocol.c | 2 | ||||
-rw-r--r-- | net/sctp/sm_make_chunk.c | 1 | ||||
-rw-r--r-- | net/sctp/sm_statefuns.c | 5 |
5 files changed, 12 insertions, 1 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index dc16b90ddb6f..152b5b3c3fff 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c | |||
@@ -282,6 +282,7 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a | |||
282 | asoc->peer.asconf_capable = 1; | 282 | asoc->peer.asconf_capable = 1; |
283 | asoc->asconf_addr_del_pending = NULL; | 283 | asoc->asconf_addr_del_pending = NULL; |
284 | asoc->src_out_of_asoc_ok = 0; | 284 | asoc->src_out_of_asoc_ok = 0; |
285 | asoc->new_transport = NULL; | ||
285 | 286 | ||
286 | /* Create an input queue. */ | 287 | /* Create an input queue. */ |
287 | sctp_inq_init(&asoc->base.inqueue); | 288 | sctp_inq_init(&asoc->base.inqueue); |
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index a6d27bf563a5..14c2b06028ff 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c | |||
@@ -917,6 +917,8 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
917 | * current cwnd). | 917 | * current cwnd). |
918 | */ | 918 | */ |
919 | if (!list_empty(&q->retransmit)) { | 919 | if (!list_empty(&q->retransmit)) { |
920 | if (asoc->peer.retran_path->state == SCTP_UNCONFIRMED) | ||
921 | goto sctp_flush_out; | ||
920 | if (transport == asoc->peer.retran_path) | 922 | if (transport == asoc->peer.retran_path) |
921 | goto retran; | 923 | goto retran; |
922 | 924 | ||
@@ -989,6 +991,8 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
989 | ((new_transport->state == SCTP_INACTIVE) || | 991 | ((new_transport->state == SCTP_INACTIVE) || |
990 | (new_transport->state == SCTP_UNCONFIRMED))) | 992 | (new_transport->state == SCTP_UNCONFIRMED))) |
991 | new_transport = asoc->peer.active_path; | 993 | new_transport = asoc->peer.active_path; |
994 | if (new_transport->state == SCTP_UNCONFIRMED) | ||
995 | continue; | ||
992 | 996 | ||
993 | /* Change packets if necessary. */ | 997 | /* Change packets if necessary. */ |
994 | if (new_transport != transport) { | 998 | if (new_transport != transport) { |
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index 91784f44a2e2..61b9fca5a173 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c | |||
@@ -1299,7 +1299,7 @@ SCTP_STATIC __init int sctp_init(void) | |||
1299 | max_share = min(4UL*1024*1024, limit); | 1299 | max_share = min(4UL*1024*1024, limit); |
1300 | 1300 | ||
1301 | sysctl_sctp_rmem[0] = SK_MEM_QUANTUM; /* give each asoc 1 page min */ | 1301 | sysctl_sctp_rmem[0] = SK_MEM_QUANTUM; /* give each asoc 1 page min */ |
1302 | sysctl_sctp_rmem[1] = (1500 *(sizeof(struct sk_buff) + 1)); | 1302 | sysctl_sctp_rmem[1] = 1500 * SKB_TRUESIZE(1); |
1303 | sysctl_sctp_rmem[2] = max(sysctl_sctp_rmem[1], max_share); | 1303 | sysctl_sctp_rmem[2] = max(sysctl_sctp_rmem[1], max_share); |
1304 | 1304 | ||
1305 | sysctl_sctp_wmem[0] = SK_MEM_QUANTUM; | 1305 | sysctl_sctp_wmem[0] = SK_MEM_QUANTUM; |
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index 81db4e385352..0121e0ab0351 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c | |||
@@ -3015,6 +3015,7 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc, | |||
3015 | /* Start the heartbeat timer. */ | 3015 | /* Start the heartbeat timer. */ |
3016 | if (!mod_timer(&peer->hb_timer, sctp_transport_timeout(peer))) | 3016 | if (!mod_timer(&peer->hb_timer, sctp_transport_timeout(peer))) |
3017 | sctp_transport_hold(peer); | 3017 | sctp_transport_hold(peer); |
3018 | asoc->new_transport = peer; | ||
3018 | break; | 3019 | break; |
3019 | case SCTP_PARAM_DEL_IP: | 3020 | case SCTP_PARAM_DEL_IP: |
3020 | /* ADDIP 4.3 D7) If a request is received to delete the | 3021 | /* ADDIP 4.3 D7) If a request is received to delete the |
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c index a0f31e6c1c63..891f5db8cc31 100644 --- a/net/sctp/sm_statefuns.c +++ b/net/sctp/sm_statefuns.c | |||
@@ -3618,6 +3618,11 @@ sctp_disposition_t sctp_sf_do_asconf(const struct sctp_endpoint *ep, | |||
3618 | */ | 3618 | */ |
3619 | asconf_ack->dest = chunk->source; | 3619 | asconf_ack->dest = chunk->source; |
3620 | sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(asconf_ack)); | 3620 | sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(asconf_ack)); |
3621 | if (asoc->new_transport) { | ||
3622 | sctp_sf_heartbeat(ep, asoc, type, asoc->new_transport, | ||
3623 | commands); | ||
3624 | ((struct sctp_association *)asoc)->new_transport = NULL; | ||
3625 | } | ||
3621 | 3626 | ||
3622 | return SCTP_DISPOSITION_CONSUME; | 3627 | return SCTP_DISPOSITION_CONSUME; |
3623 | } | 3628 | } |