diff e1000_implement_the_frame_transmission_chunk.patch @ 83:27f0e70df342

Wip on the transmission, tx init done, and tx hooked from Ethernet send
author Louis Opter <louis@lse.epitech.net>
date Sun, 08 Jul 2012 10:00:25 +0200
parents
children 6432998a8245
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/e1000_implement_the_frame_transmission_chunk.patch	Sun Jul 08 10:00:25 2012 +0200
@@ -0,0 +1,74 @@
+# HG changeset patch
+# Parent 1a5a83776de5ecff15e42930c7741f5b4f2ada13
+rathaxes: start to queue up packets in the TX ring on the e1000 sample
+
+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
+@@ -597,7 +597,7 @@
+ 
+         chunk   ::CALL()
+         {
+-            // this is an hack for the scope
++            // See #10
+             (void)1;
+             {
+                 int error;
+@@ -970,4 +970,31 @@
+             }
+         }
+     }
++
++    template sequence   e1000::xmit(Ethernet::Device ctx, Socket::SKBuff skb)
++    {
++        chunk   ::CALL()
++        {
++            /*
++             * Put packets on the TX ring, must return NETDEV_TX_OK or
++             * NETDEV_TX_BUSY.
++             */
++            (void)1; // See #10
++            {
++                ${Log::info("xmit: skbuff details:")};
++            }
++            pr_info(
++                    "\t     len = %-5u data_len = %-5u head_len = %-5u\n"
++                    "\tnr_frags = %u\n"
++                    "\tgso_size = %-5u gso_segs = %-5u gso_type = %-5u\n",
++                    ${skb}->len,
++                    ${skb}->data_len,
++                    skb_headlen(${skb}),
++                    skb_shinfo(${skb})->nr_frags,
++                    skb_shinfo(${skb})->gso_size,
++                    skb_shinfo(${skb})->gso_segs,
++                    skb_shinfo(${skb})->gso_type
++            );
++        }
++    }
+ }
+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
+@@ -70,6 +70,11 @@
+         provided chunk  ::CALL();
+     }
+ 
++    provided sequence   e1000::xmit(Ethernet::Device, Socket::SKBuff)
++    {
++        provided chunk  ::CALL();
++    }
++
+     provided sequence   e1000::register_read32(e1000::Context, e1000::Register)
+     {
+         provided chunk  LKM::prototypes();
+diff --git a/rathaxes/samples/e1000/lkm.rtx b/rathaxes/samples/e1000/lkm.rtx
+--- a/rathaxes/samples/e1000/lkm.rtx
++++ b/rathaxes/samples/e1000/lkm.rtx
+@@ -46,6 +46,7 @@
+     Ethernet::send(Ethernet::Device dev, Socket::SKBuff skb)
+     {
+         Log::info("we have one packet to transmit!");
++        e1000::xmit(dev, skb);
+     }
+ 
+     LKM::init()