k1_emac.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * SpacemiT K1 Ethernet hardware definitions
  4. *
  5. * Copyright (C) 2023-2025 SpacemiT (Hangzhou) Technology Co. Ltd
  6. * Copyright (C) 2025 Vivian Wang <wangruikang@iscas.ac.cn>
  7. */
  8. #ifndef _K1_EMAC_H_
  9. #define _K1_EMAC_H_
  10. #include <linux/stddef.h>
  11. /* APMU syscon registers */
  12. #define APMU_EMAC_CTRL_REG 0x0
  13. #define PHY_INTF_RGMII BIT(2)
  14. /*
  15. * Only valid for RMII mode
  16. * 0: Ref clock from External PHY
  17. * 1: Ref clock from SoC
  18. */
  19. #define REF_CLK_SEL BIT(3)
  20. /*
  21. * Function clock select
  22. * 0: 208 MHz
  23. * 1: 312 MHz
  24. */
  25. #define FUNC_CLK_SEL BIT(4)
  26. /* Only valid for RMII, invert TX clk */
  27. #define RMII_TX_CLK_SEL BIT(6)
  28. /* Only valid for RMII, invert RX clk */
  29. #define RMII_RX_CLK_SEL BIT(7)
  30. /*
  31. * Only valid for RGMII
  32. * 0: TX clk from RX clk
  33. * 1: TX clk from SoC
  34. */
  35. #define RGMII_TX_CLK_SEL BIT(8)
  36. #define PHY_IRQ_EN BIT(12)
  37. #define AXI_SINGLE_ID BIT(13)
  38. #define APMU_EMAC_DLINE_REG 0x4
  39. #define EMAC_RX_DLINE_EN BIT(0)
  40. #define EMAC_RX_DLINE_STEP_MASK GENMASK(5, 4)
  41. #define EMAC_RX_DLINE_CODE_MASK GENMASK(15, 8)
  42. #define EMAC_TX_DLINE_EN BIT(16)
  43. #define EMAC_TX_DLINE_STEP_MASK GENMASK(21, 20)
  44. #define EMAC_TX_DLINE_CODE_MASK GENMASK(31, 24)
  45. #define EMAC_DLINE_STEP_15P6 0 /* 15.6 ps/step */
  46. #define EMAC_DLINE_STEP_24P4 1 /* 24.4 ps/step */
  47. #define EMAC_DLINE_STEP_29P7 2 /* 29.7 ps/step */
  48. #define EMAC_DLINE_STEP_35P1 3 /* 35.1 ps/step */
  49. /* DMA register set */
  50. #define DMA_CONFIGURATION 0x0000
  51. #define DMA_CONTROL 0x0004
  52. #define DMA_STATUS_IRQ 0x0008
  53. #define DMA_INTERRUPT_ENABLE 0x000c
  54. #define DMA_TRANSMIT_AUTO_POLL_COUNTER 0x0010
  55. #define DMA_TRANSMIT_POLL_DEMAND 0x0014
  56. #define DMA_RECEIVE_POLL_DEMAND 0x0018
  57. #define DMA_TRANSMIT_BASE_ADDRESS 0x001c
  58. #define DMA_RECEIVE_BASE_ADDRESS 0x0020
  59. #define DMA_MISSED_FRAME_COUNTER 0x0024
  60. #define DMA_STOP_FLUSH_COUNTER 0x0028
  61. #define DMA_RECEIVE_IRQ_MITIGATION_CTRL 0x002c
  62. #define DMA_CURRENT_TRANSMIT_DESCRIPTOR_POINTER 0x0030
  63. #define DMA_CURRENT_TRANSMIT_BUFFER_POINTER 0x0034
  64. #define DMA_CURRENT_RECEIVE_DESCRIPTOR_POINTER 0x0038
  65. #define DMA_CURRENT_RECEIVE_BUFFER_POINTER 0x003c
  66. /* MAC Register set */
  67. #define MAC_GLOBAL_CONTROL 0x0100
  68. #define MAC_TRANSMIT_CONTROL 0x0104
  69. #define MAC_RECEIVE_CONTROL 0x0108
  70. #define MAC_MAXIMUM_FRAME_SIZE 0x010c
  71. #define MAC_TRANSMIT_JABBER_SIZE 0x0110
  72. #define MAC_RECEIVE_JABBER_SIZE 0x0114
  73. #define MAC_ADDRESS_CONTROL 0x0118
  74. #define MAC_MDIO_CLK_DIV 0x011c
  75. #define MAC_ADDRESS1_HIGH 0x0120
  76. #define MAC_ADDRESS1_MED 0x0124
  77. #define MAC_ADDRESS1_LOW 0x0128
  78. #define MAC_ADDRESS2_HIGH 0x012c
  79. #define MAC_ADDRESS2_MED 0x0130
  80. #define MAC_ADDRESS2_LOW 0x0134
  81. #define MAC_ADDRESS3_HIGH 0x0138
  82. #define MAC_ADDRESS3_MED 0x013c
  83. #define MAC_ADDRESS3_LOW 0x0140
  84. #define MAC_ADDRESS4_HIGH 0x0144
  85. #define MAC_ADDRESS4_MED 0x0148
  86. #define MAC_ADDRESS4_LOW 0x014c
  87. #define MAC_MULTICAST_HASH_TABLE1 0x0150
  88. #define MAC_MULTICAST_HASH_TABLE2 0x0154
  89. #define MAC_MULTICAST_HASH_TABLE3 0x0158
  90. #define MAC_MULTICAST_HASH_TABLE4 0x015c
  91. #define MAC_FC_CONTROL 0x0160
  92. #define MAC_FC_PAUSE_FRAME_GENERATE 0x0164
  93. #define MAC_FC_SOURCE_ADDRESS_HIGH 0x0168
  94. #define MAC_FC_SOURCE_ADDRESS_MED 0x016c
  95. #define MAC_FC_SOURCE_ADDRESS_LOW 0x0170
  96. #define MAC_FC_DESTINATION_ADDRESS_HIGH 0x0174
  97. #define MAC_FC_DESTINATION_ADDRESS_MED 0x0178
  98. #define MAC_FC_DESTINATION_ADDRESS_LOW 0x017c
  99. #define MAC_FC_PAUSE_TIME_VALUE 0x0180
  100. #define MAC_FC_HIGH_PAUSE_TIME 0x0184
  101. #define MAC_FC_LOW_PAUSE_TIME 0x0188
  102. #define MAC_FC_PAUSE_HIGH_THRESHOLD 0x018c
  103. #define MAC_FC_PAUSE_LOW_THRESHOLD 0x0190
  104. #define MAC_MDIO_CONTROL 0x01a0
  105. #define MAC_MDIO_DATA 0x01a4
  106. #define MAC_RX_STATCTR_CONTROL 0x01a8
  107. #define MAC_RX_STATCTR_DATA_HIGH 0x01ac
  108. #define MAC_RX_STATCTR_DATA_LOW 0x01b0
  109. #define MAC_TX_STATCTR_CONTROL 0x01b4
  110. #define MAC_TX_STATCTR_DATA_HIGH 0x01b8
  111. #define MAC_TX_STATCTR_DATA_LOW 0x01bc
  112. #define MAC_TRANSMIT_FIFO_ALMOST_FULL 0x01c0
  113. #define MAC_TRANSMIT_PACKET_START_THRESHOLD 0x01c4
  114. #define MAC_RECEIVE_PACKET_START_THRESHOLD 0x01c8
  115. #define MAC_STATUS_IRQ 0x01e0
  116. #define MAC_INTERRUPT_ENABLE 0x01e4
  117. /* Used for register dump */
  118. #define EMAC_DMA_REG_CNT 16
  119. #define EMAC_MAC_REG_CNT 124
  120. /* DMA_CONFIGURATION (0x0000) */
  121. /*
  122. * 0-DMA controller in normal operation mode,
  123. * 1-DMA controller reset to default state,
  124. * clearing all internal state information
  125. */
  126. #define MREGBIT_SOFTWARE_RESET BIT(0)
  127. #define MREGBIT_BURST_1WORD BIT(1)
  128. #define MREGBIT_BURST_2WORD BIT(2)
  129. #define MREGBIT_BURST_4WORD BIT(3)
  130. #define MREGBIT_BURST_8WORD BIT(4)
  131. #define MREGBIT_BURST_16WORD BIT(5)
  132. #define MREGBIT_BURST_32WORD BIT(6)
  133. #define MREGBIT_BURST_64WORD BIT(7)
  134. #define MREGBIT_BURST_LENGTH GENMASK(7, 1)
  135. #define MREGBIT_DESCRIPTOR_SKIP_LENGTH GENMASK(12, 8)
  136. /* For Receive and Transmit DMA operate in Big-Endian mode for Descriptors. */
  137. #define MREGBIT_DESCRIPTOR_BYTE_ORDERING BIT(13)
  138. #define MREGBIT_BIG_LITLE_ENDIAN BIT(14)
  139. #define MREGBIT_TX_RX_ARBITRATION BIT(15)
  140. #define MREGBIT_WAIT_FOR_DONE BIT(16)
  141. #define MREGBIT_STRICT_BURST BIT(17)
  142. #define MREGBIT_DMA_64BIT_MODE BIT(18)
  143. /* DMA_CONTROL (0x0004) */
  144. #define MREGBIT_START_STOP_TRANSMIT_DMA BIT(0)
  145. #define MREGBIT_START_STOP_RECEIVE_DMA BIT(1)
  146. /* DMA_STATUS_IRQ (0x0008) */
  147. #define MREGBIT_TRANSMIT_TRANSFER_DONE_IRQ BIT(0)
  148. #define MREGBIT_TRANSMIT_DES_UNAVAILABLE_IRQ BIT(1)
  149. #define MREGBIT_TRANSMIT_DMA_STOPPED_IRQ BIT(2)
  150. #define MREGBIT_RECEIVE_TRANSFER_DONE_IRQ BIT(4)
  151. #define MREGBIT_RECEIVE_DES_UNAVAILABLE_IRQ BIT(5)
  152. #define MREGBIT_RECEIVE_DMA_STOPPED_IRQ BIT(6)
  153. #define MREGBIT_RECEIVE_MISSED_FRAME_IRQ BIT(7)
  154. #define MREGBIT_MAC_IRQ BIT(8)
  155. #define MREGBIT_TRANSMIT_DMA_STATE GENMASK(18, 16)
  156. #define MREGBIT_RECEIVE_DMA_STATE GENMASK(23, 20)
  157. /* DMA_INTERRUPT_ENABLE (0x000c) */
  158. #define MREGBIT_TRANSMIT_TRANSFER_DONE_INTR_ENABLE BIT(0)
  159. #define MREGBIT_TRANSMIT_DES_UNAVAILABLE_INTR_ENABLE BIT(1)
  160. #define MREGBIT_TRANSMIT_DMA_STOPPED_INTR_ENABLE BIT(2)
  161. #define MREGBIT_RECEIVE_TRANSFER_DONE_INTR_ENABLE BIT(4)
  162. #define MREGBIT_RECEIVE_DES_UNAVAILABLE_INTR_ENABLE BIT(5)
  163. #define MREGBIT_RECEIVE_DMA_STOPPED_INTR_ENABLE BIT(6)
  164. #define MREGBIT_RECEIVE_MISSED_FRAME_INTR_ENABLE BIT(7)
  165. #define MREGBIT_MAC_INTR_ENABLE BIT(8)
  166. /* DMA_RECEIVE_IRQ_MITIGATION_CTRL (0x002c) */
  167. #define MREGBIT_RECEIVE_IRQ_FRAME_COUNTER_MASK GENMASK(7, 0)
  168. #define MREGBIT_RECEIVE_IRQ_TIMEOUT_COUNTER_MASK GENMASK(27, 8)
  169. #define MREGBIT_RECEIVE_IRQ_FRAME_COUNTER_MODE BIT(30)
  170. #define MREGBIT_RECEIVE_IRQ_MITIGATION_ENABLE BIT(31)
  171. /* MAC_GLOBAL_CONTROL (0x0100) */
  172. #define MREGBIT_SPEED GENMASK(1, 0)
  173. #define MREGBIT_SPEED_10M 0x0
  174. #define MREGBIT_SPEED_100M BIT(0)
  175. #define MREGBIT_SPEED_1000M BIT(1)
  176. #define MREGBIT_FULL_DUPLEX_MODE BIT(2)
  177. #define MREGBIT_RESET_RX_STAT_COUNTERS BIT(3)
  178. #define MREGBIT_RESET_TX_STAT_COUNTERS BIT(4)
  179. #define MREGBIT_UNICAST_WAKEUP_MODE BIT(8)
  180. #define MREGBIT_MAGIC_PACKET_WAKEUP_MODE BIT(9)
  181. /* MAC_TRANSMIT_CONTROL (0x0104) */
  182. #define MREGBIT_TRANSMIT_ENABLE BIT(0)
  183. #define MREGBIT_INVERT_FCS BIT(1)
  184. #define MREGBIT_DISABLE_FCS_INSERT BIT(2)
  185. #define MREGBIT_TRANSMIT_AUTO_RETRY BIT(3)
  186. #define MREGBIT_IFG_LEN GENMASK(6, 4)
  187. #define MREGBIT_PREAMBLE_LENGTH GENMASK(9, 7)
  188. /* MAC_RECEIVE_CONTROL (0x0108) */
  189. #define MREGBIT_RECEIVE_ENABLE BIT(0)
  190. #define MREGBIT_DISABLE_FCS_CHECK BIT(1)
  191. #define MREGBIT_STRIP_FCS BIT(2)
  192. #define MREGBIT_STORE_FORWARD BIT(3)
  193. #define MREGBIT_STATUS_FIRST BIT(4)
  194. #define MREGBIT_PASS_BAD_FRAMES BIT(5)
  195. #define MREGBIT_ACOOUNT_VLAN BIT(6)
  196. /* MAC_MAXIMUM_FRAME_SIZE (0x010c) */
  197. #define MREGBIT_MAX_FRAME_SIZE GENMASK(13, 0)
  198. /* MAC_TRANSMIT_JABBER_SIZE (0x0110) */
  199. #define MREGBIT_TRANSMIT_JABBER_SIZE GENMASK(15, 0)
  200. /* MAC_RECEIVE_JABBER_SIZE (0x0114) */
  201. #define MREGBIT_RECEIVE_JABBER_SIZE GENMASK(15, 0)
  202. /* MAC_ADDRESS_CONTROL (0x0118) */
  203. #define MREGBIT_MAC_ADDRESS1_ENABLE BIT(0)
  204. #define MREGBIT_MAC_ADDRESS2_ENABLE BIT(1)
  205. #define MREGBIT_MAC_ADDRESS3_ENABLE BIT(2)
  206. #define MREGBIT_MAC_ADDRESS4_ENABLE BIT(3)
  207. #define MREGBIT_INVERSE_MAC_ADDRESS1_ENABLE BIT(4)
  208. #define MREGBIT_INVERSE_MAC_ADDRESS2_ENABLE BIT(5)
  209. #define MREGBIT_INVERSE_MAC_ADDRESS3_ENABLE BIT(6)
  210. #define MREGBIT_INVERSE_MAC_ADDRESS4_ENABLE BIT(7)
  211. #define MREGBIT_PROMISCUOUS_MODE BIT(8)
  212. /* MAC_FC_CONTROL (0x0160) */
  213. #define MREGBIT_FC_DECODE_ENABLE BIT(0)
  214. #define MREGBIT_FC_GENERATION_ENABLE BIT(1)
  215. #define MREGBIT_AUTO_FC_GENERATION_ENABLE BIT(2)
  216. #define MREGBIT_MULTICAST_MODE BIT(3)
  217. #define MREGBIT_BLOCK_PAUSE_FRAMES BIT(4)
  218. /* MAC_FC_PAUSE_FRAME_GENERATE (0x0164) */
  219. #define MREGBIT_GENERATE_PAUSE_FRAME BIT(0)
  220. /* MAC_FC_PAUSE_TIME_VALUE (0x0180) */
  221. #define MREGBIT_MAC_FC_PAUSE_TIME GENMASK(15, 0)
  222. /* MAC_MDIO_CONTROL (0x01a0) */
  223. #define MREGBIT_PHY_ADDRESS GENMASK(4, 0)
  224. #define MREGBIT_REGISTER_ADDRESS GENMASK(9, 5)
  225. #define MREGBIT_MDIO_READ_WRITE BIT(10)
  226. #define MREGBIT_START_MDIO_TRANS BIT(15)
  227. /* MAC_MDIO_DATA (0x01a4) */
  228. #define MREGBIT_MDIO_DATA GENMASK(15, 0)
  229. /* MAC_RX_STATCTR_CONTROL (0x01a8) */
  230. #define MREGBIT_RX_COUNTER_NUMBER GENMASK(4, 0)
  231. #define MREGBIT_START_RX_COUNTER_READ BIT(15)
  232. /* MAC_RX_STATCTR_DATA_HIGH (0x01ac) */
  233. #define MREGBIT_RX_STATCTR_DATA_HIGH GENMASK(15, 0)
  234. /* MAC_RX_STATCTR_DATA_LOW (0x01b0) */
  235. #define MREGBIT_RX_STATCTR_DATA_LOW GENMASK(15, 0)
  236. /* MAC_TX_STATCTR_CONTROL (0x01b4) */
  237. #define MREGBIT_TX_COUNTER_NUMBER GENMASK(4, 0)
  238. #define MREGBIT_START_TX_COUNTER_READ BIT(15)
  239. /* MAC_TX_STATCTR_DATA_HIGH (0x01b8) */
  240. #define MREGBIT_TX_STATCTR_DATA_HIGH GENMASK(15, 0)
  241. /* MAC_TX_STATCTR_DATA_LOW (0x01bc) */
  242. #define MREGBIT_TX_STATCTR_DATA_LOW GENMASK(15, 0)
  243. /* MAC_TRANSMIT_FIFO_ALMOST_FULL (0x01c0) */
  244. #define MREGBIT_TX_FIFO_AF GENMASK(13, 0)
  245. /* MAC_TRANSMIT_PACKET_START_THRESHOLD (0x01c4) */
  246. #define MREGBIT_TX_PACKET_START_THRESHOLD GENMASK(13, 0)
  247. /* MAC_RECEIVE_PACKET_START_THRESHOLD (0x01c8) */
  248. #define MREGBIT_RX_PACKET_START_THRESHOLD GENMASK(13, 0)
  249. /* MAC_STATUS_IRQ (0x01e0) */
  250. #define MREGBIT_MAC_UNDERRUN_IRQ BIT(0)
  251. #define MREGBIT_MAC_JABBER_IRQ BIT(1)
  252. /* MAC_INTERRUPT_ENABLE (0x01e4) */
  253. #define MREGBIT_MAC_UNDERRUN_INTERRUPT_ENABLE BIT(0)
  254. #define MREGBIT_JABBER_INTERRUPT_ENABLE BIT(1)
  255. /* RX DMA descriptor */
  256. #define RX_DESC_0_FRAME_PACKET_LENGTH_MASK GENMASK(13, 0)
  257. #define RX_DESC_0_FRAME_ALIGN_ERR BIT(14)
  258. #define RX_DESC_0_FRAME_RUNT BIT(15)
  259. #define RX_DESC_0_FRAME_ETHERNET_TYPE BIT(16)
  260. #define RX_DESC_0_FRAME_VLAN BIT(17)
  261. #define RX_DESC_0_FRAME_MULTICAST BIT(18)
  262. #define RX_DESC_0_FRAME_BROADCAST BIT(19)
  263. #define RX_DESC_0_FRAME_CRC_ERR BIT(20)
  264. #define RX_DESC_0_FRAME_MAX_LEN_ERR BIT(21)
  265. #define RX_DESC_0_FRAME_JABBER_ERR BIT(22)
  266. #define RX_DESC_0_FRAME_LENGTH_ERR BIT(23)
  267. #define RX_DESC_0_FRAME_MAC_ADDR1_MATCH BIT(24)
  268. #define RX_DESC_0_FRAME_MAC_ADDR2_MATCH BIT(25)
  269. #define RX_DESC_0_FRAME_MAC_ADDR3_MATCH BIT(26)
  270. #define RX_DESC_0_FRAME_MAC_ADDR4_MATCH BIT(27)
  271. #define RX_DESC_0_FRAME_PAUSE_CTRL BIT(28)
  272. #define RX_DESC_0_LAST_DESCRIPTOR BIT(29)
  273. #define RX_DESC_0_FIRST_DESCRIPTOR BIT(30)
  274. #define RX_DESC_0_OWN BIT(31)
  275. #define RX_DESC_1_BUFFER_SIZE_1_MASK GENMASK(11, 0)
  276. #define RX_DESC_1_BUFFER_SIZE_2_MASK GENMASK(23, 12)
  277. /* [24] reserved */
  278. #define RX_DESC_1_SECOND_ADDRESS_CHAINED BIT(25)
  279. #define RX_DESC_1_END_RING BIT(26)
  280. /* [29:27] reserved */
  281. #define RX_DESC_1_RX_TIMESTAMP BIT(30)
  282. #define RX_DESC_1_PTP_PKT BIT(31)
  283. /* TX DMA descriptor */
  284. /* [29:0] unused */
  285. #define TX_DESC_0_TX_TIMESTAMP BIT(30)
  286. #define TX_DESC_0_OWN BIT(31)
  287. #define TX_DESC_1_BUFFER_SIZE_1_MASK GENMASK(11, 0)
  288. #define TX_DESC_1_BUFFER_SIZE_2_MASK GENMASK(23, 12)
  289. #define TX_DESC_1_FORCE_EOP_ERROR BIT(24)
  290. #define TX_DESC_1_SECOND_ADDRESS_CHAINED BIT(25)
  291. #define TX_DESC_1_END_RING BIT(26)
  292. #define TX_DESC_1_DISABLE_PADDING BIT(27)
  293. #define TX_DESC_1_ADD_CRC_DISABLE BIT(28)
  294. #define TX_DESC_1_FIRST_SEGMENT BIT(29)
  295. #define TX_DESC_1_LAST_SEGMENT BIT(30)
  296. #define TX_DESC_1_INTERRUPT_ON_COMPLETION BIT(31)
  297. struct emac_desc {
  298. u32 desc0;
  299. u32 desc1;
  300. u32 buffer_addr_1;
  301. u32 buffer_addr_2;
  302. };
  303. /* Keep stats in this order, index used for accessing hardware */
  304. union emac_hw_tx_stats {
  305. struct individual_tx_stats {
  306. u64 tx_ok_pkts;
  307. u64 tx_total_pkts;
  308. u64 tx_ok_bytes;
  309. u64 tx_err_pkts;
  310. u64 tx_singleclsn_pkts;
  311. u64 tx_multiclsn_pkts;
  312. u64 tx_lateclsn_pkts;
  313. u64 tx_excessclsn_pkts;
  314. u64 tx_unicast_pkts;
  315. u64 tx_multicast_pkts;
  316. u64 tx_broadcast_pkts;
  317. u64 tx_pause_pkts;
  318. } stats;
  319. u64 array[sizeof(struct individual_tx_stats) / sizeof(u64)];
  320. };
  321. union emac_hw_rx_stats {
  322. struct individual_rx_stats {
  323. u64 rx_ok_pkts;
  324. u64 rx_total_pkts;
  325. u64 rx_crc_err_pkts;
  326. u64 rx_align_err_pkts;
  327. u64 rx_err_total_pkts;
  328. u64 rx_ok_bytes;
  329. u64 rx_total_bytes;
  330. u64 rx_unicast_pkts;
  331. u64 rx_multicast_pkts;
  332. u64 rx_broadcast_pkts;
  333. u64 rx_pause_pkts;
  334. u64 rx_len_err_pkts;
  335. u64 rx_len_undersize_pkts;
  336. u64 rx_len_oversize_pkts;
  337. u64 rx_len_fragment_pkts;
  338. u64 rx_len_jabber_pkts;
  339. u64 rx_64_pkts;
  340. u64 rx_65_127_pkts;
  341. u64 rx_128_255_pkts;
  342. u64 rx_256_511_pkts;
  343. u64 rx_512_1023_pkts;
  344. u64 rx_1024_1518_pkts;
  345. u64 rx_1519_plus_pkts;
  346. u64 rx_drp_fifo_full_pkts;
  347. u64 rx_truncate_fifo_full_pkts;
  348. } stats;
  349. u64 array[sizeof(struct individual_rx_stats) / sizeof(u64)];
  350. };
  351. #endif /* _K1_EMAC_H_ */