public inbox for systemtap@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 1/3] Adding a some new probes to the networking.stp tapset
  2009-09-16 18:38 [PATCH 0/3] new functions for netdev tapset leitao
  2009-09-16 18:38 ` [PATCH 3/3] A network device example leitao
@ 2009-09-16 18:38 ` leitao
  2009-09-17 21:12   ` David Smith
  2009-09-16 18:38 ` [PATCH 2/3] A basic test to assure that networking tapset is building ok leitao
  2 siblings, 1 reply; 8+ messages in thread
From: leitao @ 2009-09-16 18:38 UTC (permalink / raw)
  To: systemtap; +Cc: dsmith, jistone

A tapset that helps those who are working with network devices.
These new fnctions try to cover almost all functions related to
these network devices.
---
 tapset/networking.stp |  177 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 177 insertions(+), 0 deletions(-)

diff --git a/tapset/networking.stp b/tapset/networking.stp
index f6d7853..532fe18 100644
--- a/tapset/networking.stp
+++ b/tapset/networking.stp
@@ -8,6 +8,12 @@
 // <tapsetdescription>
 // This family of probe points is used to probe the activities of the network device. 
 // </tapsetdescription>
+
+/* A function that returns the device name given the net_device struct */
+function get_netdev_name:string (addr:long) {
+	return kernel_string(@cast(addr, "net_device")->name)
+}
+
 /**
  * probe netdev.receive - Data recieved from network device.
  * @dev_name: The name of the device. e.g: eth0, ath1.
@@ -78,3 +84,174 @@ probe netdev.transmit
 	protocol = $skb->protocol
 	truesize = $skb->truesize
 }
+
+/**
+ * probe netdev.change_mtu - Called when the netdev MTU is changed
+ * @dev_name: The device that will have the MTU changed
+ * @old_mtu: The current MTU
+ * @new_mtu: The new MTU
+ */
+probe netdev.change_mtu
+	= kernel.function("dev_set_mtu")
+{
+	old_mtu = $dev->mtu
+	new_mtu = $new_mtu
+	dev_name = get_netdev_name($dev)
+}
+
+/**
+ * probe netdev.open - Called when the device is opened
+ * @dev_name: The device that is going to be opened 
+ */
+probe netdev.open
+	= kernel.function("dev_open")
+{
+	dev_name = get_netdev_name($dev)
+}
+
+/**
+ * probe netdev.close - Called when the device is closed
+ * @dev_name: The device that is going to be closed
+ */
+probe netdev.close
+	= kernel.function("dev_close")
+{
+	dev_name = get_netdev_name($dev)
+}
+
+/**
+ * probe netdev.hard_transmit - Called when the devices is going to TX (hard)
+ * @dev_name: The device scheduled to transmit
+ * @protocol: The protocol used in the transmission
+ * @length: The length of the transmit buffer.
+ * @truesize: The size of the the data to be transmitted.
+ */
+probe netdev.hard_transmit
+	= kernel.function("dev_hard_start_xmit")
+{
+	dev_name = get_netdev_name($dev)
+	protocol = $skb->protocol
+	length = $skb->len
+	truesize = $skb->truesize
+}
+
+/**
+ * probe netdev.rx - Called when the device is going to receive a packet
+ * @dev_name: The device received the packet
+ * @protocol: The packet protocol
+ */
+probe netdev.rx
+	= kernel.function("netif_rx")
+{
+	netdev = $skb->dev
+	dev_name = get_netdev_name(netdev)
+	protocol = $skb->protocol
+}	
+
+/**
+ * probe netdev.change_rx_flag - Called when the device RX flag will be changed
+ * @dev_name: The device that will be changed
+ * @flags: The new flags
+ */
+probe netdev.change_rx_flag
+	= kernel.function("dev_change_rx_flags")
+{
+	dev_name = get_netdev_name($dev)
+	flags = $flags
+}	
+
+/**
+ * probe netdev.set_promiscuity - Called when the device enters/leaves promiscuity
+ * @dev_name: The device that is entering/leaving promiscuity mode
+ * @enable: If the device is entering promiscuity mode
+ * @disable: If the device is leaving promiscuity mode
+ * @inc: Count the number of promiscuity openers
+ */
+probe netdev.set_promiscuity
+	= kernel.function("dev_set_promiscuity")
+{
+	dev_name = get_netdev_name($dev)
+	if ($inc){
+		enable = 1
+	} else {
+		disable = 1
+	}
+	inc = $inc
+}
+
+/**
+ * probe netdev.ioctl - Called when the device suffers an IOCTL
+ * @cmd: The IOCTL request
+ * @arg: The IOCTL argument (usually the netdev interface)
+ */
+probe netdev.ioctl
+	= kernel.function("dev_ioctl")
+{
+	cmd = $cmd
+	arg = user_string($arg)
+}
+
+/**
+ * probe netdev.register - Called when the device is registered
+ * @dev_name: The device that is going to be registered
+ */
+probe netdev.register
+	= kernel.function("register_netdevice"), 
+	  kernel.function("register_netdev")
+{
+	dev_name = get_netdev_name($dev)
+}
+
+/**
+ * probe netdev.unregister - Called when the device is being unregistered
+ * @dev_name: The device that is going to be unregistered
+ */
+probe netdev.unregister
+	= kernel.function("unregister_netdev")
+{
+	dev_name = get_netdev_name($dev)
+}
+
+/**
+ * probe netdev.get_stats - Called when someone asks the device statistics
+ * @dev_name: The device that is going to provide the statistics 
+ */
+probe netdev.get_stats
+	= kernel.function("dev_get_stats")
+{
+	dev_name = get_netdev_name($dev)
+}
+
+/**
+ * probe netdev.change_mac - Called when the netdev_name has the MAC changed
+ * @dev_name: The device that will have the MTU changed
+ * @mac_len: The MAC length
+ * @old_mac: The current MAC address
+ * @new_mac: The new MAC address
+ */
+probe netdev.change_mac
+	= kernel.function("dev_set_mac_address")
+{
+	dev_name = get_netdev_name($dev)	
+	mac_len = $dev->addr_len
+
+	// Old MAC Address
+	zero = $dev->dev_addr[0]
+	one =  $dev->dev_addr[1]
+	two =  $dev->dev_addr[2]
+	three =$dev->dev_addr[3] 
+	four = $dev->dev_addr[4]
+	five = $dev->dev_addr[5]
+	old_mac = sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
+			 zero, one, two, three, four, five)
+
+	// New MAC Address
+	zero = $sa->sa_data[0]
+	one  = $sa->sa_data[1]
+	two  = $sa->sa_data[2]
+	three =$sa->sa_data[3] 
+	four  =$sa->sa_data[4] 
+	five = $sa->sa_data[5]
+	new_mac = sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
+			 zero, one, two, three, four, five)
+}
-- 
1.6.0.2

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 2/3] A basic test to assure that networking tapset is building ok
  2009-09-16 18:38 [PATCH 0/3] new functions for netdev tapset leitao
  2009-09-16 18:38 ` [PATCH 3/3] A network device example leitao
  2009-09-16 18:38 ` [PATCH 1/3] Adding a some new probes to the networking.stp tapset leitao
