phy-c45.c (3c1bcc8614db10803f1f57ef0295363917448cb2) phy-c45.c (c0ec3c2736774c69bf5c641aea7712132c0f0eba)
1/*
2 * Clause 45 PHY support
3 */
4#include <linux/ethtool.h>
5#include <linux/export.h>
6#include <linux/mdio.h>
7#include <linux/mii.h>
8#include <linux/phy.h>

--- 167 unchanged lines hidden (view full) ---

176{
177 int val;
178
179 /* Read the link partner's base page advertisement */
180 val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_LPA);
181 if (val < 0)
182 return val;
183
1/*
2 * Clause 45 PHY support
3 */
4#include <linux/ethtool.h>
5#include <linux/export.h>
6#include <linux/mdio.h>
7#include <linux/mii.h>
8#include <linux/phy.h>

--- 167 unchanged lines hidden (view full) ---

176{
177 int val;
178
179 /* Read the link partner's base page advertisement */
180 val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_LPA);
181 if (val < 0)
182 return val;
183
184 phydev->lp_advertising = mii_lpa_to_ethtool_lpa_t(val);
184 mii_lpa_to_linkmode_lpa_t(phydev->lp_advertising, val);
185 phydev->pause = val & LPA_PAUSE_CAP ? 1 : 0;
186 phydev->asym_pause = val & LPA_PAUSE_ASYM ? 1 : 0;
187
188 /* Read the link partner's 10G advertisement */
189 val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_10GBT_STAT);
190 if (val < 0)
191 return val;
192
193 if (val & MDIO_AN_10GBT_STAT_LP10G)
185 phydev->pause = val & LPA_PAUSE_CAP ? 1 : 0;
186 phydev->asym_pause = val & LPA_PAUSE_ASYM ? 1 : 0;
187
188 /* Read the link partner's 10G advertisement */
189 val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_10GBT_STAT);
190 if (val < 0)
191 return val;
192
193 if (val & MDIO_AN_10GBT_STAT_LP10G)
194 phydev->lp_advertising |= ADVERTISED_10000baseT_Full;
194 linkmode_set_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT,
195 phydev->lp_advertising);
195
196 return 0;
197}
198EXPORT_SYMBOL_GPL(genphy_c45_read_lpa);
199
200/**
201 * genphy_c45_read_pma - read link speed etc from PMA
202 * @phydev: target phy_device struct

--- 138 unchanged lines hidden ---
196
197 return 0;
198}
199EXPORT_SYMBOL_GPL(genphy_c45_read_lpa);
200
201/**
202 * genphy_c45_read_pma - read link speed etc from PMA
203 * @phydev: target phy_device struct

--- 138 unchanged lines hidden ---