return cnt;
 }
 
-bool mlx4_en_process_tx_cq(struct net_device *dev,
-                          struct mlx4_en_cq *cq, int napi_budget)
+int mlx4_en_process_tx_cq(struct net_device *dev,
+                         struct mlx4_en_cq *cq, int napi_budget)
 {
        struct mlx4_en_priv *priv = netdev_priv(dev);
        struct mlx4_cq *mcq = &cq->mcq;
        u32 ring_cons;
 
        if (unlikely(!priv->port_up))
-               return true;
+               return 0;
 
        netdev_txq_bql_complete_prefetchw(ring->tx_queue);
 
        WRITE_ONCE(ring->cons, ring_cons + txbbs_skipped);
 
        if (cq->type == TX_XDP)
-               return done < budget;
+               return done;
 
        netdev_tx_completed_queue(ring->tx_queue, packets, bytes);
 
                ring->wake_queue++;
        }
 
-       return done < budget;
+       return done;
 }
 
 void mlx4_en_tx_irq(struct mlx4_cq *mcq)
        struct mlx4_en_cq *cq = container_of(napi, struct mlx4_en_cq, napi);
        struct net_device *dev = cq->dev;
        struct mlx4_en_priv *priv = netdev_priv(dev);
-       bool clean_complete;
+       int work_done;
 
-       clean_complete = mlx4_en_process_tx_cq(dev, cq, budget);
-       if (!clean_complete)
+       work_done = mlx4_en_process_tx_cq(dev, cq, budget);
+       if (work_done >= budget)
                return budget;
 
-       napi_complete(napi);
-       mlx4_en_arm_cq(priv, cq);
+       if (napi_complete_done(napi, work_done))
+               mlx4_en_arm_cq(priv, cq);
 
        return 0;
 }
 
                          int budget);
 int mlx4_en_poll_rx_cq(struct napi_struct *napi, int budget);
 int mlx4_en_poll_tx_cq(struct napi_struct *napi, int budget);
-bool mlx4_en_process_tx_cq(struct net_device *dev,
-                          struct mlx4_en_cq *cq, int napi_budget);
+int mlx4_en_process_tx_cq(struct net_device *dev,
+                         struct mlx4_en_cq *cq, int napi_budget);
 u32 mlx4_en_free_tx_desc(struct mlx4_en_priv *priv,
                         struct mlx4_en_tx_ring *ring,
                         int index, u64 timestamp,