annotate rathaxes_samples_e1000_use_the_dma_abstraction_in_socket.patch @ 112:bfe10def90e3

Wip
author Louis Opter <louis@lse.epita.fr>
date Fri, 19 Jul 2013 19:12:10 -0700
parents b072f682823d
children b22983cb9e3a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
b072f682823d Start a new series to refactor e1000::set_up_device
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
1 # HG changeset patch
112
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
2 # Parent c571aba317b28723d36bf15393be227b41fce242
111
b072f682823d Start a new series to refactor e1000::set_up_device
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
3 Replace Linux specific code in Socket by DMA calls
b072f682823d Start a new series to refactor e1000::set_up_device
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
4
112
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
5 diff --git a/rathaxes/samples/e1000/socket.blt b/rathaxes/samples/e1000/socket.blt
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
6 --- a/rathaxes/samples/e1000/socket.blt
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
7 +++ b/rathaxes/samples/e1000/socket.blt
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
8 @@ -1,4 +1,4 @@
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
9 -with Socket, LKM, Device, Ethernet
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
10 +with Socket, LKM, Device, DMA, Ethernet
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
11 {
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
12 template type Socket::AbstractSKBuff()
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
13 {
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
14 @@ -22,15 +22,15 @@
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
15 {
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
16 decl data_types()
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
17 {
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
18 - ${Socket::AbstractSKBuff.ref} skbuff;
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
19 - dma_addr_t dma_handle;
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
20 + ${Socket::AbstractSKBuff.ref} skbuff;
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
21 + ${DMA::AbstractDMAHandle.scalar} dma_handle;
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
22 }
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
23
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
24 chunk LKM::prototypes()
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
25 {
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
26 static void rtx_socket_skbuff_dump_infos(${Socket::SKBuff.ref});
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
27 - static int rtx_socket_skbuff_map(${Socket::SKBuff.ref}, struct device *, enum dma_data_direction);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
28 - static void rtx_socket_skbuff_unmap_and_free(${Socket::SKBuff.ref}, struct device *, enum dma_data_direction);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
29 + static int rtx_socket_skbuff_map(${Socket::SKBuff.ref}, struct device *, ${DMA::DMADirection});
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
30 + static void rtx_socket_skbuff_unmap_and_free(${Socket::SKBuff.ref}, struct device *, ${DMA::DMADirection});
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
31 }
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
32
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
33 chunk LKM::code()
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
34 @@ -66,7 +66,7 @@
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
35
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
36 static int rtx_socket_skbuff_map(${Socket::SKBuff.ref} self,
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
37 struct device *dev,
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
38 - enum dma_data_direction direction)
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
39 + ${DMA::DMADirection} direction)
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
40 {
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
41 ${Socket::AbstractSKBuff.ref} skb = self->skbuff;
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
42
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
43 @@ -77,7 +77,7 @@
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
44 dev,
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
45 ${local.skb.k_sk_buff},
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
46 skb_headlen(${local.skb.k_sk_buff}),
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
47 - direction);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
48 + ${local.direction.dma_direction});
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
49 int err = dma_mapping_error(dev, self->dma_handle);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
50 if (err)
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
51 {
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
52 @@ -89,7 +89,7 @@
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
53
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
54 static void rtx_socket_skbuff_unmap_and_free(${Socket::SKBuff.ref} self,
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
55 struct device *dev,
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
56 - enum dma_data_direction direction)
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
57 + ${DMA::DMADirection} direction)
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
58 {
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
59 ${Socket::AbstractSKBuff.ref} skb = self->skbuff;
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
60
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
61 @@ -100,7 +100,7 @@
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
62 dma_unmap_single(dev,
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
63 self->dma_handle,
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
64 skb_headlen(${local.skb.k_sk_buff}),
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
65 - direction);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
66 + ${local.direction.dma_direction});
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
67 self->dma_handle = 0;
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
68 }
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
69 dev_kfree_skb_any(${local.skb.k_sk_buff});
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
70 @@ -126,22 +126,22 @@
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
71
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
72 method map_to(Device::AbstractDevice dev)
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
73 {
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
74 - rtx_socket_skbuff_map(${self}, ${dev.k_device}, DMA_TO_DEVICE);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
75 + rtx_socket_skbuff_map(${self}, ${dev.k_device}, RTX_DMA_TO_DEVICE);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
76 }
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
77
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
78 method map_from(Device::AbstractDevice dev)
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
79 {
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
80 - rtx_socket_skbuff_map(${self}, ${dev.k_device}, DMA_FROM_DEVICE);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
81 + rtx_socket_skbuff_map(${self}, ${dev.k_device}, RTX_DMA_FROM_DEVICE);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
82 }
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
83
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
84 method unmap_to_and_free(Device::AbstractDevice dev)
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
85 {
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
86 - rtx_socket_skbuff_unmap_and_free(${self}, ${dev.k_device}, DMA_TO_DEVICE);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
87 + rtx_socket_skbuff_unmap_and_free(${self}, ${dev.k_device}, RTX_DMA_TO_DEVICE);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
88 }
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
89
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
90 method unmap_from_and_free(Device::AbstractDevice dev)
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
91 {
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
92 - rtx_socket_skbuff_unmap_and_free(${self}, ${dev.k_device}, DMA_FROM_DEVICE);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
93 + rtx_socket_skbuff_unmap_and_free(${self}, ${dev.k_device}, RTX_DMA_FROM_DEVICE);
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
94 }
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
95
Louis Opter <louis@lse.epita.fr>
parents: 111
diff changeset
96 map