|
|
@@ -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. */
|
|
|
@@ -391,31 +390,15 @@ out:
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-ar8216_mib_flush(struct ar8216_priv *priv)
|
|
|
+ar8216_mib_capture(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;
|
|
|
+ return ar8216_mib_op(priv, AR8216_MIB_FUNC_CAPTURE);
|
|
|
+}
|
|
|
|
|
|
-out:
|
|
|
- return ret;
|
|
|
+static int
|
|
|
+ar8216_mib_flush(struct ar8216_priv *priv)
|
|
|
+{
|
|
|
+ return ar8216_mib_op(priv, AR8216_MIB_FUNC_FLUSH);
|
|
|
}
|
|
|
|
|
|
static void
|