diff options
author | Chuanhong Guo <gch981213@gmail.com> | 2019-01-11 13:18:30 +0800 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2019-03-24 01:44:26 +0100 |
commit | d6366ce3665f010a7ae7061a557689643073040a (patch) | |
tree | 63a8027c3a7763a05f6297b11f67cd5ef53f6091 /target/linux/generic | |
parent | 9fc506e9b2e40db8f3a6df5b59556e59351e376f (diff) | |
download | upstream-d6366ce3665f010a7ae7061a557689643073040a.tar.gz upstream-d6366ce3665f010a7ae7061a557689643073040a.tar.bz2 upstream-d6366ce3665f010a7ae7061a557689643073040a.zip |
generic: ar8216: mib_work_func: read all port mibs everytime
ar8xxx_mib_capture will update mib counters for all ports. Current
code only update one port at a time and the data for other ports
are lost.
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
Diffstat (limited to 'target/linux/generic')
-rw-r--r-- | target/linux/generic/files/drivers/net/phy/ar8216.c | 13 | ||||
-rw-r--r-- | target/linux/generic/files/drivers/net/phy/ar8216.h | 1 |
2 files changed, 5 insertions, 9 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.c b/target/linux/generic/files/drivers/net/phy/ar8216.c index c62411c9c1..a33d4b31fe 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8216.c +++ b/target/linux/generic/files/drivers/net/phy/ar8216.c @@ -2189,7 +2189,7 @@ static void ar8xxx_mib_work_func(struct work_struct *work) { struct ar8xxx_priv *priv; - int err; + int err, i; priv = container_of(work, struct ar8xxx_priv, mib_work.work); @@ -2197,15 +2197,12 @@ ar8xxx_mib_work_func(struct work_struct *work) err = ar8xxx_mib_capture(priv); if (err) - goto next_port; - - ar8xxx_mib_fetch_port_stat(priv, priv->mib_next_port, false); + goto next_attempt; -next_port: - priv->mib_next_port++; - if (priv->mib_next_port >= priv->dev.ports) - priv->mib_next_port = 0; + for (i = 0; i < priv->dev.ports; i++) + ar8xxx_mib_fetch_port_stat(priv, i, false); +next_attempt: mutex_unlock(&priv->mib_lock); schedule_delayed_work(&priv->mib_work, msecs_to_jiffies(AR8XXX_MIB_WORK_DELAY)); diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.h b/target/linux/generic/files/drivers/net/phy/ar8216.h index 9b39064551..e9e8331786 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8216.h +++ b/target/linux/generic/files/drivers/net/phy/ar8216.h @@ -488,7 +488,6 @@ struct ar8xxx_priv { struct mutex mib_lock; struct delayed_work mib_work; - int mib_next_port; u64 *mib_stats; struct list_head list; |