diff for duplicates of <53065819.6050603@redhat.com> diff --git a/a/1.txt b/N1/1.txt index 5cf2eeb..e2e2d6a 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -12,7 +12,7 @@ On 02/20/2014 08:26 PM, Vlad Yasevich wrote: > > Interesting. The problem above is actually triggered by > sctp_retransmit(). When the T3-timeout occurs, we have -> active_patch = retrans_path, and even though the timeout +> active_patch == retrans_path, and even though the timeout > occurred on the initial transmission of data, not a retransmit, > we end up updating retransmit path. > @@ -84,7 +84,7 @@ On 02/20/2014 08:26 PM, Vlad Yasevich wrote: ... >> - t = list_entry(pos, struct sctp_transport, transports); >> + /* We're done as we only have the one and only path. */ ->> + if (asoc->peer.transport_count = 1) +>> + if (asoc->peer.transport_count == 1) >> + return; >> > @@ -93,8 +93,8 @@ On 02/20/2014 08:26 PM, Vlad Yasevich wrote: > /* If active_path and retrans_path are the same and active, > * then this is the only active path. Use it. > */ -> if (asoc->peer.active_path = asoc->peer.retrans_path && -> asoc->peer.active_path->state = SCTP_ACTIVE) +> if (asoc->peer.active_path == asoc->peer.retrans_path && +> asoc->peer.active_path->state == SCTP_ACTIVE) > return; Ok, will add and resubmit, thanks Vlad. @@ -103,13 +103,13 @@ Ok, will add and resubmit, thanks Vlad. >> - * other active transports. If so, use the next >> - * transport. >> - */ ->> - if (t = asoc->peer.retran_path) { +>> - if (t == asoc->peer.retran_path) { >> - t = next; >> + /* Iterate from retran_path's successor back to retran_path. */ >> + for (trans = list_next_entry(trans, transports); 1; >> + trans = list_next_entry(trans, transports)) { >> + /* Manually skip the head element. */ ->> + if (&trans->transports = &asoc->peer.transport_addr_list) +>> + if (&trans->transports == &asoc->peer.transport_addr_list) >> + continue; > > Alternative way would be: @@ -118,7 +118,7 @@ Ok, will add and resubmit, thanks Vlad. > ... do the work... > > /* Manually skip head element if it's next */ -> if (list_next_entry(trans, transports) = head) +> if (list_next_entry(trans, transports) == head) > trans = list_first_entry(head); > } > diff --git a/a/content_digest b/N1/content_digest index 3b51884..bd764ae 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -2,7 +2,7 @@ "ref\0530656E7.7010404@gmail.com\0" "From\0Daniel Borkmann <dborkman@redhat.com>\0" "Subject\0Re: [PATCH net] net: sctp: fix multihoming retransmission path selection to rfc4960\0" - "Date\0Thu, 20 Feb 2014 19:31:37 +0000\0" + "Date\0Thu, 20 Feb 2014 20:31:37 +0100\0" "To\0Vlad Yasevich <vyasevich@gmail.com>\0" "Cc\0davem@davemloft.net" netdev@vger.kernel.org @@ -24,7 +24,7 @@ ">\n" "> Interesting. The problem above is actually triggered by\n" "> sctp_retransmit(). When the T3-timeout occurs, we have\n" - "> active_patch = retrans_path, and even though the timeout\n" + "> active_patch == retrans_path, and even though the timeout\n" "> occurred on the initial transmission of data, not a retransmit,\n" "> we end up updating retransmit path.\n" ">\n" @@ -96,7 +96,7 @@ "...\n" ">> -\t\tt = list_entry(pos, struct sctp_transport, transports);\n" ">> +\t/* We're done as we only have the one and only path. */\n" - ">> +\tif (asoc->peer.transport_count = 1)\n" + ">> +\tif (asoc->peer.transport_count == 1)\n" ">> +\t\treturn;\n" ">>\n" ">\n" @@ -105,8 +105,8 @@ "> /* If active_path and retrans_path are the same and active,\n" "> * then this is the only active path. Use it.\n" "> */\n" - "> if (asoc->peer.active_path = asoc->peer.retrans_path &&\n" - "> asoc->peer.active_path->state = SCTP_ACTIVE)\n" + "> if (asoc->peer.active_path == asoc->peer.retrans_path &&\n" + "> asoc->peer.active_path->state == SCTP_ACTIVE)\n" "> return;\n" "\n" "Ok, will add and resubmit, thanks Vlad.\n" @@ -115,13 +115,13 @@ ">> -\t\t * other active transports. If so, use the next\n" ">> -\t\t * transport.\n" ">> -\t\t */\n" - ">> -\t\tif (t = asoc->peer.retran_path) {\n" + ">> -\t\tif (t == asoc->peer.retran_path) {\n" ">> -\t\t\tt = next;\n" ">> +\t/* Iterate from retran_path's successor back to retran_path. */\n" ">> +\tfor (trans = list_next_entry(trans, transports); 1;\n" ">> +\t trans = list_next_entry(trans, transports)) {\n" ">> +\t\t/* Manually skip the head element. */\n" - ">> +\t\tif (&trans->transports = &asoc->peer.transport_addr_list)\n" + ">> +\t\tif (&trans->transports == &asoc->peer.transport_addr_list)\n" ">> +\t\t\tcontinue;\n" ">\n" "> Alternative way would be:\n" @@ -130,7 +130,7 @@ "> ... do the work...\n" ">\n" "> /* Manually skip head element if it's next */\n" - "> if (list_next_entry(trans, transports) = head)\n" + "> if (list_next_entry(trans, transports) == head)\n" "> trans = list_first_entry(head);\n" "> }\n" ">\n" @@ -140,4 +140,4 @@ "\n" Thanks for your feedback Vlad! -361ded9255f5ed62d080f9b458ee6b2a9678a7873c9b2a2b1a87abfbb8208a5d +14d452328475d851e8a282b762fdecfdde0faa91cd90040ee015b2dfad9809e7
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.