@ 2009-09-16 18:38 ` leitao
  2 siblings, 0 replies; 8+ messages in thread
From: leitao @ 2009-09-16 18:38 UTC (permalink / raw)
  To: systemtap; +Cc: dsmith, jistone

This is a basic script to assure that the network devices tapset
is building (-p4) properly.

This script is basically a copy of another netdev example that is
located on testsuite/systemtap.examples/network/netdev.stp
---
 testsuite/buildok/netdev.stp |   47 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 47 insertions(+), 0 deletions(-)
 create mode 100644 testsuite/buildok/netdev.stp

diff --git a/testsuite/buildok/netdev.stp b/testsuite/buildok/netdev.stp
new file mode 100644
index 0000000..7c7f756
--- /dev/null
+++ b/testsuite/buildok/netdev.stp
@@ -0,0 +1,47 @@
+#! /usr/bin/env stap -wp4
+
+probe netdev.get_stats{
+	printf("%s", dev_name)
+}
+
+probe netdev.register{
+	printf("%s", dev_name)
+}
+
+probe netdev.unregister{
+	printf("%s", dev_name)
+}
+
+probe netdev.ioctl{
+	printf("%d %s", cmd, arg)
+}
+
+probe netdev.set_promiscuity {
+	printf("%s %d %d %d", dev_name, enable,
+				disable, inc)
+}
+
+probe netdev.change_rx_flag {
+	printf("%s %d", dev_name, flags)
+}
+
+probe netdev.change_mtu {
+	printf("%s %d %d", dev_name, old_mtu, new_mtu)
+}
+
+probe netdev.change_mac {
+	printf("%s %s %s", dev_name, old_mac, new_mac)
+}
+
+probe netdev.transmit {
+	printf("%s %d %d %d", dev_name, protocol, 
+				length, truesize)
+}
+
+probe netdev.hard_transmit {
+	printf("%s %d", dev_name, protocol)
+}
+
+probe netdev.receive {
+	printf("%s %d", dev_name, protocol)
+}
-- 
1.6.0.2

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 0/3] new functions for netdev tapset
@ 2009-09-16 18:38 leitao
  2009-09-16 18:38 ` [PATCH 3/3] A network device example leitao
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: leitao @ 2009-09-16 18:38 UTC (permalink / raw)
  To: systemtap; +Cc: dsmith, jistone

