1
2
3
4
5
6
7
8#ifndef XILINX_AXIENET_H
9#define XILINX_AXIENET_H
10
11#include <linux/netdevice.h>
12#include <linux/spinlock.h>
13#include <linux/interrupt.h>
14#include <linux/if_vlan.h>
15#include <linux/net_tstamp.h>
16
17
18#define XAE_HDR_SIZE 14
19#define XAE_TRL_SIZE 4
20#define XAE_MTU 1500
21#define XAE_JUMBO_MTU 9000
22
23#define XAE_MAX_FRAME_SIZE (XAE_MTU + XAE_HDR_SIZE + XAE_TRL_SIZE)
24#define XAE_MAX_VLAN_FRAME_SIZE (XAE_MTU + VLAN_ETH_HLEN + XAE_TRL_SIZE)
25#define XAE_MAX_JUMBO_FRAME_SIZE (XAE_JUMBO_MTU + XAE_HDR_SIZE + XAE_TRL_SIZE)
26
27
28
29
30#define XAE_OPTION_PROMISC BIT(0)
31
32
33#define XAE_OPTION_JUMBO BIT(1)
34
35
36#define XAE_OPTION_VLAN BIT(2)
37
38
39#define XAE_OPTION_FLOW_CONTROL BIT(4)
40
41
42
43
44#define XAE_OPTION_FCS_STRIP BIT(5)
45
46
47
48
49#define XAE_OPTION_FCS_INSERT BIT(6)
50
51
52
53
54
55
56
57#define XAE_OPTION_LENTYPE_ERR BIT(7)
58
59
60#define XAE_OPTION_TXEN BIT(11)
61
62
63#define XAE_OPTION_RXEN BIT(12)
64
65
66#define XAE_OPTION_DEFAULTS \
67 (XAE_OPTION_TXEN | \
68 XAE_OPTION_FLOW_CONTROL | \
69 XAE_OPTION_RXEN)
70
71
72
73#define XAXIDMA_TX_CR_OFFSET 0x00000000
74#define XAXIDMA_TX_SR_OFFSET 0x00000004
75#define XAXIDMA_TX_CDESC_OFFSET 0x00000008
76#define XAXIDMA_TX_TDESC_OFFSET 0x00000010
77
78#define XAXIDMA_RX_CR_OFFSET 0x00000030
79#define XAXIDMA_RX_SR_OFFSET 0x00000034
80#define XAXIDMA_RX_CDESC_OFFSET 0x00000038
81#define XAXIDMA_RX_TDESC_OFFSET 0x00000040
82
83#define XAXIDMA_CR_RUNSTOP_MASK 0x00000001
84#define XAXIDMA_CR_RESET_MASK 0x00000004
85
86#define XAXIDMA_BD_NDESC_OFFSET 0x00
87#define XAXIDMA_BD_BUFA_OFFSET 0x08
88#define XAXIDMA_BD_CTRL_LEN_OFFSET 0x18
89#define XAXIDMA_BD_STS_OFFSET 0x1C
90#define XAXIDMA_BD_USR0_OFFSET 0x20
91#define XAXIDMA_BD_USR1_OFFSET 0x24
92#define XAXIDMA_BD_USR2_OFFSET 0x28
93#define XAXIDMA_BD_USR3_OFFSET 0x2C
94#define XAXIDMA_BD_USR4_OFFSET 0x30
95#define XAXIDMA_BD_ID_OFFSET 0x34
96#define XAXIDMA_BD_HAS_STSCNTRL_OFFSET 0x38
97#define XAXIDMA_BD_HAS_DRE_OFFSET 0x3C
98
99#define XAXIDMA_BD_HAS_DRE_SHIFT 8
100#define XAXIDMA_BD_HAS_DRE_MASK 0xF00
101#define XAXIDMA_BD_WORDLEN_MASK 0xFF
102
103#define XAXIDMA_BD_CTRL_LENGTH_MASK 0x007FFFFF
104#define XAXIDMA_BD_CTRL_TXSOF_MASK 0x08000000
105#define XAXIDMA_BD_CTRL_TXEOF_MASK 0x04000000
106#define XAXIDMA_BD_CTRL_ALL_MASK 0x0C000000
107
108#define XAXIDMA_DELAY_MASK 0xFF000000
109#define XAXIDMA_COALESCE_MASK 0x00FF0000
110
111#define XAXIDMA_DELAY_SHIFT 24
112#define XAXIDMA_COALESCE_SHIFT 16
113
114#define XAXIDMA_IRQ_IOC_MASK 0x00001000
115#define XAXIDMA_IRQ_DELAY_MASK 0x00002000
116#define XAXIDMA_IRQ_ERROR_MASK 0x00004000
117#define XAXIDMA_IRQ_ALL_MASK 0x00007000
118
119
120#define XAXIDMA_DFT_TX_THRESHOLD 24
121#define XAXIDMA_DFT_TX_WAITBOUND 254
122#define XAXIDMA_DFT_RX_THRESHOLD 1
123#define XAXIDMA_DFT_RX_WAITBOUND 254
124
125#define XAXIDMA_BD_CTRL_TXSOF_MASK 0x08000000
126#define XAXIDMA_BD_CTRL_TXEOF_MASK 0x04000000
127#define XAXIDMA_BD_CTRL_ALL_MASK 0x0C000000
128
129#define XAXIDMA_BD_STS_ACTUAL_LEN_MASK 0x007FFFFF
130#define XAXIDMA_BD_STS_COMPLETE_MASK 0x80000000
131#define XAXIDMA_BD_STS_DEC_ERR_MASK 0x40000000
132#define XAXIDMA_BD_STS_SLV_ERR_MASK 0x20000000
133#define XAXIDMA_BD_STS_INT_ERR_MASK 0x10000000
134#define XAXIDMA_BD_STS_ALL_ERR_MASK 0x70000000
135#define XAXIDMA_BD_STS_RXSOF_MASK 0x08000000
136#define XAXIDMA_BD_STS_RXEOF_MASK 0x04000000
137#define XAXIDMA_BD_STS_ALL_MASK 0xFC000000
138
139#define XAXIDMA_BD_MINIMUM_ALIGNMENT 0x40
140
141
142#define XAXIFIFO_TXTS_ISR 0x00000000
143#define XAXIFIFO_TXTS_TXFD 0x00000010
144#define XAXIFIFO_TXTS_TLR 0x00000014
145#define XAXIFIFO_TXTS_RFO 0x0000001C
146#define XAXIFIFO_TXTS_RDFR 0x00000018
147#define XAXIFIFO_TXTS_RXFD 0x00000020
148#define XAXIFIFO_TXTS_RLR 0x00000024
149#define XAXIFIFO_TXTS_SRR 0x00000028
150
151#define XAXIFIFO_TXTS_INT_RC_MASK 0x04000000
152#define XAXIFIFO_TXTS_RXFD_MASK 0x7FFFFFFF
153#define XAXIFIFO_TXTS_RESET_MASK 0x000000A5
154#define XAXIFIFO_TXTS_TAG_MASK 0xFFFF0000
155#define XAXIFIFO_TXTS_TAG_SHIFT 16
156
157
158#define XAE_RAF_OFFSET 0x00000000
159#define XAE_TPF_OFFSET 0x00000004
160#define XAE_IFGP_OFFSET 0x00000008
161#define XAE_IS_OFFSET 0x0000000C
162#define XAE_IP_OFFSET 0x00000010
163#define XAE_IE_OFFSET 0x00000014
164#define XAE_TTAG_OFFSET 0x00000018
165#define XAE_RTAG_OFFSET 0x0000001C
166#define XAE_UAWL_OFFSET 0x00000020
167#define XAE_UAWU_OFFSET 0x00000024
168#define XAE_TPID0_OFFSET 0x00000028
169#define XAE_TPID1_OFFSET 0x0000002C
170#define XAE_PPST_OFFSET 0x00000030
171#define XAE_RCW0_OFFSET 0x00000400
172#define XAE_RCW1_OFFSET 0x00000404
173#define XAE_TC_OFFSET 0x00000408
174#define XAE_FCC_OFFSET 0x0000040C
175#define XAE_EMMC_OFFSET 0x00000410
176#define XAE_PHYC_OFFSET 0x00000414
177#define XAE_MDIO_MC_OFFSET 0x00000500
178#define XAE_MDIO_MCR_OFFSET 0x00000504
179#define XAE_MDIO_MWD_OFFSET 0x00000508
180#define XAE_MDIO_MRD_OFFSET 0x0000050C
181#define XAE_MDIO_MIS_OFFSET 0x00000600
182
183#define XAE_MDIO_MIP_OFFSET 0x00000620
184
185#define XAE_MDIO_MIE_OFFSET 0x00000640
186
187#define XAE_MDIO_MIC_OFFSET 0x00000660
188#define XAE_UAW0_OFFSET 0x00000700
189#define XAE_UAW1_OFFSET 0x00000704
190#define XAE_FMI_OFFSET 0x00000708
191#define XAE_AF0_OFFSET 0x00000710
192#define XAE_AF1_OFFSET 0x00000714
193
194#define XAE_TX_VLAN_DATA_OFFSET 0x00004000
195#define XAE_RX_VLAN_DATA_OFFSET 0x00008000
196#define XAE_MCAST_TABLE_OFFSET 0x00020000
197
198
199
200#define XAE_RAF_MCSTREJ_MASK 0x00000002
201
202#define XAE_RAF_BCSTREJ_MASK 0x00000004
203#define XAE_RAF_TXVTAGMODE_MASK 0x00000018
204#define XAE_RAF_RXVTAGMODE_MASK 0x00000060
205#define XAE_RAF_TXVSTRPMODE_MASK 0x00000180
206#define XAE_RAF_RXVSTRPMODE_MASK 0x00000600
207#define XAE_RAF_NEWFNCENBL_MASK 0x00000800
208
209#define XAE_RAF_EMULTIFLTRENBL_MASK 0x00001000
210#define XAE_RAF_STATSRST_MASK 0x00002000
211#define XAE_RAF_RXBADFRMEN_MASK 0x00004000
212#define XAE_RAF_TXVTAGMODE_SHIFT 3
213#define XAE_RAF_RXVTAGMODE_SHIFT 5
214#define XAE_RAF_TXVSTRPMODE_SHIFT 7
215#define XAE_RAF_RXVSTRPMODE_SHIFT 9
216
217
218#define XAE_TPF_TPFV_MASK 0x0000FFFF
219
220#define XAE_IFGP0_IFGP_MASK 0x0000007F
221
222
223
224
225
226#define XAE_INT_HARDACSCMPLT_MASK 0x00000001
227
228#define XAE_INT_AUTONEG_MASK 0x00000002
229#define XAE_INT_RXCMPIT_MASK 0x00000004
230#define XAE_INT_RXRJECT_MASK 0x00000008
231#define XAE_INT_RXFIFOOVR_MASK 0x00000010
232#define XAE_INT_TXCMPIT_MASK 0x00000020
233#define XAE_INT_RXDCMLOCK_MASK 0x00000040
234#define XAE_INT_MGTRDY_MASK 0x00000080
235#define XAE_INT_PHYRSTCMPLT_MASK 0x00000100
236#define XAE_INT_ALL_MASK 0x0000003F
237
238
239#define XAE_INT_RECV_ERROR_MASK \
240 (XAE_INT_RXRJECT_MASK | XAE_INT_RXFIFOOVR_MASK)
241
242
243#define XAE_TPID_0_MASK 0x0000FFFF
244#define XAE_TPID_1_MASK 0xFFFF0000
245
246
247#define XAE_TPID_2_MASK 0x0000FFFF
248#define XAE_TPID_3_MASK 0xFFFF0000
249
250
251#define XAE_RCW1_INBAND1588_MASK 0x00400000
252#define XAE_RCW1_RST_MASK 0x80000000
253#define XAE_RCW1_JUM_MASK 0x40000000
254
255#define XAE_RCW1_FCS_MASK 0x20000000
256#define XAE_RCW1_RX_MASK 0x10000000
257#define XAE_RCW1_VLAN_MASK 0x08000000
258
259#define XAE_RCW1_LT_DIS_MASK 0x02000000
260
261#define XAE_RCW1_CL_DIS_MASK 0x01000000
262
263
264
265#define XAE_RCW1_PAUSEADDR_MASK 0x0000FFFF
266
267
268#define XAE_TC_INBAND1588_MASK 0x00400000
269#define XAE_TC_RST_MASK 0x80000000
270#define XAE_TC_JUM_MASK 0x40000000
271
272#define XAE_TC_FCS_MASK 0x20000000
273#define XAE_TC_TX_MASK 0x10000000
274#define XAE_TC_VLAN_MASK 0x08000000
275
276#define XAE_TC_IFG_MASK 0x02000000
277
278
279#define XAE_FCC_FCRX_MASK 0x20000000
280#define XAE_FCC_FCTX_MASK 0x40000000
281
282
283#define XAE_EMMC_LINKSPEED_MASK 0xC0000000
284#define XAE_EMMC_RGMII_MASK 0x20000000
285#define XAE_EMMC_SGMII_MASK 0x10000000
286#define XAE_EMMC_GPCS_MASK 0x08000000
287#define XAE_EMMC_HOST_MASK 0x04000000
288#define XAE_EMMC_TX16BIT 0x02000000
289#define XAE_EMMC_RX16BIT 0x01000000
290#define XAE_EMMC_LINKSPD_10 0x00000000
291#define XAE_EMMC_LINKSPD_100 0x40000000
292#define XAE_EMMC_LINKSPD_1000 0x80000000
293#define XAE_EMMC_LINKSPD_2500 0x80000000
294
295
296#define XAE_PHYC_SGMIILINKSPEED_MASK 0xC0000000
297#define XAE_PHYC_RGMIILINKSPEED_MASK 0x0000000C
298#define XAE_PHYC_RGMIIHD_MASK 0x00000002
299#define XAE_PHYC_RGMIILINK_MASK 0x00000001
300#define XAE_PHYC_RGLINKSPD_10 0x00000000
301#define XAE_PHYC_RGLINKSPD_100 0x00000004
302#define XAE_PHYC_RGLINKSPD_1000 0x00000008
303#define XAE_PHYC_SGLINKSPD_10 0x00000000
304#define XAE_PHYC_SGLINKSPD_100 0x40000000
305#define XAE_PHYC_SGLINKSPD_1000 0x80000000
306
307
308#define XAE_MDIO_MC_MDIOEN_MASK 0x00000040
309#define XAE_MDIO_MC_CLOCK_DIVIDE_MAX 0x3F
310
311
312#define XAE_MDIO_MCR_PHYAD_MASK 0x1F000000
313#define XAE_MDIO_MCR_PHYAD_SHIFT 24
314#define XAE_MDIO_MCR_REGAD_MASK 0x001F0000
315#define XAE_MDIO_MCR_REGAD_SHIFT 16
316#define XAE_MDIO_MCR_OP_MASK 0x0000C000
317#define XAE_MDIO_MCR_OP_SHIFT 13
318#define XAE_MDIO_MCR_OP_READ_MASK 0x00008000
319#define XAE_MDIO_MCR_OP_WRITE_MASK 0x00004000
320#define XAE_MDIO_MCR_INITIATE_MASK 0x00000800
321#define XAE_MDIO_MCR_READY_MASK 0x00000080
322
323
324#define XAE_MDIO_INT_MIIM_RDY_MASK 0x00000001
325
326
327
328
329
330#define XAE_UAW1_UNICASTADDR_MASK 0x0000FFFF
331
332
333#define XAE_FMI_PM_MASK 0x80000000
334#define XAE_FMI_IND_MASK 0x00000003
335
336#define XAE_MDIO_DIV_DFT 29
337
338
339#define XAE_MULTICAST_CAM_TABLE_NUM 4
340
341
342#define XAE_FEATURE_PARTIAL_RX_CSUM BIT(0)
343#define XAE_FEATURE_PARTIAL_TX_CSUM BIT(1)
344#define XAE_FEATURE_FULL_RX_CSUM BIT(2)
345#define XAE_FEATURE_FULL_TX_CSUM BIT(3)
346
347#define XAE_NO_CSUM_OFFLOAD 0
348
349#define XAE_FULL_CSUM_STATUS_MASK 0x00000038
350#define XAE_IP_UDP_CSUM_VALIDATED 0x00000003
351#define XAE_IP_TCP_CSUM_VALIDATED 0x00000002
352
353#define DELAY_OF_ONE_MILLISEC 1000
354
355#define XAXIENET_NAPI_WEIGHT 64
356
357
358#define TX_TS_OP_NOOP 0x0
359#define TX_TS_OP_ONESTEP 0x1
360#define TX_TS_OP_TWOSTEP 0x2
361#define TX_TS_CSUM_UPDATE 0x1
362#define TX_PTP_CSUM_OFFSET 0x28
363#define TX_PTP_TS_OFFSET 0x4C
364
365
366#ifndef out_be32
367#if defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP)
368#define in_be32(offset) __raw_readl(offset)
369#define out_be32(offset, val) __raw_writel(val, offset)
370#endif
371#endif
372
373
374#define XXV_TC_OFFSET 0x0000000C
375#define XXV_RCW1_OFFSET 0x00000014
376#define XXV_JUM_OFFSET 0x00000018
377#define XXV_TICKREG_OFFSET 0x00000020
378#define XXV_STATRX_BLKLCK_OFFSET 0x0000040C
379
380
381#define XXV_TC_TX_MASK BIT(0)
382#define XXV_RCW1_RX_MASK BIT(0)
383#define XXV_RCW1_FCS_MASK BIT(1)
384#define XXV_TC_FCS_MASK BIT(1)
385#define XXV_MIN_JUM_MASK GENMASK(7, 0)
386#define XXV_MAX_JUM_MASK GENMASK(10, 8)
387#define XXV_RX_BLKLCK_MASK BIT(0)
388#define XXV_TICKREG_STATEN_MASK BIT(0)
389#define XXV_MAC_MIN_PKT_LEN 64
390
391
392#define XAE_TX_PTP_LEN 16
393#define XXV_TX_PTP_LEN 12
394
395
396#define XAE_TX_BUFFERS 64
397#define XAE_MAX_PKT_LEN 8192
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421struct axidma_bd {
422 u32 next;
423 u32 reserved1;
424 u32 phys;
425 u32 reserved2;
426 u32 reserved3;
427 u32 reserved4;
428 u32 cntrl;
429 u32 status;
430 u32 app0;
431 u32 app1;
432 u32 app2;
433 u32 app3;
434 u32 app4;
435 phys_addr_t sw_id_offset;
436 phys_addr_t ptp_tx_skb;
437 u32 ptp_tx_ts_tag;
438 phys_addr_t tx_skb;
439 u32 tx_desc_mapping;
440} __aligned(128);
441
442#define DESC_DMA_MAP_SINGLE 0
443#define DESC_DMA_MAP_PAGE 1
444
445#ifdef CONFIG_XILINX_TSN
446enum XAE_QUEUE {
447 XAE_BE = 0,
448 XAE_RE,
449 XAE_ST,
450 XAE_MAX_QUEUES,
451};
452#else
453#define XAE_MAX_QUEUES 1
454#endif
455
456#ifdef CONFIG_XILINX_TSN_PTP
457#define SIOCCHIOCTL SIOCDEVPRIVATE
458#endif
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507struct axienet_local {
508 struct net_device *ndev;
509 struct device *dev;
510
511
512 struct device_node *phy_node;
513
514
515 struct mii_bus *mii_bus;
516
517
518 void __iomem *regs;
519
520 struct tasklet_struct dma_err_tasklet[XAE_MAX_QUEUES];
521 struct napi_struct napi[XAE_MAX_QUEUES];
522
523 #define XAE_TEMAC1 0
524 #define XAE_TEMAC2 1
525 u8 temac_no;
526 u16 num_queues;
527 struct axienet_dma_q *dq[XAE_MAX_QUEUES];
528 bool is_tsn;
529#ifdef CONFIG_XILINX_TSN_PTP
530 void *timer_priv;
531 int ptp_tx_irq;
532 int ptp_rx_irq;
533 int rtc_irq;
534 int qbv_irq;
535 u8 ptp_rx_hw_pointer;
536 u8 ptp_rx_sw_pointer;
537 struct sk_buff_head ptp_txq;
538 struct work_struct tx_tstamp_work;
539 spinlock_t ptp_tx_lock;
540#endif
541 int eth_irq;
542 u32 phy_type;
543
544 u32 options;
545 u32 last_link;
546 u32 features;
547
548 u32 max_frm_size;
549 u32 rxmem;
550
551 int csum_offload_on_tx_path;
552 int csum_offload_on_rx_path;
553
554 u32 coalesce_count_rx;
555 u32 coalesce_count_tx;
556 u32 phy_interface;
557 u32 phy_flags;
558 bool eth_hasnobuf;
559 const struct axienet_config *axienet_config;
560
561#ifdef CONFIG_XILINX_AXI_EMAC_HWTSTAMP
562 void __iomem *tx_ts_regs;
563 void __iomem *rx_ts_regs;
564 struct hwtstamp_config tstamp_config;
565 u8 *tx_ptpheader;
566#endif
567 struct clk *eth_clk;
568 struct clk *dma_clk;
569};
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597struct axienet_dma_q {
598 struct axienet_local *lp;
599 void __iomem *dma_regs;
600
601 int tx_irq;
602 int rx_irq;
603
604 spinlock_t tx_lock;
605 spinlock_t rx_lock;
606
607
608 struct axidma_bd *tx_bd_v;
609 struct axidma_bd *rx_bd_v;
610 dma_addr_t rx_bd_p;
611 dma_addr_t tx_bd_p;
612
613 unsigned char *tx_buf[XAE_TX_BUFFERS];
614 unsigned char *tx_bufs;
615 dma_addr_t tx_bufs_dma;
616 bool eth_hasdre;
617
618 u32 tx_bd_ci;
619 u32 rx_bd_ci;
620 u32 tx_bd_tail;
621
622};
623
624
625
626
627
628
629
630
631
632
633enum axienet_ip_type {
634 XAXIENET_1G = 0,
635 XAXIENET_2_5G,
636 XAXIENET_LEGACY_10G,
637 XAXIENET_10G_25G,
638};
639
640struct axienet_config {
641 enum axienet_ip_type mactype;
642 void (*setoptions)(struct net_device *ndev, u32 options);
643 u32 tx_ptplen;
644};
645
646
647
648
649
650
651
652struct axienet_option {
653 u32 opt;
654 u32 reg;
655 u32 m_or;
656};
657
658struct xxvenet_option {
659 u32 opt;
660 u32 reg;
661 u32 m_or;
662};
663
664
665
666
667
668
669
670
671
672
673static inline u32 axienet_ior(struct axienet_local *lp, off_t offset)
674{
675 return in_be32(lp->regs + offset);
676}
677
678
679
680
681
682
683
684
685
686
687static inline void axienet_iow(struct axienet_local *lp, off_t offset,
688 u32 value)
689{
690 out_be32((lp->regs + offset), value);
691}
692
693#ifdef CONFIG_XILINX_AXI_EMAC_HWTSTAMP
694
695
696
697
698
699
700
701
702
703static inline u32 axienet_txts_ior(struct axienet_local *lp, off_t reg)
704{
705 return in_be32(lp->tx_ts_regs + reg);
706}
707
708
709
710
711
712
713
714
715static inline void axienet_txts_iow(struct axienet_local *lp, off_t reg,
716 u32 value)
717{
718 out_be32((lp->tx_ts_regs + reg), value);
719}
720
721
722
723
724
725
726
727
728
729
730static inline u32 axienet_rxts_ior(struct axienet_local *lp, off_t reg)
731{
732 return in_be32(lp->rx_ts_regs + reg);
733}
734
735
736
737
738
739
740
741
742static inline void axienet_rxts_iow(struct axienet_local *lp, off_t reg,
743 u32 value)
744{
745 out_be32((lp->rx_ts_regs + reg), value);
746}
747#endif
748
749
750int axienet_mdio_setup(struct axienet_local *lp, struct device_node *np);
751int axienet_mdio_wait_until_ready(struct axienet_local *lp);
752void axienet_mdio_teardown(struct axienet_local *lp);
753#ifdef CONFIG_XILINX_TSN_PTP
754void axienet_tx_tstamp(struct work_struct *work);
755#endif
756#ifdef CONFIG_XILINX_TSN_QBV
757int axienet_qbv_init(struct net_device *ndev);
758void axienet_qbv_remove(struct net_device *ndev);
759int axienet_set_schedule(struct net_device *ndev, void __user *useraddr);
760#endif
761
762#endif
763