* NETdev driver question xxxx_type_trans() @ 2008-02-22 20:26 Russell McGuire 2008-02-22 20:39 ` Andy Fleming 0 siblings, 1 reply; 3+ messages in thread From: Russell McGuire @ 2008-02-22 20:26 UTC (permalink / raw) To: linuxppc-embedded [-- Attachment #1: Type: text/plain, Size: 949 bytes --] All, A general and specific question on the behavior of netdev devices before received sk_buff(s) get passed up to the kernel. I am almost done creating / testing an HDLC device driver for the 83xx. I have it working at a low level and was printing out skb_bufs before and after TX and RX, to ensure data integrity. Due to me having the print_skbbuf, AFTER the hdlc_type_trans(skb, ndev). I thought I was continuously losing 14 bytes of data, after a 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 before it sends it down? And why isn't the data length being shortened as a result after I call hdlc_type_trans? Anyway. I guess I am confused as to what this function was intended for, I see there are other calls for eth_type_trans, so I imagine their usage is similar. When are they needed? -Russ [-- Attachment #2: Type: text/html, Size: 7130 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: NETdev driver question xxxx_type_trans() 2008-02-22 20:26 NETdev driver question xxxx_type_trans() Russell McGuire @ 2008-02-22 20:39 ` Andy Fleming 2008-02-22 23:48 ` Russell McGuire 0 siblings, 1 reply; 3+ messages in thread From: Andy Fleming @ 2008-02-22 20:39 UTC (permalink / raw) To: rmcguire; +Cc: linuxppc-embedded 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= ^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: NETdev driver question xxxx_type_trans() 2008-02-22 20:39 ` Andy Fleming @ 2008-02-22 23:48 ` Russell McGuire 0 siblings, 0 replies; 3+ messages in thread From: Russell McGuire @ 2008-02-22 23:48 UTC (permalink / raw) To: 'Andy Fleming'; +Cc: linuxppc-embedded Andy, Thanks... I only have the hdlc_type_trans, on the RX side of the equation. I want the driver to be able to support two modes, so not sure if I am going to have to put an ioctl switch into to turn this on / off. Mode 1) I want the driver to be able to simulate an Ethernet device, which I assume will need to use the hdlc_type_trans(), to remove layer 2. Mode 2) I want the driver to be able to support fully RAW mode, but then again, perhaps the hdlc_type_trans() knows this already depending on what mode I am setup in, via 'sethdlc' ??? At the moment before I am able to use the device, I have to configure it via 'sethdlc hdlc0 hdlc-eth' or similar. <-- that previous call I assuming links it to the TCP/IP stack as I can assign IP addresses with "ifconfig hdlc0 up 192.168.1.100". However, for true P2P support, I was wanting to be able to open the device directly and manage everything directly at the application level, i.e. the only protocol would be "Application Layer->HDLC" and nothing in between. In that case, I was concerned that any removal of Layer 2 stuff, simply would be unnecessary as the 83xx already pulls the HDLC layer stuff off, before I get the sk_buff. <Using the MCC Engine to a TDM<T1> port>. So not sure if the kernel will let me... But that is one of my goals. -Russ > -----Original Message----- > From: Andy Fleming [mailto:afleming@freescale.com] > Sent: Friday, February 22, 2008 12:39 PM > To: rmcguire@videopresence.com > Cc: linuxppc-embedded@ozlabs.org > Subject: Re: NETdev driver question xxxx_type_trans() > > > On Feb 22, 2008, at 14:26, Russell McGuire wrote: > > > All, > > > > A general and specific question on the behavior of netdev devices > > before received sk_buff(s) get passed up to the kernel. > > > > I am almost done creating / testing an HDLC device driver for the > > 83xx. > > > > > > I have it working at a low level and was printing out skb_bufs > > before and after TX and RX, to ensure data integrity. > > > > Due to me having the print_skbbuf, AFTER the hdlc_type_trans(skb, > > ndev). > > > > I thought I was continuously losing 14 bytes of data, after a > > 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 > > before it sends it down? > > > > And why isn't the data length being shortened as a result after I > > call hdlc_type_trans? > > > > Anyway. I guess I am confused as to what this function was intended > > for, I see there are other calls for eth_type_trans, so I imagine > > their usage is similar. > > > > When are they needed? > > > > > They move the data pointer to point to the start of the L2 header. > There's no need for the kernel to see the L1 header, and it doesn't > 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 > kernel takes care of setting up the L1 header, though I'm not > familiar with the kernel's hdlc support. > > Andy ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-02-22 23:49 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-02-22 20:26 NETdev driver question xxxx_type_trans() Russell McGuire 2008-02-22 20:39 ` Andy Fleming 2008-02-22 23:48 ` Russell McGuire
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).