These are patches that adds some interesting probes to the netdev tapset.
I followed suggestions given by David and Josh (Thanks)

root (3):
  Adding a some new probes to the networking.stp tapset
  A basic test to assure that networking tapset is building ok
  A network device example

 tapset/networking.stp                           |  177 +++++++++++++++++++++++
 testsuite/buildok/netdev.stp                    |   47 ++++++
 testsuite/systemtap.examples/network/netdev.stp |   58 ++++++++
 3 files changed, 282 insertions(+), 0 deletions(-)
 create mode 100644 testsuite/buildok/netdev.stp
 create mode 100644 testsuite/systemtap.examples/network/netdev.stp

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 3/3] A network device example
  2009-09-16 18:38 [PATCH 0/3] new functions for netdev tapset leitao
@ 2009-09-16 18:38 ` leitao
  2009-09-16 18:38 ` [PATCH 1/3] Adding a some new probes to the networking.stp tapset leitao
  2009-09-16 18:38 ` [PATCH 2/3] A basic test to assure that networking tapset is building ok leitao
  2 siblings, 0 replies; 8+ messages in thread
From: leitao @ 2009-09-16 18:38 UTC (permalink / raw)
  To: systemtap; +Cc: dsmith, jistone

Add a example that cover the network device tapset. This example
just add simple probes and display what is going one with all
the network devices.
---
 testsuite/systemtap.examples/network/netdev.stp |   58 +++++++++++++++++++++++
 1 files changed, 58 insertions(+), 0 deletions(-)
 create mode 100644 testsuite/systemtap.examples/network/netdev.stp

diff --git a/testsuite/systemtap.examples/network/netdev.stp b/testsuite/systemtap.examples/network/netdev.stp
new file mode 100644
index 0000000..738754a
--- /dev/null
+++ b/testsuite/systemtap.examples/network/netdev.stp
@@ -0,0 +1,58 @@
+#! /usr/bin/env stap
+
+############################################################
+# netdev.stp
+# Author: Breno Leitao <leitao@linux.vnet.ibm.com>
+# An example script to show how a netdev works and its
+# functions
+############################################################
+
+
+probe netdev.get_stats{
+	printf("%s was asked for statistics structure\n", dev_name)
+}
+
+probe netdev.register{
+	printf("Registering netdev_name %s\n", dev_name)
+}
+
+probe netdev.unregister{
+	printf("Unregistering netdev %s\n", dev_name)
+}
+
+probe netdev.ioctl{
+	printf("Netdev ioctl raised with param: %d and arg: %s\n", cmd, arg)
+}
+
+probe netdev.set_promiscuity {
+	if (enable)
+		printf("Device %s entering in prosmicuous mode\n", dev_name)
+	else
+		printf("Device %s leaving prosmicuous mode\n", dev_name)
+}
+
+probe netdev.change_rx_flag {
+	printf("Device %s is changing its RX flags to %d\n", dev_name, flags)
+}
+
+probe netdev.change_mtu {
+	printf("Changing MTU on device %s from %d to %d\n", dev_name,
+				 old_mtu, new_mtu)
+}
+
+probe netdev.change_mac {
+	printf("Changing MAC adddres on device %s from %s to %s\n", 
+				dev_name, old_mac, new_mac)
+}
+
+probe netdev.transmit {
+	printf("Device %s is sending (queued) a packet with protocol %d\n", dev_name, protocol)
+}
+
+probe netdev.hard_transmit {
+	printf("Device %s is sending (hard) a packet with protocol %d\n", dev_name, protocol)
+}
+
+probe netdev.rx {
+	printf("Device %s received a packet with protocol %d\n", dev_name, protocol)
+}
-- 
1.6.0.2

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Adding a some new probes to the networking.stp tapset
  2009-09-16 18:38 ` [PATCH 1/3] Adding a some new probes to the networking.stp tapset leitao
