Thread (3 messages) 3 messages, 2 authors, 2008-02-22

Re: NETdev driver question xxxx_type_trans()

From: Andy Fleming <hidden>
Date: 2008-02-22 20:39:20

On Feb 22, 2008, at 14:26, Russell McGuire wrote:
All,

A general and specific question on the behavior of netdev devices =20
before received sk_buff(s) get passed up to the kernel.

I am almost done creating / testing an HDLC device driver for the =20
83xx.


I have it working at a low level and was printing out skb_bufs =20
before and after TX and RX, to ensure data integrity.

Due to me having the print_skbbuf, AFTER the hdlc_type_trans(skb, =20
ndev).

I thought I was continuously losing 14 bytes of data, after a =20
little digging I realized that the hdlc_type_trans() call

was shifting the skb->data pointer forward by 14 bytes. ????????

Is this corresponding to a 14 byte pad that the kernel stack adds =20
before it sends it down?

And why isn=92t the data length being shortened as a result after I =20=
call hdlc_type_trans?

Anyway=85 I guess I am confused as to what this function was intended =20=
for, I see there are other calls for eth_type_trans, so I imagine =20
their usage is similar.

When are they needed?

They move the data pointer to point to the start of the L2 header.  =20
There's no need for the kernel to see the L1 header, and it doesn't =20
expect it to be there when it looks at the skb.

You shouldn't be using it for TX packets.  For TX, I believe the =20
kernel takes care of setting up the L1 header, though I'm not =20
familiar with the kernel's hdlc support.

Andy=
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help