Merge tag 'net-next-6.5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev...
[platform/kernel/linux-starfive.git] / drivers / net / ethernet / marvell / octeontx2 / nic / otx2_vf.c
index 7baed6b..35e0604 100644 (file)
@@ -70,10 +70,6 @@ static void otx2vf_process_vfaf_mbox_msg(struct otx2_nic *vf,
        case MBOX_MSG_NIX_LF_ALLOC:
                mbox_handler_nix_lf_alloc(vf, (struct nix_lf_alloc_rsp *)msg);
                break;
-       case MBOX_MSG_NIX_TXSCH_ALLOC:
-               mbox_handler_nix_txsch_alloc(vf,
-                                            (struct nix_txsch_alloc_rsp *)msg);
-               break;
        case MBOX_MSG_NIX_BP_ENABLE:
                mbox_handler_nix_bp_enable(vf, (struct nix_bp_cfg_rsp *)msg);
                break;
@@ -478,6 +474,7 @@ static const struct net_device_ops otx2vf_netdev_ops = {
        .ndo_open = otx2vf_open,
        .ndo_stop = otx2vf_stop,
        .ndo_start_xmit = otx2vf_xmit,
+       .ndo_select_queue = otx2_select_queue,
        .ndo_set_rx_mode = otx2vf_set_rx_mode,
        .ndo_set_mac_address = otx2_set_mac_address,
        .ndo_change_mtu = otx2vf_change_mtu,
@@ -523,10 +520,10 @@ static int otx2vf_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 {
        int num_vec = pci_msix_vec_count(pdev);
        struct device *dev = &pdev->dev;
+       int err, qcount, qos_txqs;
        struct net_device *netdev;
        struct otx2_nic *vf;
        struct otx2_hw *hw;
-       int err, qcount;
 
        err = pcim_enable_device(pdev);
        if (err) {
@@ -549,7 +546,8 @@ static int otx2vf_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        pci_set_master(pdev);
 
        qcount = num_online_cpus();
-       netdev = alloc_etherdev_mqs(sizeof(*vf), qcount, qcount);
+       qos_txqs = min_t(int, qcount, OTX2_QOS_MAX_LEAF_NODES);
+       netdev = alloc_etherdev_mqs(sizeof(*vf), qcount + qos_txqs, qcount);
        if (!netdev) {
                err = -ENOMEM;
                goto err_release_regions;
@@ -569,7 +567,7 @@ static int otx2vf_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        hw->rx_queues = qcount;
        hw->tx_queues = qcount;
        hw->max_queues = qcount;
-       hw->tot_tx_queues = qcount;
+       hw->non_qos_queues = qcount;
        hw->rbuf_len = OTX2_DEFAULT_RBUF_LEN;
        /* Use CQE of 128 byte descriptor size by default */
        hw->xqe_size = 128;
@@ -698,6 +696,7 @@ static int otx2vf_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        if (err)
                goto err_shutdown_tc;
 #endif
+       otx2_qos_init(vf, qos_txqs);
 
        return 0;
 
@@ -760,6 +759,7 @@ static void otx2vf_remove(struct pci_dev *pdev)
        otx2_ptp_destroy(vf);
        otx2_mcam_flow_del(vf);
        otx2_shutdown_tc(vf);
+       otx2_shutdown_qos(vf);
        otx2vf_disable_mbox_intr(vf);
        otx2_detach_resources(&vf->mbox);
        free_percpu(vf->hw.lmt_info);