Subject: Re: Fw: [Bugme-new] [Bug 3992] New: Bondig. Not correct work function ARP Monitoring. Broken link.

From: Tommy Christensen <[email-masked]>
Date: Tue, 11 Jan 2005 23:17:53 +0100

> http://bugme.osdl.org/show_bug.cgi?id=3992
> 
>            Summary: Bondig. Not correct work function ARP Monitoring. Broken
>                     link.
>     Kernel Version: 2.6.10
>             Status: NEW
>           Severity: normal
>              Owner: [email-masked]
>          Submitter: [email-masked]
> 
...
> 
> bonding vpn1 & vpn2 òî bond0 (bonding default setup -> nothing failover 
> setings)
> link îê!(192.168.100.1-192.168.100.2)
> 
> setting arp monitor in bonding (TUN/TAP driver not support Mii status)
> link down!

I am not sure I understand your setup completely ...
But as stated in bonding.txt, the ARP monitor requires the underlying
driver to update dev->trans_start and dev->last_rx.

Since the TUN/TAP driver doesn't maintain these, it could very well
explain the behavior you are seeing.

The patch below adds the required functionality to the TUN/TAP driver.
Please test if this helps in your case.

-Tommy
--- linux-2.6.10-bk14/drivers/net/tun.c	2005-01-10 16:28:48.000000000 +0100
+++ linux-2.6.10-work/drivers/net/tun.c	2005-01-11 23:05:56.759691345 +0100
@@ -92,6 +92,7 @@
 			goto drop;
 	}
 	skb_queue_tail(&tun->readq, skb);
+	dev->trans_start = jiffies;
 
 	/* Notify and wake up reader process */
 	if (tun->flags & TUN_FASYNC)
@@ -240,6 +241,7 @@
 		skb->ip_summed = CHECKSUM_UNNECESSARY;
  
 	netif_rx_ni(skb);
+	tun->dev->last_rx = jiffies;
    
 	tun->stats.rx_packets++;
 	tun->stats.rx_bytes += len;