aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/stmicro/stmmac/descs.h
diff options
context:
space:
mode:
authorGiuseppe CAVALLARO <peppe.cavallaro@st.com>2011-10-26 15:43:09 -0400
committerDavid S. Miller <davem@davemloft.net>2011-10-27 23:17:12 -0400
commit3c20f72f9108b2fcf30ec63d8a4203736c01ccd0 (patch)
tree8310be8eba2e616fc3b93e5c7e379343c0480710 /drivers/net/ethernet/stmicro/stmmac/descs.h
parente2c57f839c63f452b4704e048c8db9cf669ed410 (diff)
stmmac: update normal descriptor structure (v2)
This patch updates the normal descriptor structure to work fine on new GMAC Synopsys chips. Normal descriptors were designed on the old MAC10/100 databook 1.91 where some bits were reserved: for example the tx checksum insertion and rx checksum offload. The patch maintains the back-compatibility with old MAC devices (tested on STx7109 MAC10/100) and adds new fields that actually new GMAC devices can use. For example, STx7109 (MAC10/100) will pass from the platform tx_coe = 0, enh_desc = 0, has_gmac = 0. A platform like Loongson1B (GMAC) will pass: tx_coe = 1, enh_desc = 0, has_gmac = 1. Thanks to Kelvin, he enhanced the normal descriptors for GMAC (on MIPS Loongson1B platform). Signed-off-by: Kelvin Cheung <keguang.zhang@gmail.com> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/stmicro/stmmac/descs.h')
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/descs.h31
1 files changed, 18 insertions, 13 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/descs.h b/drivers/net/ethernet/stmicro/stmmac/descs.h
index 63a03e26469..9820ec842cc 100644
--- a/drivers/net/ethernet/stmicro/stmmac/descs.h
+++ b/drivers/net/ethernet/stmicro/stmmac/descs.h
@@ -25,33 +25,34 @@ struct dma_desc {
25 union { 25 union {
26 struct { 26 struct {
27 /* RDES0 */ 27 /* RDES0 */
28 u32 reserved1:1; 28 u32 payload_csum_error:1;
29 u32 crc_error:1; 29 u32 crc_error:1;
30 u32 dribbling:1; 30 u32 dribbling:1;
31 u32 mii_error:1; 31 u32 mii_error:1;
32 u32 receive_watchdog:1; 32 u32 receive_watchdog:1;
33 u32 frame_type:1; 33 u32 frame_type:1;
34 u32 collision:1; 34 u32 collision:1;
35 u32 frame_too_long:1; 35 u32 ipc_csum_error:1;
36 u32 last_descriptor:1; 36 u32 last_descriptor:1;
37 u32 first_descriptor:1; 37 u32 first_descriptor:1;
38 u32 multicast_frame:1; 38 u32 vlan_tag:1;
39 u32 run_frame:1; 39 u32 overflow_error:1;
40 u32 length_error:1; 40 u32 length_error:1;
41 u32 partial_frame_error:1; 41 u32 sa_filter_fail:1;
42 u32 descriptor_error:1; 42 u32 descriptor_error:1;
43 u32 error_summary:1; 43 u32 error_summary:1;
44 u32 frame_length:14; 44 u32 frame_length:14;
45 u32 filtering_fail:1; 45 u32 da_filter_fail:1;
46 u32 own:1; 46 u32 own:1;
47 /* RDES1 */ 47 /* RDES1 */
48 u32 buffer1_size:11; 48 u32 buffer1_size:11;
49 u32 buffer2_size:11; 49 u32 buffer2_size:11;
50 u32 reserved2:2; 50 u32 reserved1:2;
51 u32 second_address_chained:1; 51 u32 second_address_chained:1;
52 u32 end_ring:1; 52 u32 end_ring:1;
53 u32 reserved3:5; 53 u32 reserved2:5;
54 u32 disable_ic:1; 54 u32 disable_ic:1;
55
55 } rx; 56 } rx;
56 struct { 57 struct {
57 /* RDES0 */ 58 /* RDES0 */
@@ -91,24 +92,28 @@ struct dma_desc {
91 u32 underflow_error:1; 92 u32 underflow_error:1;
92 u32 excessive_deferral:1; 93 u32 excessive_deferral:1;
93 u32 collision_count:4; 94 u32 collision_count:4;
94 u32 heartbeat_fail:1; 95 u32 vlan_frame:1;
95 u32 excessive_collisions:1; 96 u32 excessive_collisions:1;
96 u32 late_collision:1; 97 u32 late_collision:1;
97 u32 no_carrier:1; 98 u32 no_carrier:1;
98 u32 loss_carrier:1; 99 u32 loss_carrier:1;
99 u32 reserved1:3; 100 u32 payload_error:1;
101 u32 frame_flushed:1;
102 u32 jabber_timeout:1;
100 u32 error_summary:1; 103 u32 error_summary:1;
101 u32 reserved2:15; 104 u32 ip_header_error:1;
105 u32 time_stamp_status:1;
106 u32 reserved1:13;
102 u32 own:1; 107 u32 own:1;
103 /* TDES1 */ 108 /* TDES1 */
104 u32 buffer1_size:11; 109 u32 buffer1_size:11;
105 u32 buffer2_size:11; 110 u32 buffer2_size:11;
106 u32 reserved3:1; 111 u32 time_stamp_enable:1;
107 u32 disable_padding:1; 112 u32 disable_padding:1;
108 u32 second_address_chained:1; 113 u32 second_address_chained:1;
109 u32 end_ring:1; 114 u32 end_ring:1;
110 u32 crc_disable:1; 115 u32 crc_disable:1;
111 u32 reserved4:2; 116 u32 checksum_insertion:2;
112 u32 first_segment:1; 117 u32 first_segment:1;
113 u32 last_segment:1; 118 u32 last_segment:1;
114 u32 interrupt:1; 119 u32 interrupt:1;