]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net: mvpp2: do not update the queue mode while probing
authorAntoine Tenart <antoine.tenart@bootlin.com>
Wed, 19 Sep 2018 09:27:03 +0000 (11:27 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 20 Sep 2018 04:09:54 +0000 (21:09 -0700)
This patch updates the probing function so that the queue mode isn't
updated while probing, as the driver would silently end up using a
configuration not wanted by the user. The patch adds an extra check to
validate the chosen queue mode instead, and the driver will fail to
probe if the configuration is invalid.

Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c

index 6f868be2a8944d950ae2b75bc4350b313dce429e..fdd463a080d5e30fdfce517eb0f28f371e9579f0 100644 (file)
@@ -4240,6 +4240,10 @@ static bool mvpp2_port_has_irqs(struct mvpp2 *priv,
        char name[5];
        int i;
 
+       /* ACPI */
+       if (!port_node)
+               return true;
+
        if (priv->hw_version == MVPP21)
                return false;
 
@@ -4634,16 +4638,13 @@ static int mvpp2_port_probe(struct platform_device *pdev,
        int phy_mode;
        int err, i, cpu;
 
-       if (port_node) {
-               has_tx_irqs = mvpp2_port_has_irqs(priv, port_node, &flags);
-       } else {
-               has_tx_irqs = true;
-               queue_mode = MVPP2_QDIST_MULTI_MODE;
+       has_tx_irqs = mvpp2_port_has_irqs(priv, port_node, &flags);
+       if (!has_tx_irqs && queue_mode == MVPP2_QDIST_MULTI_MODE) {
+               dev_err(&pdev->dev,
+                       "not enough IRQs to support multi queue mode\n");
+               return -EINVAL;
        }
 
-       if (!has_tx_irqs)
-               queue_mode = MVPP2_QDIST_SINGLE_MODE;
-
        ntxqs = MVPP2_MAX_TXQ;
        if (priv->hw_version == MVPP22 && queue_mode == MVPP2_QDIST_MULTI_MODE)
                nrxqs = MVPP2_DEFAULT_RXQ * num_possible_cpus();