1#ifndef __MV64340_ETH_H__
2#define __MV64340_ETH_H__
3
4#include <linux/version.h>
5#include <linux/module.h>
6#include <linux/kernel.h>
7#include <linux/spinlock.h>
8#include <linux/workqueue.h>
9
10#include <linux/mv643xx.h>
11
12#define BIT0 0x00000001
13#define BIT1 0x00000002
14#define BIT2 0x00000004
15#define BIT3 0x00000008
16#define BIT4 0x00000010
17#define BIT5 0x00000020
18#define BIT6 0x00000040
19#define BIT7 0x00000080
20#define BIT8 0x00000100
21#define BIT9 0x00000200
22#define BIT10 0x00000400
23#define BIT11 0x00000800
24#define BIT12 0x00001000
25#define BIT13 0x00002000
26#define BIT14 0x00004000
27#define BIT15 0x00008000
28#define BIT16 0x00010000
29#define BIT17 0x00020000
30#define BIT18 0x00040000
31#define BIT19 0x00080000
32#define BIT20 0x00100000
33#define BIT21 0x00200000
34#define BIT22 0x00400000
35#define BIT23 0x00800000
36#define BIT24 0x01000000
37#define BIT25 0x02000000
38#define BIT26 0x04000000
39#define BIT27 0x08000000
40#define BIT28 0x10000000
41#define BIT29 0x20000000
42#define BIT30 0x40000000
43#define BIT31 0x80000000
44
45
46
47
48
49#define ETH_PORT0_IRQ_NUM 48
50#define ETH_PORT1_IRQ_NUM ETH_PORT0_IRQ_NUM+1
51#define ETH_PORT2_IRQ_NUM ETH_PORT0_IRQ_NUM+2
52
53
54#define MV64340_CHECKSUM_OFFLOAD_TX
55#define MV64340_NAPI
56#define MV64340_TX_FAST_REFILL
57#undef MV64340_COAL
58
59
60
61
62
63
64
65
66
67
68#define MV64340_TX_QUEUE_SIZE 1000
69
70
71#define MV64340_RX_QUEUE_SIZE 400
72
73#define MV64340_TX_COAL 100
74#ifdef MV64340_COAL
75#define MV64340_RX_COAL 100
76#endif
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97#define PORT_CONFIG_VALUE \
98 ETH_UNICAST_NORMAL_MODE | \
99 ETH_DEFAULT_RX_QUEUE_0 | \
100 ETH_DEFAULT_RX_ARP_QUEUE_0 | \
101 ETH_RECEIVE_BC_IF_NOT_IP_OR_ARP | \
102 ETH_RECEIVE_BC_IF_IP | \
103 ETH_RECEIVE_BC_IF_ARP | \
104 ETH_CAPTURE_TCP_FRAMES_DIS | \
105 ETH_CAPTURE_UDP_FRAMES_DIS | \
106 ETH_DEFAULT_RX_TCP_QUEUE_0 | \
107 ETH_DEFAULT_RX_UDP_QUEUE_0 | \
108 ETH_DEFAULT_RX_BPDU_QUEUE_0
109
110
111#define PORT_CONFIG_EXTEND_VALUE \
112 ETH_SPAN_BPDU_PACKETS_AS_NORMAL | \
113 ETH_PARTITION_DISABLE
114
115
116
117#define PORT_SDMA_CONFIG_VALUE \
118 ETH_RX_BURST_SIZE_16_64BIT | \
119 GT_ETH_IPG_INT_RX(0) | \
120 ETH_TX_BURST_SIZE_16_64BIT;
121
122#define GT_ETH_IPG_INT_RX(value) \
123 ((value & 0x3fff) << 8)
124
125
126#define PORT_SERIAL_CONTROL_VALUE \
127 ETH_FORCE_LINK_PASS | \
128 ETH_ENABLE_AUTO_NEG_FOR_DUPLX | \
129 ETH_DISABLE_AUTO_NEG_FOR_FLOW_CTRL | \
130 ETH_ADV_SYMMETRIC_FLOW_CTRL | \
131 ETH_FORCE_FC_MODE_NO_PAUSE_DIS_TX | \
132 ETH_FORCE_BP_MODE_NO_JAM | \
133 BIT9 | \
134 ETH_DO_NOT_FORCE_LINK_FAIL | \
135 ETH_RETRANSMIT_16_ATTEMPTS | \
136 ETH_ENABLE_AUTO_NEG_SPEED_GMII | \
137 ETH_DTE_ADV_0 | \
138 ETH_DISABLE_AUTO_NEG_BYPASS | \
139 ETH_AUTO_NEG_NO_CHANGE | \
140 ETH_MAX_RX_PACKET_9700BYTE | \
141 ETH_CLR_EXT_LOOPBACK | \
142 ETH_SET_FULL_DUPLEX_MODE | \
143 ETH_ENABLE_FLOW_CTRL_TX_RX_IN_FULL_DUPLEX
144
145#define RX_BUFFER_MAX_SIZE 0x4000000
146#define TX_BUFFER_MAX_SIZE 0x4000000
147
148
149#define ACCEPT_MAC_ADDR 0
150#define REJECT_MAC_ADDR 1
151
152
153#define RX_BUF_OFFSET 0x2
154
155
156
157
158#define ETH_MIB_GOOD_OCTETS_RECEIVED_LOW 0x0
159#define ETH_MIB_GOOD_OCTETS_RECEIVED_HIGH 0x4
160#define ETH_MIB_BAD_OCTETS_RECEIVED 0x8
161#define ETH_MIB_INTERNAL_MAC_TRANSMIT_ERR 0xc
162#define ETH_MIB_GOOD_FRAMES_RECEIVED 0x10
163#define ETH_MIB_BAD_FRAMES_RECEIVED 0x14
164#define ETH_MIB_BROADCAST_FRAMES_RECEIVED 0x18
165#define ETH_MIB_MULTICAST_FRAMES_RECEIVED 0x1c
166#define ETH_MIB_FRAMES_64_OCTETS 0x20
167#define ETH_MIB_FRAMES_65_TO_127_OCTETS 0x24
168#define ETH_MIB_FRAMES_128_TO_255_OCTETS 0x28
169#define ETH_MIB_FRAMES_256_TO_511_OCTETS 0x2c
170#define ETH_MIB_FRAMES_512_TO_1023_OCTETS 0x30
171#define ETH_MIB_FRAMES_1024_TO_MAX_OCTETS 0x34
172#define ETH_MIB_GOOD_OCTETS_SENT_LOW 0x38
173#define ETH_MIB_GOOD_OCTETS_SENT_HIGH 0x3c
174#define ETH_MIB_GOOD_FRAMES_SENT 0x40
175#define ETH_MIB_EXCESSIVE_COLLISION 0x44
176#define ETH_MIB_MULTICAST_FRAMES_SENT 0x48
177#define ETH_MIB_BROADCAST_FRAMES_SENT 0x4c
178#define ETH_MIB_UNREC_MAC_CONTROL_RECEIVED 0x50
179#define ETH_MIB_FC_SENT 0x54
180#define ETH_MIB_GOOD_FC_RECEIVED 0x58
181#define ETH_MIB_BAD_FC_RECEIVED 0x5c
182#define ETH_MIB_UNDERSIZE_RECEIVED 0x60
183#define ETH_MIB_FRAGMENTS_RECEIVED 0x64
184#define ETH_MIB_OVERSIZE_RECEIVED 0x68
185#define ETH_MIB_JABBER_RECEIVED 0x6c
186#define ETH_MIB_MAC_RECEIVE_ERROR 0x70
187#define ETH_MIB_BAD_CRC_EVENT 0x74
188#define ETH_MIB_COLLISION 0x78
189#define ETH_MIB_LATE_COLLISION 0x7c
190
191
192#define ETH_INTERFACE_GMII_MII 0
193#define ETH_INTERFACE_PCM BIT0
194#define ETH_LINK_IS_DOWN 0
195#define ETH_LINK_IS_UP BIT1
196#define ETH_PORT_AT_HALF_DUPLEX 0
197#define ETH_PORT_AT_FULL_DUPLEX BIT2
198#define ETH_RX_FLOW_CTRL_DISABLED 0
199#define ETH_RX_FLOW_CTRL_ENBALED BIT3
200#define ETH_GMII_SPEED_100_10 0
201#define ETH_GMII_SPEED_1000 BIT4
202#define ETH_MII_SPEED_10 0
203#define ETH_MII_SPEED_100 BIT5
204#define ETH_NO_TX 0
205#define ETH_TX_IN_PROGRESS BIT7
206#define ETH_BYPASS_NO_ACTIVE 0
207#define ETH_BYPASS_ACTIVE BIT8
208#define ETH_PORT_NOT_AT_PARTITION_STATE 0
209#define ETH_PORT_AT_PARTITION_STATE BIT9
210#define ETH_PORT_TX_FIFO_NOT_EMPTY 0
211#define ETH_PORT_TX_FIFO_EMPTY BIT10
212
213
214
215#define ETH_UNICAST_NORMAL_MODE 0
216#define ETH_UNICAST_PROMISCUOUS_MODE BIT0
217#define ETH_DEFAULT_RX_QUEUE_0 0
218#define ETH_DEFAULT_RX_QUEUE_1 BIT1
219#define ETH_DEFAULT_RX_QUEUE_2 BIT2
220#define ETH_DEFAULT_RX_QUEUE_3 (BIT2 | BIT1)
221#define ETH_DEFAULT_RX_QUEUE_4 BIT3
222#define ETH_DEFAULT_RX_QUEUE_5 (BIT3 | BIT1)
223#define ETH_DEFAULT_RX_QUEUE_6 (BIT3 | BIT2)
224#define ETH_DEFAULT_RX_QUEUE_7 (BIT3 | BIT2 | BIT1)
225#define ETH_DEFAULT_RX_ARP_QUEUE_0 0
226#define ETH_DEFAULT_RX_ARP_QUEUE_1 BIT4
227#define ETH_DEFAULT_RX_ARP_QUEUE_2 BIT5
228#define ETH_DEFAULT_RX_ARP_QUEUE_3 (BIT5 | BIT4)
229#define ETH_DEFAULT_RX_ARP_QUEUE_4 BIT6
230#define ETH_DEFAULT_RX_ARP_QUEUE_5 (BIT6 | BIT4)
231#define ETH_DEFAULT_RX_ARP_QUEUE_6 (BIT6 | BIT5)
232#define ETH_DEFAULT_RX_ARP_QUEUE_7 (BIT6 | BIT5 | BIT4)
233#define ETH_RECEIVE_BC_IF_NOT_IP_OR_ARP 0
234#define ETH_REJECT_BC_IF_NOT_IP_OR_ARP BIT7
235#define ETH_RECEIVE_BC_IF_IP 0
236#define ETH_REJECT_BC_IF_IP BIT8
237#define ETH_RECEIVE_BC_IF_ARP 0
238#define ETH_REJECT_BC_IF_ARP BIT9
239#define ETH_TX_AM_NO_UPDATE_ERROR_SUMMARY BIT12
240#define ETH_CAPTURE_TCP_FRAMES_DIS 0
241#define ETH_CAPTURE_TCP_FRAMES_EN BIT14
242#define ETH_CAPTURE_UDP_FRAMES_DIS 0
243#define ETH_CAPTURE_UDP_FRAMES_EN BIT15
244#define ETH_DEFAULT_RX_TCP_QUEUE_0 0
245#define ETH_DEFAULT_RX_TCP_QUEUE_1 BIT16
246#define ETH_DEFAULT_RX_TCP_QUEUE_2 BIT17
247#define ETH_DEFAULT_RX_TCP_QUEUE_3 (BIT17 | BIT16)
248#define ETH_DEFAULT_RX_TCP_QUEUE_4 BIT18
249#define ETH_DEFAULT_RX_TCP_QUEUE_5 (BIT18 | BIT16)
250#define ETH_DEFAULT_RX_TCP_QUEUE_6 (BIT18 | BIT17)
251#define ETH_DEFAULT_RX_TCP_QUEUE_7 (BIT18 | BIT17 | BIT16)
252#define ETH_DEFAULT_RX_UDP_QUEUE_0 0
253#define ETH_DEFAULT_RX_UDP_QUEUE_1 BIT19
254#define ETH_DEFAULT_RX_UDP_QUEUE_2 BIT20
255#define ETH_DEFAULT_RX_UDP_QUEUE_3 (BIT20 | BIT19)
256#define ETH_DEFAULT_RX_UDP_QUEUE_4 (BIT21
257#define ETH_DEFAULT_RX_UDP_QUEUE_5 (BIT21 | BIT19)
258#define ETH_DEFAULT_RX_UDP_QUEUE_6 (BIT21 | BIT20)
259#define ETH_DEFAULT_RX_UDP_QUEUE_7 (BIT21 | BIT20 | BIT19)
260#define ETH_DEFAULT_RX_BPDU_QUEUE_0 0
261#define ETH_DEFAULT_RX_BPDU_QUEUE_1 BIT22
262#define ETH_DEFAULT_RX_BPDU_QUEUE_2 BIT23
263#define ETH_DEFAULT_RX_BPDU_QUEUE_3 (BIT23 | BIT22)
264#define ETH_DEFAULT_RX_BPDU_QUEUE_4 BIT24
265#define ETH_DEFAULT_RX_BPDU_QUEUE_5 (BIT24 | BIT22)
266#define ETH_DEFAULT_RX_BPDU_QUEUE_6 (BIT24 | BIT23)
267#define ETH_DEFAULT_RX_BPDU_QUEUE_7 (BIT24 | BIT23 | BIT22)
268
269
270
271#define ETH_CLASSIFY_EN BIT0
272#define ETH_SPAN_BPDU_PACKETS_AS_NORMAL 0
273#define ETH_SPAN_BPDU_PACKETS_TO_RX_QUEUE_7 BIT1
274#define ETH_PARTITION_DISABLE 0
275#define ETH_PARTITION_ENABLE BIT2
276
277
278
279#define ETH_QUEUE_0_ENABLE BIT0
280#define ETH_QUEUE_1_ENABLE BIT1
281#define ETH_QUEUE_2_ENABLE BIT2
282#define ETH_QUEUE_3_ENABLE BIT3
283#define ETH_QUEUE_4_ENABLE BIT4
284#define ETH_QUEUE_5_ENABLE BIT5
285#define ETH_QUEUE_6_ENABLE BIT6
286#define ETH_QUEUE_7_ENABLE BIT7
287#define ETH_QUEUE_0_DISABLE BIT8
288#define ETH_QUEUE_1_DISABLE BIT9
289#define ETH_QUEUE_2_DISABLE BIT10
290#define ETH_QUEUE_3_DISABLE BIT11
291#define ETH_QUEUE_4_DISABLE BIT12
292#define ETH_QUEUE_5_DISABLE BIT13
293#define ETH_QUEUE_6_DISABLE BIT14
294#define ETH_QUEUE_7_DISABLE BIT15
295
296
297
298#define ETH_RIFB BIT0
299#define ETH_RX_BURST_SIZE_1_64BIT 0
300#define ETH_RX_BURST_SIZE_2_64BIT BIT1
301#define ETH_RX_BURST_SIZE_4_64BIT BIT2
302#define ETH_RX_BURST_SIZE_8_64BIT (BIT2 | BIT1)
303#define ETH_RX_BURST_SIZE_16_64BIT BIT3
304#define ETH_BLM_RX_NO_SWAP BIT4
305#define ETH_BLM_RX_BYTE_SWAP 0
306#define ETH_BLM_TX_NO_SWAP BIT5
307#define ETH_BLM_TX_BYTE_SWAP 0
308#define ETH_DESCRIPTORS_BYTE_SWAP BIT6
309#define ETH_DESCRIPTORS_NO_SWAP 0
310#define ETH_TX_BURST_SIZE_1_64BIT 0
311#define ETH_TX_BURST_SIZE_2_64BIT BIT22
312#define ETH_TX_BURST_SIZE_4_64BIT BIT23
313#define ETH_TX_BURST_SIZE_8_64BIT (BIT23 | BIT22)
314#define ETH_TX_BURST_SIZE_16_64BIT BIT24
315
316
317
318
319#define ETH_SERIAL_PORT_DISABLE 0
320#define ETH_SERIAL_PORT_ENABLE BIT0
321#define ETH_FORCE_LINK_PASS BIT1
322#define ETH_DO_NOT_FORCE_LINK_PASS 0
323#define ETH_ENABLE_AUTO_NEG_FOR_DUPLX 0
324#define ETH_DISABLE_AUTO_NEG_FOR_DUPLX BIT2
325#define ETH_ENABLE_AUTO_NEG_FOR_FLOW_CTRL 0
326#define ETH_DISABLE_AUTO_NEG_FOR_FLOW_CTRL BIT3
327#define ETH_ADV_NO_FLOW_CTRL 0
328#define ETH_ADV_SYMMETRIC_FLOW_CTRL BIT4
329#define ETH_FORCE_FC_MODE_NO_PAUSE_DIS_TX 0
330#define ETH_FORCE_FC_MODE_TX_PAUSE_DIS BIT5
331#define ETH_FORCE_BP_MODE_NO_JAM 0
332#define ETH_FORCE_BP_MODE_JAM_TX BIT7
333#define ETH_FORCE_BP_MODE_JAM_TX_ON_RX_ERR BIT8
334#define ETH_FORCE_LINK_FAIL 0
335#define ETH_DO_NOT_FORCE_LINK_FAIL BIT10
336#define ETH_RETRANSMIT_16_ATTEMPTS 0
337#define ETH_RETRANSMIT_FOREVER BIT11
338#define ETH_DISABLE_AUTO_NEG_SPEED_GMII BIT13
339#define ETH_ENABLE_AUTO_NEG_SPEED_GMII 0
340#define ETH_DTE_ADV_0 0
341#define ETH_DTE_ADV_1 BIT14
342#define ETH_DISABLE_AUTO_NEG_BYPASS 0
343#define ETH_ENABLE_AUTO_NEG_BYPASS BIT15
344#define ETH_AUTO_NEG_NO_CHANGE 0
345#define ETH_RESTART_AUTO_NEG BIT16
346#define ETH_MAX_RX_PACKET_1518BYTE 0
347#define ETH_MAX_RX_PACKET_1522BYTE BIT17
348#define ETH_MAX_RX_PACKET_1552BYTE BIT18
349#define ETH_MAX_RX_PACKET_9022BYTE (BIT18 | BIT17)
350#define ETH_MAX_RX_PACKET_9192BYTE BIT19
351#define ETH_MAX_RX_PACKET_9700BYTE (BIT19 | BIT17)
352#define ETH_SET_EXT_LOOPBACK BIT20
353#define ETH_CLR_EXT_LOOPBACK 0
354#define ETH_SET_FULL_DUPLEX_MODE BIT21
355#define ETH_SET_HALF_DUPLEX_MODE 0
356#define ETH_ENABLE_FLOW_CTRL_TX_RX_IN_FULL_DUPLEX BIT22
357#define ETH_DISABLE_FLOW_CTRL_TX_RX_IN_FULL_DUPLEX 0
358#define ETH_SET_GMII_SPEED_TO_10_100 0
359#define ETH_SET_GMII_SPEED_TO_1000 BIT23
360#define ETH_SET_MII_SPEED_TO_10 0
361#define ETH_SET_MII_SPEED_TO_100 BIT24
362
363
364
365#define ETH_SMI_BUSY BIT28
366#define ETH_SMI_READ_VALID BIT27
367#define ETH_SMI_OPCODE_WRITE 0
368#define ETH_SMI_OPCODE_READ BIT26
369
370
371
372
373#define ETH_ERROR_SUMMARY (BIT0)
374
375
376#define ETH_BUFFER_OWNED_BY_DMA (BIT31)
377
378
379#define ETH_LC_ERROR (0 )
380#define ETH_UR_ERROR (BIT1 )
381#define ETH_RL_ERROR (BIT2 )
382#define ETH_LLC_SNAP_FORMAT (BIT9 )
383
384
385#define ETH_CRC_ERROR (0 )
386#define ETH_OVERRUN_ERROR (BIT1 )
387#define ETH_MAX_FRAME_LENGTH_ERROR (BIT2 )
388#define ETH_RESOURCE_ERROR ((BIT2 | BIT1))
389#define ETH_VLAN_TAGGED (BIT19)
390#define ETH_BPDU_FRAME (BIT20)
391#define ETH_TCP_FRAME_OVER_IP_V_4 (0 )
392#define ETH_UDP_FRAME_OVER_IP_V_4 (BIT21)
393#define ETH_OTHER_FRAME_TYPE (BIT22)
394#define ETH_LAYER_2_IS_ETH_V_2 (BIT23)
395#define ETH_FRAME_TYPE_IP_V_4 (BIT24)
396#define ETH_FRAME_HEADER_OK (BIT25)
397#define ETH_RX_LAST_DESC (BIT26)
398#define ETH_RX_FIRST_DESC (BIT27)
399#define ETH_UNKNOWN_DESTINATION_ADDR (BIT28)
400#define ETH_RX_ENABLE_INTERRUPT (BIT29)
401#define ETH_LAYER_4_CHECKSUM_OK (BIT30)
402
403
404#define ETH_FRAME_FRAGMENTED (BIT2)
405
406
407#define ETH_LAYER_4_CHECKSUM_FIRST_DESC (BIT10)
408#define ETH_FRAME_SET_TO_VLAN (BIT15)
409#define ETH_TCP_FRAME (0 )
410#define ETH_UDP_FRAME (BIT16)
411#define ETH_GEN_TCP_UDP_CHECKSUM (BIT17)
412#define ETH_GEN_IP_V_4_CHECKSUM (BIT18)
413#define ETH_ZERO_PADDING (BIT19)
414#define ETH_TX_LAST_DESC (BIT20)
415#define ETH_TX_FIRST_DESC (BIT21)
416#define ETH_GEN_CRC (BIT22)
417#define ETH_TX_ENABLE_INTERRUPT (BIT23)
418#define ETH_AUTO_MODE (BIT30)
419
420
421
422typedef enum _eth_func_ret_status {
423 ETH_OK,
424 ETH_ERROR,
425 ETH_RETRY,
426 ETH_END_OF_JOB,
427 ETH_QUEUE_FULL,
428 ETH_QUEUE_LAST_RESOURCE
429} ETH_FUNC_RET_STATUS;
430
431typedef enum _eth_target {
432 ETH_TARGET_DRAM,
433 ETH_TARGET_DEVICE,
434 ETH_TARGET_CBS,
435 ETH_TARGET_PCI0,
436 ETH_TARGET_PCI1
437} ETH_TARGET;
438
439
440
441
442#if defined(__BIG_ENDIAN)
443struct eth_rx_desc {
444 u16 byte_cnt;
445 u16 buf_size;
446 u32 cmd_sts;
447 u32 next_desc_ptr;
448 u32 buf_ptr;
449};
450
451struct eth_tx_desc {
452 u16 byte_cnt;
453 u16 l4i_chk;
454 u32 cmd_sts;
455 u32 next_desc_ptr;
456 u32 buf_ptr;
457};
458
459#elif defined(__LITTLE_ENDIAN)
460struct eth_rx_desc {
461 u32 cmd_sts;
462 u16 buf_size;
463 u16 byte_cnt;
464 u32 buf_ptr;
465 u32 next_desc_ptr;
466};
467
468struct eth_tx_desc {
469 u32 cmd_sts;
470 u16 l4i_chk;
471 u16 byte_cnt;
472 u32 buf_ptr;
473 u32 next_desc_ptr;
474};
475#else
476#error One of __BIG_ENDIAN or __LITTLE_ENDIAN must be defined
477#endif
478
479
480
481struct pkt_info {
482 unsigned short byte_cnt;
483 unsigned short l4i_chk;
484 unsigned int cmd_sts;
485 dma_addr_t buf_ptr;
486 struct sk_buff * return_info;
487};
488
489
490
491
492struct mv64340_private {
493 int port_num;
494 u8 port_mac_addr[6];
495 u32 port_config;
496 u32 port_config_extend;
497 u32 port_sdma_config;
498 u32 port_serial_control;
499 u32 port_tx_queue_command;
500 u32 port_rx_queue_command;
501
502 int rx_resource_err;
503 int tx_resource_err;
504
505
506
507
508 int rx_curr_desc_q, rx_used_desc_q;
509
510
511 int tx_curr_desc_q, tx_used_desc_q;
512#ifdef MV64340_CHECKSUM_OFFLOAD_TX
513 int tx_first_desc_q;
514#endif
515
516#ifdef MV64340_TX_FAST_REFILL
517 u32 tx_clean_threshold;
518#endif
519
520 volatile struct eth_rx_desc * p_rx_desc_area;
521 dma_addr_t rx_desc_dma;
522 unsigned int rx_desc_area_size;
523 struct sk_buff * rx_skb[MV64340_RX_QUEUE_SIZE];
524
525 volatile struct eth_tx_desc * p_tx_desc_area;
526 dma_addr_t tx_desc_dma;
527 unsigned int tx_desc_area_size;
528 struct sk_buff * tx_skb[MV64340_TX_QUEUE_SIZE];
529
530 struct work_struct tx_timeout_task;
531
532
533
534
535 struct net_device_stats stats;
536 spinlock_t lock;
537
538 unsigned int tx_ring_size;
539
540 unsigned int tx_ring_skbs;
541
542 unsigned int rx_ring_size;
543
544 unsigned int rx_ring_skbs;
545
546
547
548
549 struct work_struct rx_task;
550
551
552
553
554
555 struct timer_list timeout;
556 long rx_task_busy __attribute__ ((aligned(SMP_CACHE_BYTES)));
557 unsigned rx_timer_flag;
558
559 u32 rx_int_coal;
560 u32 tx_int_coal;
561};
562
563
564
565
566static void eth_port_init(struct mv64340_private *mp);
567static void eth_port_reset(unsigned int eth_port_num);
568static int eth_port_start(struct mv64340_private *mp);
569
570static void ethernet_set_config_reg(unsigned int eth_port_num,
571 unsigned int value);
572static unsigned int ethernet_get_config_reg(unsigned int eth_port_num);
573
574
575static void eth_port_uc_addr_set(unsigned int eth_port_num,
576 unsigned char *p_addr);
577
578
579static int ethernet_phy_reset(unsigned int eth_port_num);
580
581static int eth_port_write_smi_reg(unsigned int eth_port_num,
582 unsigned int phy_reg,
583 unsigned int value);
584
585static int eth_port_read_smi_reg(unsigned int eth_port_num,
586 unsigned int phy_reg,
587 unsigned int *value);
588
589static void eth_clear_mib_counters(unsigned int eth_port_num);
590
591
592static ETH_FUNC_RET_STATUS eth_port_send(struct mv64340_private *mp,
593 struct pkt_info * p_pkt_info);
594static ETH_FUNC_RET_STATUS eth_tx_return_desc(struct mv64340_private *mp,
595 struct pkt_info * p_pkt_info);
596static ETH_FUNC_RET_STATUS eth_port_receive(struct mv64340_private *mp,
597 struct pkt_info * p_pkt_info);
598static ETH_FUNC_RET_STATUS eth_rx_return_buff(struct mv64340_private *mp,
599 struct pkt_info * p_pkt_info);
600
601#endif
602