Herbert Xu a écrit :
On Wed, Dec 05, 2007 at 09:42:45AM +0800, Wang Chen wrote:
I apologize for my miss in previous patch.

Herbert, don't you think the udp6inDatagrams should be counted too
in xprtsock?

Good point.  Here's a better version.

[UDP]: Restore missing inDatagrams increments
The previous move of the the UDP inDatagrams counter caused the
counting of encapsulated packets, SUNRPC data (as opposed to call)
packets and RXRPC packets to go missing.
This patch restores all of these.

Signed-off-by: Herbert Xu <[EMAIL PROTECTED]>

diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index e90f962..a84f3f6 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -164,15 +164,6 @@ DECLARE_SNMP_STAT(struct icmpv6msg_mib, 
icmpv6msg_statistics);
 #define ICMP6MSGIN_INC_STATS_USER(idev, field) \
        _DEVINC(icmpv6msg, _USER, idev, field)
-DECLARE_SNMP_STAT(struct udp_mib, udp_stats_in6);
-DECLARE_SNMP_STAT(struct udp_mib, udplite_stats_in6);
-#define UDP6_INC_STATS_BH(field, is_udplite)                         do  {  \
-       if (is_udplite) SNMP_INC_STATS_BH(udplite_stats_in6, field);         \
-       else            SNMP_INC_STATS_BH(udp_stats_in6, field);    } while(0)
-#define UDP6_INC_STATS_USER(field, is_udplite)                        do {    \
-       if (is_udplite) SNMP_INC_STATS_USER(udplite_stats_in6, field);         \
-       else            SNMP_INC_STATS_USER(udp_stats_in6, field);    } while(0)
-
 struct ip6_ra_chain
 {
        struct ip6_ra_chain     *next;
diff --git a/include/net/udp.h b/include/net/udp.h
index 98755eb..87170bb 100644
--- a/include/net/udp.h
+++ b/include/net/udp.h
@@ -139,6 +139,12 @@ extern int         udp_lib_setsockopt(struct sock *sk, int 
level, int optname,
                                   int (*push_pending_frames)(struct sock *));
DECLARE_SNMP_STAT(struct udp_mib, udp_statistics);
+DECLARE_SNMP_STAT(struct udp_mib, udp_stats_in6);
+
+/* UDP-Lite does not have a standardized MIB yet, so we inherit from UDP */
+DECLARE_SNMP_STAT(struct udp_mib, udplite_statistics);
+DECLARE_SNMP_STAT(struct udp_mib, udplite_stats_in6);
+
 /*
  *     SNMP statistics for UDP and UDP-Lite
  */
@@ -149,6 +155,21 @@ DECLARE_SNMP_STAT(struct udp_mib, udp_statistics);
        if (is_udplite) SNMP_INC_STATS_BH(udplite_statistics, field);         \
        else            SNMP_INC_STATS_BH(udp_statistics, field);    }  while(0)
+#define UDP6_INC_STATS_BH(field, is_udplite) do { \
+       if (is_udplite) SNMP_INC_STATS_BH(udplite_stats_in6, field);         \
+       else            SNMP_INC_STATS_BH(udp_stats_in6, field);    } while(0)
+#define UDP6_INC_STATS_USER(field, is_udplite)                        do {    \
+       if (is_udplite) SNMP_INC_STATS_USER(udplite_stats_in6, field);         \
+       else            SNMP_INC_STATS_USER(udp_stats_in6, field);    } while(0)
+
+#define UDPX_INC_STATS_BH(sk, field) \
+       do { \
+               if ((sk)->sk_family == AF_INET) \
+                       UDP_INC_STATS_BH(field, 0); \
+               else \
+                       UDP6_INC_STATS_BH(field, 0); \
+       } while (0);
+

Hum, what happens if I have in my .config file :

CONFIG_IPV6=n

I suggest something like

#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
# define UDPX_INC_STATS_BH(sk, field) \
        do { \
                if ((sk)->sk_family == AF_INET) \
                        UDP_INC_STATS_BH(field, 0); \
                else \
                        UDP6_INC_STATS_BH(field, 0); \
        } while (0);
#else
# define UDPX_INC_STATS_BH(sk, field) \
                        UDP_INC_STATS_BH(field, 0);
#endif




--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to