drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.h

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.h
Extension
.h
Size
2114 bytes
Lines
86
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 dpaa2_mac_stats {
	__le32 *idx_dma_mem;
	__le64 *values_dma_mem;
	dma_addr_t idx_iova, values_iova;
};

struct dpaa2_mac {
	struct fsl_mc_device *mc_dev;
	struct dpmac_link_state state;
	struct net_device *net_dev;
	struct fsl_mc_io *mc_io;
	struct dpmac_attr attr;
	u16 ver_major, ver_minor;
	unsigned long features;

	struct phylink_config phylink_config;
	struct phylink *phylink;
	phy_interface_t if_mode;
	enum dpmac_link_type if_link_type;
	struct phylink_pcs *pcs;
	struct fwnode_handle *fw_node;

	struct phy *serdes_phy;

	struct dpaa2_mac_stats ethtool_stats;
	struct dpaa2_mac_stats rmon_stats;
	struct dpaa2_mac_stats pause_stats;
	struct dpaa2_mac_stats eth_ctrl_stats;
	struct dpaa2_mac_stats eth_mac_stats;
};

static inline bool dpaa2_mac_is_type_phy(struct dpaa2_mac *mac)
{
	if (!mac)
		return false;

	return mac->attr.link_type == DPMAC_LINK_TYPE_PHY ||
	       mac->attr.link_type == DPMAC_LINK_TYPE_BACKPLANE;
}

int dpaa2_mac_open(struct dpaa2_mac *mac);

void dpaa2_mac_close(struct dpaa2_mac *mac);

int dpaa2_mac_connect(struct dpaa2_mac *mac);

void dpaa2_mac_disconnect(struct dpaa2_mac *mac);

int dpaa2_mac_get_sset_count(void);

void dpaa2_mac_get_strings(u8 **data);

void dpaa2_mac_get_ethtool_stats(struct dpaa2_mac *mac, u64 *data);

void dpaa2_mac_get_rmon_stats(struct dpaa2_mac *mac,
			      struct ethtool_rmon_stats *s,
			      const struct ethtool_rmon_hist_range **ranges);

void dpaa2_mac_get_pause_stats(struct dpaa2_mac *mac,
			       struct ethtool_pause_stats *s);

void dpaa2_mac_get_ctrl_stats(struct dpaa2_mac *mac,
			      struct ethtool_eth_ctrl_stats *s);

void dpaa2_mac_get_eth_mac_stats(struct dpaa2_mac *mac,
				 struct ethtool_eth_mac_stats *s);

void dpaa2_mac_start(struct dpaa2_mac *mac);

void dpaa2_mac_stop(struct dpaa2_mac *mac);

#endif /* DPAA2_MAC_H */

Annotation

Implementation Notes