* [PATCHv2 net 0/5] sctp: some fixes of prsctp polices @ 2016-09-28 10:46 Xin Long 2016-09-28 10:46 ` [PATCHv2 net 1/5] sctp: move sent_count to the memory hole in sctp_chunk Xin Long ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Xin Long @ 2016-09-28 10:46 UTC (permalink / raw) To: network dev, linux-sctp Cc: davem, Marcelo Ricardo Leitner, Vlad Yasevich, daniel This patchset is to improve some codes about prsctp polices, and also to fix some issues. v1->v2: - wrap the check of chunk->sent_count in a macro: sctp_chunk_retransmitted in patch 2/5. Xin Long (5): sctp: move sent_count to the memory hole in sctp_chunk sctp: reuse sent_count to avoid retransmitted chunks for RTT measurements sctp: remove prsctp_param from sctp_chunk sctp: change to check peer prsctp_capable when using prsctp polices sctp: remove the old ttl expires policy include/net/sctp/structs.h | 16 ++++------------ net/sctp/chunk.c | 31 ++++++++++--------------------- net/sctp/output.c | 6 ++---- net/sctp/outqueue.c | 16 +++++++--------- net/sctp/sm_make_chunk.c | 15 --------------- 5 files changed, 23 insertions(+), 61 deletions(-) -- 2.1.0 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCHv2 net 1/5] sctp: move sent_count to the memory hole in sctp_chunk 2016-09-28 10:46 [PATCHv2 net 0/5] sctp: some fixes of prsctp polices Xin Long @ 2016-09-28 10:46 ` Xin Long 2016-09-28 10:46 ` [PATCHv2 net 2/5] sctp: reuse sent_count to avoid retransmitted chunks for RTT measurements Xin Long 2016-09-28 11:22 ` [PATCHv2 net 0/5] sctp: some fixes of prsctp polices Marcelo Ricardo Leitner 2016-09-28 12:13 ` David Miller 2 siblings, 1 reply; 12+ messages in thread From: Xin Long @ 2016-09-28 10:46 UTC (permalink / raw) To: network dev, linux-sctp Cc: davem, Marcelo Ricardo Leitner, Vlad Yasevich, daniel Now pahole sctp_chunk, it has 2 memory holes: struct sctp_chunk { struct list_head list; atomic_t refcnt; /* XXX 4 bytes hole, try to pack */ ... long unsigned int prsctp_param; int sent_count; /* XXX 4 bytes hole, try to pack */ This patch is to move up sent_count to fill the 1st one and eliminate the 2nd one. It's not just another struct compaction, it also fixes the "netperf- Throughput_Mbps -37.2% regression" issue when overloading the CPU. Fixes: a6c2f792873a ("sctp: implement prsctp TTL policy") Signed-off-by: Xin Long <lucien.xin@gmail.com> --- include/net/sctp/structs.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index ce93c4b..4f097f5 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h @@ -554,6 +554,9 @@ struct sctp_chunk { atomic_t refcnt; + /* How many times this chunk have been sent, for prsctp RTX policy */ + int sent_count; + /* This is our link to the per-transport transmitted list. */ struct list_head transmitted_list; @@ -610,9 +613,6 @@ struct sctp_chunk { */ unsigned long prsctp_param; - /* How many times this chunk have been sent, for prsctp RTX policy */ - int sent_count; - /* Which association does this belong to? */ struct sctp_association *asoc; -- 2.1.0 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCHv2 net 2/5] sctp: reuse sent_count to avoid retransmitted chunks for RTT measurements 2016-09-28 10:46 ` [PATCHv2 net 1/5] sctp: move sent_count to the memory hole in sctp_chunk Xin Long @ 2016-09-28 10:46 ` Xin Long 2016-09-28 10:46 ` [PATCHv2 net 3/5] sctp: remove prsctp_param from sctp_chunk Xin Long 0 siblings, 1 reply; 12+ messages in thread From: Xin Long @ 2016-09-28 10:46 UTC (permalink / raw) To: network dev, linux-sctp Cc: davem, Marcelo Ricardo Leitner, Vlad Yasevich, daniel Now sctp uses chunk->resent to record if a chunk is retransmitted, for RTT measurements with retransmitted DATA chunks. chunk->sent_count was introduced to record how many times one chunk has been sent for prsctp RTX policy before. We actually can know if one chunk is retransmitted by checking chunk->sent_count is greater than 1. This patch is to remove resent from sctp_chunk and reuse sent_count to avoid retransmitted chunks for RTT measurements. Signed-off-by: Xin Long <lucien.xin@gmail.com> --- include/net/sctp/structs.h | 2 +- net/sctp/output.c | 3 ++- net/sctp/outqueue.c | 4 +--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 4f097f5..7b937d7 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h @@ -647,7 +647,6 @@ struct sctp_chunk { #define SCTP_NEED_FRTX 0x1 #define SCTP_DONT_FRTX 0x2 __u16 rtt_in_progress:1, /* This chunk used for RTT calc? */ - resent:1, /* Has this chunk ever been resent. */ has_tsn:1, /* Does this chunk have a TSN yet? */ has_ssn:1, /* Does this chunk have a SSN yet? */ singleton:1, /* Only chunk in the packet? */ @@ -662,6 +661,7 @@ struct sctp_chunk { fast_retransmit:2; /* Is this chunk fast retransmitted? */ }; +#define sctp_chunk_retransmitted(chunk) (chunk->sent_count > 1) void sctp_chunk_hold(struct sctp_chunk *); void sctp_chunk_put(struct sctp_chunk *); int sctp_user_addto_chunk(struct sctp_chunk *chunk, int len, diff --git a/net/sctp/output.c b/net/sctp/output.c index 31b7bc3..db01620 100644 --- a/net/sctp/output.c +++ b/net/sctp/output.c @@ -547,7 +547,8 @@ int sctp_packet_transmit(struct sctp_packet *packet, gfp_t gfp) * for a given destination transport address. */ - if (!chunk->resent && !tp->rto_pending) { + if (!sctp_chunk_retransmitted(chunk) && + !tp->rto_pending) { chunk->rtt_in_progress = 1; tp->rto_pending = 1; } diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index 72e54a4..c0fe0b5 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c @@ -536,8 +536,6 @@ void sctp_retransmit_mark(struct sctp_outq *q, transport->rto_pending = 0; } - chunk->resent = 1; - /* Move the chunk to the retransmit queue. The chunks * on the retransmit queue are always kept in order. */ @@ -1467,7 +1465,7 @@ static void sctp_check_transmitted(struct sctp_outq *q, * instance). */ if (!tchunk->tsn_gap_acked && - !tchunk->resent && + !sctp_chunk_retransmitted(tchunk) && tchunk->rtt_in_progress) { tchunk->rtt_in_progress = 0; rtt = jiffies - tchunk->sent_at; -- 2.1.0 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCHv2 net 3/5] sctp: remove prsctp_param from sctp_chunk 2016-09-28 10:46 ` [PATCHv2 net 2/5] sctp: reuse sent_count to avoid retransmitted chunks for RTT measurements Xin Long @ 2016-09-28 10:46 ` Xin Long 2016-09-28 10:46 ` [PATCHv2 net 4/5] sctp: change to check peer prsctp_capable when using prsctp polices Xin Long 0 siblings, 1 reply; 12+ messages in thread From: Xin Long @ 2016-09-28 10:46 UTC (permalink / raw) To: network dev, linux-sctp Cc: davem, Marcelo Ricardo Leitner, Vlad Yasevich, daniel Now sctp uses chunk->prsctp_param to save the prsctp param for all the prsctp polices, we didn't need to introduce prsctp_param to sctp_chunk. We can just use chunk->sinfo.sinfo_timetolive for RTX and BUF polices, and reuse msg->expires_at for TTL policy, as the prsctp polices and old expires policy are mutual exclusive. This patch is to remove prsctp_param from sctp_chunk, and reuse msg's expires_at for TTL and chunk's sinfo.sinfo_timetolive for RTX and BUF polices. Note that sctp can't use chunk's sinfo.sinfo_timetolive for TTL policy, as it needs a u64 variables to save the expires_at time. Signed-off-by: Xin Long <lucien.xin@gmail.com> --- include/net/sctp/structs.h | 7 ------- net/sctp/chunk.c | 9 +++++++-- net/sctp/outqueue.c | 4 ++-- net/sctp/sm_make_chunk.c | 15 --------------- 4 files changed, 9 insertions(+), 26 deletions(-) diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 7b937d7..49a4d37 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h @@ -606,13 +606,6 @@ struct sctp_chunk { /* This needs to be recoverable for SCTP_SEND_FAILED events. */ struct sctp_sndrcvinfo sinfo; - /* We use this field to record param for prsctp policies, - * for TTL policy, it is the time_to_drop of this chunk, - * for RTX policy, it is the max_sent_count of this chunk, - * for PRIO policy, it is the priority of this chunk. - */ - unsigned long prsctp_param; - /* Which association does this belong to? */ struct sctp_association *asoc; diff --git a/net/sctp/chunk.c b/net/sctp/chunk.c index a55e547..14990e2 100644 --- a/net/sctp/chunk.c +++ b/net/sctp/chunk.c @@ -179,6 +179,11 @@ struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc, msg, msg->expires_at, jiffies); } + if (asoc->prsctp_enable && + SCTP_PR_TTL_ENABLED(sinfo->sinfo_flags)) + msg->expires_at = + jiffies + msecs_to_jiffies(sinfo->sinfo_timetolive); + /* This is the biggest possible DATA chunk that can fit into * the packet */ @@ -349,14 +354,14 @@ int sctp_chunk_abandoned(struct sctp_chunk *chunk) } if (SCTP_PR_TTL_ENABLED(chunk->sinfo.sinfo_flags) && - time_after(jiffies, chunk->prsctp_param)) { + time_after(jiffies, chunk->msg->expires_at)) { if (chunk->sent_count) chunk->asoc->abandoned_sent[SCTP_PR_INDEX(TTL)]++; 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->sent_count > chunk->sinfo.sinfo_timetolive) { chunk->asoc->abandoned_sent[SCTP_PR_INDEX(RTX)]++; return 1; } diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index c0fe0b5..17b6fcd 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c @@ -383,7 +383,7 @@ static int sctp_prsctp_prune_sent(struct sctp_association *asoc, list_for_each_entry_safe(chk, temp, queue, transmitted_list) { if (!SCTP_PR_PRIO_ENABLED(chk->sinfo.sinfo_flags) || - chk->prsctp_param <= sinfo->sinfo_timetolive) + chk->sinfo.sinfo_timetolive <= sinfo->sinfo_timetolive) continue; list_del_init(&chk->transmitted_list); @@ -418,7 +418,7 @@ static int sctp_prsctp_prune_unsent(struct sctp_association *asoc, list_for_each_entry_safe(chk, temp, queue, list) { if (!SCTP_PR_PRIO_ENABLED(chk->sinfo.sinfo_flags) || - chk->prsctp_param <= sinfo->sinfo_timetolive) + chk->sinfo.sinfo_timetolive <= sinfo->sinfo_timetolive) continue; list_del_init(&chk->list); diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index 8c77b87..46ffecc 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c @@ -706,20 +706,6 @@ nodata: return retval; } -static void sctp_set_prsctp_policy(struct sctp_chunk *chunk, - const struct sctp_sndrcvinfo *sinfo) -{ - if (!chunk->asoc->prsctp_enable) - return; - - if (SCTP_PR_TTL_ENABLED(sinfo->sinfo_flags)) - chunk->prsctp_param = - jiffies + msecs_to_jiffies(sinfo->sinfo_timetolive); - else if (SCTP_PR_RTX_ENABLED(sinfo->sinfo_flags) || - SCTP_PR_PRIO_ENABLED(sinfo->sinfo_flags)) - chunk->prsctp_param = sinfo->sinfo_timetolive; -} - /* Make a DATA chunk for the given association from the provided * parameters. However, do not populate the data payload. */ @@ -753,7 +739,6 @@ struct sctp_chunk *sctp_make_datafrag_empty(struct sctp_association *asoc, retval->subh.data_hdr = sctp_addto_chunk(retval, sizeof(dp), &dp); memcpy(&retval->sinfo, sinfo, sizeof(struct sctp_sndrcvinfo)); - sctp_set_prsctp_policy(retval, sinfo); nodata: return retval; -- 2.1.0 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCHv2 net 4/5] sctp: change to check peer prsctp_capable when using prsctp polices 2016-09-28 10:46 ` [PATCHv2 net 3/5] sctp: remove prsctp_param from sctp_chunk Xin Long @ 2016-09-28 10:46 ` Xin Long 2016-09-28 10:46 ` [PATCHv2 net 5/5] sctp: remove the old ttl expires policy Xin Long 0 siblings, 1 reply; 12+ messages in thread From: Xin Long @ 2016-09-28 10:46 UTC (permalink / raw) To: network dev, linux-sctp Cc: davem, Marcelo Ricardo Leitner, Vlad Yasevich, daniel Now before using prsctp polices, sctp uses asoc->prsctp_enable to check if prsctp is enabled. However asoc->prsctp_enable is set only means local host support prsctp, sctp should not abandon packet if peer host doesn't enable prsctp. So this patch is to use asoc->peer.prsctp_capable to check if prsctp is enabled on both side, instead of asoc->prsctp_enable, as asoc's peer.prsctp_capable is set only when local and peer both enable prsctp. Signed-off-by: Xin Long <lucien.xin@gmail.com> --- net/sctp/chunk.c | 4 ++-- net/sctp/outqueue.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/net/sctp/chunk.c b/net/sctp/chunk.c index 14990e2..0a3dbec 100644 --- a/net/sctp/chunk.c +++ b/net/sctp/chunk.c @@ -179,7 +179,7 @@ struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc, msg, msg->expires_at, jiffies); } - if (asoc->prsctp_enable && + if (asoc->peer.prsctp_capable && SCTP_PR_TTL_ENABLED(sinfo->sinfo_flags)) msg->expires_at = jiffies + msecs_to_jiffies(sinfo->sinfo_timetolive); @@ -340,7 +340,7 @@ errout: /* Check whether this message has expired. */ int sctp_chunk_abandoned(struct sctp_chunk *chunk) { - if (!chunk->asoc->prsctp_enable || + if (!chunk->asoc->peer.prsctp_capable || !SCTP_PR_POLICY(chunk->sinfo.sinfo_flags)) { struct sctp_datamsg *msg = chunk->msg; diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index 17b6fcd..70d45c3e 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c @@ -326,7 +326,7 @@ int sctp_outq_tail(struct sctp_outq *q, struct sctp_chunk *chunk, gfp_t gfp) sctp_chunk_hold(chunk); sctp_outq_tail_data(q, chunk); - if (chunk->asoc->prsctp_enable && + if (chunk->asoc->peer.prsctp_capable && SCTP_PR_PRIO_ENABLED(chunk->sinfo.sinfo_flags)) chunk->asoc->sent_cnt_removable++; if (chunk->chunk_hdr->flags & SCTP_DATA_UNORDERED) @@ -442,7 +442,7 @@ void sctp_prsctp_prune(struct sctp_association *asoc, { struct sctp_transport *transport; - if (!asoc->prsctp_enable || !asoc->sent_cnt_removable) + if (!asoc->peer.prsctp_capable || !asoc->sent_cnt_removable) return; msg_len = sctp_prsctp_prune_sent(asoc, sinfo, @@ -1053,7 +1053,7 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout, gfp_t gfp) /* Mark as failed send. */ sctp_chunk_fail(chunk, SCTP_ERROR_INV_STRM); - if (asoc->prsctp_enable && + if (asoc->peer.prsctp_capable && SCTP_PR_PRIO_ENABLED(chunk->sinfo.sinfo_flags)) asoc->sent_cnt_removable--; sctp_chunk_free(chunk); @@ -1345,7 +1345,7 @@ int sctp_outq_sack(struct sctp_outq *q, struct sctp_chunk *chunk) tsn = ntohl(tchunk->subh.data_hdr->tsn); if (TSN_lte(tsn, ctsn)) { list_del_init(&tchunk->transmitted_list); - if (asoc->prsctp_enable && + if (asoc->peer.prsctp_capable && SCTP_PR_PRIO_ENABLED(chunk->sinfo.sinfo_flags)) asoc->sent_cnt_removable--; sctp_chunk_free(tchunk); -- 2.1.0 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCHv2 net 5/5] sctp: remove the old ttl expires policy 2016-09-28 10:46 ` [PATCHv2 net 4/5] sctp: change to check peer prsctp_capable when using prsctp polices Xin Long @ 2016-09-28 10:46 ` Xin Long 0 siblings, 0 replies; 12+ messages in thread From: Xin Long @ 2016-09-28 10:46 UTC (permalink / raw) To: network dev, linux-sctp Cc: davem, Marcelo Ricardo Leitner, Vlad Yasevich, daniel The prsctp polices include ttl expires policy already, we should remove the old ttl expires codes, and just adjust the new polices' codes to be compatible with the old one for users. This patch is to remove all the old expires codes, and if prsctp polices are not set, it will still set msg's expires_at and check the expires in sctp_check_abandoned. Note that asoc->prsctp_enable is set by default, so users can't feel any difference even if they use the old expires api in userspace. Signed-off-by: Xin Long <lucien.xin@gmail.com> --- include/net/sctp/structs.h | 1 - net/sctp/chunk.c | 32 ++++++++------------------------ net/sctp/output.c | 3 --- 3 files changed, 8 insertions(+), 28 deletions(-) diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 49a4d37..2463354 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h @@ -530,7 +530,6 @@ struct sctp_datamsg { /* Did the messenge fail to send? */ int send_error; u8 send_failed:1, - can_abandon:1, /* can chunks from this message can be abandoned. */ can_delay; /* should this message be Nagle delayed */ }; diff --git a/net/sctp/chunk.c b/net/sctp/chunk.c index 0a3dbec..8d366fc 100644 --- a/net/sctp/chunk.c +++ b/net/sctp/chunk.c @@ -52,7 +52,6 @@ static void sctp_datamsg_init(struct sctp_datamsg *msg) atomic_set(&msg->refcnt, 1); msg->send_failed = 0; msg->send_error = 0; - msg->can_abandon = 0; msg->can_delay = 1; msg->expires_at = 0; INIT_LIST_HEAD(&msg->chunks); @@ -169,20 +168,11 @@ struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc, /* Note: Calculate this outside of the loop, so that all fragments * have the same expiration. */ - if (sinfo->sinfo_timetolive) { - /* sinfo_timetolive is in milliseconds */ + if (asoc->peer.prsctp_capable && sinfo->sinfo_timetolive && + (SCTP_PR_TTL_ENABLED(sinfo->sinfo_flags) || + !SCTP_PR_POLICY(sinfo->sinfo_flags))) msg->expires_at = jiffies + msecs_to_jiffies(sinfo->sinfo_timetolive); - msg->can_abandon = 1; - - pr_debug("%s: msg:%p expires_at:%ld jiffies:%ld\n", __func__, - msg, msg->expires_at, jiffies); - } - - if (asoc->peer.prsctp_capable && - SCTP_PR_TTL_ENABLED(sinfo->sinfo_flags)) - msg->expires_at = - jiffies + msecs_to_jiffies(sinfo->sinfo_timetolive); /* This is the biggest possible DATA chunk that can fit into * the packet @@ -340,18 +330,8 @@ errout: /* Check whether this message has expired. */ int sctp_chunk_abandoned(struct sctp_chunk *chunk) { - if (!chunk->asoc->peer.prsctp_capable || - !SCTP_PR_POLICY(chunk->sinfo.sinfo_flags)) { - struct sctp_datamsg *msg = chunk->msg; - - if (!msg->can_abandon) - return 0; - - if (time_after(jiffies, msg->expires_at)) - return 1; - + if (!chunk->asoc->peer.prsctp_capable) return 0; - } if (SCTP_PR_TTL_ENABLED(chunk->sinfo.sinfo_flags) && time_after(jiffies, chunk->msg->expires_at)) { @@ -364,6 +344,10 @@ int sctp_chunk_abandoned(struct sctp_chunk *chunk) chunk->sent_count > chunk->sinfo.sinfo_timetolive) { chunk->asoc->abandoned_sent[SCTP_PR_INDEX(RTX)]++; return 1; + } else if (!SCTP_PR_POLICY(chunk->sinfo.sinfo_flags) && + chunk->msg->expires_at && + time_after(jiffies, chunk->msg->expires_at)) { + return 1; } /* PRIO policy is processed by sendmsg, not here */ diff --git a/net/sctp/output.c b/net/sctp/output.c index db01620..a5b8dad 100644 --- a/net/sctp/output.c +++ b/net/sctp/output.c @@ -868,9 +868,6 @@ static void sctp_packet_append_data(struct sctp_packet *packet, rwnd = 0; asoc->peer.rwnd = rwnd; - /* Has been accepted for transmission. */ - if (!asoc->peer.prsctp_capable) - chunk->msg->can_abandon = 0; sctp_chunk_assign_tsn(chunk); sctp_chunk_assign_ssn(chunk); } -- 2.1.0 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCHv2 net 0/5] sctp: some fixes of prsctp polices 2016-09-28 10:46 [PATCHv2 net 0/5] sctp: some fixes of prsctp polices Xin Long 2016-09-28 10:46 ` [PATCHv2 net 1/5] sctp: move sent_count to the memory hole in sctp_chunk Xin Long @ 2016-09-28 11:22 ` Marcelo Ricardo Leitner 2016-09-28 12:13 ` David Miller 2 siblings, 0 replies; 12+ messages in thread From: Marcelo Ricardo Leitner @ 2016-09-28 11:22 UTC (permalink / raw) To: Xin Long; +Cc: network dev, linux-sctp, davem, Vlad Yasevich, daniel On Wed, Sep 28, 2016 at 06:46:27PM +0800, Xin Long wrote: > This patchset is to improve some codes about prsctp polices, and also > to fix some issues. > > v1->v2: > - wrap the check of chunk->sent_count in a macro: > sctp_chunk_retransmitted in patch 2/5. > > Xin Long (5): > sctp: move sent_count to the memory hole in sctp_chunk > sctp: reuse sent_count to avoid retransmitted chunks for RTT > measurements > sctp: remove prsctp_param from sctp_chunk > sctp: change to check peer prsctp_capable when using prsctp polices > sctp: remove the old ttl expires policy > > include/net/sctp/structs.h | 16 ++++------------ > net/sctp/chunk.c | 31 ++++++++++--------------------- > net/sctp/output.c | 6 ++---- > net/sctp/outqueue.c | 16 +++++++--------- > net/sctp/sm_make_chunk.c | 15 --------------- > 5 files changed, 23 insertions(+), 61 deletions(-) > Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> Thanks ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCHv2 net 0/5] sctp: some fixes of prsctp polices 2016-09-28 10:46 [PATCHv2 net 0/5] sctp: some fixes of prsctp polices Xin Long 2016-09-28 10:46 ` [PATCHv2 net 1/5] sctp: move sent_count to the memory hole in sctp_chunk Xin Long 2016-09-28 11:22 ` [PATCHv2 net 0/5] sctp: some fixes of prsctp polices Marcelo Ricardo Leitner @ 2016-09-28 12:13 ` David Miller 2016-09-28 12:35 ` Xin Long 2 siblings, 1 reply; 12+ messages in thread From: David Miller @ 2016-09-28 12:13 UTC (permalink / raw) To: lucien.xin; +Cc: netdev, linux-sctp, marcelo.leitner, vyasevich, daniel From: Xin Long <lucien.xin@gmail.com> Date: Wed, 28 Sep 2016 18:46:27 +0800 > This patchset is to improve some codes about prsctp polices, and also > to fix some issues. > > v1->v2: > - wrap the check of chunk->sent_count in a macro: > sctp_chunk_retransmitted in patch 2/5. This series is a mix of bug fixes (patch #1) which should be targetting 'net' and simplifications/cleanups (patch #2-5) which should be targetting 'net-next'. Please do not mix things up like this, and submit patches targetting the appropriate tree. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCHv2 net 0/5] sctp: some fixes of prsctp polices 2016-09-28 12:13 ` David Miller @ 2016-09-28 12:35 ` Xin Long 2016-09-28 15:17 ` David Miller 0 siblings, 1 reply; 12+ messages in thread From: Xin Long @ 2016-09-28 12:35 UTC (permalink / raw) To: David Miller Cc: network dev, linux-sctp, Marcelo Ricardo Leitner, Vladislav Yasevich, daniel > >> This patchset is to improve some codes about prsctp polices, and also >> to fix some issues. >> >> v1->v2: >> - wrap the check of chunk->sent_count in a macro: >> sctp_chunk_retransmitted in patch 2/5. > > This series is a mix of bug fixes (patch #1) which should be targetting > 'net' and simplifications/cleanups (patch #2-5) which should be targetting > 'net-next'. > > Please do not mix things up like this, and submit patches targetting > the appropriate tree. > understand, I wanted to divide them. but this patchset is special, the following patches depend on patch 1/5. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCHv2 net 0/5] sctp: some fixes of prsctp polices 2016-09-28 12:35 ` Xin Long @ 2016-09-28 15:17 ` David Miller 2016-09-28 15:44 ` marcelo.leitner 2016-09-28 16:29 ` Xin Long 0 siblings, 2 replies; 12+ messages in thread From: David Miller @ 2016-09-28 15:17 UTC (permalink / raw) To: lucien.xin; +Cc: netdev, linux-sctp, marcelo.leitner, vyasevich, daniel From: Xin Long <lucien.xin@gmail.com> Date: Wed, 28 Sep 2016 20:35:40 +0800 >> >>> This patchset is to improve some codes about prsctp polices, and also >>> to fix some issues. >>> >>> v1->v2: >>> - wrap the check of chunk->sent_count in a macro: >>> sctp_chunk_retransmitted in patch 2/5. >> >> This series is a mix of bug fixes (patch #1) which should be targetting >> 'net' and simplifications/cleanups (patch #2-5) which should be targetting >> 'net-next'. >> >> Please do not mix things up like this, and submit patches targetting >> the appropriate tree. >> > understand, I wanted to divide them. > but this patchset is special, the following patches > depend on patch 1/5. That doesn't matter. This happens all the time. The way you handle this is you submit patch #1 targetting 'net' and wait for it to get into 'net' and propagate into 'net-next'. When that happens you can submit patches #2-5 as a second patch series targetting 'net-next'. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCHv2 net 0/5] sctp: some fixes of prsctp polices 2016-09-28 15:17 ` David Miller @ 2016-09-28 15:44 ` marcelo.leitner 2016-09-28 16:29 ` Xin Long 1 sibling, 0 replies; 12+ messages in thread From: marcelo.leitner @ 2016-09-28 15:44 UTC (permalink / raw) To: David Miller; +Cc: lucien.xin, netdev, linux-sctp, vyasevich, daniel On Wed, Sep 28, 2016 at 11:17:16AM -0400, David Miller wrote: > From: Xin Long <lucien.xin@gmail.com> > Date: Wed, 28 Sep 2016 20:35:40 +0800 > > >> > >>> This patchset is to improve some codes about prsctp polices, and also > >>> to fix some issues. > >>> > >>> v1->v2: > >>> - wrap the check of chunk->sent_count in a macro: > >>> sctp_chunk_retransmitted in patch 2/5. > >> > >> This series is a mix of bug fixes (patch #1) which should be targetting > >> 'net' and simplifications/cleanups (patch #2-5) which should be targetting > >> 'net-next'. > >> > >> Please do not mix things up like this, and submit patches targetting > >> the appropriate tree. > >> > > understand, I wanted to divide them. > > but this patchset is special, the following patches > > depend on patch 1/5. > > That doesn't matter. This happens all the time. > > The way you handle this is you submit patch #1 targetting 'net' and > wait for it to get into 'net' and propagate into 'net-next'. When > that happens you can submit patches #2-5 as a second patch series > targetting 'net-next'. Thanks for your patience for explaining this, David, appreciated. Marcelo ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCHv2 net 0/5] sctp: some fixes of prsctp polices 2016-09-28 15:17 ` David Miller 2016-09-28 15:44 ` marcelo.leitner @ 2016-09-28 16:29 ` Xin Long 1 sibling, 0 replies; 12+ messages in thread From: Xin Long @ 2016-09-28 16:29 UTC (permalink / raw) To: David Miller Cc: network dev, linux-sctp, Marcelo Ricardo Leitner, Vladislav Yasevich, daniel > > That doesn't matter. This happens all the time. > > The way you handle this is you submit patch #1 targetting 'net' and > wait for it to get into 'net' and propagate into 'net-next'. When > that happens you can submit patches #2-5 as a second patch series > targetting 'net-next'. Thanks, will reorganize them. ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2016-09-28 16:29 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-09-28 10:46 [PATCHv2 net 0/5] sctp: some fixes of prsctp polices Xin Long 2016-09-28 10:46 ` [PATCHv2 net 1/5] sctp: move sent_count to the memory hole in sctp_chunk Xin Long 2016-09-28 10:46 ` [PATCHv2 net 2/5] sctp: reuse sent_count to avoid retransmitted chunks for RTT measurements Xin Long 2016-09-28 10:46 ` [PATCHv2 net 3/5] sctp: remove prsctp_param from sctp_chunk Xin Long 2016-09-28 10:46 ` [PATCHv2 net 4/5] sctp: change to check peer prsctp_capable when using prsctp polices Xin Long 2016-09-28 10:46 ` [PATCHv2 net 5/5] sctp: remove the old ttl expires policy Xin Long 2016-09-28 11:22 ` [PATCHv2 net 0/5] sctp: some fixes of prsctp polices Marcelo Ricardo Leitner 2016-09-28 12:13 ` David Miller 2016-09-28 12:35 ` Xin Long 2016-09-28 15:17 ` David Miller 2016-09-28 15:44 ` marcelo.leitner 2016-09-28 16:29 ` Xin Long
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).