# HG changeset patch # User Louis Opter # Date 1374898005 25200 # Node ID cbd9b9a49b6377a47538c00966641606b31d2544 # Parent d84bc9a4677114b0ec848c078ab12ca683c4ff3a wip, alloc_rx_skbuff actually an abstraction for netdev_allock_skb diff -r d84bc9a46771 -r cbd9b9a49b63 rathaxes_samples_e1000_add_alloc_sequences_in_socket.patch --- a/rathaxes_samples_e1000_add_alloc_sequences_in_socket.patch Fri Jul 26 17:35:12 2013 -0700 +++ b/rathaxes_samples_e1000_add_alloc_sequences_in_socket.patch Fri Jul 26 21:06:45 2013 -0700 @@ -1,10 +1,42 @@ # HG changeset patch -# Parent 17641176926da447613bc9729bccf37d673276a0 +# Parent e06ebc5e25f35ad135ab454c3f157698e00e69ac rathaxes: add an alloc_rx_skbuff method to Ethernet::Device in e1000 This will help to hide platform dependent code from e1000::set_up_device. +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 +@@ -752,8 +752,10 @@ + */ + for (i = 0; i != ${config.rx_ring_size}; ++i) + { ++ /* XXX #46: */ ++ // hw_ctx->rx_ring.skbuffs[i].skbuff = ${rtx_ether_ctx.net_device.alloc_rx_skb(${config.rx_buffer_len})}; + hw_ctx->rx_ring.skbuffs[i].skbuff = (${Socket::AbstractSKBuff}*)netdev_alloc_skb( +- ${rtx_ether_ctx.net_device.k_net_dev}, /* XXX: .k_net_dev isn't expanded here */ ++ ${rtx_ether_ctx.net_device.k_net_dev}, + ${config.rx_buffer_len}); + if (!hw_ctx->rx_ring.skbuffs[i].skbuff) + { +diff --git a/rathaxes/samples/e1000/ethernet.blt b/rathaxes/samples/e1000/ethernet.blt +--- a/rathaxes/samples/e1000/ethernet.blt ++++ b/rathaxes/samples/e1000/ethernet.blt +@@ -107,6 +107,13 @@ + ${self}->net_dev = ${rtx_net_dev}; + } + ++ /* ++ method alloc_rx_skbuff(Builtin::number size) ++ { ++ ($(Socket::Skbuff.ref})netdev_alloc_skb(${self}, ${size}); ++ } ++ */ ++ + map + { + /* diff --git a/rathaxes/samples/e1000/ethernet.rti b/rathaxes/samples/e1000/ethernet.rti --- a/rathaxes/samples/e1000/ethernet.rti +++ b/rathaxes/samples/e1000/ethernet.rti @@ -16,7 +48,7 @@ + method init(Ethernet::AbstractDevice, PCI::AbstractDevice); - pointcut Ethernet::HardwareContext(); -+ method alloc_rx_skbuff(Builtin::number, …); ++ //method alloc_rx_skbuff(Builtin::number); /* -> Socket::Skbuff.ref */ attribute Device::AbstractDevice.ref device; attribute PCI::AbstractDevice.ref pci_device; diff -r d84bc9a46771 -r cbd9b9a49b63 rathaxes_samples_e1000_use_the_dma_abstraction_in_socket.patch --- a/rathaxes_samples_e1000_use_the_dma_abstraction_in_socket.patch Fri Jul 26 17:35:12 2013 -0700 +++ b/rathaxes_samples_e1000_use_the_dma_abstraction_in_socket.patch Fri Jul 26 21:06:45 2013 -0700 @@ -1,8 +1,8 @@ # HG changeset patch -# Parent c096b6162035042fbafb60b040180a6a5beb2a47 -rathaxes: remove some Linux DMA specific code in the socket abstraction in e1000 +# Parent 8f0f99a85db3d5b034644962b33352a04c4eda59 +rathaxes: abstract away netdev_alloc_skb() from e1000::set_up_device -By using the new DMA abstraction. +By adding a new method to Ethernet::Device. diff --git a/rathaxes/samples/e1000/socket.blt b/rathaxes/samples/e1000/socket.blt --- a/rathaxes/samples/e1000/socket.blt