diff --git a/bes2600/queue.c b/bes2600/queue.c index b56ca43..1e8390f 100644 --- a/bes2600/queue.c +++ b/bes2600/queue.c @@ -827,19 +827,19 @@ int bes2600_queue_get_skb(struct bes2600_queue *queue, u32 packetID, bes2600_queue_parse_id(packetID, &queue_generation, &queue_id, &item_generation, &item_id, &if_id, &link_id); - spin_lock(&queue->stats->hw_priv->tx_loop.pending_record_lock); + spin_lock_bh(&queue->stats->hw_priv->tx_loop.pending_record_lock); if (!list_empty(&queue->stats->hw_priv->tx_loop.pending_record_list)) { list_for_each_entry_safe(record_item, temp_record_item, &queue->stats->hw_priv->tx_loop.pending_record_list, head) { if (record_item->packetID == packetID) { list_del(&record_item->head); dev_kfree_skb(record_item->skb); kfree(record_item); - spin_unlock(&queue->stats->hw_priv->tx_loop.pending_record_lock); + spin_unlock_bh(&queue->stats->hw_priv->tx_loop.pending_record_lock); return -EINVAL; } } } - spin_unlock(&queue->stats->hw_priv->tx_loop.pending_record_lock); + spin_unlock_bh(&queue->stats->hw_priv->tx_loop.pending_record_lock); item = &queue->pool[item_id]; diff --git a/bes2600/tx_loop.c b/bes2600/tx_loop.c index e6cf072..0cf7ce1 100644 --- a/bes2600/tx_loop.c +++ b/bes2600/tx_loop.c @@ -109,9 +109,9 @@ void bes2600_tx_loop_set_enable(struct bes2600_common *hw_priv, bool need_warn) bes2600_queue_iterate_pending_packet(&hw_priv->tx_queue[i], bes2600_tx_loop_item_pending_item); } - spin_lock(&hw_priv->tx_loop.pending_record_lock); + spin_lock_bh(&hw_priv->tx_loop.pending_record_lock); bes2600_queue_iterate_record_pending_packet(hw_priv, bes2600_tx_loop_item_pending_item); - spin_unlock(&hw_priv->tx_loop.pending_record_lock); + spin_unlock_bh(&hw_priv->tx_loop.pending_record_lock); if (atomic_read(&hw_priv->bh_rx) > 0) wake_up(&hw_priv->bh_wq);