• Jean Tourrilhes's avatar
    irda update 2/7: · d8fd01e8
    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
irttp.h 7.12 KB