From: Michal Kalderon <michal.kalde...@cavium.com>
Date: Tue, 3 Oct 2017 11:54:56 +0300

> @@ -423,6 +423,41 @@ static void qed_ll2_rxq_parse_reg(struct qed_hwfn 
> *p_hwfn,
>  }
>  
>  static int
> +qed_ll2_handle_slowpath(struct qed_hwfn *p_hwfn,
> +                     struct qed_ll2_info *p_ll2_conn,
> +                     union core_rx_cqe_union *p_cqe,
> +                     unsigned long *p_lock_flags)
> +{
 ...
> +     spin_unlock_irqrestore(&p_rx->lock, *p_lock_flags);
> +

You can't drop this lock.

Another thread can enter the loop of our caller and process RX queue
entries, then we would return from here and try to process the same
entries again.

Reply via email to