Mercurial > archived > louis > epitech > mq > rathaxes
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/e1000_wip.patch Mon Aug 26 22:53:34 2013 -0700 @@ -0,0 +1,60 @@ +# HG changeset patch +# Parent e2e8117a5aede962810a9a561890d2cf80997815 +diff --git a/rathaxes/samples/e1000/e1000.blt b/rathaxes/samples/e1000/e1000.blt +--- a/rathaxes/samples/e1000/e1000.blt ++++ b/rathaxes/samples/e1000/e1000.blt +@@ -186,9 +186,9 @@ + goto err_skbuffs_alloc; + } + ${Socket::SKBuff.ref} skbuff = &hw_ctx->rx_ring.skbuffs[i]; +- // XXX breaks rtxGen: ${local.skbuff.init(local.k_sk_buff)}; +- skbuff->skbuff = k_sk_buff; +- skbuff->dma_handle = 0; ++ ${local.skbuff.init(local.k_sk_buff)}; ++ // skbuff->skbuff = k_sk_buff; ++ // *(dma_addr_t *)&(skbuff->dma_handle) = 0; + // XXX #46: ${local.skbuff.map_from(rtx_ether_ctx.device)}; + if (rtx_socket_skbuff_map(${local.skbuff}, ${rtx_ether_ctx.device}, RTX_DMA_FROM_DEVICE)) + { +@@ -228,7 +228,7 @@ + { + dma_unmap_single( + ${rtx_ether_ctx.device}, +- hw_ctx->rx_ring.skbuffs[i].dma_handle, ++ *((dma_addr_t *)&(hw_ctx->rx_ring.skbuffs[i].dma_handle)), + ${config.rx_buffer_len}, + DMA_FROM_DEVICE); + err_skbuffs_map: +@@ -350,7 +350,7 @@ + E1000_TXD_CMD_RS | + skb_headlen(${local.k_skb.k_sk_buff})); + tx_desc->upper.data = 0; +- tx_desc->buff_addr = cpu_to_le64(skb->dma_handle); ++ tx_desc->buff_addr = cpu_to_le64(${local.skb.dma_handle.k_dma_handle}); + memcpy(&self->skbuffs[self->tail], ${local.k_skb.k_sk_buff}, sizeof(*${local.k_skb.k_sk_buff})); + self->tail = (self->tail + 1) % ${config.tx_ring_size}; + } +@@ -890,15 +890,18 @@ + */ + for (int i = 0; i != ${config.rx_ring_size}; ++i) + { ++ /* ++ * XXX Leaking casts: ++ * ++ * We should go through the rtx types (Socket::SKBuff, ++ * AbstractSKBuff), but we can't because of the array here, ++ * which is not supported by the compiler. ++ */ + dma_unmap_single( + ${rtx_ether_ctx.device}, +- (dma_addr_t)hw_ctx_->rx_ring.skbuffs[i].dma_handle, ++ *((dma_addr_t *)&(hw_ctx_->rx_ring.skbuffs[i].dma_handle)), + ${config.rx_buffer_len}, + DMA_FROM_DEVICE); +- /* XXX Leaking cast +- * (We should go through the rtx types (Socket::SKBuff, +- * AbstractSKBuff) +- */ + dev_kfree_skb((struct sk_buff *)hw_ctx_->rx_ring.skbuffs[i].skbuff); + } + dma_free_coherent(${rtx_ether_ctx.device}, hw_ctx_->rx_ring.size,