Re: Kernel 2.2.18: Protocol 0008 is buggy

2001-01-31 Thread Alan Cox

> 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/



Re: Kernel 2.2.18: Protocol 0008 is buggy

2001-01-31 Thread Ivan Passos


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

2001-01-31 Thread Ivan Passos


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

2001-01-31 Thread Alan Cox

> 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

2001-01-31 Thread Ivan Passos


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

2001-01-31 Thread Ivan Passos


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

2001-01-31 Thread Alan Cox

 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/



Kernel 2.2.18: Protocol 0008 is buggy

2001-01-30 Thread Ivan Passos


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/



Kernel 2.2.18: Protocol 0008 is buggy

2001-01-30 Thread Ivan Passos


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/