irda update 2/7:
authorJean Tourrilhes <jt@hpl.hp.com>
Tue, 30 Apr 2002 18:04:25 +0000 (14:04 -0400)
committerLinus Torvalds <torvalds@home.transmeta.com>
Tue, 30 Apr 2002 18:04:25 +0000 (14:04 -0400)
commitd8fd01e863b7446e9d37d1cf7ab1ebfae7262216
treedde045707fc4961b64d495eeff41d79545e1d677
parent4b1a0f62dcd5bc14f88cadf839656a49f4de6004
irda update 2/7:
        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 ;-)
include/net/irda/irttp.h
net/irda/irttp.c