c
static void qeth_osa_set_output_queues(struct qeth_card *card, bool single)
{
    unsigned int max = single ? 1 : card->dev->num_tx_queues;
    
    if (card->qdio.no_out_queues == max)
        return;
    
    if (atomic_read(&card->qdio.state) != QETH_QDIO_UNINITIALIZED)
        qeth_free_qdio_queues(card);
    
    // Reinitialize or allocate new output queues as needed
    for (int i = 0; i < max; i++) {
        if (!card->qdio.out_qs[i])
            card->qdio.out_qs[i] = qeth_alloc_output_queue();
    }
    
    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;
}
