aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAntoine Tenart <antoine.tenart@bootlin.com>2018-09-19 11:27:03 +0200
committerDavid S. Miller <davem@davemloft.net>2018-09-19 21:09:54 -0700
commitfd4a1056884e191948550a674072ba78b19f420b (patch)
tree0a5dd106daced75e1943568d6f0fffc3dc0f8ea8 /drivers
parentDocumentation/bindings: net: marvell-pp2: update the IRQs description (diff)
downloadlinux-dev-fd4a1056884e191948550a674072ba78b19f420b.tar.xz
linux-dev-fd4a1056884e191948550a674072ba78b19f420b.zip
net: mvpp2: do not update the queue mode while probing
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index 6f868be2a894..fdd463a080d5 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -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();