This change allows us to more closely follow the Linux behavior. A packet
is only requeued when the device queue is stopped before we attempt to send
the packet to the device. Thus, a packet sent to a netdevice is never requeued.
It turns out that packets can only be requeued if the underlying device is
tc-aware and multi-queue. The PointToPointNetDevice code is updated accordingly.
When a packet is passed to the Traffic Control layer, the IPv{4,6} header has not
been added yet. It will be added when the packet is dequeued from the queue disc.
QueueDisc is a base class providing the interface and implementing
the operations common to all the queueing disciplines. Child classes
need to implement the methods used to enqueue a packet (DoEnqueue),
dequeue a single packet (DoDequeue), get a copy of the next packet
to extract (DoPeek), plus methods to classify enqueued packets in
case they manage multiple queues internally.