generic: ar8216: introduce ar8216_mib_op helper

The ar8216_mib_{capture,flush} functions are similar.
Move the common code into a helper and use that from
the original functions.

This change also fixes a lockdep warning in
ar8216_mib_flush.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34297 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Gabor Juhos 2012-11-22 10:33:03 +00:00
parent c1678d8799
commit 1ef9ccffe2
1 changed files with 9 additions and 26 deletions

View File

@ -361,7 +361,7 @@ ar8216_reg_wait(struct ar8216_priv *priv, u32 reg, u32 mask, u32 val,
}
static int
ar8216_mib_capture(struct ar8216_priv *priv)
ar8216_mib_op(struct ar8216_priv *priv, u32 op)
{
unsigned mib_func;
int ret;
@ -375,8 +375,7 @@ ar8216_mib_capture(struct ar8216_priv *priv)
mutex_lock(&priv->reg_mutex);
/* Capture the hardware statistics for all ports */
ar8216_rmw(priv, mib_func, AR8216_MIB_FUNC,
(AR8216_MIB_FUNC_CAPTURE << AR8216_MIB_FUNC_S));
ar8216_rmw(priv, mib_func, AR8216_MIB_FUNC, (op << AR8216_MIB_FUNC_S));
mutex_unlock(&priv->reg_mutex);
/* Wait for the capturing to complete. */
@ -390,32 +389,16 @@ out:
return ret;
}
static int
ar8216_mib_capture(struct ar8216_priv *priv)
{
return ar8216_mib_op(priv, AR8216_MIB_FUNC_CAPTURE);
}
static int
ar8216_mib_flush(struct ar8216_priv *priv)
{
unsigned mib_func;
int ret;
lockdep_assert_held(&priv->mib_lock);
if (chip_is_ar8327(priv))
mib_func = AR8327_REG_MIB_FUNC;
else
mib_func = AR8216_REG_MIB_FUNC;
/* Flush hardware statistics for all ports */
ar8216_rmw(priv, mib_func, AR8216_MIB_FUNC,
(AR8216_MIB_FUNC_FLUSH << AR8216_MIB_FUNC_S));
/* Wait for the capturing to complete. */
ret = ar8216_reg_wait(priv, mib_func, AR8216_MIB_BUSY, 0, 10);
if (ret)
goto out;
ret = 0;
out:
return ret;
return ar8216_mib_op(priv, AR8216_MIB_FUNC_FLUSH);
}
static void