diff options
author | Xin Long <lucien.xin@gmail.com> | 2016-07-09 19:47:44 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-07-11 13:25:39 -0700 |
commit | 01aadb3af6e1b10970c1f7e510b5097c8f725d64 (patch) | |
tree | 48a0b5f81a01756090b6ecfe815f777be10f2041 /net/sctp/chunk.c | |
parent | a6c2f792873aff332a4689717c3cd6104f46684c (diff) | |
download | talos-obmc-linux-01aadb3af6e1b10970c1f7e510b5097c8f725d64.tar.gz talos-obmc-linux-01aadb3af6e1b10970c1f7e510b5097c8f725d64.zip |
sctp: implement prsctp RTX policy
prsctp RTX policy is a policy to abandon chunks when they are
retransmitted beyond the max count.
This patch uses sent_count to count how many times one chunk has
been sent, and prsctp_param is the max rtx count, which is from
sinfo->sinfo_timetolive in sctp_set_prsctp_policy(). So similar
to TTL policy, if RTX policy is enabled, msg->expire_at won't
work.
Then in sctp_chunk_abandoned, this patch checks if chunk->sent_count
is bigger than chunk->prsctp_param to abandon this chunk.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/chunk.c')
-rw-r--r-- | net/sctp/chunk.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/sctp/chunk.c b/net/sctp/chunk.c index 2698d122e201..b3692b55a8d2 100644 --- a/net/sctp/chunk.c +++ b/net/sctp/chunk.c @@ -355,6 +355,10 @@ int sctp_chunk_abandoned(struct sctp_chunk *chunk) else chunk->asoc->abandoned_unsent[SCTP_PR_INDEX(TTL)]++; return 1; + } else if (SCTP_PR_RTX_ENABLED(chunk->sinfo.sinfo_flags) && + chunk->sent_count > chunk->prsctp_param) { + chunk->asoc->abandoned_sent[SCTP_PR_INDEX(RTX)]++; + return 1; } return 0; |