mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-03-09 15:40:20 +00:00
Update RPI, should fix memory and USB problem
This commit is contained in:
parent
e632bdc531
commit
91d60c33e0
88 changed files with 9140 additions and 0 deletions
|
|
@ -0,0 +1,88 @@
|
|||
From b3645a487373e2182bd9899a4fe3a2cbf2010e6e Mon Sep 17 00:00:00 2001
|
||||
From: Matteo Croce <mcroce@redhat.com>
|
||||
Date: Sun, 28 Jul 2019 02:46:45 +0200
|
||||
Subject: [PATCH 787/826] mvpp2: refactor MTU change code
|
||||
|
||||
[ Upstream commit 230bd958c2c846ee292aa38bc6b006296c24ca01 ]
|
||||
|
||||
The MTU change code can call napi_disable() with the device already down,
|
||||
leading to a deadlock. Also, lot of code is duplicated unnecessarily.
|
||||
|
||||
Rework mvpp2_change_mtu() to avoid the deadlock and remove duplicated code.
|
||||
|
||||
Fixes: 3f518509dedc ("ethernet: Add new driver for Marvell Armada 375 network unit")
|
||||
Signed-off-by: Matteo Croce <mcroce@redhat.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
.../net/ethernet/marvell/mvpp2/mvpp2_main.c | 41 ++++++-------------
|
||||
1 file changed, 13 insertions(+), 28 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
|
||||
index c357aafee106..6455511457ca 100644
|
||||
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
|
||||
@@ -3501,6 +3501,7 @@ static int mvpp2_set_mac_address(struct net_device *dev, void *p)
|
||||
static int mvpp2_change_mtu(struct net_device *dev, int mtu)
|
||||
{
|
||||
struct mvpp2_port *port = netdev_priv(dev);
|
||||
+ bool running = netif_running(dev);
|
||||
int err;
|
||||
|
||||
if (!IS_ALIGNED(MVPP2_RX_PKT_SIZE(mtu), 8)) {
|
||||
@@ -3509,40 +3510,24 @@ static int mvpp2_change_mtu(struct net_device *dev, int mtu)
|
||||
mtu = ALIGN(MVPP2_RX_PKT_SIZE(mtu), 8);
|
||||
}
|
||||
|
||||
- if (!netif_running(dev)) {
|
||||
- err = mvpp2_bm_update_mtu(dev, mtu);
|
||||
- if (!err) {
|
||||
- port->pkt_size = MVPP2_RX_PKT_SIZE(mtu);
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
- /* Reconfigure BM to the original MTU */
|
||||
- err = mvpp2_bm_update_mtu(dev, dev->mtu);
|
||||
- if (err)
|
||||
- goto log_error;
|
||||
- }
|
||||
-
|
||||
- mvpp2_stop_dev(port);
|
||||
+ if (running)
|
||||
+ mvpp2_stop_dev(port);
|
||||
|
||||
err = mvpp2_bm_update_mtu(dev, mtu);
|
||||
- if (!err) {
|
||||
+ if (err) {
|
||||
+ netdev_err(dev, "failed to change MTU\n");
|
||||
+ /* Reconfigure BM to the original MTU */
|
||||
+ mvpp2_bm_update_mtu(dev, dev->mtu);
|
||||
+ } else {
|
||||
port->pkt_size = MVPP2_RX_PKT_SIZE(mtu);
|
||||
- goto out_start;
|
||||
}
|
||||
|
||||
- /* Reconfigure BM to the original MTU */
|
||||
- err = mvpp2_bm_update_mtu(dev, dev->mtu);
|
||||
- if (err)
|
||||
- goto log_error;
|
||||
-
|
||||
-out_start:
|
||||
- mvpp2_start_dev(port);
|
||||
- mvpp2_egress_enable(port);
|
||||
- mvpp2_ingress_enable(port);
|
||||
+ if (running) {
|
||||
+ mvpp2_start_dev(port);
|
||||
+ mvpp2_egress_enable(port);
|
||||
+ mvpp2_ingress_enable(port);
|
||||
+ }
|
||||
|
||||
- return 0;
|
||||
-log_error:
|
||||
- netdev_err(dev, "failed to change MTU\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
--
|
||||
2.22.0
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue