drivers/net/ethernet/fungible/funeth/funeth.h

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/fungible/funeth/funeth.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/fungible/funeth/funeth.h
Extension
.h
Size
3949 bytes
Lines
172
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 fun_vport_info {
	u8 mac[ETH_ALEN];
	u16 vlan;
	__be16 vlan_proto;
	u8 qos;
	u8 spoofchk:1;
	u8 trusted:1;
	unsigned int max_rate;
};

/* "subclass" of fun_dev for Ethernet functions */
struct fun_ethdev {
	struct fun_dev fdev;

	/* the function's network ports */
	struct net_device **netdevs;
	unsigned int num_ports;

	/* configuration for the function's virtual ports */
	unsigned int num_vports;
	struct fun_vport_info *vport_info;

	struct mutex state_mutex; /* nests inside RTNL if both taken */

	unsigned int nsqs_per_port;
};

static inline struct fun_ethdev *to_fun_ethdev(struct fun_dev *p)
{
	return container_of(p, struct fun_ethdev, fdev);
}

struct fun_qset {
	struct funeth_rxq **rxqs;
	struct funeth_txq **txqs;
	struct funeth_txq **xdpqs;
	unsigned int nrxqs;
	unsigned int ntxqs;
	unsigned int nxdpqs;
	unsigned int rxq_start;
	unsigned int txq_start;
	unsigned int xdpq_start;
	unsigned int cq_depth;
	unsigned int rq_depth;
	unsigned int sq_depth;
	int state;
};

/* Per netdevice driver state, i.e., netdev_priv. */
struct funeth_priv {
	struct fun_dev *fdev;
	struct pci_dev *pdev;
	struct net_device *netdev;

	struct funeth_rxq * __rcu *rxqs;
	struct funeth_txq **txqs;
	struct funeth_txq * __rcu *xdpqs;

	struct xarray irqs;
	unsigned int num_tx_irqs;
	unsigned int num_rx_irqs;
	unsigned int rx_irq_ofst;

	unsigned int lane_attrs;
	u16 lport;

	/* link settings */
	u64 port_caps;
	u64 advertising;
	u64 lp_advertising;
	unsigned int link_speed;
	u8 xcvr_type;
	u8 active_fc;
	u8 active_fec;
	u8 link_down_reason;
	seqcount_t link_seq;

	u32 msg_enable;

	unsigned int num_xdpqs;

	/* ethtool, etc. config parameters */
	unsigned int sq_depth;
	unsigned int rq_depth;
	unsigned int cq_depth;
	unsigned int cq_irq_db;
	u8 tx_coal_usec;
	u8 tx_coal_count;
	u8 rx_coal_usec;
	u8 rx_coal_count;

Annotation

Implementation Notes