comparison e1000_wip.patch @ 128:0fdaa93ed62b

Start to clean up new compiler patch
author Louis Opter <louis@lse.epita.fr>
date Mon, 26 Aug 2013 22:53:34 -0700
parents
children
comparison
equal deleted inserted replaced
127:72b5b4a62cc5 128:0fdaa93ed62b
1 # HG changeset patch
2 # Parent e2e8117a5aede962810a9a561890d2cf80997815
3 diff --git a/rathaxes/samples/e1000/e1000.blt b/rathaxes/samples/e1000/e1000.blt
4 --- a/rathaxes/samples/e1000/e1000.blt
5 +++ b/rathaxes/samples/e1000/e1000.blt
6 @@ -186,9 +186,9 @@
7 goto err_skbuffs_alloc;
8 }
9 ${Socket::SKBuff.ref} skbuff = &hw_ctx->rx_ring.skbuffs[i];
10 - // XXX breaks rtxGen: ${local.skbuff.init(local.k_sk_buff)};
11 - skbuff->skbuff = k_sk_buff;
12 - skbuff->dma_handle = 0;
13 + ${local.skbuff.init(local.k_sk_buff)};
14 + // skbuff->skbuff = k_sk_buff;
15 + // *(dma_addr_t *)&(skbuff->dma_handle) = 0;
16 // XXX #46: ${local.skbuff.map_from(rtx_ether_ctx.device)};
17 if (rtx_socket_skbuff_map(${local.skbuff}, ${rtx_ether_ctx.device}, RTX_DMA_FROM_DEVICE))
18 {
19 @@ -228,7 +228,7 @@
20 {
21 dma_unmap_single(
22 ${rtx_ether_ctx.device},
23 - hw_ctx->rx_ring.skbuffs[i].dma_handle,
24 + *((dma_addr_t *)&(hw_ctx->rx_ring.skbuffs[i].dma_handle)),
25 ${config.rx_buffer_len},
26 DMA_FROM_DEVICE);
27 err_skbuffs_map:
28 @@ -350,7 +350,7 @@
29 E1000_TXD_CMD_RS |
30 skb_headlen(${local.k_skb.k_sk_buff}));
31 tx_desc->upper.data = 0;
32 - tx_desc->buff_addr = cpu_to_le64(skb->dma_handle);
33 + tx_desc->buff_addr = cpu_to_le64(${local.skb.dma_handle.k_dma_handle});
34 memcpy(&self->skbuffs[self->tail], ${local.k_skb.k_sk_buff}, sizeof(*${local.k_skb.k_sk_buff}));
35 self->tail = (self->tail + 1) % ${config.tx_ring_size};
36 }
37 @@ -890,15 +890,18 @@
38 */
39 for (int i = 0; i != ${config.rx_ring_size}; ++i)
40 {
41 + /*
42 + * XXX Leaking casts:
43 + *
44 + * We should go through the rtx types (Socket::SKBuff,
45 + * AbstractSKBuff), but we can't because of the array here,
46 + * which is not supported by the compiler.
47 + */
48 dma_unmap_single(
49 ${rtx_ether_ctx.device},
50 - (dma_addr_t)hw_ctx_->rx_ring.skbuffs[i].dma_handle,
51 + *((dma_addr_t *)&(hw_ctx_->rx_ring.skbuffs[i].dma_handle)),
52 ${config.rx_buffer_len},
53 DMA_FROM_DEVICE);
54 - /* XXX Leaking cast
55 - * (We should go through the rtx types (Socket::SKBuff,
56 - * AbstractSKBuff)
57 - */
58 dev_kfree_skb((struct sk_buff *)hw_ctx_->rx_ring.skbuffs[i].skbuff);
59 }
60 dma_free_coherent(${rtx_ether_ctx.device}, hw_ctx_->rx_ring.size,