What appears to happen is that the kfree_skb gets called
which doesn't free the skb as it is locked. However, the
pointer to the skb is lost (forever), and so it never frees.
The alternative would seem to be to explicitly unlock the
skb just after putting it on the driver internal queue, and then
relock it at dequeue time. This would mean (I think) that the
tcp_ack code would take the skb off the driver internal queue.
Am I making sense?
Philip
-- Philip Gladstone +1 617 487 7700 Raptor Systems, Waltham, MA http://www.raptor.com/