Add genphy_config_aneg() method to phy::Device, wrapping the C function __genphy_config_aneg(). This is needed by PHY drivers that perform custom BMCR configuration before calling the generic auto-negotiation setup. The wrapper calls __genphy_config_aneg(phydev, false) directly since genphy_config_aneg() is a static inline function not visible to bindgen. Signed-off-by: Artem Lytkin --- rust/kernel/net/phy.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/rust/kernel/net/phy.rs b/rust/kernel/net/phy.rs index b86939b163e3..01597f2616fd 100644 --- a/rust/kernel/net/phy.rs +++ b/rust/kernel/net/phy.rs @@ -284,6 +284,15 @@ pub fn genphy_read_abilities(&mut self) -> Result { // So it's just an FFI call. to_result(unsafe { bindings::genphy_read_abilities(phydev) }) } + + /// Configures the advertisement and resets auto-negotiation + /// if auto-negotiation is enabled. + pub fn genphy_config_aneg(&mut self) -> Result { + let phydev = self.0.get(); + // SAFETY: `phydev` is pointing to a valid object by the type invariant of `Self`. + // So it's just an FFI call. + to_result(unsafe { bindings::__genphy_config_aneg(phydev, false) }) + } } impl AsRef for Device { -- 2.43.0