|
|
|
@ -278,7 +278,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
|
|
|
|
|
if (!pp->neta_armada3700) {
|
|
|
|
|
for_each_online_cpu(cpu) {
|
|
|
|
|
@@ -3252,103 +3209,232 @@ static int mvneta_set_mac_addr(struct ne
|
|
|
|
|
@@ -3251,103 +3208,232 @@ static int mvneta_set_mac_addr(struct ne
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -585,7 +585,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Electing a CPU must be done in an atomic way: it should be done
|
|
|
|
|
@@ -3627,10 +3713,9 @@ static int mvneta_stop(struct net_device
|
|
|
|
|
@@ -3626,10 +3712,9 @@ static int mvneta_stop(struct net_device
|
|
|
|
|
|
|
|
|
|
static int mvneta_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
|
|
|
|
{
|
|
|
|
@ -598,7 +598,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Ethtool methods */
|
|
|
|
|
@@ -3641,44 +3726,25 @@ mvneta_ethtool_set_link_ksettings(struct
|
|
|
|
|
@@ -3640,44 +3725,25 @@ mvneta_ethtool_set_link_ksettings(struct
|
|
|
|
|
const struct ethtool_link_ksettings *cmd)
|
|
|
|
|
{
|
|
|
|
|
struct mvneta_port *pp = netdev_priv(ndev);
|
|
|
|
@ -657,7 +657,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Set interrupt coalescing for ethtools */
|
|
|
|
|
@@ -3770,6 +3836,22 @@ static int mvneta_ethtool_set_ringparam(
|
|
|
|
|
@@ -3769,6 +3835,22 @@ static int mvneta_ethtool_set_ringparam(
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -680,7 +680,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
static void mvneta_ethtool_get_strings(struct net_device *netdev, u32 sset,
|
|
|
|
|
u8 *data)
|
|
|
|
|
{
|
|
|
|
|
@@ -3786,26 +3868,35 @@ static void mvneta_ethtool_update_stats(
|
|
|
|
|
@@ -3785,26 +3867,35 @@ static void mvneta_ethtool_update_stats(
|
|
|
|
|
{
|
|
|
|
|
const struct mvneta_statistic *s;
|
|
|
|
|
void __iomem *base = pp->base;
|
|
|
|
@ -721,7 +721,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -3940,28 +4031,65 @@ static int mvneta_ethtool_get_rxfh(struc
|
|
|
|
|
@@ -3939,28 +4030,65 @@ static int mvneta_ethtool_get_rxfh(struc
|
|
|
|
|
static void mvneta_ethtool_get_wol(struct net_device *dev,
|
|
|
|
|
struct ethtool_wolinfo *wol)
|
|
|
|
|
{
|
|
|
|
@ -795,7 +795,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
static u16 mvneta_select_queue(struct net_device *dev, struct sk_buff *skb,
|
|
|
|
|
void *accel_priv,
|
|
|
|
|
select_queue_fallback_t fallback)
|
|
|
|
|
@@ -3985,13 +4113,15 @@ static const struct net_device_ops mvnet
|
|
|
|
|
@@ -3984,13 +4112,15 @@ static const struct net_device_ops mvnet
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const struct ethtool_ops mvneta_eth_tool_ops = {
|
|
|
|
@ -812,7 +812,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
.get_strings = mvneta_ethtool_get_strings,
|
|
|
|
|
.get_ethtool_stats = mvneta_ethtool_get_stats,
|
|
|
|
|
.get_sset_count = mvneta_ethtool_get_sset_count,
|
|
|
|
|
@@ -3999,10 +4129,12 @@ static const struct ethtool_ops mvneta_e
|
|
|
|
|
@@ -3998,10 +4128,12 @@ static const struct ethtool_ops mvneta_e
|
|
|
|
|
.get_rxnfc = mvneta_ethtool_get_rxnfc,
|
|
|
|
|
.get_rxfh = mvneta_ethtool_get_rxfh,
|
|
|
|
|
.set_rxfh = mvneta_ethtool_set_rxfh,
|
|
|
|
@ -826,7 +826,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* Initialize hw */
|
|
|
|
|
@@ -4147,14 +4279,13 @@ static int mvneta_probe(struct platform_
|
|
|
|
|
@@ -4146,14 +4278,13 @@ static int mvneta_probe(struct platform_
|
|
|
|
|
{
|
|
|
|
|
struct resource *res;
|
|
|
|
|
struct device_node *dn = pdev->dev.of_node;
|
|
|
|
@ -842,7 +842,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
int tx_csum_limit;
|
|
|
|
|
int phy_mode;
|
|
|
|
|
int err;
|
|
|
|
|
@@ -4170,31 +4301,11 @@ static int mvneta_probe(struct platform_
|
|
|
|
|
@@ -4169,31 +4300,11 @@ static int mvneta_probe(struct platform_
|
|
|
|
|
goto err_free_netdev;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -875,7 +875,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dev->tx_queue_len = MVNETA_MAX_TXD;
|
|
|
|
|
@@ -4205,12 +4316,7 @@ static int mvneta_probe(struct platform_
|
|
|
|
|
@@ -4204,12 +4315,7 @@ static int mvneta_probe(struct platform_
|
|
|
|
|
|
|
|
|
|
pp = netdev_priv(dev);
|
|
|
|
|
spin_lock_init(&pp->lock);
|
|
|
|
@ -889,7 +889,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
|
|
|
|
|
pp->rxq_def = rxq_def;
|
|
|
|
|
|
|
|
|
|
@@ -4232,7 +4338,7 @@ static int mvneta_probe(struct platform_
|
|
|
|
|
@@ -4231,7 +4337,7 @@ static int mvneta_probe(struct platform_
|
|
|
|
|
pp->clk = devm_clk_get(&pdev->dev, NULL);
|
|
|
|
|
if (IS_ERR(pp->clk)) {
|
|
|
|
|
err = PTR_ERR(pp->clk);
|
|
|
|
@ -898,7 +898,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
clk_prepare_enable(pp->clk);
|
|
|
|
|
@@ -4358,6 +4464,14 @@ static int mvneta_probe(struct platform_
|
|
|
|
|
@@ -4357,6 +4463,14 @@ static int mvneta_probe(struct platform_
|
|
|
|
|
/* 9676 == 9700 - 20 and rounding to 8 */
|
|
|
|
|
dev->max_mtu = 9676;
|
|
|
|
|
|
|
|
|
@ -913,7 +913,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
err = register_netdev(dev);
|
|
|
|
|
if (err < 0) {
|
|
|
|
|
dev_err(&pdev->dev, "failed to register\n");
|
|
|
|
|
@@ -4369,14 +4483,6 @@ static int mvneta_probe(struct platform_
|
|
|
|
|
@@ -4368,14 +4482,6 @@ static int mvneta_probe(struct platform_
|
|
|
|
|
|
|
|
|
|
platform_set_drvdata(pdev, pp->dev);
|
|
|
|
|
|
|
|
|
@ -928,7 +928,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
err_netdev:
|
|
|
|
|
@@ -4387,16 +4493,14 @@ err_netdev:
|
|
|
|
|
@@ -4386,16 +4492,14 @@ err_netdev:
|
|
|
|
|
1 << pp->id);
|
|
|
|
|
}
|
|
|
|
|
err_free_stats:
|
|
|
|
@ -947,7 +947,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
err_free_irq:
|
|
|
|
|
irq_dispose_mapping(dev->irq);
|
|
|
|
|
err_free_netdev:
|
|
|
|
|
@@ -4408,7 +4512,6 @@ err_free_netdev:
|
|
|
|
|
@@ -4407,7 +4511,6 @@ err_free_netdev:
|
|
|
|
|
static int mvneta_remove(struct platform_device *pdev)
|
|
|
|
|
{
|
|
|
|
|
struct net_device *dev = platform_get_drvdata(pdev);
|
|
|
|
@ -955,7 +955,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
struct mvneta_port *pp = netdev_priv(dev);
|
|
|
|
|
|
|
|
|
|
unregister_netdev(dev);
|
|
|
|
|
@@ -4416,10 +4519,8 @@ static int mvneta_remove(struct platform
|
|
|
|
|
@@ -4415,10 +4518,8 @@ static int mvneta_remove(struct platform
|
|
|
|
|
clk_disable_unprepare(pp->clk);
|
|
|
|
|
free_percpu(pp->ports);
|
|
|
|
|
free_percpu(pp->stats);
|
|
|
|
@ -967,7 +967,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
|
|
|
|
free_netdev(dev);
|
|
|
|
|
|
|
|
|
|
if (pp->bm_priv) {
|
|
|
|
|
@@ -4471,9 +4572,6 @@ static int mvneta_resume(struct device *
|
|
|
|
|
@@ -4470,9 +4571,6 @@ static int mvneta_resume(struct device *
|
|
|
|
|
return err;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|