Skip to content

Commit d98f43b

Browse files
Luo Jiekuba-moo
authored andcommitted
net: phy: qcom: qca807x: Support PHY counter
Within the QCA807X PHY operation's config_init() function, enable CRC checking for received and transmitted frames and configure counter to clear after being read to support counter recording. Additionally, add support for PHY counter operations. Signed-off-by: Luo Jie <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 3370e33 commit d98f43b

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

drivers/net/phy/qcom/qca807x.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ struct qca807x_priv {
124124
bool dac_full_amplitude;
125125
bool dac_full_bias_current;
126126
bool dac_disable_bias_current_tweak;
127+
struct qcom_phy_hw_stats hw_stats;
127128
};
128129

129130
static int qca807x_cable_test_start(struct phy_device *phydev)
@@ -768,6 +769,10 @@ static int qca807x_config_init(struct phy_device *phydev)
768769
return ret;
769770
}
770771

772+
ret = qcom_phy_counter_config(phydev);
773+
if (ret)
774+
return ret;
775+
771776
control_dac = phy_read_mmd(phydev, MDIO_MMD_AN,
772777
QCA807X_MMD7_1000BASE_T_POWER_SAVE_PER_CABLE_LENGTH);
773778
control_dac &= ~QCA807X_CONTROL_DAC_MASK;
@@ -782,6 +787,22 @@ static int qca807x_config_init(struct phy_device *phydev)
782787
control_dac);
783788
}
784789

790+
static int qca807x_update_stats(struct phy_device *phydev)
791+
{
792+
struct qca807x_priv *priv = phydev->priv;
793+
794+
return qcom_phy_update_stats(phydev, &priv->hw_stats);
795+
}
796+
797+
static void qca807x_get_phy_stats(struct phy_device *phydev,
798+
struct ethtool_eth_phy_stats *eth_stats,
799+
struct ethtool_phy_stats *stats)
800+
{
801+
struct qca807x_priv *priv = phydev->priv;
802+
803+
qcom_phy_get_stats(stats, priv->hw_stats);
804+
}
805+
785806
static struct phy_driver qca807x_drivers[] = {
786807
{
787808
PHY_ID_MATCH_EXACT(PHY_ID_QCA8072),
@@ -800,6 +821,8 @@ static struct phy_driver qca807x_drivers[] = {
800821
.suspend = genphy_suspend,
801822
.cable_test_start = qca807x_cable_test_start,
802823
.cable_test_get_status = qca808x_cable_test_get_status,
824+
.update_stats = qca807x_update_stats,
825+
.get_phy_stats = qca807x_get_phy_stats,
803826
},
804827
{
805828
PHY_ID_MATCH_EXACT(PHY_ID_QCA8075),
@@ -823,6 +846,8 @@ static struct phy_driver qca807x_drivers[] = {
823846
.led_hw_is_supported = qca807x_led_hw_is_supported,
824847
.led_hw_control_set = qca807x_led_hw_control_set,
825848
.led_hw_control_get = qca807x_led_hw_control_get,
849+
.update_stats = qca807x_update_stats,
850+
.get_phy_stats = qca807x_get_phy_stats,
826851
},
827852
};
828853
module_phy_driver(qca807x_drivers);

0 commit comments

Comments
 (0)