netdev_tx_t mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
                          struct mlx5e_tx_wqe *wqe, u16 pi, bool xmit_more);
 
+void mlx5e_trigger_irq(struct mlx5e_icosq *sq);
 void mlx5e_completion_event(struct mlx5_core_cq *mcq);
 void mlx5e_cq_error_event(struct mlx5_core_cq *mcq, enum mlx5_event event);
 int mlx5e_napi_poll(struct napi_struct *napi, int budget);
 
 
 static void mlx5e_activate_rq(struct mlx5e_rq *rq)
 {
-       struct mlx5e_icosq *sq = &rq->channel->icosq;
-       struct mlx5_wq_cyc *wq = &sq->wq;
-       struct mlx5e_tx_wqe *nopwqe;
-
-       u16 pi = mlx5_wq_cyc_ctr2ix(wq, sq->pc);
-
        set_bit(MLX5E_RQ_STATE_ENABLED, &rq->state);
-       sq->db.ico_wqe[pi].opcode     = MLX5_OPCODE_NOP;
-       nopwqe = mlx5e_post_nop(wq, sq->sqn, &sq->pc);
-       mlx5e_notify_hw(wq, sq->pc, sq->uar_map, &nopwqe->ctrl);
+       mlx5e_trigger_irq(&rq->channel->icosq);
 }
 
 static void mlx5e_deactivate_rq(struct mlx5e_rq *rq)
 
        net_dim(&rq->dim, dim_sample);
 }
 
+void mlx5e_trigger_irq(struct mlx5e_icosq *sq)
+{
+       struct mlx5_wq_cyc *wq = &sq->wq;
+       struct mlx5e_tx_wqe *nopwqe;
+       u16 pi = mlx5_wq_cyc_ctr2ix(wq, sq->pc);
+
+       sq->db.ico_wqe[pi].opcode = MLX5_OPCODE_NOP;
+       nopwqe = mlx5e_post_nop(wq, sq->sqn, &sq->pc);
+       mlx5e_notify_hw(wq, sq->pc, sq->uar_map, &nopwqe->ctrl);
+}
+
 int mlx5e_napi_poll(struct napi_struct *napi, int budget)
 {
        struct mlx5e_channel *c = container_of(napi, struct mlx5e_channel,