struct sk_buff *skb;
        skb_frag_t *frag;
        dma_addr_t dma;
+       bool kick;
 
        td_tag = off->td_l2tag1;
        td_cmd = off->td_cmd;
                tx_buf = &tx_ring->tx_buf[i];
        }
 
-       /* record bytecount for BQL */
-       netdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount);
-
        /* record SW timestamp if HW timestamp is not available */
        skb_tx_timestamp(first->skb);
 
        ice_maybe_stop_tx(tx_ring, DESC_NEEDED);
 
        /* notify HW of packet */
-       if (netif_xmit_stopped(txring_txq(tx_ring)) || !netdev_xmit_more())
+       kick = __netdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount,
+                                     netdev_xmit_more());
+       if (kick)
+               /* notify HW of packet */
                writel(i, tx_ring->tail);
 
        return;