Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
This commit is contained in:
@@ -118,6 +118,9 @@ void sctp_packet_config(struct sctp_packet *packet, __u32 vtag,
|
||||
sctp_transport_route(tp, NULL, sp);
|
||||
if (asoc->param_flags & SPP_PMTUD_ENABLE)
|
||||
sctp_assoc_sync_pmtu(asoc);
|
||||
} else if (!sctp_transport_pmtu_check(tp)) {
|
||||
if (asoc->param_flags & SPP_PMTUD_ENABLE)
|
||||
sctp_assoc_sync_pmtu(asoc);
|
||||
}
|
||||
|
||||
if (asoc->pmtu_pending) {
|
||||
@@ -396,25 +399,6 @@ finish:
|
||||
return retval;
|
||||
}
|
||||
|
||||
static void sctp_packet_release_owner(struct sk_buff *skb)
|
||||
{
|
||||
sk_free(skb->sk);
|
||||
}
|
||||
|
||||
static void sctp_packet_set_owner_w(struct sk_buff *skb, struct sock *sk)
|
||||
{
|
||||
skb_orphan(skb);
|
||||
skb->sk = sk;
|
||||
skb->destructor = sctp_packet_release_owner;
|
||||
|
||||
/*
|
||||
* The data chunks have already been accounted for in sctp_sendmsg(),
|
||||
* therefore only reserve a single byte to keep socket around until
|
||||
* the packet has been transmitted.
|
||||
*/
|
||||
refcount_inc(&sk->sk_wmem_alloc);
|
||||
}
|
||||
|
||||
static void sctp_packet_gso_append(struct sk_buff *head, struct sk_buff *skb)
|
||||
{
|
||||
if (SCTP_OUTPUT_CB(head)->last == head)
|
||||
@@ -601,7 +585,7 @@ int sctp_packet_transmit(struct sctp_packet *packet, gfp_t gfp)
|
||||
if (!head)
|
||||
goto out;
|
||||
skb_reserve(head, packet->overhead + MAX_HEADER);
|
||||
sctp_packet_set_owner_w(head, sk);
|
||||
skb_set_owner_w(head, sk);
|
||||
|
||||
/* set sctp header */
|
||||
sh = skb_push(head, sizeof(struct sctphdr));
|
||||
|
@@ -3951,32 +3951,16 @@ static int sctp_setsockopt_pr_supported(struct sock *sk,
|
||||
unsigned int optlen)
|
||||
{
|
||||
struct sctp_assoc_value params;
|
||||
struct sctp_association *asoc;
|
||||
int retval = -EINVAL;
|
||||
|
||||
if (optlen != sizeof(params))
|
||||
goto out;
|
||||
return -EINVAL;
|
||||
|
||||
if (copy_from_user(¶ms, optval, optlen)) {
|
||||
retval = -EFAULT;
|
||||
goto out;
|
||||
}
|
||||
if (copy_from_user(¶ms, optval, optlen))
|
||||
return -EFAULT;
|
||||
|
||||
asoc = sctp_id2assoc(sk, params.assoc_id);
|
||||
if (asoc) {
|
||||
asoc->prsctp_enable = !!params.assoc_value;
|
||||
} else if (!params.assoc_id) {
|
||||
struct sctp_sock *sp = sctp_sk(sk);
|
||||
sctp_sk(sk)->ep->prsctp_enable = !!params.assoc_value;
|
||||
|
||||
sp->ep->prsctp_enable = !!params.assoc_value;
|
||||
} else {
|
||||
goto out;
|
||||
}
|
||||
|
||||
retval = 0;
|
||||
|
||||
out:
|
||||
return retval;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sctp_setsockopt_default_prinfo(struct sock *sk,
|
||||
|
@@ -535,7 +535,6 @@ int sctp_send_add_streams(struct sctp_association *asoc,
|
||||
goto out;
|
||||
}
|
||||
|
||||
stream->incnt = incnt;
|
||||
stream->outcnt = outcnt;
|
||||
|
||||
asoc->strreset_outstanding = !!out + !!in;
|
||||
|
Reference in New Issue
Block a user