netdev
[Top] [All Lists]

MLDv2 MRC timer wrong units [PATCH]

To: davem@xxxxxxxxxx, netdev@xxxxxxxxxxx
Subject: MLDv2 MRC timer wrong units [PATCH]
From: David Stevens <dlstevens@xxxxxxxxxx>
Date: Tue, 18 Nov 2003 18:19:20 -0700
Importance: Normal
Sender: netdev-bounce@xxxxxxxxxxx
Sensitivity:



The MLD max response code is computing in units of 1/10th second,
as in IGMPv3, but for MLD, it should be in milliseconds. Patch below.

                        +-DLS

--- linux-2.6.0-test9-bk12/net/ipv6/mcast.c     2003-11-07 14:13:21.000000000 
-0800
+++ linux-2.6.0-test9-bk12F1/net/ipv6/mcast.c   2003-11-18 16:55:07.801413776 
-0800
@@ -1040,7 +1040,7 @@
            /* MLDv1 router present */

            /* Translate milliseconds to jiffies */
-           max_delay = ntohs(hdr->icmp6_maxdelay)*(HZ/10);
+           max_delay = (ntohs(hdr->icmp6_maxdelay)*HZ)/1000;

            switchback = (idev->mc_qrv + 1) * max_delay;
            idev->mc_v1_seen = jiffies + switchback;
@@ -1052,7 +1052,7 @@
            /* clear deleted report items */
            mld_clear_delrec(idev);
      } else if (len >= 28) {
-           max_delay = MLDV2_MRC(ntohs(mlh2->mrc))*(HZ/10);
+           max_delay = (MLDV2_MRC(ntohs(mlh2->mrc))*HZ)/1000;
            if (!max_delay)
                  max_delay = 1;
            idev->mc_maxdelay = max_delay;

(See attached file: mld2fix.patch)

Attachment: mld2fix.patch
Description: Binary data

<Prev in Thread] Current Thread [Next in Thread>