Mercurial > archived > louis > epitech > mq > rathaxes
diff rathaxes_samples_e1000_split_set_up_device.patch @ 129:518d9c8ac70c
Clean-up the patch queue
author | Louis Opter <louis@lse.epita.fr> |
---|---|
date | Mon, 02 Sep 2013 22:59:30 -0700 |
parents | 52402232483f |
children | 6359457dce75 |
line wrap: on
line diff
--- a/rathaxes_samples_e1000_split_set_up_device.patch Mon Aug 26 22:53:34 2013 -0700 +++ b/rathaxes_samples_e1000_split_set_up_device.patch Mon Sep 02 22:59:30 2013 -0700 @@ -1,5 +1,5 @@ # HG changeset patch -# Parent d62a08753da7cec4d44246b747ff79847d9b4238 +# Parent 2bb3ee06ef16e410c364238ccdccf43a6a2acceb rathaxes: split and refactor e1000::set_up_device in {Rx,Tx}Ring methods diff --git a/rathaxes/samples/e1000/e1000.blt b/rathaxes/samples/e1000/e1000.blt @@ -11,7 +11,7 @@ { template type e1000::RxDescriptor() { -@@ -96,8 +96,163 @@ +@@ -96,8 +96,164 @@ { } @@ -107,7 +107,7 @@ + ${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; ++ *(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)) + { @@ -147,7 +147,8 @@ + { + dma_unmap_single( + ${rtx_ether_ctx.device}, -+ hw_ctx->rx_ring.skbuffs[i].dma_handle, ++ /* XXX Leaking cast because of the array: */ ++ *((dma_addr_t *)&(hw_ctx->rx_ring.skbuffs[i].dma_handle)), + ${config.rx_buffer_len}, + DMA_FROM_DEVICE); + err_skbuffs_map: @@ -175,7 +176,16 @@ } } -@@ -208,7 +363,62 @@ +@@ -195,7 +351,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}; + } +@@ -208,7 +364,62 @@ } } @@ -239,7 +249,7 @@ { rtx_e1000_tx_ring_clean(${self}); } -@@ -247,9 +457,8 @@ +@@ -247,9 +458,8 @@ { int bars; unsigned char /* __iomem */ *ioaddr; @@ -251,7 +261,7 @@ } chunk Ethernet::HardwareContext() -@@ -309,10 +518,53 @@ +@@ -309,10 +519,53 @@ } } @@ -306,7 +316,7 @@ } template type e1000::Register() -@@ -615,269 +867,6 @@ +@@ -615,269 +868,6 @@ } } @@ -576,6 +586,30 @@ /* TODO: * * Refactor into two methods (one in RxRing and one in TxRing) and make use +@@ -901,15 +891,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, diff --git a/rathaxes/samples/e1000/e1000.rti b/rathaxes/samples/e1000/e1000.rti --- a/rathaxes/samples/e1000/e1000.rti +++ b/rathaxes/samples/e1000/e1000.rti