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>
ar8xxx_mib_work_func(struct work_struct *work)
{
struct ar8xxx_priv *priv;
ar8xxx_mib_work_func(struct work_struct *work)
{
struct ar8xxx_priv *priv;
priv = container_of(work, struct ar8xxx_priv, mib_work.work);
priv = container_of(work, struct ar8xxx_priv, mib_work.work);
err = ar8xxx_mib_capture(priv);
if (err)
err = ar8xxx_mib_capture(priv);
if (err)
- goto next_port;
-
- ar8xxx_mib_fetch_port_stat(priv, priv->mib_next_port, false);
-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);
mutex_unlock(&priv->mib_lock);
schedule_delayed_work(&priv->mib_work,
msecs_to_jiffies(AR8XXX_MIB_WORK_DELAY));
mutex_unlock(&priv->mib_lock);
schedule_delayed_work(&priv->mib_work,
msecs_to_jiffies(AR8XXX_MIB_WORK_DELAY));
struct mutex mib_lock;
struct delayed_work mib_work;
struct mutex mib_lock;
struct delayed_work mib_work;
u64 *mib_stats;
struct list_head list;
u64 *mib_stats;
struct list_head list;