@ 2009-09-17 21:12   ` David Smith
  2009-09-17 21:23     ` Josh Stone
  2009-09-21 15:46     ` Breno Leitao
  0 siblings, 2 replies; 8+ messages in thread
From: David Smith @ 2009-09-17 21:12 UTC (permalink / raw)
  To: leitao; +Cc: systemtap, jistone

On 09/16/2009 01:37 PM, leitao@linux.vnet.ibm.com wrote:
> A tapset that helps those who are working with network devices.
> These new fnctions try to cover almost all functions related to
> these network devices.

In general, these look pretty good, but...

> +/**
> + * probe netdev.change_mac - Called when the netdev_name has the MAC changed
> + * @dev_name: The device that will have the MTU changed
> + * @mac_len: The MAC length
> + * @old_mac: The current MAC address
> + * @new_mac: The new MAC address
> + */
> +probe netdev.change_mac
> +	= kernel.function("dev_set_mac_address")
> +{
> +	dev_name = get_netdev_name($dev)	
> +	mac_len = $dev->addr_len
> +
> +	// Old MAC Address
> +	zero = $dev->dev_addr[0]
> +	one =  $dev->dev_addr[1]
> +	two =  $dev->dev_addr[2]
> +	three =$dev->dev_addr[3] 
> +	four = $dev->dev_addr[4]
> +	five = $dev->dev_addr[5]
> +	old_mac = sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
> +			 zero, one, two, three, four, five)
> +
> +	// New MAC Address
> +	zero = $sa->sa_data[0]
> +	one  = $sa->sa_data[1]
> +	two  = $sa->sa_data[2]
> +	three =$sa->sa_data[3] 
> +	four  =$sa->sa_data[4] 
> +	five = $sa->sa_data[5]
> +	new_mac = sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
> +			 zero, one, two, three, four, five)
> +}

Because of the way the optimizer works, reusing those temporary
variables probably isn't a good idea.  If you call that function and
only use 'new_mac', here's the pass 2 output:

====
kernel.function("dev_set_mac_address@net/core/dev.c:3775") /*
pc=_stext+0x308ab1 */ /* <- netdev.change_mac =
kernel.function("dev_set_mac_address") <- netdev.change_mac */
  # locals
  zero:long
  one:long
  two:long
  three:long
  four:long
  five:long
  new_mac:string
{
(zero) = (_dwarf_tvar_get_dev_2())
(one) = (_dwarf_tvar_get_dev_3())
(two) = (_dwarf_tvar_get_dev_4())
(three) = (_dwarf_tvar_get_dev_5())
(four) = (_dwarf_tvar_get_dev_6())
(five) = (_dwarf_tvar_get_dev_7())
(zero) = (_dwarf_tvar_get_sa_8())
(one) = (_dwarf_tvar_get_sa_9())
(two) = (_dwarf_tvar_get_sa_10())
(three) = (_dwarf_tvar_get_sa_11())
(four) = (_dwarf_tvar_get_sa_12())
(five) = (_dwarf_tvar_get_sa_13())
(new_mac) = (sprintf("%02x:%02x:%02x:%02x:%02x:%02x", zero, one, two,
three, four, five))
printf("%s", new_mac)
}
====

The optimizer removed the assignment to old_mac, but it couldn't
optimize the 1st six assignments and their _dwarf_tvar_get_dev_*
function calls away.

So, I think it would be better to trade off the six assignments and the
call to the _dwarf_tvar_get_dev_* and make separate sets of temporary
variables.  You'll end up increasing the number of temporaries that way,
but it should execute faster if only one of the mac addresses is used.

-- 
David Smith
dsmith@redhat.com
Red Hat
http://www.redhat.com
256.217.0141 (direct)
256.837.0057 (fax)

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Adding a some new probes to the networking.stp tapset
  2009-09-17 21:12   ` David Smith
