<div dir="ltr"><img width="0" height="0" class="mailtrack-img" src="https://mailtrack.io/trace/mail/d0c134909d8c72cdb92e626b7253ab52ff52b58c.png?u=1093885">Hello,<div><br></div><div>I am Vignesh, and I am new to this mailing list. I have been going through the Cobalt AQM algorithm implemented in the Cake framework since the last two weeks. Here is the link :</div><div><br></div><div>The C file : <a href="https://github.com/dtaht/sch_cake/blob/master/cobalt.c">https://github.com/dtaht/sch_cake/blob/master/cobalt.c</a></div><div>The header file : <a href="https://github.com/dtaht/sch_cake/blob/master/cobalt.h">https://github.com/dtaht/sch_cake/blob/master/cobalt.h</a></div><div><br></div><div>I have also been following the discussions happening about Cobalt on the Bufferbloat mailing list. So I am having problems relating the two sources just mentioned above (the implementation and the discussion). According to my understanding of the Codel algorithm, the count variable (which keeps track of the number of packets dropped in the currently running dropping state) is never really decremented iteratively.</div><div><br></div><div>However the Cobalt implementation reduces count iteratively (in line 234 of the file cobalt.c) under certain circumstances and this is happening in the function named cobalt_should_drop( ) which is called to determine if Cobalt should drop the packet or dequeue it. It would be great if someone could throw light on what is exactly happening in this function and also a comprehensive explanation of Cobalt itself would be appreciated. </div><div><br></div><div>Thanks! </div><div><br><br><br><br></div></div>