c
static void qeth_osa_set_output_queues(struct qeth_card *card, bool single)
{
    unsigned int max = single ? 1 : card->dev->num_tx_queues;
    
    // Acquire the lock before accessing or updating card->qdio.no_out_queues
    mutex_lock(&card->qdio_lock);
    
    if (card->qdio.no_out_queues == max) {
        mutex_unlock(&card->qdio_lock);
        return;
    }
    
    if (atomic_read(&card->qdio.state) != QETH_QDIO_UNINITIALIZED)
        qeth_free_qdio_queues(card);
    
    if (max == 1 && card->qdio.do_prio_queueing != QETH_PRIOQ_DEFAULT)
        dev_info(&card->gdev->dev, "Priority Queueing not supported\n");
    
    card->qdio.no_out_queues = max;
    
    // Release the lock after updating card->qdio.no_out_queues
    mutex_unlock(&card->qdio_lock);
}