@ 2009-09-17 21:23     ` Josh Stone
  2009-09-21 15:46     ` Breno Leitao
  1 sibling, 0 replies; 8+ messages in thread
From: Josh Stone @ 2009-09-17 21:23 UTC (permalink / raw)
  To: David Smith; +Cc: leitao, systemtap

On 09/17/2009 02:12 PM, David Smith wrote:
> Because of the way the optimizer works, reusing those temporary
> variables probably isn't a good idea.  If you call that function and
> only use 'new_mac', here's the pass 2 output:
> 
> ====
> kernel.function("dev_set_mac_address@net/core/dev.c:3775") /*
> pc=_stext+0x308ab1 */ /* <- netdev.change_mac =
> kernel.function("dev_set_mac_address") <- netdev.change_mac */
>   # locals
>   zero:long
>   one:long
>   two:long
>   three:long
>   four:long
>   five:long
>   new_mac:string
> {
> (zero) = (_dwarf_tvar_get_dev_2())
> (one) = (_dwarf_tvar_get_dev_3())
> (two) = (_dwarf_tvar_get_dev_4())
> (three) = (_dwarf_tvar_get_dev_5())
> (four) = (_dwarf_tvar_get_dev_6())
> (five) = (_dwarf_tvar_get_dev_7())
> (zero) = (_dwarf_tvar_get_sa_8())
> (one) = (_dwarf_tvar_get_sa_9())
> (two) = (_dwarf_tvar_get_sa_10())
> (three) = (_dwarf_tvar_get_sa_11())
> (four) = (_dwarf_tvar_get_sa_12())
> (five) = (_dwarf_tvar_get_sa_13())
> (new_mac) = (sprintf("%02x:%02x:%02x:%02x:%02x:%02x", zero, one, two,
> three, four, five))
> printf("%s", new_mac)
> }
> ====
> 
> The optimizer removed the assignment to old_mac, but it couldn't
> optimize the 1st six assignments and their _dwarf_tvar_get_dev_*
> function calls away.

Ouch - someone care to write a shadowed-assignment optimization pass? :)

> So, I think it would be better to trade off the six assignments and the
> call to the _dwarf_tvar_get_dev_* and make separate sets of temporary
> variables.  You'll end up increasing the number of temporaries that way,
> but it should execute faster if only one of the mac addresses is used.

Actually, I think the cleanest way is to just avoid the temps altogether
and read the values directly as sprintf arguments.

I already pushed these patches to git, but my message saying so didn't
hit the list due to mail routing issues.  I'll go ahead and fix this up
then as a penance for my eagerness...

Josh

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Adding a some new probes to the networking.stp tapset
  2009-09-17 21:12   ` David Smith
  2009-09-17 21:23     ` Josh Stone
@ 2009-09-21 15:46     ` Breno Leitao
  2009-09-21 17:15       ` David Smith
  1 sibling, 1 reply; 8+ messages in thread
From: Breno Leitao @ 2009-09-21 15:46 UTC (permalink / raw)
  To: David Smith; +Cc: systemtap, jistone

David, 

Thanks for the review. 

