* stmmac_mtl_setup - parse DT parameters for multiple queues configuration
  * @pdev: platform device
  */
-static void stmmac_mtl_setup(struct platform_device *pdev,
-                            struct plat_stmmacenet_data *plat)
+static int stmmac_mtl_setup(struct platform_device *pdev,
+                           struct plat_stmmacenet_data *plat)
 {
        struct device_node *q_node;
        struct device_node *rx_node;
        struct device_node *tx_node;
        u8 queue = 0;
+       int ret = 0;
 
        /* For backwards-compatibility with device trees that don't have any
         * snps,mtl-rx-config or snps,mtl-tx-config properties, we fall back
 
        rx_node = of_parse_phandle(pdev->dev.of_node, "snps,mtl-rx-config", 0);
        if (!rx_node)
-               return;
+               return ret;
 
        tx_node = of_parse_phandle(pdev->dev.of_node, "snps,mtl-tx-config", 0);
        if (!tx_node) {
                of_node_put(rx_node);
-               return;
+               return ret;
        }
 
        /* Processing RX queues common config */
 
                queue++;
        }
+       if (queue != plat->rx_queues_to_use) {
+               ret = -EINVAL;
+               dev_err(&pdev->dev, "Not all RX queues were configured\n");
+               goto out;
+       }
 
        /* Processing TX queues common config */
        if (of_property_read_u32(tx_node, "snps,tx-queues-to-use",
 
                queue++;
        }
+       if (queue != plat->tx_queues_to_use) {
+               ret = -EINVAL;
+               dev_err(&pdev->dev, "Not all TX queues were configured\n");
+               goto out;
+       }
 
+out:
        of_node_put(rx_node);
        of_node_put(tx_node);
        of_node_put(q_node);
+
+       return ret;
 }
 
 /**
        struct device_node *np = pdev->dev.of_node;
        struct plat_stmmacenet_data *plat;
        struct stmmac_dma_cfg *dma_cfg;
+       int rc;
 
        plat = devm_kzalloc(&pdev->dev, sizeof(*plat), GFP_KERNEL);
        if (!plat)
 
        plat->axi = stmmac_axi_setup(pdev);
 
-       stmmac_mtl_setup(pdev, plat);
+       rc = stmmac_mtl_setup(pdev, plat);
+       if (rc) {
+               stmmac_remove_config_dt(pdev, plat);
+               return ERR_PTR(rc);
+       }
 
        /* clock setup */
        plat->stmmac_clk = devm_clk_get(&pdev->dev,