drivers/net/ethernet/alibaba/eea/eea_pci.h

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/alibaba/eea/eea_pci.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/alibaba/eea/eea_pci.h
Extension
.h
Size
1505 bytes
Lines
74
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 eea_pci_cap {
	__u8 cap_vndr;
	__u8 cap_next;
	__u8 cap_len;
	__u8 cfg_type;
};

struct eea_pci_reset_reg {
	struct eea_pci_cap cap;
	__le16 driver;
	__le16 device;
};

struct eea_pci_device;

struct eea_device {
	struct eea_pci_device *ep_dev;
	struct device         *dma_dev;
	struct eea_net        *enet;

	u64 features;

	enum eea_pci_status status;
	bool ha_reset_netdev_running;

	/* ha lock for the race between ha work and pci remove */
	struct mutex ha_lock;

	u32 rx_num;
	u32 tx_num;
	u32 db_blk_size;
};

const char *eea_pci_name(struct eea_device *edev);
int eea_pci_domain_nr(struct eea_device *edev);
u16 eea_pci_bdf(struct eea_device *edev);

int eea_device_reset(struct eea_device *dev);
int eea_pci_set_aq_up(struct eea_device *dev);
int eea_pci_active_aq(struct eea_ring *ering, int msix_vec);

int eea_pci_request_irq(struct eea_device *edev, struct eea_irq_blk *blk,
			irqreturn_t (*callback)(int irq, void *data));
void eea_pci_free_irq(struct eea_irq_blk *blk);

u64 eea_pci_device_ts(struct eea_device *edev);

void __iomem *eea_pci_db_addr(struct eea_device *edev, u32 off);
#endif

Annotation

Implementation Notes