David Smith wrote:
> So, I think it would be better to trade off the six assignments and the
> call to the _dwarf_tvar_get_dev_* and make separate sets of temporary
> variables.  You'll end up increasing the number of temporaries that way,
> but it should execute faster if only one of the mac addresses is used.

Do you mean something like: 

+	old_zero = $dev->dev_addr[0]
+	old_one =  $dev->dev_addr[1]
+	old_two =  $dev->dev_addr[2]
+	old_three =$dev->dev_addr[3] 
+	old_four = $dev->dev_addr[4]
+	old_five = $dev->dev_addr[5]
+	old_mac = sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
+			 old_zero, old_one, old_two, old_three, old_four, old_five)
+
+	// New MAC Address
+	new_zero = $sa->sa_data[0]
+	new_one  = $sa->sa_data[1]
+	new_two  = $sa->sa_data[2]
+	new_three =$sa->sa_data[3] 
+	new_four  =$sa->sa_data[4] 
+	new_five = $sa->sa_data[5]
+	new_mac = sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
+			 new_zero, new_one, new_two, new_three, new_four, new_five)


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Adding a some new probes to the networking.stp tapset
  2009-09-21 15:46     ` Breno Leitao
@ 2009-09-21 17:15       ` David Smith
  0 siblings, 0 replies; 8+ messages in thread
From: David Smith @ 2009-09-21 17:15 UTC (permalink / raw)
  To: Breno Leitao; +Cc: systemtap, jistone

On 09/21/2009 10:46 AM, Breno Leitao wrote:
> David, 
> 
> Thanks for the review. 
> 
> David Smith wrote:
>> So, I think it would be better to trade off the six assignments and the
>> call to the _dwarf_tvar_get_dev_* and make separate sets of temporary
>> variables.  You'll end up increasing the number of temporaries that way,
>> but it should execute faster if only one of the mac addresses is used.
> 
> Do you mean something like: 
> 
> +	old_zero = $dev->dev_addr[0]
> +	old_one =  $dev->dev_addr[1]
> +	old_two =  $dev->dev_addr[2]
> +	old_three =$dev->dev_addr[3] 
> +	old_four = $dev->dev_addr[4]
> +	old_five = $dev->dev_addr[5]
> +	old_mac = sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
> +			 old_zero, old_one, old_two, old_three, old_four, old_five)
> +
> +	// New MAC Address
> +	new_zero = $sa->sa_data[0]
> +	new_one  = $sa->sa_data[1]
> +	new_two  = $sa->sa_data[2]
> +	new_three =$sa->sa_data[3] 
> +	new_four  =$sa->sa_data[4] 
> +	new_five = $sa->sa_data[5]
> +	new_mac = sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
> +			 new_zero, new_one, new_two, new_three, new_four, new_five)

Yes, except Josh fixed the problem in an even better manner by avoiding
the temporaries all together, like this:

        // Old MAC Address
        old_mac = sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
                          $dev->dev_addr[0], $dev->dev_addr[1],
                          $dev->dev_addr[2], $dev->dev_addr[3],
                          $dev->dev_addr[4], $dev->dev_addr[5])

        // New MAC Address
        new_mac = sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
                          $sa->sa_data[0], $sa->sa_data[1],
                          $sa->sa_data[2], $sa->sa_data[3],
                          $sa->sa_data[4], $sa->sa_data[5])

-- 
David Smith
dsmith@redhat.com
Red Hat
http://www.redhat.com
256.217.0141 (direct)
256.837.0057 (fax)

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2009-09-21 17:15 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-16 18:38 [PATCH 0/3] new functions for netdev tapset leitao
2009-09-16 18:38 ` [PATCH 3/3] A network device example leitao
2009-09-16 18:38 ` [PATCH 1/3] Adding a some new probes to the networking.stp tapset leitao
2009-09-17 21:12   ` David Smith
2009-09-17 21:23     ` Josh Stone
2009-09-21 15:46     ` Breno Leitao
2009-09-21 17:15       ` David Smith
2009-09-16 18:38 ` [PATCH 2/3] A basic test to assure that networking tapset is building ok leitao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).