anchor.diff:              ;; Recover free descriptors.
               (with-rtl8168-access (nic)
                 (loop
  -                 (when (eql (rtl8168-tx-current nic) (rtl8168-tx-tail nic))
  +                 (when (eql (rtl8168-tx-used-count nic) 0)
                      ;; All pending descriptors processed.
                      (return))
                    (when (logbitp +rtl8168-descriptor-OWN+ (rtl8168-tx-desc-flags nic (rtl8168-tx-tail nic)))
  
positive.code:                  #+(or)(debug-print-line "RTL8168 transmitted packet on descriptor " (rtl8168-tx-tail nic))))
              ;; Send pending packets.
              (loop
                 (when (eql (rtl8168-tx-used-count nic) +rtl8168-n-tx-descriptors+)
                   ;; Don't transmit when there are no free descriptors.
                   #+(or)(debug-print-line "RTL8168 not transmitting - no free descriptors.")
                   (return))
  
negative.code:          (loop
              ;; Wait for something to happen.
              ;; Either an interrupt, a request to send, or the device's boot epoch expiring.
              (if (tx-descriptors-available-p nic)
                  (sync:wait-for-objects (rtl8168-irq-handler nic)
                                         (rtl8168-tx-mailbox nic)
                                         (rtl8168-boot-id nic))
                  ;; Don't look in the TX mailbox if all descriptors are full.
                  (sync:wait-for-objects (rtl8168-irq-handler nic)
                                         (rtl8168-boot-id nic)))
              ;; Perform receive handling. Remove packets from the RX ring
              ;; until there are none left.
              (loop
  