annotate rathaxes_correctly_use_chunk_and_template_sequences_parameters_in_e1000.patch @ 73:c189b4b44060

Automated merge with https://www.kalessin.fr/projs/hg/epitech/mq/rathaxes/
author Louis Opter <louis@lse.epita.fr>
date Sun, 19 Feb 2012 12:08:54 +0100
parents 3d37fa01b19c 6e9dcbd120c5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
1 # HG changeset patch
66
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
2 # Parent 0197bb30a5d0fe40c5c67c510a9f076d2272d45d
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
3 # User Louis Opter <louis@lse.epitech.net>, David Pineau <dav.pineau@gmail.com>
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
4 rathaxes: correctly use chunk and template sequences parameters in the e1000 sample
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
5
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
6 diff --git a/rathaxes/samples/e1000/e1000.blt b/rathaxes/samples/e1000/e1000.blt
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
7 --- a/rathaxes/samples/e1000/e1000.blt
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
8 +++ b/rathaxes/samples/e1000/e1000.blt
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
9 @@ -15,18 +15,20 @@
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
10
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
11 chunk ::decl()
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
12 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
13 - struct rtx_e1000_ctx
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
14 + /*
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
15 + * Yes, this typedef looks ugly but read the remark about
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
16 + * Ethernet::Device in ethernet.blt.
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
17 + */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
18 + typedef struct rtx_e1000_ctx
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
19 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
20 int bars;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
21 unsigned char /* __iomem */ *ioaddr;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
22 int irq;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
23 - };
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
24 + } *rtx_e1000_ctx_p;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
25 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
26
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
27 - chunk ::init(bars, ioaddr)
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
28 + chunk ::init()
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
29 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
30 - ${self}.bars = ${bars};
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
31 - ${self}.ioaddr = ${ioaddr};
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
32 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
33
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
34 map
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
35 @@ -136,58 +138,74 @@
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
36
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
37 template sequence e1000::create_device()
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
38 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
39 - chunk Ethernet::create_device()
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
40 + chunk Ethernet::create_device(/* PCI::Device */ pdev, /* Ethernet::Device */ rtx_ether_ctx)
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
41 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
42 - rtx_ether_ctx->hw_ctx.irq = pdev->irq;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
43 - rtx_ether_ctx->hw_ctx.bars = pci_select_bars(pdev, IORESOURCE_MEM);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
44 - if (pci_enable_device_mem(pdev))
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
45 + /*
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
46 + * PCI init stuff:
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
47 + *
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
48 + * Some of that code should certainly be moved in the PCI/Ethernet
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
49 + * blts, also at some point maybe we could do that completely
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
50 + * automatically in the PCI/Ethernet blts.
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
51 + */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
52 +
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
53 + /*
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
54 + * We could have used an init function here but since we can't init
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
55 + * all the fields at once (see, ioaddr) and cannot call a C
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
56 + * function within a placeholder (${}), it wasn't really worth it.
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
57 + */
64
8dc1a3bf372a WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 63
diff changeset
58 + ${rtx_ether_ctx}->hw_ctx.bars = pci_select_bars(${pdev}, IORESOURCE_MEM);
8dc1a3bf372a WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 63
diff changeset
59 + ${rtx_ether_ctx}->hw_ctx.irq = ${pdev}->irq;
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
60 +
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
61 + if (pci_enable_device_mem(${pdev}))
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
62 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
63 ${Log::info("e1000::create: pci_enable_device_mem failed")};
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
64 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
65 -
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
66 - if (pci_request_selected_regions(pdev, rtx_ether_ctx->hw_ctx.bars, ${config.name}))
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
67 + if (pci_request_selected_regions(${pdev}, ${rtx_ether_ctx}->hw_ctx.bars, ${config.name}))
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
68 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
69 ${Log::info("e1000::create: pci_request_selected_regions failed")};
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
70 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
71 -
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
72 if (${config.set_master})
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
73 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
74 - pci_set_master(pdev);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
75 + pci_set_master(${pdev});
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
76 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
77
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
78 /* 0 here is for BAR_0: */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
79 - rtx_ether_ctx->hw_ctx.ioaddr = pci_ioremap_bar(pdev, 0);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
80 - if (!rtx_ether_ctx->hw_ctx.ioaddr)
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
81 + ${rtx_ether_ctx}->hw_ctx.ioaddr = pci_ioremap_bar(${pdev}, 0);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
82 + if (!${rtx_ether_ctx}->hw_ctx.ioaddr)
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
83 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
84 ${Log::info("e1000::create: pci_ioremap_bar failed")};
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
85 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
86
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
87 + /*
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
88 + * The really device specific algorithm starts here (so it should
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
89 + * certainly be written in the frontend):
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
90 + */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
91 +
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
92 /* Reset the card */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
93 - rtx_e1000_register_write32(&rtx_ether_ctx->hw_ctx, E1000_CTRL, E1000_CMD_RST);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
94 + rtx_e1000_register_write32(&${rtx_ether_ctx}->hw_ctx, E1000_CTRL, E1000_CMD_RST);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
95 udelay(10);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
96
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
97 - /* Now we can load its mac address */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
98 + /* Now we can load its mac address (thanks minix code) */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
99 int i = 0;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
100 - for (i = 0 /* < this is not generated! */; i < 3; ++i)
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
101 + for (i = 0 /* < this is not generated! (cnorm bug) */; i < 3; ++i)
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
102 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
103 - rtx_e1000_register_write32(&rtx_ether_ctx->hw_ctx, E1000_EEPROM_READ, (i << 8) | 1);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
104 + rtx_e1000_register_write32(&${rtx_ether_ctx}->hw_ctx, E1000_EEPROM_READ, (i << 8) | 1);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
105
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
106 int value;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
107 - /* Should be a do { } while(); but the compiler doesn't do { } while(); yet. */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
108 - value = rtx_e1000_register_read32(&rtx_ether_ctx->hw_ctx, E1000_EEPROM_READ);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
109 - while ((value & (1 << 4)) == 0)
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
110 - value = rtx_e1000_register_read32(&rtx_ether_ctx->hw_ctx, E1000_EEPROM_READ);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
111 + do
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
112 + value = rtx_e1000_register_read32(&${rtx_ether_ctx}->hw_ctx, E1000_EEPROM_READ);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
113 + while ((value & (1 << 4)) == 0);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
114 value >>= 16;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
115
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
116 - rtx_ether_ctx->net_dev->dev_addr[i * 2] = value & 0xff;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
117 - rtx_ether_ctx->net_dev->dev_addr[i * 2 + 1] = (value >> 8) & 0xff;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
118 + ${rtx_ether_ctx}->net_dev->dev_addr[i * 2] = value & 0xff;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
119 + ${rtx_ether_ctx}->net_dev->dev_addr[i * 2 + 1] = (value >> 8) & 0xff;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
120 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
121
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
122 - memcpy(rtx_ether_ctx->net_dev->perm_addr,
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
123 - rtx_ether_ctx->net_dev->dev_addr,
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
124 - rtx_ether_ctx->net_dev->addr_len);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
125 + memcpy(${rtx_ether_ctx}->net_dev->perm_addr,
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
126 + ${rtx_ether_ctx}->net_dev->dev_addr,
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
127 + ${rtx_ether_ctx}->net_dev->addr_len);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
128
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
129 - { /* < mais lol. */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
130 + { /* < See #10 */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
131 ${Log::info("e1000::create: mac address loaded from the EEPROM")};
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
132 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
133 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
134 @@ -199,15 +217,14 @@
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
135
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
136 template sequence e1000::destroy_device()
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
137 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
138 - chunk Ethernet::destroy_device
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
139 + chunk Ethernet::destroy_device(/* PCI::Device */ pdev, /* Ethernet::Device */ rtx_ether_ctx)
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
140 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
141 /*
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
142 * Here, we should have some checks to avoid to free resources that
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
143 * haven't been allocated. (e.g: in case of previous errors).
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
144 */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
145 - struct rtx_ethernet_dev* rtx_ether_ctx = netdev_priv(net_dev);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
146 - iounmap(rtx_ether_ctx->hw_ctx.ioaddr);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
147 - pci_release_selected_regions(pdev, rtx_ether_ctx->hw_ctx.bars);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
148 + iounmap(${rtx_ether_ctx}->hw_ctx.ioaddr);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
149 + pci_release_selected_regions(${pdev}, ${rtx_ether_ctx}->hw_ctx.bars);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
150 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
151
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
152 chunk ::CALL
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
153 @@ -215,7 +232,7 @@
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
154 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
155 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
156
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
157 - template sequence e1000::print_status()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
158 + template sequence e1000::print_status(Ethernet::Device ctx)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
159 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
160 chunk LKM::prototypes()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
161 {
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
162 @@ -227,7 +244,7 @@
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
163 static void rtx_e1000_print_status(struct rtx_e1000_ctx *ctx)
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
164 {
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
165 unsigned int status = rtx_e1000_register_read32(ctx, E1000_STATUS);
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
166 - pr_info("rtx_e1000 status: \n");
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
167 + pr_info("card status: \n");
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
168 pr_info("\tRegister value: 0x%x\n", status);
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
169 pr_info("\tMode: %s\n", (status & 1) ? "Full": "Half");
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
170 pr_info("\tLink: %s\n", (status & 2) ? "Up" : "Down");
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
171 @@ -238,6 +255,7 @@
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
172
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
173 chunk ::CALL
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
174 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
175 + rtx_e1000_print_status(&${ctx}->hw_ctx);
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
176 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
177 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
178
72
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
179 @@ -273,9 +291,9 @@
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
180 }
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
181 }
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
182
72
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
183 - chunk ::CALL()
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
184 + chunk ::CALL
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
185 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
186 - rtx_e1000_register_read32(&${ctx}, ${reg_offset});
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
187 + rtx_e1000_register_read32(${ctx}, ${reg_offset});
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
188 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
189 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
190
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
191 @@ -294,9 +312,9 @@
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
192 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
193 }
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
194
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
195 - chunk ::CALL()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
196 + chunk ::CALL
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
197 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
198 - rtx_e1000_register_write32(&${ctx}, ${reg_offset});
72
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
199 + rtx_e1000_register_write32(${ctx}, ${reg_offset}, ${value});
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
200 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
201 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
202
72
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
203 @@ -315,17 +333,19 @@
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
204 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
205 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
206
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
207 - chunk ::CALL()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
208 + chunk ::CALL
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
209 {
72
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
210 + rtx_e1000_register_set32(${ctx}, ${reg_offset}, ${value});
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
211 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
212 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
213
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
214 - template sequence e1000::setup_interrupt_handler()
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
215 + template sequence e1000::setup_interrupt_handler(Ethernet::Device ctx)
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
216 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
217 chunk LKM::includes()
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
218 {
69
8bb53638585b WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents: 68
diff changeset
219 #include <linux/interrupt.h>
8bb53638585b WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents: 68
diff changeset
220 }
8bb53638585b WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents: 68
diff changeset
221 +
8bb53638585b WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents: 68
diff changeset
222 chunk LKM::prototypes()
8bb53638585b WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents: 68
diff changeset
223 {
8bb53638585b WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents: 68
diff changeset
224 static int e1000_setup_interrupt_handler(struct rtx_ethernet_dev *);
72
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
225 @@ -345,20 +365,20 @@
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
226
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
227 if (error)
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
228 {
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
229 - ${Log::info("Cannot register the interruption")};
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
230 + ${Log::info("cannot register the interrupt handler")};
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
231 }
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
232
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
233 return error;
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
234 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
235 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
236
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
237 - chunk ::CALL()
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
238 + chunk ::CALL
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
239 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
240 // this is an hack for the scope
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
241 (void)1;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
242 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
243 int error;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
244 - error = e1000_setup_interrupt_handler(rtx_ether_dev);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
245 + error = e1000_setup_interrupt_handler(${ctx});
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
246 if (error)
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
247 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
248 return error;
72
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
249 @@ -367,7 +387,7 @@
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
250 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
251 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
252
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
253 - template sequence e1000::free_interrupt_handler()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
254 + template sequence e1000::free_interrupt_handler(Ethernet::Device ctx)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
255 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
256 chunk LKM::prototypes()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
257 {
72
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
258 @@ -378,22 +398,21 @@
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
259 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
260 static void e1000_free_interrupt_handler(struct rtx_ethernet_dev *ethernet_ctx)
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
261 {
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
262 -
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
263 free_irq(ethernet_ctx->hw_ctx.irq, ethernet_ctx);
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
264 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
265 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
266
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
267 - chunk ::CALL()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
268 + chunk ::CALL
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
269 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
270 - e1000_free_interrupt_handler(rtx_ether_dev);
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
271 + e1000_free_interrupt_handler(${ctx});
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
272 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
273 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
274
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
275 - template sequence e1000::activate_device_interruption()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
276 + template sequence e1000::activate_device_interruption(Ethernet::Device ctx)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
277 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
278 - chunk ::CALL()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
279 + chunk ::CALL
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
280 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
281 - rtx_e1000_register_write32(ctx, E1000_IMS,
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
282 + rtx_e1000_register_write32(&${ctx}->hw_ctx, E1000_IMS,
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
283 E1000_INTR_TXDW |
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
284 E1000_INTR_TXQE |
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
285 E1000_INTR_LSC |
72
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
286 @@ -402,11 +421,11 @@
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
287 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
288 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
289
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
290 - template sequence e1000::set_up_device()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
291 + template sequence e1000::set_up_device(Ethernet::Device ctx)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
292 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
293 - chunk ::CALL()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
294 + chunk ::CALL
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
295 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
296 - rtx_e1000_register_set32(ctx, E1000_CTRL,
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
297 + rtx_e1000_register_set32(&${ctx}->hw_ctx, E1000_CTRL,
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
298 E1000_CMD_ASDE |
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
299 E1000_CMD_SLU |
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
300 E1000_CMD_LRST |
72
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
301 @@ -414,20 +433,20 @@
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
302 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
303 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
304
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
305 - template sequence e1000::handle_intr()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
306 + template sequence e1000::handle_interrupt(Ethernet::Device ctx)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
307 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
308 - chunk ::CALL()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
309 + chunk ::CALL
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
310 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
311 int intr;
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
312
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
313 - intr = rtx_e1000_register_read32(ctx, E1000_ICR);
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
314 - if (intr & E1000_INTR_LSC)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
315 - {
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
316 - ${Log::info("Link status changed")};
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
317 - }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
318 -
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
319 + intr = rtx_e1000_register_read32(&${ctx}->hw_ctx, E1000_ICR);
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
320 if (intr)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
321 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
322 + if (intr & E1000_INTR_LSC)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
323 + {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
324 + ${Log::info("cable link status changed")};
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
325 + }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
326 +
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
327 return IRQ_HANDLED;
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
328 }
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
329 }
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
330 diff --git a/rathaxes/samples/e1000/e1000.rti b/rathaxes/samples/e1000/e1000.rti
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
331 --- a/rathaxes/samples/e1000/e1000.rti
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
332 +++ b/rathaxes/samples/e1000/e1000.rti
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
333 @@ -1,25 +1,22 @@
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
334 interface e1000 : Socket, Ethernet, PCI, LKM
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
335 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
336 provided type e1000::Context;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
337 + /*
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
338 + * These two types should actually be registers definitions in the frontend:
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
339 + */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
340 provided type e1000::Register;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
341 provided type e1000::Commands;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
342
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
343 - /*
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
344 - * This sequence should receive an argument like Ethernet::Device, but it is
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
345 - * unclear about how this argument should be bound to a variable/argument in
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
346 - * the instrumented C code.
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
347 - *
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
348 - * Here again, we rely on the fact that *we* wrote the parent context and
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
349 - * named the C variables we need/use with the same name everywhere.
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
350 - */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
351 provided sequence e1000::create_device()
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
352 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
353 + /* should take PCI::Device and Ethernet::Device args: */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
354 provided chunk Ethernet::create_device;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
355 provided chunk ::CALL;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
356 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
357
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
358 provided sequence e1000::destroy_device()
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
359 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
360 + /* should take PCI::Device and Ethernet::Device args: */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
361 provided chunk Ethernet::destroy_device;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
362 provided chunk ::CALL;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
363 }
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
364 @@ -28,44 +25,43 @@
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
365 * This should take an e1000::Context as the first argument but this was
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
366 * not working as wished.
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
367 */
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
368 - provided sequence e1000::print_status()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
369 + provided sequence e1000::print_status(Ethernet::Device)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
370 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
371 provided chunk LKM::prototypes;
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
372 provided chunk LKM::code;
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
373 provided chunk ::CALL;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
374 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
375
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
376 - provided sequence e1000::setup_interrupt_handler()
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
377 + provided sequence e1000::setup_interrupt_handler(Ethernet::Device)
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
378 {
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
379 - provided chunk LKM::includes; // work without this one
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
380 + provided chunk LKM::includes; // works without this one
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
381 provided chunk LKM::prototypes;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
382 provided chunk LKM::code;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
383 provided chunk ::CALL;
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
384 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
385
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
386 - provided sequence e1000::free_interrupt_handler()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
387 + provided sequence e1000::free_interrupt_handler(Ethernet::Device)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
388 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
389 provided chunk LKM::prototypes;
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
390 provided chunk LKM::code;
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
391 provided chunk ::CALL;
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
392 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
393
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
394 - provided sequence e1000::activate_device_interruption()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
395 + provided sequence e1000::activate_device_interruption(Ethernet::Device)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
396 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
397 provided chunk ::CALL;
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
398 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
399
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
400 - provided sequence e1000::set_up_device()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
401 + provided sequence e1000::set_up_device(Ethernet::Device)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
402 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
403 provided chunk ::CALL;
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
404 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
405
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
406 - provided sequence e1000::handle_intr()
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
407 + provided sequence e1000::handle_interrupt(Ethernet::Device)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
408 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
409 provided chunk ::CALL;
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
410 }
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
411
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
412 -
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
413 provided sequence e1000::register_read32(e1000::Context, e1000::Register)
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
414 {
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
415 provided chunk LKM::prototypes;
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
416 diff --git a/rathaxes/samples/e1000/ethernet.blt b/rathaxes/samples/e1000/ethernet.blt
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
417 --- a/rathaxes/samples/e1000/ethernet.blt
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
418 +++ b/rathaxes/samples/e1000/ethernet.blt
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
419 @@ -1,5 +1,10 @@
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
420 with Ethernet, PCI, LKM, Log
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
421 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
422 + /*
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
423 + * Unlike PCI::Device, Ethernet::Device doesn't match the struct net_device
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
424 + * from Linux. Ethernet::Device is the type that we use in the private
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
425 + * field of the struct net_device.
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
426 + */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
427 template type Ethernet::Device()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
428 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
429 chunk LKM::includes()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
430 @@ -10,7 +15,14 @@
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
431
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
432 chunk ::decl()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
433 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
434 - struct rtx_ethernet_dev
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
435 + /*
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
436 + * So, at first sight, it sucks to typedef it as pointer but (for
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
437 + * now) it makes sense for two reasons:
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
438 + * - This structure will always be used through a pointer;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
439 + * - This remove the ambiguity of pointer/not-pointer in the
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
440 + * ::init() chunk.
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
441 + */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
442 + typedef struct rtx_ethernet_dev
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
443 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
444 /*
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
445 * I think it's useless to use the ${PCI::Device} "abstraction"
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
446 @@ -21,12 +33,18 @@
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
447
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
448 /* while waiting on issue #8 */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
449 struct rtx_e1000_ctx hw_ctx;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
450 - };
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
451 + } *rtx_ethernet_dev_p;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
452 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
453
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
454 - chunk ::init(net_dev)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
455 + chunk ::init(net_dev, pci_dev)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
456 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
457 - ${self} = ${net_dev};
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
458 + ${self} = netdev_priv(${net_dev});
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
459 + /*
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
460 + * We can use -> because we know that ${self} will be always a
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
461 + * pointer ("thanks" to the typedef)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
462 + */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
463 + ${self}->pci_dev = ${pci_dev};
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
464 + ${self}->net_dev = ${net_dev};
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
465 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
466
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
467 map
64
8dc1a3bf372a WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 63
diff changeset
468 @@ -45,10 +63,10 @@
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
469 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
470 static int rtx_ethernet_open(struct net_device *dev)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
471 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
472 - struct rtx_ethernet_dev* rtx_ether_dev = netdev_priv(dev);
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
473 + struct rtx_ethernet_dev* rtx_ether_dev = netdev_priv(dev);
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
474 struct rtx_e1000_ctx* ctx = &rtx_ether_dev->hw_ctx;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
475
64
8dc1a3bf372a WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 63
diff changeset
476 - ${pointcut ::IMPLEMENTATION};
69
8bb53638585b WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents: 68
diff changeset
477 + ${pointcut ::IMPLEMENTATION(local.rtx_ether_dev)};
64
8dc1a3bf372a WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 63
diff changeset
478
8dc1a3bf372a WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 63
diff changeset
479 return 0;
8dc1a3bf372a WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 63
diff changeset
480 }
66
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
481 @@ -66,7 +84,7 @@
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
482 {
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
483 static int rtx_ethernet_xmit(struct sk_buff* skb, struct net_device *dev)
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
484 {
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
485 - ${pointcut ::IMPLEMENTATION};
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
486 + ${pointcut ::IMPLEMENTATION(local.dev, local.skb)};
66
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
487
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
488 return 0;
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
489 }
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
490 @@ -87,7 +105,7 @@
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
491 struct rtx_ethernet_dev* rtx_ether_dev = netdev_priv(dev);
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
492 struct rtx_e1000_ctx* ctx = &rtx_ether_dev->hw_ctx;
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
493
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
494 - ${pointcut ::IMPLEMENTATION};
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
495 + ${pointcut ::IMPLEMENTATION(local.rtx_ether_dev)};
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
496
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
497 return 0;
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
498 }
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
499 @@ -114,14 +132,14 @@
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
500
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
501 rtx_ether_dev = dev_id;
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
502 ctx = &rtx_ether_dev->hw_ctx;
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
503 - ${pointcut ::IMPLEMENTATION};
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
504 + ${pointcut ::IMPLEMENTATION(local.rtx_ether_dev)};
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
505
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
506 return IRQ_NONE;
901af221334b Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents: 64
diff changeset
507 }
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
508 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
509 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
510
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
511 - template sequence Ethernet::init(PCI::Device pdev)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
512 + template sequence Ethernet::init()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
513 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
514 chunk LKM::data()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
515 {
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
516 @@ -133,83 +151,75 @@
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
517 };
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
518 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
519
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
520 - chunk PCI::pci_probe_hook()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
521 + /* For now the type is not handled, so we just omit it (see #17) */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
522 + chunk PCI::pci_probe_hook(/* PCI::Device */ pdev)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
523 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
524 /*
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
525 * This typedef is needed to workaround a bug in CNorm __std__
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
526 * dialect.
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
527 */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
528 typedef int ${Ethernet::Device};
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
529 - ${Ethernet::Device} *rtx_ether_ctx;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
530 - struct net_device *net_dev;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
531 +
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
532 + ${Ethernet::Device} rtx_ether_ctx;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
533 + struct net_device *net_dev;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
534 int error;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
535
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
536 - error = 0;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
537 + /* Initialize the net_device structure */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
538 net_dev = alloc_etherdev(sizeof(*rtx_ether_ctx));
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
539 if (net_dev == 0)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
540 {
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
541 - ${Log::info("Cannot allocate memory")};
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
542 + ${Log::info("cannot allocate memory")};
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
543 /*
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
544 * Again, the error should be "raised" in the parent context.
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
545 *
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
546 - * Here we know that we should return ENOMEM because *we* wrote
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
547 + * Here we know that we can return ENOMEM because *we* wrote
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
548 * the parent context.
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
549 */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
550 return -ENOMEM;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
551 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
552 + SET_NETDEV_DEV(net_dev, &${pdev}->dev);
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
553 strlcpy(net_dev->name, ${config.ifname}, sizeof(net_dev->name));
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
554 - net_dev->irq = pdev->irq;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
555 - // Maybe we should try ${rtx_ether_ctx.init()} here:
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
556 - rtx_ether_ctx = netdev_priv(net_dev);
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
557 - //rtx_ether_ctx->pci_dev = ${pdev};
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
558 - rtx_ether_ctx->pci_dev = pdev; // In the meantime do it directly
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
559 - rtx_ether_ctx->net_dev = net_dev;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
560 + net_dev->irq = ${pdev}->irq;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
561 + net_dev->netdev_ops = &rtx_ether_ops;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
562
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
563 - /*
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
564 - * The substitution of ${pdev} fails here. I also tried to add a
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
565 - * "substitute method" to the PCI::Device that was just doing
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
566 - * "${self}" but it didn't work either (it was subsituted by a
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
567 - * placeholder, e.g: _1).
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
568 - *
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
569 - * That's why we cheated a bit and named all the arguments pdev.
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
570 - */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
571 - //SET_NETDEV_DEV(net_dev, &${pdev}->dev);
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
572 - SET_NETDEV_DEV(net_dev, &pdev->dev);
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
573 - net_dev->netdev_ops = &rtx_ether_ops;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
574 - if ((error = register_netdev(net_dev)))
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
575 + error = register_netdev(net_dev);
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
576 + if (error)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
577 {
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
578 - ${Log::info("Cannot register the driver")};
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
579 + ${Log::info("cannot register the driver in the net subsystem")};
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
580 return error;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
581 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
582
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
583 - /* same problem as above with ${pdev} */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
584 - //pci_set_drvdata(${pdev}, net_dev);
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
585 - pci_set_drvdata(pdev, net_dev);
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
586 + /* Initialize our context held by the net_device structure */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
587 + ${rtx_ether_ctx.init(local.net_dev, pdev)};
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
588
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
589 - ${pointcut Ethernet::create_device};
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
590 + pci_set_drvdata(${pdev}, net_dev);
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
591 +
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
592 + ${pointcut Ethernet::create_device(pdev, local.rtx_ether_ctx)};
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
593 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
594
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
595 + /* This chunk should be removed (see #26) */
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
596 chunk ::CALL
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
597 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
598 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
599 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
600
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
601 - template sequence Ethernet::exit(PCI::Device pdev)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
602 + template sequence Ethernet::exit()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
603 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
604 - chunk PCI::pci_remove_hook()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
605 + chunk PCI::pci_remove_hook(/* PCI::Device */ pdev)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
606 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
607 - struct net_device *net_dev = pci_get_drvdata(pdev);
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
608 + /* workaround for cnorm unstrict */
64
8dc1a3bf372a WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 63
diff changeset
609 + typedef int ${Ethernet::Device};
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
610
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
611 - ${pointcut Ethernet::destroy_device};
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
612 + struct net_device *net_dev = pci_get_drvdata(${pdev});
64
8dc1a3bf372a WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 63
diff changeset
613 + ${Ethernet::Device} rtx_ether_ctx = netdev_priv(net_dev);
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
614 +
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
615 + ${pointcut Ethernet::destroy_device(pdev, local.rtx_ether_ctx)};
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
616
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
617 unregister_netdev(net_dev);
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
618 - /*
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
619 - * If we had some cleanup todo with struct rtx_ether_ctx we would
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
620 - * do a netdev_priv(net_dev) here and do it.
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
621 - */
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
622 free_netdev(net_dev);
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
623 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
624
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
625 + /* This chunk should be removed (see #26) */
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
626 chunk ::CALL
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
627 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
628 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
629 diff --git a/rathaxes/samples/e1000/ethernet.rti b/rathaxes/samples/e1000/ethernet.rti
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
630 --- a/rathaxes/samples/e1000/ethernet.rti
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
631 +++ b/rathaxes/samples/e1000/ethernet.rti
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
632 @@ -28,19 +28,17 @@
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
633 provided chunk LKM::code;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
634 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
635
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
636 - provided sequence Ethernet::init(PCI::Device)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
637 + provided sequence Ethernet::init()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
638 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
639 provided chunk LKM::data;
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
640 - provided chunk PCI::pci_probe_hook;
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
641 - provided chunk ::CALL;
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
642 + provided chunk PCI::pci_probe_hook; /* should take a PCI::Device arg */
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
643
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
644 provided pointcut Ethernet::create_device;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
645 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
646
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
647 - provided sequence Ethernet::exit(PCI::Device)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
648 + provided sequence Ethernet::exit()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
649 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
650 - provided chunk ::CALL;
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
651 - provided chunk PCI::pci_remove_hook;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
652 + provided chunk PCI::pci_remove_hook; /* should take a PCI::Device arg */
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
653
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
654 provided pointcut Ethernet::destroy_device;
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
655 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
656 diff --git a/rathaxes/samples/e1000/lkm.rtx b/rathaxes/samples/e1000/lkm.rtx
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
657 --- a/rathaxes/samples/e1000/lkm.rtx
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
658 +++ b/rathaxes/samples/e1000/lkm.rtx
71
3d37fa01b19c e1000 sample add some debug
Louis Opter <louis@lse.epitech.net>
parents: 70
diff changeset
659 @@ -2,50 +2,62 @@
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
660 {
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
661 Ethernet::open(Ethernet::Device dev)
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
662 {
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
663 - Log::info("Open the device");
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
664 - e1000::setup_interrupt_handler();
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
665 - Log::info("Interrupt handler installed");
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
666 - e1000::set_up_device();
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
667 - e1000::activate_device_interruption();
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
668 + Log::info("opening the device");
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
669 +
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
670 + /*
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
671 + * Maybe e1000::create_device should be called from here, to be
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
672 + * more coherent.
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
673 + */
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
674 +
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
675 + e1000::setup_interrupt_handler(dev);
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
676 + Log::info("interrupt handler installed");
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
677 +
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
678 + e1000::set_up_device(dev);
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
679 + Log::info("device activated");
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
680 +
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
681 + e1000::activate_device_interruption(dev);
71
3d37fa01b19c e1000 sample add some debug
Louis Opter <louis@lse.epitech.net>
parents: 70
diff changeset
682 + Log::info("interruption enabled");
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
683 +
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
684 + e1000::print_status(dev);
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
685 }
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
686
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
687 Ethernet::close(Ethernet::Device dev)
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
688 {
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
689 - Log::info("Close the device");
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
690 - e1000::free_interrupt_handler();
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
691 + Log::info("closing the device");
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
692 + e1000::free_interrupt_handler(dev);
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
693 }
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
694
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
695 Ethernet::interrupt_handler(Ethernet::Device dev)
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
696 {
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
697 - Log::info("Got an interruption");
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
698 - e1000::handle_intr();
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
699 + Log::info("got an interruption");
70
c22a9acf8cd7 wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents: 69
diff changeset
700 + e1000::handle_interrupt(dev);
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
701 }
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
702
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
703 Ethernet::send(Ethernet::Device dev, Socket::SKBuff skb)
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
704 {
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
705 - Log::info("We have one packet to transmit!");
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
706 + Log::info("we have one packet to transmit!");
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
707 }
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
708
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
709 LKM::init()
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
710 {
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
711 - Log::info("Hello this is LKM");
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
712 + Log::info("loading module");
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
713 }
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
714
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
715 LKM::exit()
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
716 {
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
717 - Log::info("Good bye this was LKM");
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
718 + Log::info("unloading module");
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
719 }
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
720 }
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
721
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
722 configuration
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
723 {
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
724 - LKM::name = "hello";
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
725 + LKM::name = "rtx_e1k";
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
726 LKM::author = "Rathaxes";
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
727 LKM::description = "Hello World Loadable Kernel Module (LKM)";
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
728 LKM::license = "GPL";
68
ef460b936b5f Merge + remove patch from David
Louis Opter <louis@lse.epitech.net>
parents: 67
diff changeset
729
ef460b936b5f Merge + remove patch from David
Louis Opter <louis@lse.epitech.net>
parents: 67
diff changeset
730 PCI::vendor_id = 0x8086;
ef460b936b5f Merge + remove patch from David
Louis Opter <louis@lse.epitech.net>
parents: 67
diff changeset
731 - PCI::product_id = 0x100f;
72
6e9dcbd120c5 Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents: 70
diff changeset
732 + PCI::product_id = 0x100e; /* e100f on vmware by default it seems */
68
ef460b936b5f Merge + remove patch from David
Louis Opter <louis@lse.epitech.net>
parents: 67
diff changeset
733 PCI::set_master = true;
ef460b936b5f Merge + remove patch from David
Louis Opter <louis@lse.epitech.net>
parents: 67
diff changeset
734
ef460b936b5f Merge + remove patch from David
Louis Opter <louis@lse.epitech.net>
parents: 67
diff changeset
735 Ethernet::ifname = "rtx%d";
65
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
736 diff --git a/rathaxes/samples/e1000/log.blt b/rathaxes/samples/e1000/log.blt
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
737 --- a/rathaxes/samples/e1000/log.blt
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
738 +++ b/rathaxes/samples/e1000/log.blt
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
739 @@ -4,7 +4,7 @@
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
740 {
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
741 chunk ::CALL
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
742 {
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
743 - pr_info("%s\n", ${msg});
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
744 + pr_info("%s: %s\n", ${config.name}, ${msg});
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
745 }
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
746 }
e77a4126576c WIP e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 64
diff changeset
747 }
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
748 diff --git a/rathaxes/samples/e1000/pci.blt b/rathaxes/samples/e1000/pci.blt
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
749 --- a/rathaxes/samples/e1000/pci.blt
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
750 +++ b/rathaxes/samples/e1000/pci.blt
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
751 @@ -22,7 +22,7 @@
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
752 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
753 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
754
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
755 - template sequence PCI::probe(PCI::Device pdev)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
756 + template sequence PCI::probe()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
757 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
758 chunk LKM::prototypes()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
759 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
760 @@ -41,7 +41,8 @@
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
761 if (err < 0)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
762 goto fail;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
763
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
764 - ${pointcut PCI::pci_probe_hook};
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
765 + /* Use local. to reference a local C variable: */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
766 + ${pointcut PCI::pci_probe_hook(local.pdev)};
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
767
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
768 return 0;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
769
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
770 @@ -50,12 +51,13 @@
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
771 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
772 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
773
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
774 + /* This chunk should be remove (see #26) */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
775 chunk ::CALL
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
776 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
777 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
778 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
779
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
780 - template sequence PCI::remove(PCI::Device pdev)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
781 + template sequence PCI::remove()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
782 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
783 chunk LKM::prototypes()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
784 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
785 @@ -66,12 +68,13 @@
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
786 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
787 static void rtx_pci_remove(struct pci_dev *pdev)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
788 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
789 - ${pointcut PCI::pci_remove_hook};
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
790 + ${pointcut PCI::pci_remove_hook(local.pdev)};
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
791
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
792 pci_disable_device(pdev);
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
793 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
794 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
795
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
796 + /* This chunk should be remove (see #26) */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
797 chunk ::CALL()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
798 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
799 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
800 @@ -125,6 +128,8 @@
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
801 * This sequence is just "intermediate" code that will just inject
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
802 * itself in the hook LKM::init_bus_hook for which this sequence
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
803 * has a chunk (see above chunk).
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
804 + *
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
805 + * -> Should be removed see #26
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
806 */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
807 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
808 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
809 @@ -136,6 +141,7 @@
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
810 pci_unregister_driver(&rtx_pci_driver);
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
811 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
812
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
813 + /* This chunk should be removed */
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
814 chunk ::CALL
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
815 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
816 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
817 diff --git a/rathaxes/samples/e1000/pci.rti b/rathaxes/samples/e1000/pci.rti
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
818 --- a/rathaxes/samples/e1000/pci.rti
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
819 +++ b/rathaxes/samples/e1000/pci.rti
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
820 @@ -18,7 +18,7 @@
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
821 provided chunk LKM::deinit_bus_hook;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
822 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
823
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
824 - provided sequence PCI::probe(PCI::Device)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
825 + provided sequence PCI::probe()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
826 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
827 provided chunk LKM::prototypes;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
828 provided chunk LKM::code;
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
829 @@ -26,11 +26,11 @@
62
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
830 provided pointcut PCI::pci_probe_hook;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
831 }
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
832
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
833 - provided sequence PCI::remove(PCI::Device)
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
834 + provided sequence PCI::remove()
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
835 {
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
836 provided chunk LKM::prototypes;
b43bed449cc2 Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
837 provided chunk LKM::code;
63
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
838
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
839 - provided pointcut PCI::pci_remove_hook;
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
840 + provided pointcut PCI::pci_remove_hook; /* Should take a PCI::Device arg */
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
841 }
b820c4604946 WIP on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents: 62
diff changeset
842 }