netdev
[Top] [All Lists]

Re: Fw: [Bugme-new] [Bug 3992] New: Bondig. Not correct work function AR

To: stanislav@xxxxxxxxxxxxxxxxx
Subject: Re: Fw: [Bugme-new] [Bug 3992] New: Bondig. Not correct work function ARP Monitoring. Broken link.
From: Tommy Christensen <tommy.christensen@xxxxxxxxx>
Date: Tue, 11 Jan 2005 23:17:53 +0100
Cc: Andrew Morton <akpm@xxxxxxxx>, netdev@xxxxxxxxxxx
In-reply-to: <20050105133525.2bab2e09.akpm@osdl.org>
References: <20050105133525.2bab2e09.akpm@osdl.org>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.2) Gecko/20040803
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: jgarzik@xxxxxxxxx
         Submitter: stanislav@xxxxxxxxxxxxxxxxx

...

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;
<Prev in Thread] Current Thread [Next in Thread>