Mercurial > archived > louis > epitech > mq > rathaxes
view 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 source
# 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,