Now all ctrl chunks are counted for asoc stats.octrlchunks and net
SCTP_MIB_OUTCTRLCHUNKS either after queuing up or bundling, other
than the chunk maked and bundled in sctp_packet_bundle_sack, which
caused 'outctrlchunks' not consistent with 'inctrlchunks' in peer.

This issue exists since very beginning, here to fix it by increasing
both net SCTP_MIB_OUTCTRLCHUNKS and asoc stats.octrlchunks when sack
chunk is maked and bundled in sctp_packet_bundle_sack.

Reported-by: Ja Ram Jeon <jaj...@redhat.com>
Signed-off-by: Xin Long <lucien....@gmail.com>
---
 net/sctp/output.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/net/sctp/output.c b/net/sctp/output.c
index e0c2747..dbda7e7 100644
--- a/net/sctp/output.c
+++ b/net/sctp/output.c
@@ -282,6 +282,9 @@ static enum sctp_xmit sctp_packet_bundle_sack(struct 
sctp_packet *pkt,
                                        sctp_chunk_free(sack);
                                        goto out;
                                }
+                               SCTP_INC_STATS(sock_net(asoc->base.sk),
+                                              SCTP_MIB_OUTCTRLCHUNKS);
+                               asoc->stats.octrlchunks++;
                                asoc->peer.sack_needed = 0;
                                if (del_timer(timer))
                                        sctp_association_put(asoc);
-- 
2.1.0

Reply via email to