142 lines
3.4 KiB
C
142 lines
3.4 KiB
C
|
struct dma_desc {
|
||
|
/* Receive descriptor */
|
||
|
union {
|
||
|
struct {
|
||
|
/* RDES0 */
|
||
|
u32 reserved1:1; // IP Payload Checksum Error, when Recive CheckSum Offload Engine enabled.
|
||
|
u32 crc_error:1;
|
||
|
u32 dribbling:1;
|
||
|
u32 mii_error:1;
|
||
|
u32 receive_watchdog:1;
|
||
|
u32 frame_type:1;
|
||
|
u32 collision:1;
|
||
|
u32 frame_too_long:1;// TCP/UDP/ICMP Payload Checksum Error, when Recive CheckSum Offload Engine enabled.
|
||
|
u32 last_descriptor:1;
|
||
|
u32 first_descriptor:1;
|
||
|
u32 multicast_frame:1;
|
||
|
u32 run_frame:1;
|
||
|
u32 length_error:1;
|
||
|
u32 partial_frame_error:1;
|
||
|
u32 descriptor_error:1;
|
||
|
u32 error_summary:1;
|
||
|
u32 frame_length:14;
|
||
|
u32 filtering_fail:1;
|
||
|
u32 own:1;
|
||
|
/* RDES1 */
|
||
|
u32 buffer1_size:11;
|
||
|
u32 buffer2_size:11;
|
||
|
u32 reserved2:2;
|
||
|
u32 second_address_chained:1;
|
||
|
u32 end_ring:1;
|
||
|
u32 reserved3:5;
|
||
|
u32 disable_ic:1;
|
||
|
} rx;
|
||
|
struct {
|
||
|
/* RDES0 */
|
||
|
u32 payload_csum_error:1;
|
||
|
u32 crc_error:1;
|
||
|
u32 dribbling:1;
|
||
|
u32 error_gmii:1;
|
||
|
u32 receive_watchdog:1;
|
||
|
u32 frame_type:1;
|
||
|
u32 late_collision:1;
|
||
|
u32 ipc_csum_error:1;
|
||
|
u32 last_descriptor:1;
|
||
|
u32 first_descriptor:1;
|
||
|
u32 vlan_tag:1;
|
||
|
u32 overflow_error:1;
|
||
|
u32 length_error:1;
|
||
|
u32 sa_filter_fail:1;
|
||
|
u32 descriptor_error:1;
|
||
|
u32 error_summary:1;
|
||
|
u32 frame_length:14;
|
||
|
u32 da_filter_fail:1;
|
||
|
u32 own:1;
|
||
|
/* RDES1 */
|
||
|
u32 buffer1_size:13;
|
||
|
u32 reserved1:1;
|
||
|
u32 second_address_chained:1;
|
||
|
u32 end_ring:1;
|
||
|
u32 buffer2_size:13;
|
||
|
u32 reserved2:2;
|
||
|
u32 disable_ic:1;
|
||
|
} erx; /* -- enhanced -- */
|
||
|
|
||
|
/* Transmit descriptor */
|
||
|
struct {
|
||
|
/* TDES0 */
|
||
|
u32 deferred:1;
|
||
|
u32 underflow_error:1;
|
||
|
u32 excessive_deferral:1;
|
||
|
u32 collision_count:4;
|
||
|
u32 heartbeat_fail:1;
|
||
|
u32 excessive_collisions:1;
|
||
|
u32 late_collision:1;
|
||
|
u32 no_carrier:1;
|
||
|
u32 loss_carrier:1;
|
||
|
u32 reserved1:3;
|
||
|
u32 error_summary:1;
|
||
|
u32 reserved2:15;
|
||
|
u32 own:1;
|
||
|
/* TDES1 */
|
||
|
u32 buffer1_size:11;
|
||
|
u32 buffer2_size:11;
|
||
|
u32 reserved3:1;
|
||
|
u32 disable_padding:1;
|
||
|
u32 second_address_chained:1;
|
||
|
u32 end_ring:1;
|
||
|
u32 crc_disable:1;
|
||
|
u32 reserved4:2; // CIC, when Tx CheckSum Offload Engine Enabled.
|
||
|
u32 first_segment:1;
|
||
|
u32 last_segment:1;
|
||
|
u32 interrupt:1;
|
||
|
} tx;
|
||
|
struct {
|
||
|
/* TDES0 */
|
||
|
u32 deferred:1;
|
||
|
u32 underflow_error:1;
|
||
|
u32 excessive_deferral:1;
|
||
|
u32 collision_count:4;
|
||
|
u32 vlan_frame:1;
|
||
|
u32 excessive_collisions:1;
|
||
|
u32 late_collision:1;
|
||
|
u32 no_carrier:1;
|
||
|
u32 loss_carrier:1;
|
||
|
u32 payload_error:1;
|
||
|
u32 frame_flushed:1;
|
||
|
u32 jabber_timeout:1;
|
||
|
u32 error_summary:1;
|
||
|
u32 ip_header_error:1;
|
||
|
u32 time_stamp_status:1;
|
||
|
u32 reserved1:2;
|
||
|
u32 second_address_chained:1;
|
||
|
u32 end_ring:1;
|
||
|
u32 checksum_insertion:2;
|
||
|
u32 reserved2:1;
|
||
|
u32 time_stamp_enable:1;
|
||
|
u32 disable_padding:1;
|
||
|
u32 crc_disable:1;
|
||
|
u32 first_segment:1;
|
||
|
u32 last_segment:1;
|
||
|
u32 interrupt:1;
|
||
|
u32 own:1;
|
||
|
/* TDES1 */
|
||
|
u32 buffer1_size:13;
|
||
|
u32 reserved3:3;
|
||
|
u32 buffer2_size:13;
|
||
|
u32 reserved4:3;
|
||
|
} etx; /* -- enhanced -- */
|
||
|
} des01;
|
||
|
unsigned int des2;
|
||
|
unsigned int des3;
|
||
|
};
|
||
|
|
||
|
/* Transmit checksum insertion control */
|
||
|
enum tdes_csum_insertion {
|
||
|
cic_disabled = 0, /* Checksum Insertion Control */
|
||
|
cic_only_ip = 1, /* Only IP header */
|
||
|
cic_no_pseudoheader = 2, /* IP header but pseudoheader
|
||
|
* is not calculated */
|
||
|
cic_full = 3, /* IP header and pseudoheader */
|
||
|
};
|