Mercurial > archived > louis > epitech > mq > rathaxes
annotate rathaxes_sample_e1000_rewrite_device_dependent_code.patch @ 132:f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
author | Louis Opter <kalessin@kalessin.fr> |
---|---|
date | Sun, 05 Jan 2014 18:21:41 +0100 |
parents | c209851a82de |
children | dbb4a3b383cb |
rev | line source |
---|---|
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1 # HG changeset patch |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2 # Parent 7d00455945ec97c5851ac0d735da7c3cfbd8e39c |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
3 rathaxes: rewrite/refactor all the e1000 device dependent code |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
4 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
5 diff --git a/notes.txt b/notes.txt |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
6 new file mode 100644 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
7 --- /dev/null |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
8 +++ b/notes.txt |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
9 @@ -0,0 +1,26 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
10 +Remarks for David & Lionel: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
11 + |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
12 +- Too much changes to not start over; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
13 +- Lack of methods is extremely annoying and requires a lot of workarounds (e.g: |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
14 + see the register read/write/set/unset methods on e1000::Context); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
15 +- I'm using a pointcut inside the ethernet context "decl data_types" to inject |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
16 + my hardware context; it's impossible to get it back without hardcoding stuff, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
17 + because the ethernet subsystem isn't aware of the type of the field (so I |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
18 + can't write an attribute). Being able to just inject a type (instead of a |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
19 + whole structure field) might not be the best solution but would solve this |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
20 + issue/use case; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
21 +- Can I use the same name for a pointcut and a sequence (e.g: Ethernet::send |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
22 + bot a sequence name and a pointcut same thing for the interrupt handler); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
23 +- Lack of support for circular dependencies make some code annoying or |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
24 + incorrect (circular dependencies between abstract and concrete types via the |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
25 + attribute or circular dependencies between the rings and the hardware |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
26 + context). |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
27 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
28 +Todo/Totry: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
29 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
30 +- Use the rtx_ether_ctx attribute on AbstractDevice to initialize Device |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
31 + objects in ethernet.bl; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
32 +- Worry about the code being executed concurrently, e.g: what happens if the |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
33 + interrupt handler is called right before we disable it in the close path? |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
34 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
35 +Questions: |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
36 diff --git a/rathaxes/samples/e1000/CMakeLists.txt b/rathaxes/samples/e1000/CMakeLists.txt |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
37 old mode 100755 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
38 new mode 100644 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
39 --- a/rathaxes/samples/e1000/CMakeLists.txt |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
40 +++ b/rathaxes/samples/e1000/CMakeLists.txt |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
41 @@ -17,9 +17,9 @@ |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
42 dma.blt |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
43 pci.blt |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
44 socket.blt |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
45 - e1000.blt |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
46 - ethernet.blt) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
47 + ethernet.blt |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
48 + e1000.blt) |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
49 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
50 -IF (LINUX_KBUILD_DIR) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
51 - ADD_RATHAXES_LKM(e1000 e1000_src) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
52 -ENDIF (LINUX_KBUILD_DIR) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
53 +#IF (LINUX_KBUILD_DIR) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
54 +# ADD_RATHAXES_LKM(e1000 e1000_src) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
55 +#ENDIF (LINUX_KBUILD_DIR) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
56 diff --git a/rathaxes/samples/e1000/dma.blt b/rathaxes/samples/e1000/dma.blt |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
57 old mode 100755 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
58 new mode 100644 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
59 diff --git a/rathaxes/samples/e1000/dma.rti b/rathaxes/samples/e1000/dma.rti |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
60 old mode 100755 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
61 new mode 100644 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
62 diff --git a/rathaxes/samples/e1000/e1000.blt b/rathaxes/samples/e1000/e1000.blt |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
63 old mode 100755 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
64 new mode 100644 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
65 --- a/rathaxes/samples/e1000/e1000.blt |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
66 +++ b/rathaxes/samples/e1000/e1000.blt |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
67 @@ -1,8 +1,148 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
68 with e1000, Ethernet, Socket, DMA, PCI, LKM, Log, Builtin |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
69 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
70 - template type e1000::RxDescriptor() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
71 + template type e1000::Register() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
72 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
73 - decl data_types() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
74 + decl data_types() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
75 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
76 + E1000_CTRL = 0x00000, /* Device Control - RW */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
77 + E1000_CTRL_DUP = 0x00004, /* Device Control Duplicate (Shadow) - RW */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
78 + E1000_STATUS = 0x00008, /* Device Status - RO */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
79 + E1000_EEPROM_FLASH = 0x00010, /* EEPROM/Flash Control - RW */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
80 + E1000_EEPROM_READ = 0x00014, /* EEPROM Read - RW */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
81 + E1000_CTRL_EXT = 0x00018, /* Extended Device Control - RW */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
82 + E1000_FLA = 0x0001C, /* Flash Access - RW */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
83 + E1000_MDIC = 0x00020, /* MDI Control - RW */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
84 + E1000_IMS = 0x000D0, /* Interrupt Mask Set */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
85 + E1000_IMC = 0x000D8, /* Interrupt Mask Clear */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
86 + E1000_ICR = 0x000C0, /* Interrupt Cause Read - R/clr */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
87 + E1000_FCAL = 0x00028, /* Flow Control Address Low */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
88 + E1000_FCAH = 0x0002c, /* Flow Control Address High */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
89 + E1000_FCT = 0x00030, /* Flow Control Type */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
90 + E1000_RCTL = 0x00100, /* Receive Control */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
91 + E1000_FCTTV = 0x00170, /* Flow Control Transmit Timer Value */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
92 + E1000_TCTL = 0x00400, /* Transmit Control */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
93 + E1000_CRCERRS = 0x04000, /* CRC Error Count (base address of the statistic register spaces) */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
94 + E1000_RAL = 0x05400, /* Receive Address Low */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
95 + E1000_RAH = 0x05404, /* Receive Address High */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
96 + E1000_MTA = 0x05200, /* Multicast Table Array */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
97 + E1000_RDBAL = 0x02800, /* Receive Descriptor Base Address (Low 32 bits) */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
98 + E1000_RDBAH = 0x02804, /* Receive Descriptor Base Address (High 32 bits) */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
99 + E1000_RDLEN = 0x02808, /* Receive Descriptor Length */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
100 + E1000_RDH = 0x02810, /* Receive Descriptor Head */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
101 + E1000_RDT = 0x02818, /* Receive Descriptor Tail */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
102 + E1000_TDBAL = 0x03800, /* Transmit Descriptor Base Address (Low 32 bits) */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
103 + E1000_TDBAH = 0x03804, /* Transmit Descriptor Base Address (High 33 bits) */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
104 + E1000_TDLEN = 0x03808, /* Transmit Descriptor Length */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
105 + E1000_TDH = 0x03810, /* Transmit Descriptor Head */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
106 + E1000_TDT = 0x03818, /* Transmit Descriptor Tail */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
107 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
108 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
109 + map |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
110 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
111 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
112 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
113 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
114 + template type e1000::Commands() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
115 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
116 + decl data_types() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
117 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
118 + E1000_CMD_FD = 0x00000001, /* Full duplex.0=half; 1=full */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
119 + E1000_CMD_BEM = 0x00000002, /* Endian Mode.0=little,1=big */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
120 + E1000_CMD_PRIOR = 0x00000004, /* Priority on PCI. 0=rx,1=fair */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
121 + E1000_CMD_GIO_MASTER_DISABLE = 0x00000004, /* Blocks new Master requests */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
122 + E1000_CMD_LRST = 0x00000008, /* Link reset. 0=normal,1=reset */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
123 + E1000_CMD_TME = 0x00000010, /* Test mode. 0=normal,1=test */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
124 + E1000_CMD_SLE = 0x00000020, /* Serial Link on 0=dis,1=en */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
125 + E1000_CMD_ASDE = 0x00000020, /* Auto-speed detect enable */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
126 + E1000_CMD_SLU = 0x00000040, /* Set link up (Force Link) */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
127 + E1000_CMD_ILOS = 0x00000080, /* Invert Loss-Of Signal */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
128 + E1000_CMD_SPD_SEL = 0x00000300, /* Speed Select Mask */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
129 + E1000_CMD_SPD_10 = 0x00000000, /* Force 10Mb */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
130 + E1000_CMD_SPD_100 = 0x00000100, /* Force 100Mb */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
131 + E1000_CMD_SPD_1000 = 0x00000200, /* Force 1Gb */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
132 + E1000_CMD_BEM32 = 0x00000400, /* Big Endian 32 mode */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
133 + E1000_CMD_FRCSPD = 0x00000800, /* Force Speed */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
134 + E1000_CMD_FRCDPX = 0x00001000, /* Force Duplex */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
135 + E1000_CMD_D_UD_EN = 0x00002000, /* Dock/Undock enable */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
136 + E1000_CMD_D_UD_POLARITY = 0x00004000, /* Defined polarity of Dock/Undock indication in SDP[0] */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
137 + E1000_CMD_FORCE_PHY_RESET = 0x00008000, /* Reset both PHY ports, through PHYRST_N pin */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
138 + E1000_CMD_EXT_LINK_EN = 0x00010000, /* enable link status from external LINK_0 and LINK_1 pins */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
139 + E1000_CMD_SWDPIN0 = 0x00040000, /* SWDPIN 0 value */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
140 + E1000_CMD_SWDPIN1 = 0x00080000, /* SWDPIN 1 value */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
141 + E1000_CMD_SWDPIN2 = 0x00100000, /* SWDPIN 2 value */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
142 + E1000_CMD_SWDPIN3 = 0x00200000, /* SWDPIN 3 value */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
143 + E1000_CMD_SWDPIO0 = 0x00400000, /* SWDPIN 0 Input or output */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
144 + E1000_CMD_SWDPIO1 = 0x00800000, /* SWDPIN 1 input or output */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
145 + E1000_CMD_SWDPIO2 = 0x01000000, /* SWDPIN 2 input or output */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
146 + E1000_CMD_SWDPIO3 = 0x02000000, /* SWDPIN 3 input or output */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
147 + E1000_CMD_RST = 0x04000000, /* Global reset */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
148 + E1000_CMD_RFCE = 0x08000000, /* Receive Flow Control enable */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
149 + E1000_CMD_TFCE = 0x10000000, /* Transmit flow control enable */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
150 + E1000_CMD_RTE = 0x20000000, /* Routing tag enable */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
151 + E1000_CMD_VME = 0x40000000, /* IEEE VLAN mode enable */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
152 + E1000_CMD_PHY_RST = 0x80000000, /* PHY Reset */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
153 + E1000_CMD_SW2FW_INT = 0x02000000, /* Initiate an interrupt to manageability engine */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
154 + E1000_INTR_TXDW = 0x00000001, /* Transmit desc written back */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
155 + E1000_INTR_TXQE = 0x00000002, /* Transmit Queue empty */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
156 + E1000_INTR_LSC = 0x00000004, /* Link Status Change */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
157 + E1000_INTR_RXSEQ = 0x00000008, /* rx sequence error */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
158 + E1000_INTR_RXDMT0 = 0x00000010, /* rx desc min. threshold (0) */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
159 + E1000_INTR_RXO = 0x00000040, /* rx overrun */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
160 + E1000_INTR_RXT0 = 0x00000080, /* rx timer intr (ring 0) */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
161 + E1000_INTR_MDAC = 0x00000200, /* MDIO access complete */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
162 + E1000_RAH_AV = (1 << 31), /* Set the MAC Address as Valid */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
163 + E1000_RCTL_EN = (1 << 1), /* Receiver Enable */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
164 + E1000_RCTL_BSEX = (1 << 25), /* Buffer Size Extension */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
165 + E1000_RCTL_BSIZE_256 = ((1 << 16) | (1 << 17)), |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
166 + E1000_RCTL_BSIZE_512 = (1 << 17), |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
167 + E1000_RCTL_BSIZE_1024 = (1 << 16), |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
168 + E1000_RCTL_BSIZE_2048 = 0, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
169 + E1000_RCTL_BSIZE_4096 = (E1000_RCTL_BSEX | (1 << 16) | (1 << 17)), |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
170 + E1000_RCTL_BSIZE_8192 = (E1000_RCTL_BSEX | (1 << 17)), |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
171 + E1000_RCTL_BSIZE_16384 = (E1000_RCTL_BSEX | (1 << 16)), |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
172 + E1000_TCTL_EN = (1 << 1), /* Transmitter Enable */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
173 + E1000_TCTL_PSP = (1 << 3), /* Pad Short Packet */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
174 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
175 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
176 + map |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
177 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
178 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
179 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
180 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
181 + template type e1000::TxDescriptorFlag() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
182 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
183 + decl data_types() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
184 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
185 + E1000_TXD_DTYP_D = 0x00100000, /* Data Descriptor */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
186 + E1000_TXD_DTYP_C = 0x00000000, /* Context Descriptor */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
187 + E1000_TXD_POPTS_IXSM = 0x01, /* Insert IP checksum */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
188 + E1000_TXD_POPTS_TXSM = 0x02, /* Insert TCP/UDP checksum */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
189 + E1000_TXD_CMD_EOP = 0x01000000, /* End of Packet */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
190 + E1000_TXD_CMD_IFCS = 0x02000000, /* Insert FCS (Ethernet CRC) */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
191 + E1000_TXD_CMD_IC = 0x04000000, /* Insert Checksum */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
192 + E1000_TXD_CMD_RS = 0x08000000, /* Report Status */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
193 + E1000_TXD_CMD_RPS = 0x10000000, /* Report Packet Sent */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
194 + E1000_TXD_CMD_DEXT = 0x20000000, /* Descriptor extension (0 = legacy) */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
195 + E1000_TXD_CMD_VLE = 0x40000000, /* Add VLAN tag */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
196 + E1000_TXD_CMD_IDE = 0x80000000, /* Enable Tidv register */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
197 + E1000_TXD_STAT_DD = 0x00000001, /* Descriptor Done */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
198 + E1000_TXD_STAT_EC = 0x00000002, /* Excess Collisions */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
199 + E1000_TXD_STAT_LC = 0x00000004, /* Late Collisions */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
200 + E1000_TXD_STAT_TU = 0x00000008, /* Transmit underrun */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
201 + E1000_TXD_CMD_TCP = 0x01000000, /* TCP packet */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
202 + E1000_TXD_CMD_IP = 0x02000000, /* IP packet */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
203 + E1000_TXD_CMD_TSE = 0x04000000, /* TCP Seg enable */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
204 + E1000_TXD_STAT_TC = 0x00000004, /* Tx Underrun */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
205 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
206 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
207 + map |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
208 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
209 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
210 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
211 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
212 + template type e1000::RxDescriptor() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
213 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
214 + decl data_types() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
215 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
216 __le64 buff_addr; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
217 __le16 length; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
218 @@ -12,13 +152,39 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
219 __le16 special; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
220 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
221 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
222 - chunk LKM::includes() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
223 + map |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
224 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
225 - #include <linux/types.h> |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
226 } |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
227 + } |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
228 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
229 - method init() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
230 + // This is a generic tx descriptor for the e1000. When you use TCP |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
231 + // Segmentation Offload (TSO) the hardware actually uses two types of |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
232 + // tx descriptors in its tx ring: |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
233 + // - context descriptors: this descriptor doesn't actually point to data to |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
234 + // send but initialize the offloading engine for the data descriptor that |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
235 + // follow; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
236 + // - data descriptors: this descriptor points to data from the skbuffs. |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
237 + template type e1000::TxDescriptor() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
238 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
239 + decl data_types() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
240 { |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
241 + __le64 buff_addr; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
242 + union { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
243 + __le32 data; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
244 + struct { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
245 + __le16 length; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
246 + unsigned char csum_offset; /* CSO */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
247 + unsigned char cmd; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
248 + } fields; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
249 + } lower; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
250 + union { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
251 + __le32 data; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
252 + struct { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
253 + unsigned char status; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
254 + unsigned char csum_start; /* CSS */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
255 + __le16 special; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
256 + } fields; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
257 + } upper; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
258 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
259 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
260 map |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
261 @@ -26,44 +192,131 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
262 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
263 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
264 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
265 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
266 - * This is a generic tx descriptor for the e1000. When you use TCP |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
267 - * Segmentation Offload (TSO) the hardware actually uses two types of |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
268 - * tx descriptors in its tx ring: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
269 - * - context descriptors: this descriptor doesn't actually point to data to |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
270 - * send but initialize the offloading engine for the data descriptor that |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
271 - * follow; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
272 - * - data descriptors: this descriptor points to data from the skbuffs. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
273 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
274 - template type e1000::TxDescriptor() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
275 + template type e1000::Buffer() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
276 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
277 - decl data_types() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
278 + decl data_types() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
279 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
280 - __le64 buff_addr; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
281 - union |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
282 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
283 - __le32 data; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
284 - struct |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
285 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
286 - __le16 length; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
287 - unsigned char csum_offset; /* CSO */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
288 - unsigned char cmd; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
289 - } fields; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
290 - } lower; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
291 - union |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
292 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
293 - __le32 data; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
294 - struct |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
295 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
296 - unsigned char status; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
297 - unsigned char csum_start; /* CSS */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
298 - __le16 special; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
299 - } fields; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
300 - } upper; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
301 + ${Socket::SKBuff} sk_buff; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
302 + ${DMA::DMAHandle} dma; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
303 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
304 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
305 - method init() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
306 + method init(Socket::SKBuff sk_buff, DMA::DMAHandle dma) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
307 { |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
308 + ${self.sk_buff} = ${sk_buff}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
309 + ${self.dma} = ${dma}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
310 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
311 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
312 + map |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
313 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
314 + sk_buff: ${self}->sk_buff; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
315 + dma: ${self}->dma; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
316 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
317 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
318 + |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
319 + template type e1000::MMIO() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
320 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
321 + decl data_types() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
322 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
323 + unsigned char *io; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
324 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
325 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
326 + // XXX: we'll need those functions until we get working methods (#46): |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
327 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
328 + chunk LKM::prototypes() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
329 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
330 + static unsigned int rtx_e1000_reg_read32(${e1000::MMIO}, ${e1000::Register}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
331 + static void rtx_e1000_reg_write32(${e1000:::MMIO}, ${e1000::Register}, ${Builtin::number}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
332 + static void rtx_e1000_reg_set32(${e1000:::MMIO}, ${e1000::Register}, ${Builtin::number}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
333 + static void rtx_e1000_reg_unset32(${e1000:::MMIO}, ${e1000::Register}, ${Builtin::number}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
334 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
335 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
336 + chunk LKM::code() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
337 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
338 + static unsigned int rtx_e1000_reg_read32(${e1000::MMIO} io, ${e1000::Register} reg) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
339 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
340 + return ioread32(${local.io.io} + reg); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
341 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
342 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
343 + static void rtx_e1000_reg_write32(${e1000:::MMIO} io, ${e1000::Register} reg, ${Builtin::number} value) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
344 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
345 + return iowrite32(value, ${local.io.io} + reg); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
346 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
347 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
348 + static void rtx_e1000_reg_set32(${e1000:::MMIO} io, ${e1000::Register} reg, ${Builtin::number} value) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
349 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
350 + return iowrite32(rtx_e1000_reg_read32(io, reg) | value, ${local.io.io} + reg); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
351 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
352 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
353 + static void rtx_e1000_reg_unset32(${e1000:::MMIO} io, ${e1000::Register} reg, ${Builtin::number} value) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
354 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
355 + return iowrite32(rtx_e1000_reg_read32(io, reg) & ~value, ${local.io.io} + reg); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
356 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
357 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
358 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
359 + method init(Builtin::symbol io) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
360 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
361 + ${self.io} = ${io}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
362 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
363 + |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
364 + method read32(e1000::Register reg) |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
365 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
366 + ioread32(${self.io} + ${local.reg}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
367 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
368 + |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
369 + method write32(e1000::Register reg, Builtin::number value) |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
370 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
371 + iowrite32(${local.value}, ${self.io} + ${local.reg}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
372 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
373 + |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
374 + method set32(e1000::Register reg, Builtin::number value) |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
375 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
376 + iowrite32(ioread32(${self.io} + ${local.reg}) | value, ${self.io} + ${local.reg}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
377 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
378 + |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
379 + method unset32(e1000::Register reg, Builtin::number value) |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
380 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
381 + iowrite32(ioread32(${self.io} + ${local.reg}) & ~value, ${self.io} + ${local.reg}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
382 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
383 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
384 + map |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
385 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
386 + io: ((unsigned char *)(${self})); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
387 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
388 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
389 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
390 + template type e1000::Ring() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
391 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
392 + decl data_types() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
393 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
394 + ${e1000::MMIO} io; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
395 + ${DMA::DMAHandle} dma; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
396 + ${Builtin::symbol.ref} descs; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
397 + ${Builtin::number} size; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
398 + ${e1000::Buffer.ref} buffs; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
399 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
400 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
401 + chunk LKM::prototypes() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
402 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
403 + static void rtx_e1000_ring_init(${e1000::Ring.ref}, ${e1000::MMIO}, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
404 + ${Builtin::number}, ${Builtin::number}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
405 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
406 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
407 + chunk LKM::code() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
408 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
409 + static void rtx_e1000_ring_init(${e1000::Ring.ref} self, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
410 + ${e1000::MMIO} io, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
411 + ${Builtin::number} desc_count, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
412 + ${Builtin::number} desc_size) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
413 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
414 + memset(self, 0, sizeof(*self)); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
415 + self->size = ALIGN(desc_count * desc_size, 4096); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
416 + self->io = io; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
417 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
418 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
419 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
420 + method init(e1000::MMIO io, Builtin::number desc_count, Builtin::number desc_size) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
421 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
422 + rtx_e1000_ring_init(&${self}, ${io}, ${desc_count}, ${desc_size}); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
423 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
424 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
425 map |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
426 @@ -71,32 +324,27 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
427 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
428 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
429 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
430 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
431 - * Ring of e1000::RxDescriptors and their corresponding skbuffs. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
432 - * |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
433 - * - size: total size of the ring in bytes. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
434 - * - base: address of the ring (we can't use the typedef here until we get |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
435 - * CNorm unstrict); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
436 - * - dma_base: (physical) address of the ring where the device can access |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
437 - * the different descriptors; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
438 - * - skbuffs: array of the skbuffs and their dma (physical) address |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
439 - * associated with each descriptor. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
440 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
441 - template type e1000::RxRing() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
442 + template type e1000::RxRing() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
443 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
444 - decl data_types() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
445 + decl data_types() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
446 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
447 - unsigned int size; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
448 - ${e1000::RxDescriptor.ref} base; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
449 - dma_addr_t dma_base; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
450 - ${Socket::SKBuff} skbuffs[${config.rx_ring_size}]; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
451 + ${e1000::Ring} ring; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
452 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
453 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
454 - method init() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
455 + chunk LKM::prototypes() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
456 { |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
457 + static int rtx_e1000_alloc_rx_ressources(${e1000::RxRing.ref}); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
458 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
459 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
460 - chunk Ethernet::adapter_init_rx(Ethernet::Device rtx_ether_ctx) |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
461 + chunk LKM::code() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
462 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
463 + static int rtx_e1000_alloc_rx_ressources(${e1000::RxRing.ref} self) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
464 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
465 + return 0; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
466 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
467 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
468 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
469 + chunk Ethernet::adapter_init_rx(Ethernet::Device rtx_ether_ctx) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
470 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
471 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
472 ${e1000::Context.ref} hw_ctx = &${rtx_ether_ctx}->hw_ctx; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
473 @@ -167,18 +415,16 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
474 * Allocate the skbuffs, map them for DMA, and write their address |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
475 * in the corresponding descriptor. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
476 */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
477 - for (i = 0; i != ${config.rx_ring_size}; ++i) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
478 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
479 + for (i = 0; i != ${config.rx_ring_size}; ++i) { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
480 ${Socket::SKBuff.ref} skbuff = &hw_ctx->rx_ring.skbuffs[i]; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
481 - // XXX #46: ${rtx_ether_ctx.init_rx_skbuff(local.skbuff, config.rx_buffer_len)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
482 - if (rtx_ethernet_init_rx_skbuff(${local.skbuff}, ${config.rx_buffer_len})) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
483 - { |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
484 + // XXX #46: ${rtx_ether_ctx.alloc_rx_skbuff(local.skbuff, config.rx_buffer_len)}; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
485 + if (rtx_ethernet_alloc_rx_skbuff(${local.skbuff}, ${config.rx_buffer_len})) { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
486 ${Log::info("adapter_init_rx: cannot allocate a skbuff for the rx ring")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
487 goto err_skbuffs_alloc; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
488 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
489 - // XXX #46: ${local.skbuff.map_from(rtx_ether_ctx.device)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
490 - if (rtx_socket_skbuff_map(${local.skbuff}, ${rtx_ether_ctx.device}, RTX_DMA_FROM_DEVICE)) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
491 - { |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
492 + /* XXX: recuperer le dma handle et le placer correctement dans le descripteur. */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
493 + ${DMA::map(local.rtx_ether_ctx.device, local.skbuff.data, local.skbuff.len, RTX_DMA_FROM_DEVICE)} |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
494 + if (${DMA::map(local.rtx_ether_ctx.device, local.skbuff.data, local.skbuff.len, RTX_DMA_FROM_DEVICE)}) { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
495 ${Log::info("adapter_init_rx: cannot dma-map a skbuff for the rx ring")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
496 goto err_skbuffs_map; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
497 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
498 @@ -212,8 +458,7 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
499 goto init_rx_ok; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
500 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
501 err_skbuffs_alloc: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
502 - while (i--) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
503 - { |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
504 + while (i--) { |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
505 dma_unmap_single( |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
506 ${rtx_ether_ctx.device}, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
507 /* XXX Leaking cast because of the array: */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
508 @@ -238,487 +483,87 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
509 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
510 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
511 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
512 - map |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
513 + method init(e1000::MMIO io, Builtin::number desc_count) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
514 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
515 - size: ((${self}).size); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
516 - dma_base: ((${self}).dma_base); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
517 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
518 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
519 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
520 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
521 - * Ring of e1000::TxDescriptors, this is a bit similar to the Rx ring except |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
522 - * that we don't really have to manage the skbuffs themselves (they are |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
523 - * given to use by the kernel). |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
524 - * |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
525 - * - size: total size of the ring in bytes. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
526 - * - base: address of the ring (we can't use the typedef here until we get |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
527 - * CNorm unstrict); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
528 - * - dma_base: (physical) address of the ring where the device can access |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
529 - * the different descriptors; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
530 - * - skbuffs: the skbuffs associated with each descriptor of the ring; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
531 - * - head: index on the head of the ring; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
532 - * - tail: index on the tail of the ring. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
533 - * |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
534 - * Keep in mind that the head and tail fields are, obviously, not |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
535 - * synchronized with TDT/TDH on the device. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
536 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
537 - template type e1000::TxRing() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
538 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
539 - decl data_types() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
540 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
541 - unsigned int size; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
542 - /* XXX: can't use ${e1000::TxDescriptor} here: */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
543 - ${e1000::TxDescriptor.ref} base; /* rename to descs */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
544 - dma_addr_t dma_base; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
545 - ${Socket::SKBuff} skbuffs[${config.tx_ring_size}]; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
546 - unsigned short head; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
547 - unsigned short tail; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
548 + ${self.ring.init(local.io, local.desc_count, self.desc_size)}; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
549 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
550 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
551 - chunk LKM::prototypes() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
552 + method alloc() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
553 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
554 - static void rtx_e1000_tx_ring_clean(${e1000::TxRing.ref}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
555 - static unsigned int rtx_e1000_tx_ring_descriptors_remaining(${e1000::TxRing.ref}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
556 - static int rtx_e1000_tx_ring_tso_cksum_offload(${e1000::TxRing.ref}, ${Socket::SKBuff.ref}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
557 - static void rtx_e1000_tx_ring_put(${e1000::TxRing.ref}, ${Socket::SKBuff.ref}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
558 - /* FIXME: See issue #54 */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
559 - static void rtx_e1000_tx_ring_start_xmit(${e1000::TxRing.ref}, /*const*/ ${e1000::Context.ref}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
560 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
561 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
562 - chunk LKM::code() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
563 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
564 - static void rtx_e1000_tx_ring_clean(${e1000::TxRing.ref} self) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
565 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
566 - ${e1000::TxDescriptor.ref} tx_desc; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
567 - bool done; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
568 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
569 - for (; self->head != self->tail; self->head++) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
570 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
571 - tx_desc = &self->base[self->head]; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
572 - done = tx_desc->upper.fields.status & E1000_TXD_STAT_DD; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
573 - if (!done) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
574 - break ; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
575 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
576 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
577 - pr_info("%s: tx_ring_clean: moving head to %d/%d", ${config.name}, self->head, ${config.tx_ring_size}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
578 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
579 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
580 - static unsigned int rtx_e1000_tx_ring_descriptors_remaining(${e1000::TxRing.ref} self) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
581 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
582 - if (self->tail == self->head) /* ring is empty */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
583 - return 256; /* XXX: ${config.tx_ring_size}; */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
584 - if (self->tail > self->head) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
585 - /* XXX: ${config.tx_ring_size} */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
586 - return 256 - (self->tail - self->head); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
587 - return self->head - self->tail; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
588 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
589 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
590 - static int rtx_e1000_tx_ring_tso_cksum_offload(${e1000::TxRing.ref} self, ${Socket::SKBuff.ref} skb) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
591 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
592 - ${Socket::AbstractSKBuff.ref} k_skb = skb->skbuff; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
593 - return skb_is_gso(${local.k_skb.k_sk_buff}) || ${local.k_skb.k_sk_buff}->ip_summed == CHECKSUM_PARTIAL; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
594 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
595 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
596 - static void rtx_e1000_tx_ring_put(${e1000::TxRing.ref} self, ${Socket::SKBuff.ref} skb) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
597 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
598 - WARN_ON(!skb); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
599 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
600 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
601 - * Mark it as the last buffer (EOP) and ask the card to |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
602 - * insert the Ethernet FCS (Frame Check Sequence). |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
603 - * |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
604 - * XXX: it sucks to use skb_headlen() here (this part of the |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
605 - * code shouldn't be aware of it and use something more |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
606 - * abstract. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
607 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
608 - ${Socket::AbstractSKBuff.ref} k_skb = skb->skbuff; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
609 - ${e1000::TxDescriptor.ref} tx_desc = &self->base[self->tail]; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
610 - tx_desc->lower.data = cpu_to_le32( |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
611 - E1000_TXD_CMD_EOP | |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
612 - E1000_TXD_CMD_IFCS | |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
613 - E1000_TXD_CMD_RS | |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
614 - skb_headlen(${local.k_skb.k_sk_buff})); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
615 - tx_desc->upper.data = 0; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
616 - tx_desc->buff_addr = cpu_to_le64(${local.skb.dma_handle.k_dma_handle}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
617 - memcpy(&self->skbuffs[self->tail], ${local.k_skb.k_sk_buff}, sizeof(*${local.k_skb.k_sk_buff})); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
618 - self->tail = (self->tail + 1) % ${config.tx_ring_size}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
619 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
620 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
621 - /* FIXME: See issue #54 */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
622 - static void rtx_e1000_tx_ring_start_xmit(${e1000::TxRing.ref} self, /*const*/ ${e1000::Context.ref} hw_ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
623 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
624 - pr_info("%s: start_xmit: moving tail to %d/%d", ${config.name}, self->tail, ${config.tx_ring_size}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
625 - rtx_e1000_register_write32(hw_ctx, E1000_TDT, self->tail); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
626 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
627 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
628 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
629 - chunk Ethernet::adapter_init_tx(Ethernet::Device rtx_ether_ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
630 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
631 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
632 - ${e1000::Context.ref} hw_ctx = &${rtx_ether_ctx}->hw_ctx; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
633 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
634 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
635 - * Transmission initialization (section 14.5): |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
636 - * |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
637 - * 1. Allocate the transmit descriptors ring and map it to make it |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
638 - * accessible by the device; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
639 - * 2. Write the start address of the ring in TDBAL/TDBAH and set |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
640 - * TDLEN to the size of the ring; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
641 - * 3. Set the TDH/TDT indexes to the beginning and end of the ring; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
642 - * 4. Set TCTL.PSP to pad short packets and TCTL.EN to enable the |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
643 - * transmitter. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
644 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
645 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
646 - /* 1. Allocate the tx ring */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
647 - hw_ctx->tx_ring.size = ${config.tx_ring_size} * sizeof(*hw_ctx->tx_ring.base); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
648 - hw_ctx->tx_ring.size = ALIGN(hw_ctx->tx_ring.size, 4096); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
649 - hw_ctx->tx_ring.base = dma_alloc_coherent( |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
650 - ${rtx_ether_ctx.device}, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
651 - hw_ctx->tx_ring.size, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
652 - &hw_ctx->tx_ring.dma_base, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
653 - GFP_KERNEL); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
654 - if (!hw_ctx->rx_ring.base) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
655 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
656 - ${Log::info("adapter_init_tx: cannot allocate the descriptors for the tx ring")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
657 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
658 - * XXX: If there is something else to rollback in the enclosing |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
659 - * function, this won't be done. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
660 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
661 - return -ENOMEM; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
662 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
663 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
664 - ${Log::info("adapter_init_tx: tx descriptors allocated")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
665 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
666 - /* 2. Save the emplacement and the size of the ring in TDBA/TDLEN */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
667 - rtx_e1000_register_write32(hw_ctx, E1000_TDBAL, hw_ctx->tx_ring.dma_base & 0xffffffff); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
668 - rtx_e1000_register_write32(hw_ctx, E1000_TDBAH, hw_ctx->tx_ring.dma_base >> 32); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
669 - rtx_e1000_register_write32(hw_ctx, E1000_TDLEN, hw_ctx->tx_ring.size); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
670 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
671 - /* 3. Setup TDH/TDT to zero: the queue is empty */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
672 - rtx_e1000_register_write32(hw_ctx, E1000_TDH, 0); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
673 - rtx_e1000_register_write32(hw_ctx, E1000_TDT, 0); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
674 - hw_ctx->tx_ring.head = 0; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
675 - hw_ctx->tx_ring.tail = 0; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
676 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
677 - /* 4. Set TCTL.PSP and enable the transmitter */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
678 - rtx_e1000_register_set32(hw_ctx, E1000_TCTL, E1000_TCTL_PSP|E1000_TCTL_EN); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
679 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
680 - ${Log::info("adapter_init_tx: transmit registers configured and transmitter enabled")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
681 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
682 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
683 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
684 - method clean() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
685 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
686 - rtx_e1000_tx_ring_clean(${self}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
687 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
688 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
689 - method descriptors_remaining() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
690 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
691 - rtx_e1000_tx_ring_descriptors_remaining(${self}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
692 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
693 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
694 - method tso_cksum_offload(Socket::SKBuff skb) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
695 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
696 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
697 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
698 - method put(Socket::SKBuff skb) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
699 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
700 - rtx_e1000_tx_ring_put(${self}, &${skb}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
701 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
702 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
703 - method start_xmit(e1000::Context ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
704 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
705 - rtx_e1000_tx_ring_start_xmit(${self}, ${ctx}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
706 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
707 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
708 - method init() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
709 - { |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
710 + rtx_e1000_alloc_rx_ressources(${self}); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
711 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
712 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
713 map |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
714 { |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
715 + descs: ((${self})->descs); // TODO: fix cast pour directement avoir les descs |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
716 + desc_size: sizeof(/* XXX ${e1000::RxDescriptor} */int); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
717 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
718 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
719 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
720 - template type e1000::Context() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
721 + template type e1000::TxRing() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
722 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
723 - decl data_types() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
724 + decl data_types() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
725 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
726 - int bars; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
727 - unsigned char /* __iomem */ *ioaddr; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
728 - ${e1000::RxRing.scalar} rx_ring; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
729 - ${e1000::TxRing.scalar} tx_ring; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
730 + ${e1000::Ring} ring; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
731 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
732 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
733 - chunk Ethernet::HardwareContext() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
734 + chunk LKM::prototypes() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
735 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
736 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
737 - * Force the generation of the structure in the "headers" part, we |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
738 - * have to do this since we do not use the structure in this blt |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
739 - * (we hacked a bit and used it in ethernet.blt directly). |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
740 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
741 - ${e1000::Context} hw_ctx; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
742 + static int rtx_e1000_alloc_tx_ressources(${e1000::TxRing.ref}); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
743 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
744 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
745 - chunk Ethernet::adapter_init_context(Ethernet::Device rtx_ether_ctx, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
746 - Builtin::number bars, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
747 - Builtin::symbol ioaddr) |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
748 + chunk LKM::code() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
749 { |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
750 + static int rtx_e1000_alloc_tx_ressources(${e1000::TxRing.ref} self) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
751 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
752 - ${e1000::Context.ref} hw_ctx = &${rtx_ether_ctx}->hw_ctx; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
753 - hw_ctx->bars = ${bars}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
754 - hw_ctx->ioaddr = ${ioaddr}; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
755 + return 0; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
756 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
757 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
758 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
759 - chunk Ethernet::adapter_reset(Ethernet::Device rtx_ether_ctx) |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
760 + method init(e1000::MMIO io, Builtin::number desc_count) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
761 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
762 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
763 - /* XXX Naming this variable 'hw_ctx' kicks the decl out of the generated code */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
764 - ${e1000::Context.ref} tmp_hw_ctx = &${rtx_ether_ctx}->hw_ctx; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
765 - rtx_e1000_register_write32(tmp_hw_ctx, E1000_CTRL, E1000_CMD_RST); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
766 - udelay(10); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
767 - } |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
768 + ${self.ring.init(local.io, local.desc_count, self.desc_size)}; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
769 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
770 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
771 - chunk Ethernet::adapter_load_mac_address(Ethernet::Device rtx_ether_ctx) |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
772 + method alloc() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
773 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
774 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
775 - ${e1000::Context.ref} hw_ctx = &${rtx_ether_ctx}->hw_ctx; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
776 - /* Shamelessly borrowed from Minix */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
777 - for (int i = 0; i < 3; ++i) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
778 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
779 - rtx_e1000_register_write32(hw_ctx, E1000_EEPROM_READ, (i << 8) | 1); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
780 - int value; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
781 - do |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
782 - value = rtx_e1000_register_read32(hw_ctx, E1000_EEPROM_READ); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
783 - while ((value & (1 << 4)) == 0); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
784 - value >>= 16; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
785 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
786 - * NOTE: I'm not sure if Ethernet::Device should be |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
787 - * accessed directly here. But since we need to take it in |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
788 - * parameter (so we can get back our e1000::Context) it |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
789 - * seems inadequate to set this in another way: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
790 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
791 - ${rtx_ether_ctx.dev_addr}[i * 2] = value & 0xff; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
792 - ${rtx_ether_ctx.dev_addr}[i * 2 + 1] = (value >> 8) & 0xff; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
793 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
794 - ${Log::info("e1000::create: mac address loaded from the EEPROM")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
795 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
796 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
797 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
798 - chunk Ethernet::adapter_setup(Ethernet::Device rtx_ether_ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
799 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
800 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
801 - ${e1000::Context.ref} hw_ctx = &${rtx_ether_ctx}->hw_ctx; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
802 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
803 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
804 - * "General Configuration" (section 14.3): |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
805 - * |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
806 - * - CTRL.ASDE/CTRL.SLU: Let the PHY handle the speed detection & |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
807 - * negociation; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
808 - * - CTRL.LRST/FRCSPD: Unset them to initiate the auto-negociation; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
809 - * - CTRL.PHY_RST: Unset it; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
810 - * - CTRL.ILOS: Unset it (ILOS is Invert Loss Of Signal); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
811 - * - CTRL.VME: Make sure it's not set to disable VLAN support; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
812 - * - Set the control flow registers to 0; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
813 - * - Finally, initialize all the statistic registers from |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
814 - * E1000_CRCERRS to E1000_TSCTFC. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
815 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
816 - rtx_e1000_register_set32(hw_ctx, E1000_CTRL, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
817 - E1000_CMD_ASDE | |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
818 - E1000_CMD_SLU); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
819 - rtx_e1000_register_unset32(hw_ctx, E1000_CTRL, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
820 - E1000_CMD_LRST | |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
821 - E1000_CMD_FRCSPD | |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
822 - E1000_CMD_PHY_RST | |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
823 - E1000_CMD_ILOS | |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
824 - E1000_CMD_VME); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
825 - rtx_e1000_register_write32(hw_ctx, E1000_FCAH, 0); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
826 - rtx_e1000_register_write32(hw_ctx, E1000_FCAL, 0); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
827 - rtx_e1000_register_write32(hw_ctx, E1000_FCT, 0); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
828 - rtx_e1000_register_write32(hw_ctx, E1000_FCTTV, 0); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
829 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
830 - * XXX: Using int i clashes with another int i from the |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
831 - * "parent" chunk: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
832 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
833 - for (int j = 0; j != 64; ++j) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
834 - rtx_e1000_register_write32(hw_ctx, E1000_CRCERRS + j * 4, 0); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
835 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
836 - ${Log::info("adapter_setup: general configuration done")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
837 - } |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
838 + rtx_e1000_alloc_tx_ressources(${self}); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
839 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
840 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
841 map |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
842 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
843 - rx_ring: ((${self})->rx_ring); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
844 - //tx_ring: ((${self})->tx_ring); XXX Circular dep with Context |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
845 + descs: ((${self})->descs); // TODO: fix cast pour directement avoir les descs |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
846 + desc_size: sizeof(/* XXX ${e1000::TxDescriptor} */int); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
847 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
848 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
849 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
850 - template type e1000::Register() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
851 + template type e1000::Context() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
852 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
853 - decl data_types() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
854 + decl data_types() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
855 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
856 - E1000_CTRL = 0x00000, /* Device Control - RW */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
857 - E1000_CTRL_DUP = 0x00004, /* Device Control Duplicate (Shadow) - RW */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
858 - E1000_STATUS = 0x00008, /* Device Status - RO */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
859 - E1000_EEPROM_FLASH = 0x00010, /* EEPROM/Flash Control - RW */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
860 - E1000_EEPROM_READ = 0x00014, /* EEPROM Read - RW */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
861 - E1000_CTRL_EXT = 0x00018, /* Extended Device Control - RW */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
862 - E1000_FLA = 0x0001C, /* Flash Access - RW */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
863 - E1000_MDIC = 0x00020, /* MDI Control - RW */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
864 - E1000_IMS = 0x000D0, /* Interrupt Mask Set */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
865 - E1000_IMC = 0x000D8, /* Interrupt Mask Clear */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
866 - E1000_ICR = 0x000C0, /* Interrupt Cause Read - R/clr */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
867 - E1000_FCAL = 0x00028, /* Flow Control Address Low */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
868 - E1000_FCAH = 0x0002c, /* Flow Control Address High */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
869 - E1000_FCT = 0x00030, /* Flow Control Type */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
870 - E1000_RCTL = 0x00100, /* Receive Control */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
871 - E1000_FCTTV = 0x00170, /* Flow Control Transmit Timer Value */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
872 - E1000_TCTL = 0x00400, /* Transmit Control */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
873 - E1000_CRCERRS = 0x04000, /* CRC Error Count (base address of the statistic register spaces) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
874 - E1000_RAL = 0x05400, /* Receive Address Low */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
875 - E1000_RAH = 0x05404, /* Receive Address High */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
876 - E1000_MTA = 0x05200, /* Multicast Table Array */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
877 - E1000_RDBAL = 0x02800, /* Receive Descriptor Base Address (Low 32 bits) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
878 - E1000_RDBAH = 0x02804, /* Receive Descriptor Base Address (High 32 bits) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
879 - E1000_RDLEN = 0x02808, /* Receive Descriptor Length */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
880 - E1000_RDH = 0x02810, /* Receive Descriptor Head */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
881 - E1000_RDT = 0x02818, /* Receive Descriptor Tail */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
882 - E1000_TDBAL = 0x03800, /* Transmit Descriptor Base Address (Low 32 bits) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
883 - E1000_TDBAH = 0x03804, /* Transmit Descriptor Base Address (High 33 bits) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
884 - E1000_TDLEN = 0x03808, /* Transmit Descriptor Length */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
885 - E1000_TDH = 0x03810, /* Transmit Descriptor Head */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
886 - E1000_TDT = 0x03818, /* Transmit Descriptor Tail */ |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
887 + ${e1000::MMIO} io; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
888 + ${e1000::TxRing} tx_ring; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
889 + ${e1000::RxRing} rx_ring; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
890 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
891 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
892 - method init(Builtin::number value) |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
893 + chunk LKM::includes() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
894 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
895 - ${self} = ${value}; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
896 + #include <linux/types.h> |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
897 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
898 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
899 - map |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
900 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
901 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
902 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
903 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
904 - template type e1000::Commands() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
905 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
906 - decl data_types() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
907 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
908 - E1000_CMD_FD = 0x00000001, /* Full duplex.0=half; 1=full */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
909 - E1000_CMD_BEM = 0x00000002, /* Endian Mode.0=little,1=big */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
910 - E1000_CMD_PRIOR = 0x00000004, /* Priority on PCI. 0=rx,1=fair */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
911 - E1000_CMD_GIO_MASTER_DISABLE = 0x00000004, /* Blocks new Master requests */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
912 - E1000_CMD_LRST = 0x00000008, /* Link reset. 0=normal,1=reset */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
913 - E1000_CMD_TME = 0x00000010, /* Test mode. 0=normal,1=test */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
914 - E1000_CMD_SLE = 0x00000020, /* Serial Link on 0=dis,1=en */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
915 - E1000_CMD_ASDE = 0x00000020, /* Auto-speed detect enable */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
916 - E1000_CMD_SLU = 0x00000040, /* Set link up (Force Link) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
917 - E1000_CMD_ILOS = 0x00000080, /* Invert Loss-Of Signal */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
918 - E1000_CMD_SPD_SEL = 0x00000300, /* Speed Select Mask */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
919 - E1000_CMD_SPD_10 = 0x00000000, /* Force 10Mb */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
920 - E1000_CMD_SPD_100 = 0x00000100, /* Force 100Mb */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
921 - E1000_CMD_SPD_1000 = 0x00000200, /* Force 1Gb */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
922 - E1000_CMD_BEM32 = 0x00000400, /* Big Endian 32 mode */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
923 - E1000_CMD_FRCSPD = 0x00000800, /* Force Speed */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
924 - E1000_CMD_FRCDPX = 0x00001000, /* Force Duplex */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
925 - E1000_CMD_D_UD_EN = 0x00002000, /* Dock/Undock enable */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
926 - E1000_CMD_D_UD_POLARITY = 0x00004000, /* Defined polarity of Dock/Undock indication in SDP[0] */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
927 - E1000_CMD_FORCE_PHY_RESET = 0x00008000, /* Reset both PHY ports, through PHYRST_N pin */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
928 - E1000_CMD_EXT_LINK_EN = 0x00010000, /* enable link status from external LINK_0 and LINK_1 pins */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
929 - E1000_CMD_SWDPIN0 = 0x00040000, /* SWDPIN 0 value */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
930 - E1000_CMD_SWDPIN1 = 0x00080000, /* SWDPIN 1 value */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
931 - E1000_CMD_SWDPIN2 = 0x00100000, /* SWDPIN 2 value */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
932 - E1000_CMD_SWDPIN3 = 0x00200000, /* SWDPIN 3 value */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
933 - E1000_CMD_SWDPIO0 = 0x00400000, /* SWDPIN 0 Input or output */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
934 - E1000_CMD_SWDPIO1 = 0x00800000, /* SWDPIN 1 input or output */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
935 - E1000_CMD_SWDPIO2 = 0x01000000, /* SWDPIN 2 input or output */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
936 - E1000_CMD_SWDPIO3 = 0x02000000, /* SWDPIN 3 input or output */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
937 - E1000_CMD_RST = 0x04000000, /* Global reset */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
938 - E1000_CMD_RFCE = 0x08000000, /* Receive Flow Control enable */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
939 - E1000_CMD_TFCE = 0x10000000, /* Transmit flow control enable */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
940 - E1000_CMD_RTE = 0x20000000, /* Routing tag enable */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
941 - E1000_CMD_VME = 0x40000000, /* IEEE VLAN mode enable */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
942 - E1000_CMD_PHY_RST = 0x80000000, /* PHY Reset */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
943 - E1000_CMD_SW2FW_INT = 0x02000000, /* Initiate an interrupt to manageability engine */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
944 - E1000_INTR_TXDW = 0x00000001, /* Transmit desc written back */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
945 - E1000_INTR_TXQE = 0x00000002, /* Transmit Queue empty */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
946 - E1000_INTR_LSC = 0x00000004, /* Link Status Change */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
947 - E1000_INTR_RXSEQ = 0x00000008, /* rx sequence error */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
948 - E1000_INTR_RXDMT0 = 0x00000010, /* rx desc min. threshold (0) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
949 - E1000_INTR_RXO = 0x00000040, /* rx overrun */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
950 - E1000_INTR_RXT0 = 0x00000080, /* rx timer intr (ring 0) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
951 - E1000_INTR_MDAC = 0x00000200, /* MDIO access complete */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
952 - E1000_RAH_AV = (1 << 31), /* Set the MAC Address as Valid */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
953 - E1000_RCTL_EN = (1 << 1), /* Receiver Enable */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
954 - E1000_RCTL_BSEX = (1 << 25), /* Buffer Size Extension */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
955 - E1000_RCTL_BSIZE_256 = ((1 << 16) | (1 << 17)), |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
956 - E1000_RCTL_BSIZE_512 = (1 << 17), |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
957 - E1000_RCTL_BSIZE_1024 = (1 << 16), |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
958 - E1000_RCTL_BSIZE_2048 = 0, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
959 - E1000_RCTL_BSIZE_4096 = (E1000_RCTL_BSEX | (1 << 16) | (1 << 17)), |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
960 - E1000_RCTL_BSIZE_8192 = (E1000_RCTL_BSEX | (1 << 17)), |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
961 - E1000_RCTL_BSIZE_16384 = (E1000_RCTL_BSEX | (1 << 16)), |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
962 - E1000_TCTL_EN = (1 << 1), /* Transmitter Enable */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
963 - E1000_TCTL_PSP = (1 << 3), /* Pad Short Packet */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
964 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
965 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
966 - map |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
967 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
968 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
969 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
970 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
971 - template type e1000::TxDescriptorFlags() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
972 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
973 - decl data_types() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
974 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
975 - E1000_TXD_DTYP_D = 0x00100000, /* Data Descriptor */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
976 - E1000_TXD_DTYP_C = 0x00000000, /* Context Descriptor */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
977 - E1000_TXD_POPTS_IXSM = 0x01, /* Insert IP checksum */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
978 - E1000_TXD_POPTS_TXSM = 0x02, /* Insert TCP/UDP checksum */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
979 - E1000_TXD_CMD_EOP = 0x01000000, /* End of Packet */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
980 - E1000_TXD_CMD_IFCS = 0x02000000, /* Insert FCS (Ethernet CRC) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
981 - E1000_TXD_CMD_IC = 0x04000000, /* Insert Checksum */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
982 - E1000_TXD_CMD_RS = 0x08000000, /* Report Status */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
983 - E1000_TXD_CMD_RPS = 0x10000000, /* Report Packet Sent */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
984 - E1000_TXD_CMD_DEXT = 0x20000000, /* Descriptor extension (0 = legacy) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
985 - E1000_TXD_CMD_VLE = 0x40000000, /* Add VLAN tag */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
986 - E1000_TXD_CMD_IDE = 0x80000000, /* Enable Tidv register */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
987 - E1000_TXD_STAT_DD = 0x00000001, /* Descriptor Done */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
988 - E1000_TXD_STAT_EC = 0x00000002, /* Excess Collisions */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
989 - E1000_TXD_STAT_LC = 0x00000004, /* Late Collisions */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
990 - E1000_TXD_STAT_TU = 0x00000008, /* Transmit underrun */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
991 - E1000_TXD_CMD_TCP = 0x01000000, /* TCP packet */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
992 - E1000_TXD_CMD_IP = 0x02000000, /* IP packet */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
993 - E1000_TXD_CMD_TSE = 0x04000000, /* TCP Seg enable */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
994 - E1000_TXD_STAT_TC = 0x00000004, /* Tx Underrun */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
995 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
996 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
997 - map |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
998 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
999 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1000 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1001 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1002 - /* TODO: make that a method of e1000::Context */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1003 - template sequence e1000::print_status(Ethernet::Device rtx_ether_ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1004 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1005 - chunk LKM::prototypes() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1006 + chunk LKM::prototypes() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1007 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1008 static void rtx_e1000_print_status(${e1000::Context.ref}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1009 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1010 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1011 - chunk LKM::code() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1012 + chunk LKM::code() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1013 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1014 static void rtx_e1000_print_status(${e1000::Context.ref} hw_ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1015 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1016 - unsigned int status = rtx_e1000_register_read32(hw_ctx, E1000_STATUS); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1017 - ${Log::info("card status:")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1018 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1019 - * we can't use Log::info below because it just accept a string |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1020 - * (as opposed to a format string with its parameters). |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1021 - */ |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1022 + unsigned int status = rtx_e1000_reg_read32(hw_ctx, E1000_STATUS); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1023 + ${Log::info("card status:")}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1024 + // XXX We can't use Log::info below because it just accept a |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1025 + // string (as opposed to a format string with its parameters): |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1026 pr_info("\tRegister value: 0x%x\n", status); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1027 pr_info("\tMode: %s\n", (status & 1) ? "Full": "Half"); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1028 pr_info("\tLink: %s\n", (status & 2) ? "Up" : "Down"); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1029 @@ -727,300 +572,178 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1030 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1031 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1032 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1033 - chunk ::CALL() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1034 + chunk Ethernet::HardwareContext() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1035 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1036 - rtx_e1000_print_status(&${rtx_ether_ctx}->hw_ctx); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1037 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1038 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1039 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1040 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1041 - * We should have been able to do something along those lines, but |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1042 - * it didn't work so we made the call manually. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1043 - * |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1044 - * Ideally: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1045 - * ${e1000::register_read32(rtx_ether_ctx->hw_ctx, E1000_STATUS)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1046 - * |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1047 - * Ideally2, not sure about the syntax on the register parameter: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1048 - * ${e1000::register_read32(rtx_ether_ctx->hw_ctx, ${e1000::Register.E1000_STATUS})}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1049 - * |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1050 - * "Acceptable": |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1051 - * ${e1000::Register} reg_status; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1052 - * ${e1000.init(E1000_STATUS); // didn't work, so we used the next line |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1053 - * reg_status = E1000_STATUS; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1054 - * ${e1000::register_read32(rtx_ether_ctx->hw_ctx, reg_status)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1055 - * |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1056 - * TODO: make them methods of e1000::Context |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1057 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1058 - template sequence e1000::register_read32(e1000::Context ctx, e1000::Register reg_offset) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1059 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1060 - chunk LKM::prototypes() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1061 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1062 - /* FIXME: See issue #54 */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1063 - static unsigned int rtx_e1000_register_read32(/*const*/ ${e1000::Context.ref}, unsigned int); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1064 + ${e1000::Context} hw_ctx; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1065 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1066 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1067 - chunk LKM::code() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1068 + chunk Ethernet::adapter_init_context(Ethernet::Device rtx_ether_ctx, Builtin::symbol ioaddr) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1069 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1070 - /* FIXME: See issue #54 */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1071 - static unsigned int rtx_e1000_register_read32(/*const*/ ${e1000::Context.ref} ctx, unsigned int reg_offset) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1072 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1073 - return ioread32(ctx->ioaddr + reg_offset); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1074 + ${e1000::Context.ref} hw_ctx = &${local.rtx_ether_ctx}->hw_ctx; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1075 + ${local.hw_ctx.io.init(local.ioaddr)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1076 + ${local.hw_ctx.rx_ring.init(local.hw_ctx.io, config.rx_ring_size)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1077 + ${local.hw_ctx.tx_ring.init(local.hw_ctx.io, config.tx_ring_size)}; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1078 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1079 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1080 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1081 - chunk ::CALL() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1082 + chunk Ethernet::adapter_reset(Ethernet::Device rtx_ether_ctx) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1083 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1084 - rtx_e1000_register_read32(${ctx}, ${reg_offset}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1085 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1086 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1087 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1088 - template sequence e1000::register_write32(e1000::Context ctx, e1000::Register reg_offset, ::number value) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1089 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1090 - chunk LKM::prototypes() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1091 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1092 - /* FIXME: See issue #54 */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1093 - static void rtx_e1000_register_write32(/*const*/ ${e1000::Context.ref}, unsigned int, unsigned int); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1094 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1095 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1096 - chunk LKM::code() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1097 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1098 - /* FIXME: See issue #54 */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1099 - static void rtx_e1000_register_write32(/*const*/ ${e1000::Context.ref} ctx, unsigned int reg_offset, unsigned int value) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1100 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1101 - iowrite32(value, ctx->ioaddr + reg_offset); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1102 + ${e1000::Context.ref} hw_ctx = &${local.rtx_ether_ctx}->hw_ctx; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1103 + // XXX #46: ${local.hw_ctx.io.write32(E1000_CTRL, E1000_CMD_RST)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1104 + rtx_e1000_reg_write32(hw_ctx, E1000_CTRL, E1000_CMD_RST); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1105 + udelay(10); // TODO: abstract this too... |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1106 + ${Log::info("adapter has been reset")}; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1107 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1108 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1109 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1110 - chunk ::CALL() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1111 + chunk Ethernet::adapter_load_mac_address(Ethernet::Device rtx_ether_ctx) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1112 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1113 - rtx_e1000_register_write32(${ctx}, ${reg_offset}, ${value}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1114 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1115 - } |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1116 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1117 + ${e1000::Context.ref} hw_ctx = &${local.rtx_ether_ctx}->hw_ctx; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1118 + // Shamelessly borrowed from Minix |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1119 + for (int i = 0; i < 3; ++i) { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1120 + rtx_e1000_reg_write32(hw_ctx, E1000_EEPROM_READ, (i << 8) | 1); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1121 + int value; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1122 + do { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1123 + value = rtx_e1000_reg_read32(hw_ctx, E1000_EEPROM_READ); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1124 + } while ((value & (1 << 4)) == 0); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1125 + value >>= 16; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1126 + // NOTE: I'm not sure if Ethernet::Device should be |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1127 + // accessed directly here. But since we need to take it in |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1128 + // parameter (so we can get back our e1000::Context) it |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1129 + // seems inadequate to set this in another way: |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1130 + ${local.rtx_ether_ctx.dev_addr}[i * 2] = value & 0xff; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1131 + ${local.rtx_ether_ctx.dev_addr}[i * 2 + 1] = (value >> 8) & 0xff; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1132 + } |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1133 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1134 - template sequence e1000::register_set32(e1000::Context ctx, e1000::Register reg_offset, ::number value) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1135 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1136 - chunk LKM::prototypes() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1137 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1138 - /* FIXME: See issue #54 */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1139 - static void rtx_e1000_register_set32(/*const*/ ${e1000::Context.ref}, unsigned int, unsigned int); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1140 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1141 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1142 - chunk LKM::code() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1143 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1144 - /* FIXME: See issue #54 */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1145 - static void rtx_e1000_register_set32(/*const*/ ${e1000::Context.ref} ctx, unsigned int reg_offset, unsigned int value) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1146 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1147 - iowrite32(rtx_e1000_register_read32(ctx, reg_offset) | value, ctx->ioaddr + reg_offset); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1148 + ${Log::info("mac address loaded from the EEPROM")}; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1149 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1150 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1151 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1152 - chunk ::CALL() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1153 + // For e1000, this part is documented in the Intel Gigabit Ethernet |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1154 + // Controller Software Developper manual. (You can find it in the |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1155 + // doc/hardware directory). |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1156 + chunk Ethernet::adapter_setup_rx_tx(Ethernet::Device rtx_ether_ctx) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1157 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1158 - rtx_e1000_register_set32(${ctx}, ${reg_offset}, ${value}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1159 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1160 - } |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1161 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1162 + ${e1000::Context.ref} hw_ctx = &${local.rtx_ether_ctx}->hw_ctx; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1163 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1164 - template sequence e1000::register_unset32(e1000::Context ctx, e1000::Register reg_offset, ::number value) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1165 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1166 - chunk LKM::prototypes() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1167 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1168 - /* FIXME: See issue #54 */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1169 - static void rtx_e1000_register_unset32(/*const*/ ${e1000::Context.ref}, unsigned int, unsigned int); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1170 - } |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1171 + // "General Configuration" (section 14.3): |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1172 + // |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1173 + // - CTRL.ASDE/CTRL.SLU: Let the PHY handle the speed detection & |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1174 + // negociation; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1175 + // - CTRL.LRST/FRCSPD: Unset them to initiate the auto-negociation; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1176 + // - CTRL.PHY_RST: Unset it; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1177 + // - CTRL.ILOS: Unset it (ILOS is Invert Loss Of Signal); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1178 + // - CTRL.VME: Make sure it's not set to disable VLAN support; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1179 + // - Set the control flow registers to 0; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1180 + // - Finally, initialize all the statistic registers from |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1181 + // E1000_CRCERRS to E1000_TSCTFC. |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1182 + // |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1183 + // XXX #46: Use the read/write/set/unset methods on Context |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1184 + rtx_e1000_reg_set32(hw_ctx, E1000_CTRL, E1000_CMD_ASDE|E1000_CMD_SLU); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1185 + rtx_e1000_reg_unset32( |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1186 + hw_ctx, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1187 + E1000_CTRL, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1188 + E1000_CMD_LRST|E1000_CMD_FRCSPD|E1000_CMD_PHY_RST| |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1189 + E1000_CMD_ILOS|E1000_CMD_VME |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1190 + ); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1191 + rtx_e1000_reg_write32(hw_ctx, E1000_FCAH, 0); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1192 + rtx_e1000_reg_write32(hw_ctx, E1000_FCAL, 0); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1193 + rtx_e1000_reg_write32(hw_ctx, E1000_FCT, 0); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1194 + rtx_e1000_reg_write32(hw_ctx, E1000_FCTTV, 0); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1195 + for (int i = 0; i != 64; ++i) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1196 + rtx_e1000_reg_write32(hw_ctx, E1000_CRCERRS + i * 4, 0); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1197 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1198 - chunk LKM::code() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1199 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1200 - /* FIXME: See issue #54 */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1201 - static void rtx_e1000_register_unset32(/*const*/ ${e1000::Context.ref} ctx, unsigned int reg_offset, unsigned int value) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1202 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1203 - iowrite32(rtx_e1000_register_read32(ctx, reg_offset) & ~value, ctx->ioaddr + reg_offset); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1204 + ${Log::info("adapter_setup: general configuration done")}; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1205 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1206 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1207 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1208 - chunk ::CALL() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1209 + chunk Ethernet::adapter_enable_interrupts(Ethernet::Device) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1210 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1211 - rtx_e1000_register_unset32(${ctx}, ${reg_offset}, ${value}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1212 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1213 - } |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1214 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1215 + ${e1000::Context.ref} hw_ctx = &${local.rtx_ether_ctx}->hw_ctx; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1216 + rtx_e1000_reg_write32( |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1217 + hw_ctx, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1218 + E1000_IMS, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1219 + E1000_INTR_TXDW|E1000_INTR_TXQE|E1000_INTR_LSC| |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1220 + E1000_INTR_RXO|E1000_INTR_RXT0 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1221 + ); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1222 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1223 - template sequence activate_device_interruption(Ethernet::Device rtx_ether_ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1224 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1225 - chunk ::CALL() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1226 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1227 - rtx_e1000_register_write32(&${rtx_ether_ctx}->hw_ctx, E1000_IMS, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1228 - E1000_INTR_TXDW | |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1229 - E1000_INTR_TXQE | |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1230 - E1000_INTR_LSC | |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1231 - E1000_INTR_RXO | |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1232 - E1000_INTR_RXT0); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1233 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1234 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1235 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1236 - /* TODO: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1237 - * |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1238 - * Refactor into two methods (one in RxRing and one in TxRing) and make use |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1239 - * of the new methods in Socket::SKBuff. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1240 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1241 - template sequence free_rx_tx(Ethernet::Device rtx_ether_ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1242 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1243 - chunk ::CALL() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1244 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1245 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1246 - * XXX: Not generated if named "hw_ctx" (which is funny because |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1247 - * it's used and works in the template right above this one): |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1248 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1249 - ${e1000::Context.ref} hw_ctx_; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1250 - hw_ctx_ = &${rtx_ether_ctx}->hw_ctx; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1251 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1252 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1253 - * Free the rx ring: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1254 - * - Unmap and free the skbuffs; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1255 - * - Free the descriptors array. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1256 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1257 - for (int i = 0; i != ${config.rx_ring_size}; ++i) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1258 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1259 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1260 - * XXX Leaking casts: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1261 - * |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1262 - * We should go through the rtx types (Socket::SKBuff, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1263 - * AbstractSKBuff), but we can't because of the array here, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1264 - * which is not supported by the compiler. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1265 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1266 - dma_unmap_single( |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1267 - ${rtx_ether_ctx.device}, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1268 - *((dma_addr_t *)&(hw_ctx_->rx_ring.skbuffs[i].dma_handle)), |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1269 - ${config.rx_buffer_len}, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1270 - DMA_FROM_DEVICE); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1271 - dev_kfree_skb((struct sk_buff *)hw_ctx_->rx_ring.skbuffs[i].skbuff); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1272 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1273 - dma_free_coherent(${rtx_ether_ctx.device}, hw_ctx_->rx_ring.size, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1274 - hw_ctx_->rx_ring.base, hw_ctx_->rx_ring.dma_base); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1275 - ${Log::info("free_rx_tx: rx ring free'ed")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1276 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1277 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1278 - * Free the tx ring: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1279 - * - Free the descriptors array. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1280 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1281 - dma_free_coherent(${rtx_ether_ctx.device}, hw_ctx_->tx_ring.size, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1282 - hw_ctx_->tx_ring.base, hw_ctx_->tx_ring.dma_base); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1283 - ${Log::info("free_rx_tx: tx ring free'ed")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1284 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1285 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1286 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1287 - template sequence handle_interrupt(Ethernet::Device rtx_ether_ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1288 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1289 - chunk ::CALL() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1290 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1291 - unsigned int icr = rtx_e1000_register_read32(&${rtx_ether_ctx}->hw_ctx, E1000_ICR); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1292 - pr_info("%s: interrupt received, ICR: 0x%x", ${config.name}, icr); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1293 - if (icr) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1294 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1295 - if (icr & E1000_INTR_LSC) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1296 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1297 - ${Log::info("handle_interrupt: cable link status changed, dumping card status:")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1298 - ${e1000::print_status(rtx_ether_ctx)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1299 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1300 - if (icr & (E1000_INTR_TXQE|E1000_INTR_TXDW)) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1301 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1302 - ${Log::info("handle_interrupt: TxRing: packet(s) sent")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1303 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1304 - * XXX Do a Rathaxes call (how can I bind |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1305 - * "&${rtx_ether_ctx}->hw_ctx.tx_ring" to e1000::TxRing easily?) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1306 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1307 - rtx_e1000_tx_ring_clean(&${rtx_ether_ctx}->hw_ctx.tx_ring); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1308 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1309 - if (icr & E1000_INTR_RXT0) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1310 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1311 - ${Log::info("handle_interrupt: RxRing: packet(s) received")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1312 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1313 - if (icr & E1000_INTR_RXO) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1314 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1315 - ${Log::info("handle_interrupt: RxRing: overrun")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1316 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1317 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1318 - return IRQ_HANDLED; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1319 + // XXX We should probably move that elsewhere (it just used to |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1320 + // be done right after we enabled interrupts when this was |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1321 + // still in lkm.rtx): |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1322 + // XXX #46: ${local.hw_ctx.print_status()}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1323 + rtx_e1000_print_status(hw_ctx); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1324 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1325 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1326 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1327 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1328 - template sequence e1000::xmit(Ethernet::Device rtx_ether_ctx, Socket::AbstractSKBuff kernel_skb) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1329 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1330 - chunk ::CALL() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1331 + chunk Ethernet::disable_interrupts(Ethernet::Device rtx_ether_ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1332 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1333 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1334 - * Put packets on the TX ring, must return NETDEV_TX_OK or |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1335 - * NETDEV_TX_BUSY. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1336 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1337 + { ${Log::info("adapter_disable_interrupts: TBD...")}; } |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1338 + } |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1339 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1340 - ${Socket::SKBuff} skb; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1341 - ${e1000::Context.ref} hw_ctx; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1342 - ${e1000::TxRing.ref} tx_ring; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1343 - ${Device::AbstractDevice.ref} devp; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1344 + chunk Ethernet::adapter_handle_interrupt(Ethernet::Device rtx_ether_ctx) |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1345 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1346 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1347 + ${e1000::Context.ref} hw_ctx = &${local.rtx_ether_ctx}->hw_ctx; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1348 + unsigned int icr = rtx_e1000_reg_read32(hw_ctx, E1000_ICR); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1349 + pr_info("%s: interrupt received, ICR: 0x%x", ${config.name}, icr); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1350 + if (icr) { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1351 + if (icr & E1000_INTR_LSC) { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1352 + ${Log::info("handle_interrupt: cable link status changed, dumping card status:")}; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1353 + // XXX #46: ${local.hw_ctx.print_status()}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1354 + rtx_e1000_print_status(hw_ctx); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1355 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1356 + if (icr & (E1000_INTR_TXQE|E1000_INTR_TXDW)) { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1357 + ${Log::info("handle_interrupt: TxRing: packet(s) sent")}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1358 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1359 + if (icr & E1000_INTR_RXT0) { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1360 + ${Log::info("handle_interrupt: RxRing: packet(s) received")}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1361 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1362 + if (icr & E1000_INTR_RXO) { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1363 + ${Log::info("handle_interrupt: RxRing: overrun")}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1364 + } |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1365 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1366 - ${local.skb.init(kernel_skb)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1367 - hw_ctx = &${rtx_ether_ctx}->hw_ctx; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1368 - tx_ring = &hw_ctx->tx_ring; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1369 - devp = (${Device::AbstractDevice.ref})${rtx_ether_ctx.device}; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1370 + // XXX: This sucks since we don't know the pointcut context: |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1371 + return IRQ_HANDLED; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1372 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1373 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1374 + } |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1375 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1376 - ${Log::info("xmit: skbuff details:")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1377 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1378 - * skb does not expand on the bound C variable (should be |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1379 - * rtx_skbuff), which is funny because it works for the |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1380 - * sequence template call right after. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1381 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1382 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1383 - * XXX: doesn't work (I tried to pass self explicitely too): |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1384 - * ${local.skb.dump_infos()}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1385 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1386 - rtx_socket_skbuff_dump_infos(&skb); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1387 + chunk Ethernet::adapter_xmit(Ethernet::Device rtx_ether_ctx, Socket::SKBuff rtx_skb) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1388 + { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1389 + { ${Log::info("adapter_xmit: TBD...")}; } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1390 + } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1391 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1392 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1393 - * The transmission is going to be several steps: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1394 - * 1. TCP Segmentation Offload & Checksum Offloading: pick a |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1395 - * descriptor from the tx ring and fill it as a context |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1396 - * descriptor to allow the card to slice into several packets |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1397 - * according to the MSS; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1398 - * 2. DMA Map the skbuff data as slices of 4096; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1399 - * 3. Signal the hardware that data is available via a tx desc. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1400 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1401 + chunk Ethernet::adapter_disable_rx(Ethernet::Device rtx_ether_ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1402 + { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1403 + { ${Log::info("adapter_disable_rx: TBD..")}; } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1404 + } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1405 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1406 - /* XXX: same thing wanted to use: ${local.tx_ring.descriptors_remaining()} */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1407 - if (!rtx_e1000_tx_ring_descriptors_remaining(tx_ring)) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1408 - return NETDEV_TX_BUSY; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1409 + chunk Ethernet::adpater_disable_tx(Ethernet::Device rtx_ether_ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1410 + { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1411 + { ${Log::info("adapter_disable_tx: TBD..")}; } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1412 + } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1413 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1414 - /* 1. Offloading */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1415 + chunk Ethernet::adapter_free_rx_tx(Ethernet::Device rtx_ether_ctx) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1416 + { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1417 + { ${Log::info("adapter_free_rx_tx: TBD..")}; } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1418 + } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1419 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1420 - /* XXX: ${local.tx_ring.tso_cksum_offload(skb)}; */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1421 - if (rtx_e1000_tx_ring_tso_cksum_offload(tx_ring, &skb)) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1422 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1423 - ${Log::info("xmit: the packet needs to be fragmented and/or checksummed but this not implemented yet!")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1424 - goto err_offload; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1425 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1426 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1427 - /* 2. Map the data */ |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1428 + method print_status() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1429 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1430 + rtx_e1000_print_status(${self}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1431 + } |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1432 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1433 - /* XXX: ${local.skb.map_to(devp.k_device)}; */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1434 - if (rtx_socket_skbuff_map(&skb, ${devp.k_device}, DMA_TO_DEVICE)) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1435 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1436 - ${Log::info("xmit: can't DMA map a SKbuff")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1437 - goto err_skb_map_to; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1438 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1439 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1440 - /* 3. Update the TX Ring and signal the hardware */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1441 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1442 - /* XXX: ${local.tx_ring.put(skb)}; */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1443 - rtx_e1000_tx_ring_put(tx_ring, &skb); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1444 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1445 - /* XXX: ${local.tx_ring.start_xmit(hw_ctx)}; */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1446 - rtx_e1000_tx_ring_start_xmit(tx_ring, hw_ctx); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1447 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1448 - return NETDEV_TX_OK; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1449 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1450 - err_offload: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1451 - err_skb_map_to: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1452 - /* XXX: ${local.skb.unmap_to_and_free(local.dev)}; */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1453 - rtx_socket_skbuff_unmap_and_free(&skb, ${devp.k_device}, DMA_TO_DEVICE); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1454 - return NETDEV_TX_OK; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1455 + map |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1456 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1457 + io: ${self}->io; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1458 + rx_ring: ${self}->rx_ring; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1459 + tx_ring: ${self}->tx_ring; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1460 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1461 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1462 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1463 diff --git a/rathaxes/samples/e1000/e1000.rti b/rathaxes/samples/e1000/e1000.rti |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1464 old mode 100755 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1465 new mode 100644 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1466 --- a/rathaxes/samples/e1000/e1000.rti |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1467 +++ b/rathaxes/samples/e1000/e1000.rti |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1468 @@ -1,157 +1,115 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1469 interface e1000 : Socket, Ethernet, DMA, PCI, LKM, Builtin |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1470 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1471 - required variable Builtin::number rx_ring_size; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1472 - required variable Builtin::number tx_ring_size; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1473 - required variable Builtin::number rx_buffer_len; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1474 - required variable Builtin::number tx_max_data_per_desc; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1475 + required variable Builtin::number rx_ring_size; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1476 + required variable Builtin::number tx_ring_size; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1477 + required variable Builtin::number rx_buffer_len; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1478 + required variable Builtin::number tx_max_data_per_desc; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1479 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1480 - provided type RxDescriptor |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1481 + // Hardware values/data structures, should probably be in the front-end: |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1482 + provided type Register { decl data_types(); } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1483 + provided type Command { decl data_types(); } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1484 + provided type TxDescriptorFlag { decl data_types(); } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1485 + provided type RxDescriptor { decl data_types(); } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1486 + provided type TxDescriptor { decl data_types(); } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1487 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1488 + provided type Buffer |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1489 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1490 - chunk LKM::includes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1491 decl data_types(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1492 - method init(); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1493 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1494 + method init(Socket::SKBuff, DMA::DMAHandle); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1495 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1496 + attribute Socket::SKBuff.ref sk_buff; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1497 + attribute DMA::DMAHandle.ref dma; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1498 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1499 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1500 - provided type TxDescriptor |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1501 + // I wish we could just leave those methods in the Context type but we also |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1502 + // need them from the rings and that would mean a circular dependency |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1503 + // between the context and the rings and Rathaxes can't handle it. |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1504 + provided type MMIO |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1505 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1506 decl data_types(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1507 - method init(); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1508 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1509 + chunk LKM::prototypes(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1510 + chunk LKM::code(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1511 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1512 + method init(Builtin::symbol); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1513 + method read32(Register); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1514 + method write32(Register, Builtin::number); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1515 + method set32(Register, Builtin::number); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1516 + method unset32(Register, Builtin::number); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1517 + |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1518 + attribute Builtin::symbol.scalar io; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1519 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1520 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1521 + provided type Ring |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1522 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1523 + decl data_types(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1524 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1525 + chunk LKM::prototypes(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1526 + chunk LKM::code(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1527 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1528 + method init(MMIO, Builtin::number, Builtin::number); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1529 + |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1530 + attribute MMIO.scalar io; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1531 + attribute DMA::DMAHandle.scalar dma; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1532 + attribute Builtin::number.scalar size; // Total size in bytes |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1533 + attribute Builtin::symbol.ref descs; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1534 + attribute Buffer.ref buffs; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1535 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1536 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1537 provided type RxRing |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1538 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1539 decl data_types(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1540 - method init(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1541 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1542 - /* XXX: Callback that should be in the front-end: */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1543 - chunk Ethernet::adapter_init_rx(Ethernet::Device); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1544 + chunk LKM::prototypes(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1545 + chunk LKM::code(); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1546 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1547 - attribute DMA::DMAHandle.scalar dma_base; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1548 - attribute Builtin::number.scalar size; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1549 + method init(MMIO, Builtin::number); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1550 + method alloc(); // Returns != 0 on failure |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1551 + |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1552 + attribute RxDescriptor.scalar descs; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1553 + } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1554 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1555 + provided type TxRing |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1556 + { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1557 + decl data_types(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1558 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1559 + chunk LKM::prototypes(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1560 + chunk LKM::code(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1561 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1562 + method init(MMIO, Builtin::number); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1563 + method alloc(); // Returns != 0 on failure |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1564 + |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1565 + attribute TxDescriptor.scalar descs; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1566 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1567 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1568 provided type Context |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1569 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1570 - chunk Ethernet::HardwareContext(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1571 decl data_types(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1572 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1573 - /* XXX: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1574 - * These callbacks/Hooks which should probably be in the front-end. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1575 - * Also, I'm not too happy about the names, it's difficult to make |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1576 - * the difference between the probe and open parts. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1577 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1578 - chunk Ethernet::adapter_init_context(Ethernet::Device, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1579 - Builtin::number, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1580 - Builtin::symbol); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1581 + chunk LKM::includes(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1582 + chunk LKM::prototypes(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1583 + chunk LKM::code(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1584 + chunk Ethernet::HardwareContext(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1585 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1586 + // NOTE: Those callbacks/hooks should probably be in the front-end: |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1587 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1588 + chunk Ethernet::adapter_init_context(Ethernet::Device, Builtin::symbol); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1589 chunk Ethernet::adapter_reset(Ethernet::Device); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1590 chunk Ethernet::adapter_load_mac_address(Ethernet::Device); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1591 - chunk Ethernet::adapter_setup(Ethernet::Device); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1592 + chunk Ethernet::adapter_setup_rx_tx(Ethernet::Device); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1593 + chunk Ethernet::adapter_enable_interrupts(Ethernet::Device); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1594 + chunk Ethernet::adapter_disable_interrupts(Ethernet::Device); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1595 + chunk Ethernet::adapter_handle_interrupt(Ethernet::Device); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1596 + chunk Ethernet::adapter_xmit(Ethernet::Device, Socket::SKBuff); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1597 + chunk Ethernet::adapter_disable_rx(Ethernet::Device); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1598 + chunk Ethernet::adapter_disable_tx(Ethernet::Device); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1599 + chunk Ethernet::adapter_free_rx_tx(Ethernet::Device); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1600 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1601 + method print_status(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1602 + |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1603 + attribute MMIO.scalar io; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1604 attribute RxRing.scalar rx_ring; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1605 - /* XXX: circular dependency with Contex: */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1606 - //attribute TxRing.scalar tx_ring; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1607 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1608 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1609 - provided type TxRing |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1610 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1611 - chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1612 - chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1613 - decl data_types(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1614 - method init(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1615 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1616 - /* XXX: Callback that should be in the front-end: */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1617 - chunk Ethernet::adapter_init_tx(Ethernet::Device); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1618 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1619 - /* Clean the ring (i.e: move the head closer to the tail): */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1620 - method clean(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1621 - /* Return the number of clean descriptors left in the ring: */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1622 - method descriptors_remaining(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1623 - method tso_cksum_offload(Socket::SKBuff); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1624 - method put(Socket::SKBuff); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1625 - /* Signal the device that new dirty descriptors are on the ring: */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1626 - method start_xmit(e1000::Context); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1627 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1628 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1629 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1630 - * These two types should actually be registers definitions in the frontend: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1631 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1632 - provided type Register |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1633 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1634 - decl data_types(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1635 - method init(Builtin::number); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1636 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1637 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1638 - provided type Commands |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1639 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1640 - decl data_types(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1641 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1642 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1643 - provided type TxDescriptorFlags |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1644 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1645 - decl data_types(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1646 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1647 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1648 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1649 - * This should take an e1000::Context as the first argument but this was |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1650 - * not working as wished. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1651 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1652 - provided sequence print_status(Ethernet::Device) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1653 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1654 - provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1655 - provided chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1656 - provided chunk ::CALL(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1657 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1658 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1659 - provided sequence activate_device_interruption(Ethernet::Device) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1660 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1661 - provided chunk ::CALL(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1662 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1663 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1664 - provided sequence set_up_device(Ethernet::Device) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1665 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1666 - provided chunk ::CALL(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1667 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1668 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1669 - provided sequence free_rx_tx(Ethernet::Device dev) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1670 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1671 - provided chunk ::CALL(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1672 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1673 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1674 - provided sequence handle_interrupt(Ethernet::Device) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1675 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1676 - provided chunk ::CALL(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1677 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1678 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1679 - provided sequence xmit(Ethernet::Device, Socket::AbstractSKBuff) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1680 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1681 - provided chunk ::CALL(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1682 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1683 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1684 - provided sequence register_read32(e1000::Context, e1000::Register) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1685 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1686 - provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1687 - provided chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1688 - provided chunk ::CALL(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1689 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1690 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1691 - provided sequence register_write32(e1000::Context, e1000::Register, ::number) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1692 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1693 - provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1694 - provided chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1695 - provided chunk ::CALL(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1696 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1697 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1698 - provided sequence register_set32(e1000::Context, e1000::Register, ::number) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1699 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1700 - provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1701 - provided chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1702 - provided chunk ::CALL(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1703 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1704 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1705 - provided sequence register_unset32(e1000::Context, e1000::Register, ::number) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1706 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1707 - provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1708 - provided chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1709 - provided chunk ::CALL(); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1710 + attribute TxRing.scalar tx_ring; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1711 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1712 } |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1713 diff --git a/rathaxes/samples/e1000/ethernet.blt b/rathaxes/samples/e1000/ethernet.blt |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1714 old mode 100755 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1715 new mode 100644 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1716 --- a/rathaxes/samples/e1000/ethernet.blt |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1717 +++ b/rathaxes/samples/e1000/ethernet.blt |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1718 @@ -1,4 +1,4 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1719 -with Ethernet, PCI, LKM, Log, Builtin |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1720 +with Ethernet, Socket, PCI, LKM, Log, Builtin |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1721 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1722 template type Ethernet::ProtocolId() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1723 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1724 @@ -61,7 +61,7 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1725 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1726 method init(Builtin::symbol dev) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1727 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1728 - ${self} = (${Ethernet::AbstractDevice} *)${dev}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1729 + ${self} = (${Ethernet::AbstractDevice.ref})${dev}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1730 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1731 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1732 map |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1733 @@ -104,9 +104,12 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1734 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1735 static int rtx_ethernet_alloc_rx_skbuff(${Ethernet::Device.ref} self, ${Socket::SKBuff.ref} sk_buff, ${Builtin::number} size) |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1736 { |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1737 - ${Socket::AbstractSKBuff} k_sk_buff = netdev_alloc_skb(${local.self.net_device.k_net_dev}, ${local.size}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1738 - if (${local.k_sk_buff) { |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1739 - ${local.sk_buff.init(local.k_sk_buff, local.size)}; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1740 + ${Socket::AbstractSKBuff.ref} k_skb = netdev_alloc_skb(${local.self.net_device.k_net_dev}, ${local.size}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1741 + if (${local.k_skb}) { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1742 + // XXX meh, can't use the init method since we get a copy |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1743 + // of the pointer, so we have to do this which is |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1744 + // inconsistent with the rest of code: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1745 + sk_buff->skbuff = k_skb; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1746 return 0; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1747 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1748 return 1; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1749 @@ -148,7 +151,7 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1750 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1751 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1752 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1753 - template sequence Ethernet::open(Ethernet::Device dev) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1754 + template sequence Ethernet::open() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1755 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1756 chunk LKM::includes() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1757 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1758 @@ -164,60 +167,68 @@ |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1759 { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1760 static int rtx_ethernet_open(struct net_device *dev) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1761 { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1762 - /* |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1763 - * XXX The casts are here because the compiler doesn't resolve |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1764 - * "enclosed" type (e.g: local.var.enclosed) correctly. |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1765 - */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1766 ${Ethernet::AbstractDevice.ref} rtx_net_dev; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1767 { /* XXX: I end up with a placeholder if I don't open a scope */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1768 ${local.rtx_net_dev.init(local.dev)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1769 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1770 ${Ethernet::Device.ref} rtx_ether_ctx = ${local.rtx_net_dev.rtx_ether_ctx}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1771 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1772 - int error; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1773 - { |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1774 - ${Log::info("installing the interrupt handler")}; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1775 - } |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1776 - error = request_irq(${local.rtx_ether_ctx.irq}, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1777 - rtx_ethernet_interrupt_handler, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1778 - IRQF_SHARED, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1779 - ${config.name}, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1780 - dev); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1781 - if (error) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1782 - { |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1783 + ${pointcut Ethernet::adapter_setup_rx_tx(local.rtx_ether_ctx)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1784 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1785 + ${Log::info("Installing the interrupt handler")}; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1786 + int error = request_irq( |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1787 + ${local.rtx_ether_ctx.irq}, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1788 + rtx_ethernet_interrupt_handler, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1789 + IRQF_SHARED, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1790 + ${config.name}, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1791 + dev |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1792 + ); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1793 + if (error) { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1794 ${Log::info("Cannot register the interrupt handler")}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1795 return error; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1796 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1797 - ${pointcut Ethernet::adapter_setup(local.rtx_ether_ctx)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1798 - ${pointcut Ethernet::adapter_init_rx(local.rtx_ether_ctx)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1799 - ${pointcut Ethernet::adapter_init_tx(local.rtx_ether_ctx)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1800 - ${pointcut ::IMPLEMENTATION(local.rtx_ether_ctx)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1801 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1802 + ${pointcut Ethernet::adapter_enable_interrupts(local.rtx_ether_ctx)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1803 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1804 return 0; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1805 } |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1806 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1807 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1808 + /* XXX This chunk should be removed (see #26) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1809 + chunk ::CALL() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1810 + { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1811 + } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1812 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1813 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1814 - template sequence Ethernet::send(Ethernet::Device dev, Socket::AbstractSKBuff skb) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1815 + template sequence Ethernet::send() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1816 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1817 chunk LKM::prototypes() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1818 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1819 - static int rtx_ethernet_xmit(struct sk_buff* skb, struct net_device *dev); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1820 + static int rtx_ethernet_xmit(struct sk_buff *skb, struct net_device *dev); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1821 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1822 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1823 chunk LKM::code() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1824 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1825 - static int rtx_ethernet_xmit(struct sk_buff* kernel_skb, struct net_device *net_dev) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1826 + static int rtx_ethernet_xmit(struct sk_buff *k_skb, struct net_device *net_dev) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1827 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1828 ${Ethernet::Device.ref} rtx_ether_ctx = netdev_priv(net_dev); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1829 - ${Socket::AbstractSKBuff.ref} rtx_skb = (${Socket::AbstractSKBuff.ref}) kernel_skb; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1830 + ${Socket::SKBuff.ref} rtx_skb; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1831 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1832 - ${pointcut ::IMPLEMENTATION(local.rtx_ether_ctx, local.rtx_skb)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1833 + ${cast local.k_skb as Socket::AbstractSKBuff.ref}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1834 + ${local.rtx_skb.init(local.k_skb)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1835 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1836 + ${Log::info("we have one packet to transmit!")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1837 + ${pointcut Ethernet::adapter_xmit(local.rtx_ether_ctx, local.rtx_skb)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1838 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1839 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1840 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1841 + /* XXX This chunk should be removed (see #26) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1842 + chunk ::CALL() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1843 + { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1844 + } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1845 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1846 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1847 - template sequence Ethernet::close(Ethernet::Device dev) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1848 + template sequence Ethernet::close() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1849 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1850 chunk LKM::prototypes() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1851 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1852 @@ -226,31 +237,37 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1853 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1854 chunk LKM::code() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1855 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1856 - static int rtx_ethernet_close(struct net_device *dev) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1857 + static int rtx_ethernet_close(struct net_device *net_dev) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1858 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1859 - ${Ethernet::AbstractDevice.ref} rtx_net_dev; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1860 - { /* XXX: I end up with a placeholder if I don't open a scope */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1861 - ${local.rtx_net_dev.init(local.dev)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1862 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1863 + ${cast local.net_dev as Ethernet::AbstractDevice.ref}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1864 + ${Ethernet::Device.ref} rtx_ether_ctx = ${local.net_dev.rtx_ether_ctx}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1865 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1866 - ${Ethernet::Device.ref} rtx_ether_ctx = ${local.rtx_net_dev.rtx_ether_ctx}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1867 + ${pointcut Ethernet::adapter_disable_rx(local.rtx_ether_ctx)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1868 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1869 - /* TODO: change this pointcut into a pointcut/adapter/callback: */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1870 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1871 - ${pointcut ::IMPLEMENTATION(local.rtx_ether_ctx)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1872 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1873 + netif_tx_disable(net_dev); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1874 + ${pointcut Ethernet::adapter_disable_tx(local.rtx_ether_ctx)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1875 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1876 + ${pointcut Ethernet::adapter_disable_interrupts(local.rtx_ether_ctx)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1877 free_irq(${local.rtx_ether_ctx.irq}, dev); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1878 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1879 - ${Log::info("interrupt handler free'ed")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1880 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1881 + ${Log::info("interrupt handler free'ed")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1882 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1883 + // TODO/XXX: There is definitely more stuff to do around here |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1884 + // (e.g: clean the rings, flush some stuff...) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1885 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1886 + ${pointcut Ethernet::adapter_reset(local.rtx_ether_ctx)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1887 + ${pointcut Ethernet::adapter_free_rx_tx(local.rtx_ether_ctx)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1888 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1889 return 0; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1890 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1891 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1892 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1893 + /* XXX This chunk should be removed (see #26) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1894 + chunk ::CALL() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1895 + { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1896 + } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1897 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1898 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1899 - template sequence Ethernet::interrupt_handler(Ethernet::Device dev) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1900 + template sequence Ethernet::interrupt_handler() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1901 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1902 /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1903 * We can't use the irqreturn_t type here because CNornm doesn't know |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1904 @@ -269,11 +286,16 @@ |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1905 ${Ethernet::Device.ref} rtx_ether_ctx; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1906 rtx_ether_ctx = ${local.rtx_net_dev.rtx_ether_ctx}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1907 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1908 - ${pointcut ::IMPLEMENTATION(local.rtx_ether_ctx)}; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1909 + ${pointcut Ethernet::adapter_handle_interrupt(local.rtx_ether_ctx)}; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1910 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1911 return IRQ_NONE; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1912 } |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1913 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1914 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1915 + /* XXX This chunk should be removed (see #26) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1916 + chunk ::CALL() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1917 + { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1918 + } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1919 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1920 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1921 template sequence Ethernet::init() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1922 @@ -342,12 +364,8 @@ |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1923 * XXX: the asssignments/casts are here to circumvent |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1924 * typing issues in the compiler (see previous XXX). |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1925 */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1926 - int bars = ${rtx_pci_dev.bars}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1927 unsigned char /* __iomem */ *ioaddr = ${rtx_pci_dev.ioaddr}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1928 - ${cast local.bars as Builtin::number}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1929 - ${pointcut Ethernet::adapter_init_context(local.rtx_ether_ctx, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1930 - local.bars, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1931 - local.ioaddr)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1932 + ${pointcut Ethernet::adapter_init_context(local.rtx_ether_ctx, local.ioaddr)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1933 ${pointcut Ethernet::adapter_reset(local.rtx_ether_ctx)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1934 ${pointcut Ethernet::adapter_load_mac_address(local.rtx_ether_ctx)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1935 memcpy(${local.rtx_ether_ctx.perm_addr}, |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1936 @@ -355,7 +373,7 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1937 ${local.rtx_net_dev.k_net_dev}->addr_len); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1938 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1939 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1940 - /* This chunk should be removed (see #26) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1941 + /* XXX This chunk should be removed (see #26) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1942 chunk ::CALL() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1943 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1944 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1945 @@ -377,7 +395,7 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1946 free_netdev(${local.rtx_net_dev.k_net_dev}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1947 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1948 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1949 - /* This chunk should be removed (see #26) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1950 + /* XXX This chunk should be removed (see #26) */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1951 chunk ::CALL() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1952 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1953 } |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1954 diff --git a/rathaxes/samples/e1000/ethernet.rti b/rathaxes/samples/e1000/ethernet.rti |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1955 old mode 100755 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1956 new mode 100644 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1957 --- a/rathaxes/samples/e1000/ethernet.rti |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1958 +++ b/rathaxes/samples/e1000/ethernet.rti |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1959 @@ -2,16 +2,16 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1960 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1961 required variable Builtin::string ifname; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1962 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1963 - provided type ProtocolId |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1964 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1965 - chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1966 - chunk LKM::data(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1967 - chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1968 - decl data_types(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1969 + provided type ProtocolId |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1970 + { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1971 + chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1972 + chunk LKM::data(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1973 + chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1974 + decl data_types(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1975 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1976 - attribute Builtin::number.scalar id; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1977 - attribute Builtin::string.scalar str; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1978 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1979 + attribute Builtin::number.scalar id; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1980 + attribute Builtin::string.scalar str; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1981 + } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1982 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1983 provided type AbstractDevice |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1984 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1985 @@ -28,72 +28,88 @@ |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1986 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1987 provided type Device |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1988 { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1989 + decl data_types(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1990 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1991 chunk LKM::includes(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1992 - decl data_types(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1993 + chunk LKM::prototypes(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1994 + chunk LKM::code(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1995 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1996 pointcut Ethernet::HardwareContext(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1997 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1998 method init(Ethernet::AbstractDevice, PCI::AbstractDevice); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
1999 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2000 - * Alloc (the AbstractSKBuff inside) the given SKBuff and initialize |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2001 - * the SKBuff, return 1 if the allocation failed, 0 on success. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2002 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2003 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2004 + // Alloc (the AbstractSKBuff inside) the given SKBuff and initialize |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2005 + // the SKBuff, return 1 if the allocation failed, 0 on success: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2006 method alloc_rx_skbuff(Socket::SKBuff, Builtin::number); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2007 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2008 attribute Device::AbstractDevice.ref device; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2009 attribute PCI::AbstractDevice.ref pci_device; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2010 attribute Ethernet::AbstractDevice.ref net_device; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2011 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2012 - * I'd like to use better names here, but I'd like to understand the |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2013 - * difference between the two first: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2014 - */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2015 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2016 + // I'd like to use better names here, but I'd like to understand the |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2017 + // difference between the two first: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2018 attribute Builtin::symbol.ref perm_addr; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2019 attribute Builtin::symbol.ref dev_addr; |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2020 attribute Builtin::symbol.scalar irq; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2021 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2022 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2023 - required sequence open(Ethernet::Device) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2024 + provided sequence open() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2025 { |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2026 - provided chunk LKM::includes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2027 - provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2028 - provided chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2029 + provided chunk LKM::includes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2030 + provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2031 + provided chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2032 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2033 - /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2034 - * For e1000, this part is documented in the Intel Gigabit Ethernet |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2035 - * Controller Software Developper manual. (You can find it in the |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2036 - * doc/hardware directory). |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2037 - */ |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2038 - provided pointcut Ethernet::adapter_setup(Ethernet::Device); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2039 - provided pointcut Ethernet::adapter_init_rx(Ethernet::Device); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2040 - provided pointcut Ethernet::adapter_init_tx(Ethernet::Device); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2041 + // Prepare the device and the resources for rx/tx: |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2042 + provided pointcut Ethernet::adapter_setup_rx_tx(Ethernet::Device); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2043 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2044 + // Enable interrupts: |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2045 + provided pointcut Ethernet::adapter_enable_interrupts(Ethernet::Device); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2046 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2047 |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2048 - required sequence send(Ethernet::Device, Socket::AbstractSKBuff) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2049 + provided sequence send() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2050 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2051 - provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2052 - provided chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2053 + provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2054 + provided chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2055 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2056 + // Put a packet on the tx ring and signal the device: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2057 + provided pointcut Ethernet::adapter_xmit(Ethernet::Device, Socket::SKBuff); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2058 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2059 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2060 - required sequence close(Ethernet::Device) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2061 + provided sequence close() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2062 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2063 - provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2064 - provided chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2065 + provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2066 + provided chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2067 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2068 + provided pointcut Ethernet::adapter_disable_rx(Ethernet::Device); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2069 + provided pointcut Ethernet::adapter_disable_tx(Ethernet::Device); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2070 + provided pointcut Ethernet::adapter_disable_interrupts(Ethernet::Device); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2071 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2072 + // Clean and free all resources on the rx/tx rings: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2073 + provided pointcut Ethernet::adapter_free_rx_tx(Ethernet::Device); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2074 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2075 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2076 - required sequence interrupt_handler(Ethernet::Device) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2077 + provided sequence interrupt_handler() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2078 { |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2079 - provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2080 - provided chunk LKM::code(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2081 + provided chunk LKM::prototypes(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2082 + provided chunk LKM::code(); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2083 + |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2084 + // Interrupt handler: |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2085 + provided pointcut Ethernet::adapter_handle_interrupt(Ethernet::Device); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2086 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2087 |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2088 - provided sequence init() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2089 + provided sequence init() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2090 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2091 - provided chunk LKM::data(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2092 - provided chunk PCI::pci_probe_hook(PCI::Device); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2093 + provided chunk LKM::data(); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2094 + provided chunk PCI::pci_probe_hook(PCI::Device); |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2095 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2096 - provided pointcut Ethernet::adapter_init_context(Ethernet::Device, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2097 - Builtin::number, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2098 - Builtin::symbol); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2099 + // Init the hardware context structure, doesn't allocate anything: |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2100 + provided pointcut Ethernet::adapter_init_context(Ethernet::Device, Builtin::symbol); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2101 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2102 + // Reset the adapter: |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2103 provided pointcut Ethernet::adapter_reset(Ethernet::Device); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2104 + |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2105 + // Load the MAC address from the EEPROM and save it into the |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2106 + // dev_addr field/attribute of Ethernet::Device: |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2107 provided pointcut Ethernet::adapter_load_mac_address(Ethernet::Device); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2108 } |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2109 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2110 diff --git a/rathaxes/samples/e1000/lkm.rtx b/rathaxes/samples/e1000/lkm.rtx |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2111 old mode 100755 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2112 new mode 100644 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2113 --- a/rathaxes/samples/e1000/lkm.rtx |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2114 +++ b/rathaxes/samples/e1000/lkm.rtx |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2115 @@ -1,40 +1,5 @@ |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2116 device LKM use LKM, PCI, Ethernet, Log, Socket |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2117 { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2118 - Ethernet::open(Ethernet::Device dev) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2119 - { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2120 - Log::info("opening the device"); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2121 - |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2122 - e1000::activate_device_interruption(dev); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2123 - Log::info("interruption enabled"); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2124 - |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2125 - e1000::print_status(dev); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2126 - } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2127 - |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2128 - Ethernet::close(Ethernet::Device dev) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2129 - { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2130 - Log::info("closing the device"); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2131 - |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2132 - /* |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2133 - * Note: some calls to release resources must be done when IRQs are |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2134 - * enabled (dma_free_coherent() for example). So we have to cleanup our |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2135 - * stuff before free_interrupt_handler(). |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2136 - */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2137 - e1000::free_rx_tx(dev); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2138 - Log::info("free'ed up rx/tx resources"); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2139 - } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2140 - |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2141 - Ethernet::interrupt_handler(Ethernet::Device dev) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2142 - { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2143 - Log::info("got an interruption"); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2144 - e1000::handle_interrupt(dev); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2145 - } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2146 - |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2147 - Ethernet::send(Ethernet::Device dev, Socket::AbstractSKBuff skb) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2148 - { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2149 - Log::info("we have one packet to transmit!"); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2150 - e1000::xmit(dev, skb); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2151 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2152 - |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2153 LKM::init() |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2154 { |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2155 Log::info("loading module"); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2156 @@ -50,7 +15,7 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2157 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2158 LKM::name = "rtx_e1k"; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2159 LKM::author = "Rathaxes"; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2160 - LKM::description = "Hello World Loadable Kernel Module (LKM)"; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2161 + LKM::description = "Rathaxes Intel PCI Gigabit NIC sample driver"; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2162 LKM::license = "GPL"; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2163 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2164 /* |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2165 diff --git a/rathaxes/samples/e1000/e1000.blt b/rathaxes/samples/e1000/old_e1000.blt |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2166 old mode 100755 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2167 new mode 100644 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2168 copy from rathaxes/samples/e1000/e1000.blt |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2169 copy to rathaxes/samples/e1000/old_e1000.blt |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2170 --- a/rathaxes/samples/e1000/e1000.blt |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2171 +++ b/rathaxes/samples/e1000/old_e1000.blt |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2172 @@ -170,14 +170,15 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2173 for (i = 0; i != ${config.rx_ring_size}; ++i) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2174 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2175 ${Socket::SKBuff.ref} skbuff = &hw_ctx->rx_ring.skbuffs[i]; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2176 - // XXX #46: ${rtx_ether_ctx.init_rx_skbuff(local.skbuff, config.rx_buffer_len)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2177 - if (rtx_ethernet_init_rx_skbuff(${local.skbuff}, ${config.rx_buffer_len})) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2178 + // XXX #46: ${rtx_ether_ctx.alloc_rx_skbuff(local.skbuff, config.rx_buffer_len)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2179 + if (rtx_ethernet_alloc_rx_skbuff(${local.skbuff}, ${config.rx_buffer_len})) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2180 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2181 ${Log::info("adapter_init_rx: cannot allocate a skbuff for the rx ring")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2182 goto err_skbuffs_alloc; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2183 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2184 - // XXX #46: ${local.skbuff.map_from(rtx_ether_ctx.device)}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2185 - if (rtx_socket_skbuff_map(${local.skbuff}, ${rtx_ether_ctx.device}, RTX_DMA_FROM_DEVICE)) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2186 + /* XXX: recuperer le dma handle et le placer correctement dans le descripteur. */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2187 + ${DMA::map(local.rtx_ether_ctx.device, local.skbuff.data, local.skbuff.len, RTX_DMA_FROM_DEVICE)} |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2188 + if (${DMA::map(local.rtx_ether_ctx.device, local.skbuff.data, local.skbuff.len, RTX_DMA_FROM_DEVICE)}) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2189 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2190 ${Log::info("adapter_init_rx: cannot dma-map a skbuff for the rx ring")}; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2191 goto err_skbuffs_map; |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2192 diff --git a/rathaxes/samples/e1000/e1000.rti b/rathaxes/samples/e1000/old_e1000.rti |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2193 old mode 100755 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2194 new mode 100644 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2195 copy from rathaxes/samples/e1000/e1000.rti |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2196 copy to rathaxes/samples/e1000/old_e1000.rti |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2197 diff --git a/rathaxes/samples/e1000/socket.blt b/rathaxes/samples/e1000/socket.blt |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2198 old mode 100755 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2199 new mode 100644 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2200 --- a/rathaxes/samples/e1000/socket.blt |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2201 +++ b/rathaxes/samples/e1000/socket.blt |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2202 @@ -22,16 +22,12 @@ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2203 { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2204 decl data_types() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2205 { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2206 - ${Socket::AbstractSKBuff.ref} skbuff; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2207 - ${DMA::AbstractDMAHandle.scalar} dma_handle; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2208 - unsigned int size; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2209 + ${Socket::AbstractSKBuff.ref} skbuff; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2210 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2211 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2212 chunk LKM::prototypes() |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2213 { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2214 static void rtx_socket_skbuff_dump_infos(${Socket::SKBuff.ref}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2215 - static int rtx_socket_skbuff_map(${Socket::SKBuff.ref}, ${Device::AbstractDevice.ref}, ${DMA::DMADirection.scalar}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2216 - static void rtx_socket_skbuff_unmap_and_free(${Socket::SKBuff.ref}, ${Device::AbstractDevice.ref}, ${DMA::DMADirection.scalar}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2217 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2218 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2219 chunk LKM::code() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2220 @@ -52,98 +48,29 @@ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2221 * arguments yet. |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2222 */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2223 pr_info( |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2224 - "\t protocol = %#-5x (%s) ip_summed = %d (%s)\n" |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2225 - "\t len = %-5u data_len = %-5u head_len = %-5u\n" |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2226 - "\t nr_frags = %u\n" |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2227 - "\t gso_size = %-5u gso_segs = %-5u gso_type = %-5u", |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2228 - /* XXX: can't use ${local.ethernet_proto.id} here (issue #52): */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2229 - ethernet_proto.id, ${local.ethernet_proto.str}, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2230 - ${local.self.sk_buff.k_sk_buff}->ip_summed, ip_summed_values[${local.self.sk_buff.k_sk_buff}->ip_summed], |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2231 - ${local.self.sk_buff.k_sk_buff}->len, ${local.self.sk_buff.k_sk_buff}->data_len, skb_headlen(${local.self.sk_buff.k_sk_buff}), |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2232 - shinfo->nr_frags, shinfo->gso_size, shinfo->gso_segs, shinfo->gso_type |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2233 + "\t protocol = %#-5x (%s) ip_summed = %d (%s)\n" |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2234 + "\t len = %-5u data_len = %-5u head_len = %-5u\n" |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2235 + "\t nr_frags = %u\n" |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2236 + "\t gso_size = %-5u gso_segs = %-5u gso_type = %-5u", |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2237 + /* XXX: can't use ${local.ethernet_proto.id} here (issue #52): */ |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2238 + ethernet_proto.id, ${local.ethernet_proto.str}, |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2239 + ${local.self.sk_buff.k_sk_buff}->ip_summed, ip_summed_values[${local.self.sk_buff.k_sk_buff}->ip_summed], |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2240 + ${local.self.sk_buff.k_sk_buff}->len, ${local.self.sk_buff.k_sk_buff}->data_len, skb_headlen(${local.self.sk_buff.k_sk_buff}), |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2241 + shinfo->nr_frags, shinfo->gso_size, shinfo->gso_segs, shinfo->gso_type |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2242 ); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2243 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2244 - |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2245 - static int rtx_socket_skbuff_map(${Socket::SKBuff.ref} self, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2246 - ${Device::AbstractDevice.ref} dev, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2247 - ${DMA::DMADirection.scalar} direction) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2248 - { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2249 - WARN_ON(!${local.self.sk_buff}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2250 - WARN_ON(${local.self.dma_handle}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2251 - /* |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2252 - * TODO: we don't support skbuffs with paged data yet (see also |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2253 - * http://vger.kernel.org/~davem/skb_data.html). |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2254 - */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2255 - WARN_ON(skb_is_nonlinear(${local.self.sk_buff.k_sk_buff})); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2256 - |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2257 - unsigned int len = ${local.self.size}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2258 - ${cast local.len as Builtin::number}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2259 - ${local.self.dma_handle} = ${DMA::map(local.dev, local.self.sk_buff.k_sk_buff, local.len, local.direction)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2260 - int err = ${DMA::mapping_error(local.dev, local.self.dma_handle)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2261 - if (err) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2262 - { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2263 - ${local.self.dma_handle} = 0; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2264 - return err; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2265 - } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2266 - return 0; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2267 - } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2268 - |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2269 - static void rtx_socket_skbuff_unmap_and_free(${Socket::SKBuff.ref} self, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2270 - ${Device::AbstractDevice.ref} dev, |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2271 - ${DMA::DMADirection} direction) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2272 - { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2273 - WARN_ON(!${local.self.sk_buff}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2274 - WARN_ON(skb_is_nonlinear(${local.self.sk_buff.k_sk_buff}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2275 - |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2276 - if (${local.self.dma_handle}) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2277 - { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2278 - unsigned int len = ${local.self.size}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2279 - ${cast local.len as Builtin::number}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2280 - ${DMA::unmap(local.dev, local.self.dma_handle, local.len, local.direction)}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2281 - ${local.self.dma_handle} = 0; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2282 - } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2283 - dev_kfree_skb_any(${local.self.sk_buff.k_sk_buff}); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2284 - ${local.self.sk_buff} = NULL; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2285 - } |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2286 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2287 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2288 - /* |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2289 - * XXX: the rathaxes argument kernel_skb is not actually bound to the |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2290 - * correct C variable from Ethernet::send() (so I named it as the C |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2291 - * variable I needed) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2292 - */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2293 - method init(Socket::AbstractSKBuff kernel_skb, Builtin::number size) |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2294 + method init(Socket::AbstractSKBuff k_skb) |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2295 { |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2296 - ${self.sk_buff} = ${kernel_skb}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2297 - ${self.size} = ${size}; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2298 - ${self.dma_handle} = 0; |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2299 + ${self} = (${Socket::SKBuff.ref})(${k_skb}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2300 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2301 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2302 - method dump_infos() |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2303 + method dump_infos() |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2304 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2305 rtx_socket_skbuff_dump_infos(${self}); |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2306 } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2307 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2308 - method map_to(Device::AbstractDevice dev) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2309 - { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2310 - rtx_socket_skbuff_map(${self}, ${dev}, RTX_DMA_TO_DEVICE); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2311 - } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2312 - |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2313 - method map_from(Device::AbstractDevice dev) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2314 - { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2315 - rtx_socket_skbuff_map(${self}, ${dev}, RTX_DMA_FROM_DEVICE); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2316 - } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2317 - |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2318 - method unmap_to_and_free(Device::AbstractDevice dev) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2319 - { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2320 - rtx_socket_skbuff_unmap_and_free(${self}, ${dev}, RTX_DMA_TO_DEVICE); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2321 - } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2322 - |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2323 - method unmap_from_and_free(Device::AbstractDevice dev) |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2324 - { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2325 - rtx_socket_skbuff_unmap_and_free(${self}, ${dev}, RTX_DMA_FROM_DEVICE); |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2326 - } |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2327 - |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2328 map |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2329 { |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2330 // Some work may have to be done here in order to access to some |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2331 @@ -151,13 +78,9 @@ |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2332 // management can be abstracted from the user. But this is at least |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2333 // useful for internal use: |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2334 sk_buff: (${self})->skbuff; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2335 - // XXX: We need to cast here so we can do things like |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2336 - // var.dma_handle = 0; but the type shouldn't be hardcoded (at the |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2337 - // same time ${DMA:AbstractDMAHandle} couldn't be used because that |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2338 - // would yield to a struct type which you can't assign directly; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2339 - // but maybe doing the ->data in that case would be acceptable). |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2340 - dma_handle: (*((dma_addr_t *)&(${self})->dma_handle)); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2341 - size: (${self})->size; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2342 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2343 + data: ((struct sk_buff *)((${self})->sk_buff))->data; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2344 + len: ((struct sk_buff *)((${self})->sk_buff))->len; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2345 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2346 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2347 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2348 diff --git a/rathaxes/samples/e1000/socket.rti b/rathaxes/samples/e1000/socket.rti |
132
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2349 old mode 100755 |
f2e4dd91dc6f
Wip, leave some "functions" empty but start some build tests
Louis Opter <kalessin@kalessin.fr>
parents:
131
diff
changeset
|
2350 new mode 100644 |
131
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2351 --- a/rathaxes/samples/e1000/socket.rti |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2352 +++ b/rathaxes/samples/e1000/socket.rti |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2353 @@ -12,20 +12,14 @@ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2354 { |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2355 chunk LKM::prototypes(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2356 chunk LKM::code(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2357 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2358 decl data_types(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2359 - method init(Socket::AbstractSKBuff, Builtin::number); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2360 + |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2361 + method init(Socket::AbstractSKBuff); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2362 method dump_infos(); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2363 - /* |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2364 - * map_to and map_from return a non-zero value on failure (which |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2365 - * doesn't correspond to an errno value): |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2366 - */ |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2367 - method map_to(Device::AbstractDevice); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2368 - method map_from(Device::AbstractDevice); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2369 - method unmap_to_and_free(Device::AbstractDevice); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2370 - method unmap_from_and_free(Device::AbstractDevice); |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2371 |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2372 - attribute Socket::AbstractSKBuff.ref sk_buff; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2373 - attribute DMA::AbstractDMAHandle.scalar dma_handle; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2374 - attribute Builtin::number.scalar size; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2375 + attribute Socket::AbstractSKBuff.ref sk_buff; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2376 + attribute Builtin::symbol.ref data; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2377 + attribute Builtin::number.scalar len; |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2378 } |
c209851a82de
Wip, start a rewrite of the e1000 device dependent code
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2379 } |