Messages in this thread | | | Date | Wed, 09 Jul 1997 18:41:22 -0400 | From | Philip Gladstone <> | Subject | tcp_ack of sent skb's |
| |
The code in tcp_ack will unlink and free any ack'ed skbs. If this skb is current in the queue for a driver, then this removes it from that queue. However, a couple of drivers (pi2 and pt) have internal transmit queues. For these drivers it would seem that this would cause a significant problem.
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/
| |