caif: Add support for flow-control on device's tx-queue
authorsjur.brandeland@stericsson.com <sjur.brandeland@stericsson.com>
Sun, 4 Dec 2011 11:22:54 +0000 (11:22 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 5 Dec 2011 23:27:56 +0000 (18:27 -0500)
commit0e4c7d85d5e522d5839bdc5745235428faf38d44
tree99506bac6e5cbefffc2358a5c85c76950b265efe
parent7ad65bf68d705b445ef10b77ab50dab22be185ee
caif: Add support for flow-control on device's tx-queue

Flow control is implemented by inspecting the qdisc queue length
in order to detect potential overflow on the TX queue. When a threshold
is reached flow-off is sent upwards in the CAIF stack. At the same time
the skb->destructor is hi-jacked by orphaning the SKB and the original
destructor is replaced with a "flow-on" callback. When the "hi-jacked"
SKB is consumed the queue should be empty, and the "flow-on" callback
is called and xon is sent upwards in the CAIF stack.

Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/caif/caif_dev.c