Re: 2.6.17-rc4: netfilter LOG messages truncated via NETCONSOLE

From: Patrick McHardy
Date: Wed May 31 2006 - 12:35:46 EST


Frank van Maarseveen wrote:
> On Wed, May 31, 2006 at 04:57:13PM +0200, Patrick McHardy wrote:
>
>>The message means that there was recursion and netpoll fell back
>>to dev_queue_xmit This patch should fix the "protocol is buggy"
>>messages, netpoll didn't set skb->nh.raw. Please try if it also
>>makes the other problem go away.
>
>
> "protocol 0000 is buggy" is gone. The other problem is still there.


The messages might get dropped when the output queue is full.
Does one of the drop counters shown by "ip -s link list"
and "tc -s -d qdisc show" increase (the other counts might also
give some clues)? Otherwise please apply the attached patch
(should fix tcpdump, last patch was incomplete) and post a dump.


diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index e8e05ce..05ed18d 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -329,7 +329,7 @@ void netpoll_send_udp(struct netpoll *np
udph->len = htons(udp_len);
udph->check = 0;

- iph = (struct iphdr *)skb_push(skb, sizeof(*iph));
+ skb->nh.iph = iph = (struct iphdr *)skb_push(skb, sizeof(*iph));

/* iph->version = 4; iph->ihl = 5; */
put_unaligned(0x45, (unsigned char *)iph);
@@ -346,7 +346,7 @@ void netpoll_send_udp(struct netpoll *np

eth = (struct ethhdr *) skb_push(skb, ETH_HLEN);

- eth->h_proto = htons(ETH_P_IP);
+ eth->h_proto = skb->protocol = htons(ETH_P_IP);
memcpy(eth->h_source, np->local_mac, 6);
memcpy(eth->h_dest, np->remote_mac, 6);