anchor.diff:                  (setf (vring-desc-address tx-queue pkt-desc) (+ phys (* i +tx-buffer-size+) +virtio-net-hdr-size+)
                         (vring-desc-length tx-queue pkt-desc) (- +tx-buffer-size+ +virtio-net-hdr-size+)
                         (vring-desc-flags tx-queue pkt-desc) 0)
  -                (push hdr-desc (virtio-net-free-tx-buffers dev))))))
  +                (push hdr-desc (virtio-net-free-tx-buffers dev))
  +                (sys.int::signal-semaphore (virtio-net-n-free-tx-buffers dev))))))
           (sys.net:register-nic dev)
           ;; Unmask the IRQ.
           (setf (sys.int::isa-pic-interrupt-handler (sys.int::pci-irq-line pci-device))
  
positive.code:             (dotimes (i (1- queue-size))
                (setf (vring-desc-next vq i) (1+ i)
                      (vring-desc-flags vq i) (ash 1 +vring-desc-f-next+)))
              (setf (virtqueue-n-free-descriptors vq) queue-size
                    (virtqueue-next-free-descriptor vq) 0)))))))
  
  (defun vring-alloc-descriptor (vq)
    (sys.int::process-wait "Alloc vring descriptor"
                           (lambda ()
                             (not (zerop (virtqueue-n-free-descriptors vq)))))
    (let ((id (virtqueue-next-free-descriptor vq)))
      (setf (virtqueue-next-free-descriptor vq)
            (if (logbitp +vring-desc-f-next+ (vring-desc-flags vq id))
                (vring-desc-next vq id)
                nil))
      (decf (virtqueue-n-free-descriptors vq))
      id))
  
  (defun vring-add-to-avail-ring (vq desc)
  
negative.code:   rx-array
    tx-physical
    tx-array
    (n-free-tx-buffers (sys.int::make-semaphore :name "Virtio-Net free tx buffers" :area :static)
                       :read-only t)
    free-tx-buffers
    process
    (irq-semaphore (sys.int::make-semaphore :name "Virtio-Net interrupt" :area :static)
  