drivers/net/ethernet/engleder/tsnep_hw.h

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/engleder/tsnep_hw.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/engleder/tsnep_hw.h
Extension
.h
Size
7531 bytes
Lines
249
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 tsnep_gcl_operation {
	u32 properties;
	u32 interval;
};

#define TSNEP_GCL_COUNT (TSNEP_GCL_SIZE / sizeof(struct tsnep_gcl_operation))
#define TSNEP_GCL_MASK 0x000000FF
#define TSNEP_GCL_INSERT 0x20000000
#define TSNEP_GCL_CHANGE 0x40000000
#define TSNEP_GCL_LAST 0x80000000
#define TSNEP_GCL_MIN_INTERVAL 32

/* tsnep TX/RX descriptor */
#define TSNEP_DESC_SIZE 256
#define TSNEP_DESC_SIZE_DATA_AFTER 2048
#define TSNEP_DESC_OFFSET 128
#define TSNEP_DESC_SIZE_DATA_AFTER_INLINE (64 - sizeof(struct tsnep_tx_desc) + \
					   sizeof_field(struct tsnep_tx_desc, tx))
#define TSNEP_DESC_OWNER_COUNTER_MASK 0xC0000000
#define TSNEP_DESC_OWNER_COUNTER_SHIFT 30
#define TSNEP_DESC_LENGTH_MASK 0x00003FFF
#define TSNEP_DESC_INTERRUPT_FLAG 0x00040000
#define TSNEP_DESC_EXTENDED_WRITEBACK_FLAG 0x00080000
#define TSNEP_DESC_NO_LINK_FLAG 0x01000000

/* tsnep TX descriptor */
struct tsnep_tx_desc {
	__le32 properties;
	__le32 more_properties;
	__le32 reserved[2];
	__le64 next;
	__le64 tx;
};

#define TSNEP_TX_DESC_OWNER_MASK 0xE0000000
#define TSNEP_TX_DESC_OWNER_USER_FLAG 0x20000000
#define TSNEP_TX_DESC_LAST_FRAGMENT_FLAG 0x00010000
#define TSNEP_TX_DESC_DATA_AFTER_DESC_FLAG 0x00020000

/* tsnep TX descriptor writeback */
struct tsnep_tx_desc_wb {
	__le32 properties;
	__le32 reserved1;
	__le64 counter;
	__le64 timestamp;
	__le32 dma_delay;
	__le32 reserved2;
};

#define TSNEP_TX_DESC_UNDERRUN_ERROR_FLAG 0x00010000
#define TSNEP_TX_DESC_DMA_DELAY_FIRST_DATA_MASK 0x0000FFFC
#define TSNEP_TX_DESC_DMA_DELAY_FIRST_DATA_SHIFT 2
#define TSNEP_TX_DESC_DMA_DELAY_LAST_DATA_MASK 0xFFFC0000
#define TSNEP_TX_DESC_DMA_DELAY_LAST_DATA_SHIFT 18
#define TSNEP_TX_DESC_DMA_DELAY_NS 64

/* tsnep RX descriptor */
struct tsnep_rx_desc {
	__le32 properties;
	__le32 reserved[3];
	__le64 next;
	__le64 rx;
};

#define TSNEP_RX_DESC_BUFFER_SIZE_MASK 0x00003FFC

/* tsnep RX descriptor writeback */
struct tsnep_rx_desc_wb {
	__le32 properties;
	__le32 reserved[7];
};

/* tsnep RX inline meta */
struct tsnep_rx_inline {
	__le64 counter;
	__le64 timestamp;
};

#define TSNEP_RX_INLINE_METADATA_SIZE (sizeof(struct tsnep_rx_inline))

#endif /* _TSNEP_HW_H */

Annotation

Implementation Notes