]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
ice: use modern kernel API for kick
authorJesse Brandeburg <jesse.brandeburg@intel.com>
Tue, 26 Oct 2021 00:08:26 +0000 (17:08 -0700)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Wed, 15 Dec 2021 16:49:25 +0000 (08:49 -0800)
The kernel gained a new interface for drivers to use to combine tail
bump (doorbell) and BQL updates, attempt to use those new interfaces.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Gurucharan G <gurucharanx.g@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_txrx.c

index de9247d45c392e58d0abee1e4bd19e7d14c1a244..3987a0dd0e11ada37589000c5591d9e14e129b6c 100644 (file)
@@ -1576,6 +1576,7 @@ ice_tx_map(struct ice_tx_ring *tx_ring, struct ice_tx_buf *first,
        struct sk_buff *skb;
        skb_frag_t *frag;
        dma_addr_t dma;
+       bool kick;
 
        td_tag = off->td_l2tag1;
        td_cmd = off->td_cmd;
@@ -1657,9 +1658,6 @@ ice_tx_map(struct ice_tx_ring *tx_ring, struct ice_tx_buf *first,
                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);
 
@@ -1688,7 +1686,10 @@ ice_tx_map(struct ice_tx_ring *tx_ring, struct ice_tx_buf *first,
        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;