Protocol 0008 is buggy
Hello, I have a customer who's getting tons of this msg in his LOGs: kernel: protocol 0008 is buggy, dev hdlc0 The msg comes from net/core/dev.c, and this device is using the Frame Relay protocol in drivers/net/hdlc.c . What I'd like to know is: - What exactly causes this msg?? It seems that it's printed when someone sends a packet without the skb->nh.raw correctly set, but I couldn't find any driver under drivers/net that sets this. - How can / should I solve this?? Should it be solved in the hdlc.c driver or somewhere else in an upper level?? Thanks in advance for your help. Later, Ivan - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/
Re: Protocol 0008 is buggy
Hi, >>>>> "Ivan" == Ivan Passos <[EMAIL PROTECTED]> writes: Ivan> Hello, Ivan> I have a customer who's getting tons of this msg in his Ivan> LOGs: Ivan> kernel: protocol 0008 is buggy, dev hdlc0 Ivan> The msg comes from net/core/dev.c, and this device is using Ivan> the Frame Relay protocol in drivers/net/hdlc.c . Ivan> What I'd like to know is: - What exactly causes this msg?? Ivan> It seems that it's printed when someone sends a packet Ivan> without the skb->nh.raw correctly set, but I couldn't find Ivan> any driver under drivers/net that sets this. - How can / It should be set by the upper (network layer) protocol which passes the skb down to the network interface. Device drivers usually don´t set it unless they are themselves upper layers for a yet downstream network interface (in case of protocol tunnels). Thus, for examples, grep 'skb->nh' /usr/src/linux/net/*.c Ivan> should I solve this?? Should it be solved in the hdlc.c Ivan> driver or somewhere else in an upper level?? ... and thus should be fixed in that upper layer. The protocol number 0008 is defined in include/linix/if_ether.h: #define ETH_P_PPP_MP0x0008 /* Dummy type for PPP MP frames */ Thus, my guess is that your customer is using ppp on top of the frame relay device by means of the snycppp driver. And it´s probably the syncppp driver to blame for and to fix. Yes, this is one of these network interfaces mentioned above which is itself an upper layers for a downstream network interface. It´s in drivers/net/syncppp.c (2.2.x) or in drivers/net/wan/syncppp.c (2.4.x). Ivan> Thanks in advance for your help. Henner - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/
Kernel 2.2.18: Protocol 0008 is buggy
Hello, I have a customer who's getting tons of these msgs in his LOGs: kernel: protocol 0008 is buggy, dev hdlc0 kernel: protocol 0608 is buggy, dev hdlc0 The msg comes from net/core/dev.c, and this device is using the Cisco HDLC protocol in drivers/net/hdlc.c . However, AFAIK, 0008 and 0608 represent IP and ARP (respectively), not Cisco HDLC. So ... What I'd like to know is: what exactly causes this msg?? It seems that it's printed when someone sends a packet without properly setting skb->nh.raw first, but who's supposed to set skb->nh.raw?? The HW driver?? The data link (HDLC) driver?? The kernel protocol drivers? How should I go about fixing this problem, where should I start?? I'm at a total loss here. Any help would be really appreciated. Later, Ivan - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/
Re: Kernel 2.2.18: Protocol 0008 is buggy
> The msg comes from net/core/dev.c, and this device is using the Cisco HDLC > protocol in drivers/net/hdlc.c . However, AFAIK, 0008 and 0608 represent > IP and ARP (respectively), not Cisco HDLC. So ... > > What I'd like to know is: what exactly causes this msg?? It seems that > it's printed when someone sends a packet without properly setting > skb->nh.raw first, but who's supposed to set skb->nh.raw?? The HW driver?? > The data link (HDLC) driver?? The kernel protocol drivers? How should I go > about fixing this problem, where should I start?? It should be set before netif_rx() is called on the packet. Typically that means the driver or its support code sets protocol and nh.raw and if a second header is pulled up then they are set again by whichever code does that and calls netif_rx again - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/
Re: Kernel 2.2.18: Protocol 0008 is buggy
On Wed, 31 Jan 2001, Alan Cox wrote: > > What I'd like to know is: what exactly causes this msg?? It seems that > > it's printed when someone sends a packet without properly setting > > skb->nh.raw first, but who's supposed to set skb->nh.raw?? The HW driver?? > > The data link (HDLC) driver?? The kernel protocol drivers? How should I go > > about fixing this problem, where should I start?? > > It should be set before netif_rx() is called on the packet. Typically that > means the driver or its support code sets protocol and nh.raw and if a > second header is pulled up then they are set again by whichever code does that > and calls netif_rx again Alan, Could you please tell me where I can find an example of this?? I searched the whole drivers/net directory, and couldn't find any occurrence. Is this really supposed to be done in the HW driver / support code level, or is it supposed to be done in the protocol (IP / ARP) level?? Thanks for the reply!! Later, Ivan - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/
Re: Kernel 2.2.18: Protocol 0008 is buggy
On Wed, 31 Jan 2001, Alan Cox wrote: > > It should be set before netif_rx() is called on the packet. Typically that > means the driver or its support code sets protocol and nh.raw and if a > second header is pulled up then they are set again by whichever code does that > and calls netif_rx again Another question. The function that prints the "buggy protocol" msg is dev_queue_xmit_nit(), which is called by dev_queue_xmit(). Isn't that a Tx function?? What would it have to do with netif_rx() (which from what I understand is called to send Rx packets upstream, not used in the Tx datapath)?? Thanks again! Later, Ivan - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/
Re: Kernel 2.2.18: Protocol 0008 is buggy
> Is this really supposed to be done in the HW driver / support code level, > or is it supposed to be done in the protocol (IP / ARP) level?? oops I was half asleep Driver sets skb->mac.raw skb->pkt_type skb->protocol (see net/ethernet/eth.c) skb->h.raw and skb->nh.raw are set by the receive action code On transmit nh.raw is set by the protocol Note that non -ac kernels have a bug where a packet consisting of pure mac header causes bogus warnings - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/