Lines Matching defs:qset

441 static void fun_free_rings(struct net_device *netdev, struct fun_qset *qset)
444 struct funeth_txq **xdpqs = qset->xdpqs;
445 struct funeth_rxq **rxqs = qset->rxqs;
447 /* qset may not specify any queues to operate on. In that case the
453 qset->txqs = fp->txqs;
454 qset->nrxqs = netdev->real_num_rx_queues;
455 qset->ntxqs = netdev->real_num_tx_queues;
456 qset->nxdpqs = fp->num_xdpqs;
468 free_rxqs(rxqs, qset->nrxqs, qset->rxq_start, qset->state);
469 free_txqs(qset->txqs, qset->ntxqs, qset->txq_start, qset->state);
470 free_xdpqs(xdpqs, qset->nxdpqs, qset->xdpq_start, qset->state);
471 if (qset->state == FUN_QSTATE_DESTROYED)
475 qset->rxqs = rxqs;
476 qset->xdpqs = xdpqs;
479 static int fun_alloc_rings(struct net_device *netdev, struct fun_qset *qset)
485 err = fun_alloc_queue_irqs(netdev, qset->ntxqs, qset->nrxqs);
489 rxqs = kcalloc(qset->ntxqs + qset->nrxqs, sizeof(*rxqs), GFP_KERNEL);
493 if (qset->nxdpqs) {
494 xdpqs = alloc_xdpqs(netdev, qset->nxdpqs, qset->sq_depth,
495 qset->xdpq_start, qset->state);
502 txqs = (struct funeth_txq **)&rxqs[qset->nrxqs];
503 err = alloc_txqs(netdev, txqs, qset->ntxqs, qset->sq_depth,
504 qset->txq_start, qset->state);
508 err = alloc_rxqs(netdev, rxqs, qset->nrxqs, qset->cq_depth,
509 qset->rq_depth, qset->rxq_start, qset->state);
513 qset->rxqs = rxqs;
514 qset->txqs = txqs;
515 qset->xdpqs = xdpqs;
519 free_txqs(txqs, qset->ntxqs, qset->txq_start, FUN_QSTATE_DESTROYED);
521 free_xdpqs(xdpqs, qset->nxdpqs, qset->xdpq_start, FUN_QSTATE_DESTROYED);
530 static int fun_advance_ring_state(struct net_device *dev, struct fun_qset *qset)
535 for (i = 0; i < qset->nrxqs; i++) {
536 err = fun_rxq_create_dev(qset->rxqs[i],
543 for (i = 0; i < qset->ntxqs; i++) {
544 err = fun_txq_create_dev(qset->txqs[i], xa_load(&fp->irqs, i));
549 for (i = 0; i < qset->nxdpqs; i++) {
550 err = fun_txq_create_dev(qset->xdpqs[i], NULL);
558 fun_free_rings(dev, qset);
741 static void fun_down(struct net_device *dev, struct fun_qset *qset)
765 fun_free_rings(dev, qset);
768 static int fun_up(struct net_device *dev, struct fun_qset *qset)
786 if (qset->rxqs[0]->init_state < FUN_QSTATE_INIT_FULL) {
787 err = fun_advance_ring_state(dev, qset);
796 fp->txqs = qset->txqs;
797 rcu_assign_pointer(fp->rxqs, qset->rxqs);
798 rcu_assign_pointer(fp->xdpqs, qset->xdpqs);
811 qset->rxqs[0]->hw_cqid);
830 fun_free_rings(dev, qset);
837 struct fun_qset qset = {
848 rc = fun_alloc_rings(netdev, &qset);
852 rc = fun_up(netdev, &qset);
854 qset.state = FUN_QSTATE_DESTROYED;
855 fun_free_rings(netdev, &qset);
863 struct fun_qset qset = { .state = FUN_QSTATE_DESTROYED };
865 fun_down(netdev, &qset);