Subject: Re: [PATCH] SNMPv2 udpInDatagrams counter error

From: Gerrit Renker <[email-masked]>
Date: Mon, 31 Jul 2006 09:57:50 +0100

Hi,
  
|  if (!sk->sk_filter && skb->ip_summed != CHECKSUM_UNNECESSARY) {
|  
|  IPv6 doesn't do this, so I think delete condition 'sk->sk_filter' is better. 
|  Do you think so?
I think the sk->sk_filter is there for a good reason. If you delete it, that routine
is forced to always compute UDP checksums, even if the only receiving application is 
a tcpdump process. I may be wrong here, but I think that deleting the sk_filter statement
is not at a good idea. 

The other alternatives discussed (afaik) so far were:

1) Move the increment of UDP_MIB_INDATAGRAMS from udp_queue_rcv_skb() to udp_recvmsg()
   (first patch uploaded to  http://bugzilla.kernel.org/show_bug.cgi?id=6660). This
   was discussed: not a good idea, since in-kernel applications may use the data_ready
   handler rather than udp_recvmsg().

2) Decrement UDP_MIB_INDATAGRAMS in udp_recvmsg() when the checksum turns out to be
   wrong (second patch uploaded to above address). This would be a fix to the problem 
   you are stating, it also solves the problem of missing out the data_ready handlers in
   (1), and was suggested earlier on this mailing list.
  
-- Gerrit