Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
This commit is contained in:
@@ -81,6 +81,12 @@ const char *sctp_cname(const union sctp_subtype cid)
|
||||
case SCTP_CID_RECONF:
|
||||
return "RECONF";
|
||||
|
||||
case SCTP_CID_I_DATA:
|
||||
return "I_DATA";
|
||||
|
||||
case SCTP_CID_I_FWD_TSN:
|
||||
return "I_FWD_TSN";
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@@ -897,15 +897,12 @@ int sctp_hash_transport(struct sctp_transport *t)
|
||||
rhl_for_each_entry_rcu(transport, tmp, list, node)
|
||||
if (transport->asoc->ep == t->asoc->ep) {
|
||||
rcu_read_unlock();
|
||||
err = -EEXIST;
|
||||
goto out;
|
||||
return -EEXIST;
|
||||
}
|
||||
rcu_read_unlock();
|
||||
|
||||
err = rhltable_insert_key(&sctp_transport_hashtable, &arg,
|
||||
&t->node, sctp_hash_params);
|
||||
|
||||
out:
|
||||
if (err)
|
||||
pr_err_once("insert transport fail, errno %d\n", err);
|
||||
|
||||
|
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions manipulate sctp tsn mapping array.
|
||||
* This file contains sctp stream maniuplation primitives and helpers.
|
||||
*
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
|
@@ -3,7 +3,8 @@
|
||||
*
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions manipulate sctp stream queue/scheduling.
|
||||
* These functions implement sctp stream message interleaving, mostly
|
||||
* including I-DATA and I-FORWARD-TSN chunks process.
|
||||
*
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
@@ -954,12 +955,8 @@ static void sctp_renege_events(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk,
|
||||
__u32 freed = 0;
|
||||
__u16 needed;
|
||||
|
||||
if (chunk) {
|
||||
needed = ntohs(chunk->chunk_hdr->length);
|
||||
needed -= sizeof(struct sctp_idata_chunk);
|
||||
} else {
|
||||
needed = SCTP_DEFAULT_MAXWINDOW;
|
||||
}
|
||||
needed = ntohs(chunk->chunk_hdr->length) -
|
||||
sizeof(struct sctp_idata_chunk);
|
||||
|
||||
if (skb_queue_empty(&asoc->base.sk->sk_receive_queue)) {
|
||||
freed = sctp_ulpq_renege_list(ulpq, &ulpq->lobby, needed);
|
||||
@@ -971,9 +968,8 @@ static void sctp_renege_events(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk,
|
||||
needed);
|
||||
}
|
||||
|
||||
if (chunk && freed >= needed)
|
||||
if (sctp_ulpevent_idata(ulpq, chunk, gfp) <= 0)
|
||||
sctp_intl_start_pd(ulpq, gfp);
|
||||
if (freed >= needed && sctp_ulpevent_idata(ulpq, chunk, gfp) <= 0)
|
||||
sctp_intl_start_pd(ulpq, gfp);
|
||||
|
||||
sk_mem_reclaim(asoc->base.sk);
|
||||
}
|
||||
|
Reference in New Issue
Block a user