drivers/net/phy/phy-caps.h

Source file repositories/reference/linux-study-clean/drivers/net/phy/phy-caps.h

File Facts

System
Linux kernel
Corpus path
drivers/net/phy/phy-caps.h
Extension
.h
Size
1801 bytes
Lines
71
Domain
Driver Families
Bucket
drivers/net
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct link_capabilities {
	int speed;
	unsigned int duplex;
	__ETHTOOL_DECLARE_LINK_MODE_MASK(linkmodes);
};

int __init phy_caps_init(void);

size_t phy_caps_speeds(unsigned int *speeds, size_t size,
		       unsigned long *linkmodes);
void phy_caps_linkmode_max_speed(u32 max_speed, unsigned long *linkmodes);
bool phy_caps_valid(int speed, int duplex, const unsigned long *linkmodes);
void phy_caps_linkmodes(unsigned long caps, unsigned long *linkmodes);
unsigned long phy_caps_from_interface(phy_interface_t interface);

const struct link_capabilities *
phy_caps_lookup_by_linkmode(const unsigned long *linkmodes);

const struct link_capabilities *
phy_caps_lookup_by_linkmode_rev(const unsigned long *linkmodes, bool fdx_only);

const struct link_capabilities *
phy_caps_lookup(int speed, unsigned int duplex, const unsigned long *supported,
		bool exact);

void phy_caps_medium_get_supported(unsigned long *supported,
				   enum ethtool_link_medium medium,
				   int lanes);
u32 phy_caps_mediums_from_linkmodes(unsigned long *linkmodes);

#endif /* __PHY_CAPS_H */

Annotation

Implementation Notes