Mercurial > archived > louis > epitech > mq > rathaxes
comparison rathaxes_start_to_implement_sk_buff_in_the_lkm.patch @ 25:e330b0cea45e
rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
author | Thomas Sanchez <thomas.sanchz@gmail.com> |
---|---|
date | Sat, 07 Jan 2012 20:11:27 +0100 |
parents | 60dd543b67b0 |
children | 8eac832f763d |
comparison
equal
deleted
inserted
replaced
24:60dd543b67b0 | 25:e330b0cea45e |
---|---|
1 # HG changeset patch | 1 # HG changeset patch |
2 # Parent bffc8f046282cb07fab2c8ef86cf4fff344fdefc | 2 # Parent 606e807b8bc7a3a7ea6f1b895bfe909cd7875c2e |
3 rathaxes: add sk_buff abstraction and add the implementation of the xmit function for the ethernet system. We have a fully (empty) functionnal ethernet driver | 3 rathaxes: add sk_buff abstraction and add the implementation of the xmit function for the ethernet system. We have a fully (empty) functionnal ethernet driver |
4 | 4 |
5 diff --git a/rathaxes/samples/lkm/CMakeLists.txt b/rathaxes/samples/lkm/CMakeLists.txt | 5 diff -r 606e807b8bc7 rathaxes/samples/lkm/CMakeLists.txt |
6 --- a/rathaxes/samples/lkm/CMakeLists.txt | 6 --- a/rathaxes/samples/lkm/CMakeLists.txt Sat Jan 07 20:02:55 2012 +0100 |
7 +++ b/rathaxes/samples/lkm/CMakeLists.txt | 7 +++ b/rathaxes/samples/lkm/CMakeLists.txt Sat Jan 07 20:10:46 2012 +0100 |
8 @@ -1,6 +1,6 @@ | 8 @@ -1,6 +1,6 @@ |
9 ADD_RATHAXES_SOURCES(lkm lkm.rtx | 9 ADD_RATHAXES_SOURCES(lkm lkm.rtx |
10 - RTI log.rti lkm.rti pci.rti ethernet.rti | 10 - RTI log.rti lkm.rti pci.rti ethernet.rti |
11 - BLT log.blt lkm.blt pci.blt ethernet.blt) | 11 - BLT log.blt lkm.blt pci.blt ethernet.blt) |
12 + RTI log.rti lkm.rti pci.rti socket.rti ethernet.rti e1000.rti | 12 + RTI log.rti lkm.rti pci.rti socket.rti ethernet.rti e1000.rti |
13 + BLT log.blt lkm.blt pci.blt socket.blt ethernet.blt e1000.blt) | 13 + BLT log.blt lkm.blt pci.blt socket.blt ethernet.blt e1000.blt) |
14 | 14 |
15 # We can't name lkm since it's already used as the target name to generate the | 15 # We can't name lkm since it's already used as the target name to generate the |
16 # source (with ADD_RATHAXES_SOURCES). | 16 # source (with ADD_RATHAXES_SOURCES). |
17 diff --git a/rathaxes/samples/lkm/e1000.blt b/rathaxes/samples/lkm/e1000.blt | 17 diff -r 606e807b8bc7 rathaxes/samples/lkm/e1000.blt |
18 new file mode 100644 | 18 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
19 --- /dev/null | 19 +++ b/rathaxes/samples/lkm/e1000.blt Sat Jan 07 20:10:46 2012 +0100 |
20 +++ b/rathaxes/samples/lkm/e1000.blt | 20 @@ -0,0 +1,57 @@ |
21 @@ -0,0 +1,49 @@ | |
22 +with e1000, Ethernet, Socket, PCI, LKM, Log | 21 +with e1000, Ethernet, Socket, PCI, LKM, Log |
23 +{ | 22 +{ |
24 + template type e1000::Context() | 23 + template type e1000::Context() |
25 + { | 24 + { |
26 + chunk LKM::includes() | 25 + chunk LKM::includes() |
51 + { | 50 + { |
52 + chunk ::CALL | 51 + chunk ::CALL |
53 + { | 52 + { |
54 + int bars = pci_select_bars(pdev, IORESOURCE_MEM); | 53 + int bars = pci_select_bars(pdev, IORESOURCE_MEM); |
55 + if (pci_enable_device_mem(pdev)) | 54 + if (pci_enable_device_mem(pdev)) |
55 + { | |
56 + ${Log::info("e1000::create: pci_enable_device_mem failed")}; | 56 + ${Log::info("e1000::create: pci_enable_device_mem failed")}; |
57 + } | |
57 + | 58 + |
58 + if (pci_request_selected_regions(pdev, bars, ${config.name})) | 59 + if (pci_request_selected_regions(pdev, bars, ${config.name})) |
60 + { | |
59 + ${Log::info("e1000::create: pci_request_selected_regions failed")}; | 61 + ${Log::info("e1000::create: pci_request_selected_regions failed")}; |
62 + } | |
60 + | 63 + |
61 + if (${config.set_master}) | 64 + if (${config.set_master}) |
65 + { | |
62 + pci_set_master(pdev); | 66 + pci_set_master(pdev); |
67 + } | |
63 + | 68 + |
64 + /* 0 here is for BAR_0: */ | 69 + /* 0 here is for BAR_0: */ |
65 + rtx_ether_ctx->hw_ctx.ioaddr = pci_ioremap_bar(pdev, 0); | 70 + rtx_ether_ctx->hw_ctx.ioaddr = pci_ioremap_bar(pdev, 0); |
66 + if (!rtx_ether_ctx->hw_ctx.ioaddr) | 71 + if (!rtx_ether_ctx->hw_ctx.ioaddr) |
72 + { | |
67 + ${Log::info("e1000::create: pci_ioremap_bar failed")}; | 73 + ${Log::info("e1000::create: pci_ioremap_bar failed")}; |
68 + } | 74 + } |
69 + } | 75 + } |
70 +} | 76 + } |
71 diff --git a/rathaxes/samples/lkm/e1000.rti b/rathaxes/samples/lkm/e1000.rti | 77 +} |
72 new file mode 100644 | 78 diff -r 606e807b8bc7 rathaxes/samples/lkm/e1000.rti |
73 --- /dev/null | 79 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
74 +++ b/rathaxes/samples/lkm/e1000.rti | 80 +++ b/rathaxes/samples/lkm/e1000.rti Sat Jan 07 20:10:46 2012 +0100 |
75 @@ -0,0 +1,10 @@ | 81 @@ -0,0 +1,10 @@ |
76 +interface e1000 : Socket, Ethernet, PCI, LKM | 82 +interface e1000 : Socket, Ethernet, PCI, LKM |
77 +{ | 83 +{ |
78 + provided type e1000::Context; | 84 + provided type e1000::Context; |
79 + | 85 + |
81 + provided sequence e1000::create() | 87 + provided sequence e1000::create() |
82 + { | 88 + { |
83 + provided chunk ::CALL; | 89 + provided chunk ::CALL; |
84 + } | 90 + } |
85 +} | 91 +} |
86 diff --git a/rathaxes/samples/lkm/ethernet.blt b/rathaxes/samples/lkm/ethernet.blt | 92 diff -r 606e807b8bc7 rathaxes/samples/lkm/ethernet.blt |
87 --- a/rathaxes/samples/lkm/ethernet.blt | 93 --- a/rathaxes/samples/lkm/ethernet.blt Sat Jan 07 20:02:55 2012 +0100 |
88 +++ b/rathaxes/samples/lkm/ethernet.blt | 94 +++ b/rathaxes/samples/lkm/ethernet.blt Sat Jan 07 20:10:46 2012 +0100 |
89 @@ -18,8 +18,11 @@ | 95 @@ -18,8 +18,11 @@ |
90 * I think it's useless to use the ${PCI::Device} "abstraction" | 96 * I think it's useless to use the ${PCI::Device} "abstraction" |
91 * here, since we are already in a Linux specific context here. | 97 * here, since we are already in a Linux specific context here. |
92 */ | 98 */ |
93 - struct pci_dev *pci_dev; | 99 - struct pci_dev *pci_dev; |
132 - .ndo_start_xmit = NULL, | 138 - .ndo_start_xmit = NULL, |
133 + .ndo_start_xmit = rtx_ethernet_xmit, | 139 + .ndo_start_xmit = rtx_ethernet_xmit, |
134 }; | 140 }; |
135 } | 141 } |
136 | 142 |
137 diff --git a/rathaxes/samples/lkm/ethernet.rti b/rathaxes/samples/lkm/ethernet.rti | 143 diff -r 606e807b8bc7 rathaxes/samples/lkm/ethernet.rti |
138 --- a/rathaxes/samples/lkm/ethernet.rti | 144 --- a/rathaxes/samples/lkm/ethernet.rti Sat Jan 07 20:02:55 2012 +0100 |
139 +++ b/rathaxes/samples/lkm/ethernet.rti | 145 +++ b/rathaxes/samples/lkm/ethernet.rti Sat Jan 07 20:10:46 2012 +0100 |
140 @@ -1,4 +1,4 @@ | 146 @@ -1,4 +1,4 @@ |
141 -interface Ethernet : PCI, LKM | 147 -interface Ethernet : PCI, LKM |
142 +interface Ethernet : Socket, PCI, LKM | 148 +interface Ethernet : Socket, PCI, LKM |
143 { | 149 { |
144 provided type Ethernet::Device; | 150 provided type Ethernet::Device; |
154 + } | 160 + } |
155 + | 161 + |
156 required sequence Ethernet::close(Ethernet::Device) | 162 required sequence Ethernet::close(Ethernet::Device) |
157 { | 163 { |
158 provided chunk LKM::prototypes; | 164 provided chunk LKM::prototypes; |
159 diff --git a/rathaxes/samples/lkm/lkm.rtx b/rathaxes/samples/lkm/lkm.rtx | 165 diff -r 606e807b8bc7 rathaxes/samples/lkm/lkm.rtx |
160 --- a/rathaxes/samples/lkm/lkm.rtx | 166 --- a/rathaxes/samples/lkm/lkm.rtx Sat Jan 07 20:02:55 2012 +0100 |
161 +++ b/rathaxes/samples/lkm/lkm.rtx | 167 +++ b/rathaxes/samples/lkm/lkm.rtx Sat Jan 07 20:10:46 2012 +0100 |
162 @@ -15,10 +15,16 @@ | 168 @@ -15,10 +15,16 @@ |
163 Log::info("Got an interruption"); | 169 Log::info("Got an interruption"); |
164 } | 170 } |
165 | 171 |
166 + Ethernet::send(Ethernet::Device dev, Socket::SKBuff skb) | 172 + Ethernet::send(Ethernet::Device dev, Socket::SKBuff skb) |
174 Ethernet::init(dev); | 180 Ethernet::init(dev); |
175 + e1000::create(); | 181 + e1000::create(); |
176 } | 182 } |
177 | 183 |
178 PCI::remove(PCI::Device dev) | 184 PCI::remove(PCI::Device dev) |
179 @@ -49,6 +55,7 @@ | 185 @@ -45,10 +51,11 @@ |
186 LKM::name = "hello"; | |
187 LKM::author = "Rathaxes"; | |
188 LKM::description = "Hello World Loadable Kernel Module (LKM)"; | |
189 - LKM::license = "BSD"; | |
190 + LKM::license = "GPL"; | |
180 | 191 |
181 PCI::vendor_id = 0x8086; | 192 PCI::vendor_id = 0x8086; |
182 PCI::product_id = 0x100f; | 193 PCI::product_id = 0x100f; |
183 + PCI::set_master = true; | 194 + PCI::set_master = true; |
184 | 195 |
185 Ethernet::ifname = "rtx%d"; | 196 Ethernet::ifname = "rtx%d"; |
186 } | 197 } |
187 diff --git a/rathaxes/samples/lkm/socket.blt b/rathaxes/samples/lkm/socket.blt | 198 diff -r 606e807b8bc7 rathaxes/samples/lkm/socket.blt |
188 new file mode 100644 | 199 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
189 --- /dev/null | 200 +++ b/rathaxes/samples/lkm/socket.blt Sat Jan 07 20:10:46 2012 +0100 |
190 +++ b/rathaxes/samples/lkm/socket.blt | |
191 @@ -0,0 +1,27 @@ | 201 @@ -0,0 +1,27 @@ |
192 +with Socket, LKM | 202 +with Socket, LKM |
193 +{ | 203 +{ |
194 + template type Socket::SKBuff() | 204 + template type Socket::SKBuff() |
195 + { | 205 + { |
214 + // We should determine if all the sk_buff managment | 224 + // We should determine if all the sk_buff managment |
215 + // can be abstracted from the user. | 225 + // can be abstracted from the user. |
216 + } | 226 + } |
217 + } | 227 + } |
218 +} | 228 +} |
219 diff --git a/rathaxes/samples/lkm/socket.rti b/rathaxes/samples/lkm/socket.rti | 229 diff -r 606e807b8bc7 rathaxes/samples/lkm/socket.rti |
220 new file mode 100644 | 230 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
221 --- /dev/null | 231 +++ b/rathaxes/samples/lkm/socket.rti Sat Jan 07 20:10:46 2012 +0100 |
222 +++ b/rathaxes/samples/lkm/socket.rti | |
223 @@ -0,0 +1,4 @@ | 232 @@ -0,0 +1,4 @@ |
224 +interface Socket : LKM | 233 +interface Socket : LKM |
225 +{ | 234 +{ |
226 + provided type Socket::SKBuff; | 235 + provided type Socket::SKBuff; |
227 +} | 236 +} |