ipq40xx: add switch led blink support
Implement get_port_stats() function for ar40xx phy
This commit is contained in:
parent
01798d4991
commit
c96bfccde6
@ -26,7 +26,7 @@
|
||||
obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/net/phy/ar40xx.c
|
||||
@@ -0,0 +1,2090 @@
|
||||
@@ -0,0 +1,2122 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2016, The Linux Foundation. All rights reserved.
|
||||
+ *
|
||||
@ -799,6 +799,37 @@
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+ar40xx_sw_get_port_stats(struct switch_dev *dev, int port,
|
||||
+ struct switch_port_stats *stats)
|
||||
+{
|
||||
+ struct ar40xx_priv *priv = swdev_to_ar40xx(dev);
|
||||
+ u32 num_mibs = ARRAY_SIZE(ar40xx_mibs);
|
||||
+ u64 *mib_stats;
|
||||
+ int ret = 0;
|
||||
+ static int last_port = AR40XX_NUM_PORTS - 1;
|
||||
+
|
||||
+ mutex_lock(&priv->mib_lock);
|
||||
+
|
||||
+ /* Avoid unnecessary capture */
|
||||
+ if (last_port >= port) {
|
||||
+ ret = ar40xx_mib_capture(priv);
|
||||
+ if (ret)
|
||||
+ goto unlock;
|
||||
+ }
|
||||
+ last_port = port;
|
||||
+
|
||||
+ ar40xx_mib_fetch_port_stat(priv, port, false);
|
||||
+
|
||||
+ mib_stats = &priv->mib_stats[port * num_mibs];
|
||||
+ /* 15: TXBYTE, 31: RXGOODBYTE */
|
||||
+ stats->tx_bytes = mib_stats[15];
|
||||
+ stats->rx_bytes = mib_stats[31];
|
||||
+unlock:
|
||||
+ mutex_unlock(&priv->mib_lock);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static const struct switch_attr ar40xx_sw_attr_globals[] = {
|
||||
+ {
|
||||
+ .type = SWITCH_TYPE_INT,
|
||||
@ -1789,6 +1820,7 @@
|
||||
+ .apply_config = ar40xx_sw_hw_apply,
|
||||
+ .reset_switch = ar40xx_sw_reset_switch,
|
||||
+ .get_port_link = ar40xx_sw_get_port_link,
|
||||
+ .get_port_stats = ar40xx_sw_get_port_stats,
|
||||
+};
|
||||
+
|
||||
+/* Start of phy driver support */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user