annotate rathaxes_start_to_implement_sk_buff_in_the_lkm.patch @ 26:8eac832f763d

rathaxes: free the pci resources
author Thomas Sanchez <thomas.sanchz@gmail.com>
date Sat, 07 Jan 2012 20:48:27 +0100
parents e330b0cea45e
children 1b7399e39afd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
1 # HG changeset patch
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
2 # Parent 606e807b8bc7a3a7ea6f1b895bfe909cd7875c2e
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
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
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
4
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
5 diff -r 606e807b8bc7 rathaxes/samples/lkm/CMakeLists.txt
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
6 --- a/rathaxes/samples/lkm/CMakeLists.txt Sat Jan 07 20:02:55 2012 +0100
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
7 +++ b/rathaxes/samples/lkm/CMakeLists.txt Sat Jan 07 20:48:23 2012 +0100
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
8 @@ -1,6 +1,6 @@
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
9 ADD_RATHAXES_SOURCES(lkm lkm.rtx
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
10 - RTI log.rti lkm.rti pci.rti ethernet.rti
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
11 - BLT log.blt lkm.blt pci.blt ethernet.blt)
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
12 + RTI log.rti lkm.rti pci.rti socket.rti ethernet.rti e1000.rti
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
13 + BLT log.blt lkm.blt pci.blt socket.blt ethernet.blt e1000.blt)
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
14
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
15 # We can't name lkm since it's already used as the target name to generate the
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
16 # source (with ADD_RATHAXES_SOURCES).
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
17 diff -r 606e807b8bc7 rathaxes/samples/lkm/e1000.blt
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
18 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
19 +++ b/rathaxes/samples/lkm/e1000.blt Sat Jan 07 20:48:23 2012 +0100
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
20 @@ -0,0 +1,72 @@
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
21 +with e1000, Ethernet, Socket, PCI, LKM, Log
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
22 +{
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
23 + template type e1000::Context()
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
24 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
25 + chunk LKM::includes()
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
26 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
27 + /*
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
28 + * Force the generation of the structure in the "headers part, we
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
29 + * have to do this since we do not use the structure in this blt
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
30 + * (we hacked a bit and used it in ethernet.blt directly).
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
31 + */
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
32 + typedef int ${e1000::Context}; /* CNorm __std__ workaround */
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
33 + ${e1000::Context} force_declaration_in_includes;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
34 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
35 +
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
36 + chunk ::decl()
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
37 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
38 + struct rtx_e1000_ctx
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
39 + {
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
40 + int bars;
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
41 + unsigned char /* __iomem */ *ioaddr;
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
42 + };
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
43 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
44 +
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
45 + map
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
46 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
47 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
48 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
49 +
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
50 + template sequence e1000::create()
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
51 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
52 + chunk ::CALL
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
53 + {
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
54 + rtx_ether_ctx->hw_ctx.bars = pci_select_bars(pdev, IORESOURCE_MEM);
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
55 + if (pci_enable_device_mem(pdev))
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
56 + {
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
57 + ${Log::info("e1000::create: pci_enable_device_mem failed")};
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
58 + }
24
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
59 +
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
60 + if (pci_request_selected_regions(pdev, rtx_ether_ctx->hw_ctx.bars, ${config.name}))
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
61 + {
24
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
62 + ${Log::info("e1000::create: pci_request_selected_regions failed")};
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
63 + }
24
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
64 +
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
65 + if (${config.set_master})
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
66 + {
24
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
67 + pci_set_master(pdev);
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
68 + }
24
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
69 +
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
70 + /* 0 here is for BAR_0: */
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
71 + rtx_ether_ctx->hw_ctx.ioaddr = pci_ioremap_bar(pdev, 0);
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
72 + if (!rtx_ether_ctx->hw_ctx.ioaddr)
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
73 + {
24
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
74 + ${Log::info("e1000::create: pci_ioremap_bar failed")};
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
75 + }
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
76 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
77 + }
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
78 +
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
79 + template sequence e1000::destroy()
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
80 + {
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
81 + chunk ::CALL
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
82 + {
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
83 + // XXX: add a check in order to avoid freeing none allocated
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
84 + // resources.
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
85 + struct net_device *net_dev = pci_get_drvdata(pdev);
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
86 + struct rtx_ethernet_dev* rtx_ether_ctx = netdev_priv(net_dev);
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
87 + iounmap(rtx_ether_ctx->hw_ctx.ioaddr);
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
88 + pci_release_selected_regions(pdev, rtx_ether_ctx->hw_ctx.bars);
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
89 + pci_release_region(pdev, 0);
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
90 + }
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
91 + }
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
92 +}
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
93 diff -r 606e807b8bc7 rathaxes/samples/lkm/e1000.rti
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
94 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
95 +++ b/rathaxes/samples/lkm/e1000.rti Sat Jan 07 20:48:23 2012 +0100
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
96 @@ -0,0 +1,15 @@
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
97 +interface e1000 : Socket, Ethernet, PCI, LKM
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
98 +{
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
99 + provided type e1000::Context;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
100 +
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
101 + /* Not sure if we need the argument */
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
102 + provided sequence e1000::create()
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
103 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
104 + provided chunk ::CALL;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
105 + }
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
106 +
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
107 + provided sequence e1000::destroy()
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
108 + {
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
109 + provided chunk ::CALL;
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
110 + }
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
111 +}
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
112 diff -r 606e807b8bc7 rathaxes/samples/lkm/ethernet.blt
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
113 --- a/rathaxes/samples/lkm/ethernet.blt Sat Jan 07 20:02:55 2012 +0100
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
114 +++ b/rathaxes/samples/lkm/ethernet.blt Sat Jan 07 20:48:23 2012 +0100
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
115 @@ -18,8 +18,11 @@
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
116 * I think it's useless to use the ${PCI::Device} "abstraction"
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
117 * here, since we are already in a Linux specific context here.
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
118 */
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
119 - struct pci_dev *pci_dev;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
120 - struct net_device *net_dev;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
121 + struct pci_dev *pci_dev;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
122 + struct net_device *net_dev;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
123 +
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
124 + /* while waiting on issue #8 */
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
125 + struct rtx_e1000_ctx hw_ctx;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
126 };
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
127 }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
128
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
129 @@ -51,6 +54,24 @@
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
130 }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
131 }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
132
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
133 + template sequence Ethernet::send(Ethernet::Device dev, Socket::SKBuff skb)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
134 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
135 + chunk LKM::prototypes()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
136 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
137 + static int rtx_ethernet_xmit(struct sk_buff* skb, struct net_device *dev);
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
138 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
139 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
140 + chunk LKM::code()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
141 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
142 + static int rtx_ethernet_xmit(struct sk_buff* skb, struct net_device *dev)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
143 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
144 + ${pointcut ::IMPLEMENTATION};
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
145 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
146 + return 0;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
147 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
148 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
149 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
150 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
151 template sequence Ethernet::close(Ethernet::Device dev)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
152 {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
153 chunk LKM::prototypes()
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
154 @@ -100,7 +121,7 @@
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
155 {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
156 .ndo_open = rtx_ethernet_open,
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
157 .ndo_stop = rtx_ethernet_close,
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
158 - .ndo_start_xmit = NULL,
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
159 + .ndo_start_xmit = rtx_ethernet_xmit,
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
160 };
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
161 }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
162
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
163 @@ -159,9 +180,6 @@
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
164 {
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
165 chunk ::CALL
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
166 {
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
167 - struct net_device *net_dev;
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
168 -
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
169 - net_dev = pci_get_drvdata(pdev); // should be ${pdev}, see above
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
170 unregister_netdev(net_dev);
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
171 /*
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
172 * If we had some cleanup todo with struct rtx_ether_ctx we would
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
173 diff -r 606e807b8bc7 rathaxes/samples/lkm/ethernet.rti
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
174 --- a/rathaxes/samples/lkm/ethernet.rti Sat Jan 07 20:02:55 2012 +0100
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
175 +++ b/rathaxes/samples/lkm/ethernet.rti Sat Jan 07 20:48:23 2012 +0100
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
176 @@ -1,4 +1,4 @@
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
177 -interface Ethernet : PCI, LKM
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
178 +interface Ethernet : Socket, PCI, LKM
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
179 {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
180 provided type Ethernet::Device;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
181
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
182 @@ -10,6 +10,12 @@
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
183 provided chunk LKM::code;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
184 }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
185
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
186 + required sequence Ethernet::send(Ethernet::Device dev, Socket::SKBuff skb)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
187 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
188 + provided chunk LKM::prototypes;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
189 + provided chunk LKM::code;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
190 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
191 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
192 required sequence Ethernet::close(Ethernet::Device)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
193 {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
194 provided chunk LKM::prototypes;
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
195 diff -r 606e807b8bc7 rathaxes/samples/lkm/lkm.rtx
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
196 --- a/rathaxes/samples/lkm/lkm.rtx Sat Jan 07 20:02:55 2012 +0100
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
197 +++ b/rathaxes/samples/lkm/lkm.rtx Sat Jan 07 20:48:23 2012 +0100
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
198 @@ -15,15 +15,22 @@
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
199 Log::info("Got an interruption");
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
200 }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
201
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
202 + Ethernet::send(Ethernet::Device dev, Socket::SKBuff skb)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
203 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
204 + Log::info("We have one packet to transmit!");
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
205 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
206 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
207 PCI::probe(PCI::Device dev)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
208 {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
209 Log::info("Probe the device");
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
210 Ethernet::init(dev);
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
211 + e1000::create();
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
212 }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
213
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
214 PCI::remove(PCI::Device dev)
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
215 {
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
216 Log::info("Remove the pci device");
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
217 + e1000::destroy();
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
218 Ethernet::exit(dev);
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
219 }
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
220
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
221 @@ -45,10 +52,11 @@
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
222 LKM::name = "hello";
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
223 LKM::author = "Rathaxes";
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
224 LKM::description = "Hello World Loadable Kernel Module (LKM)";
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
225 - LKM::license = "BSD";
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
226 + LKM::license = "GPL";
24
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
227
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
228 PCI::vendor_id = 0x8086;
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
229 PCI::product_id = 0x100f;
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
230 + PCI::set_master = true;
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
231
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
232 Ethernet::ifname = "rtx%d";
60dd543b67b0 WIP on the e1000 pci stuff
Louis Opter <louis@lse.epitech.net>
parents: 23
diff changeset
233 }
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
234 diff -r 606e807b8bc7 rathaxes/samples/lkm/socket.blt
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
235 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
236 +++ b/rathaxes/samples/lkm/socket.blt Sat Jan 07 20:48:23 2012 +0100
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
237 @@ -0,0 +1,27 @@
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
238 +with Socket, LKM
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
239 +{
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
240 + template type Socket::SKBuff()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
241 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
242 + chunk LKM::includes()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
243 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
244 + #include <linux/sk_buff.h>
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
245 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
246 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
247 + chunk ::decl()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
248 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
249 + struct sk_buff;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
250 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
251 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
252 + chunk ::init()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
253 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
254 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
255 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
256 + map
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
257 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
258 + // some work may have to be done here in order
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
259 + // to access to some field of the sk_buff.
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
260 + // We should determine if all the sk_buff managment
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
261 + // can be abstracted from the user.
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
262 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
263 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
264 +}
25
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
265 diff -r 606e807b8bc7 rathaxes/samples/lkm/socket.rti
e330b0cea45e rathaxes: workaround resolution bug + update the license since we use pci_ioremap which is only available for gpl driver
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 24
diff changeset
266 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
26
8eac832f763d rathaxes: free the pci resources
Thomas Sanchez <thomas.sanchz@gmail.com>
parents: 25
diff changeset
267 +++ b/rathaxes/samples/lkm/socket.rti Sat Jan 07 20:48:23 2012 +0100
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
268 @@ -0,0 +1,4 @@
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
269 +interface Socket : LKM
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
270 +{
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
271 + provided type Socket::SKBuff;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
272 +}