-
Jean Tourrilhes authored
o [CORRECT] Fix race condition when starting todo timer o [CORRECT] Fix race condition when stopping higher layer Higher layer would think it is stopped and us it is started o [CORRECT] Give credit even if packets in Tx queue If Tx queue was stopped, could starve peer and deadlock o [CORRECT] Protect Rx credit update with spinlock o [CORRECT] Calculate properly self->avail_credit Didn't take into account queued Rx fragments Incremented even if Rx frame not delivered to higher layer -> would never stop the peer (i.e. not flow control) -> could become infinite o [CORRECT] Send credit when higher layer reenable receive Peer wouldn't restart Tx to us if flow stopped o [FEATURE] Implement LAP queue not full notification Lower latency, ... o [FEATURE] Reduce Tx queue to 8 packets (from 10) But make sure we can always send a full LAP window (7) o [FEATURE] Fix and optimise TTP flow control Make sure peer can always send a full LAP window (7) Minimise explicit credit updates (give_credit) o [FEATURE] Remove need for todo timer in Tx/Rx paths Less potential races, lower latency, lower context switches Could not use tasklet because broken API, better anyway ;-)
d8fd01e8