From: Stephen Hemminger <shemminger@vyatta.com>
To: "Brandeburg, Jesse" <jesse.brandeburg@intel.com>
Cc: "Alex Villacís Lasso" <avillaci@ceibo.fiec.espol.edu.ec>,
"irda-users@lists.sourceforge.net"
<irda-users@lists.sourceforge.net>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"David Miller" <davem@davemloft.net>
Subject: Re: Regression: Recent networking (qdisc?) patches break irda_get_next_speed()
Date: Thu, 23 Oct 2008 16:16:41 -0700 [thread overview]
Message-ID: <20081023161641.0d4f714d@extreme> (raw)
In-Reply-To: <F169D4F5E1F1974DBFAFABF47F60C10A069DFD1F@orsmsx507.amr.corp.intel.com>
On Thu, 23 Oct 2008 15:13:02 -0700
"Brandeburg, Jesse" <jesse.brandeburg@intel.com> wrote:
> Alex Villacís Lasso wrote:
> <snip>
>
> >> The SKB control block is not aliased.
> >>
>
> ...
> >> IRDA cannot depend upon the SKB control block not changing across
> >> the dev_queue_xmit() call.
> >>
> >>
> > Let me see if I understood. So the particular illegal thing the IRDA
> > stack is doing is the access of the control block in the middle of the
> > driver transmit routine (via irda_get_next_speed() and friends). This
> > information should be stored somewhere else. Exactly *where* to store
> > it is the main problem to solve.
> >
> > What is the proper way (if any) to store per-packet parameters (other
> > than the payload itself) which are specific to a particular layer
> > (IrDA in this case) and which are needed by drivers in order to work
> > correctly? The control block gets overwritten by the time the driver
> > proc (hard_start_xmit) is called, so this approach is now ruled out. I
> > was thinking about storing a copy of the parameters (struct
> > irda_skb_cb) as a header within the payload itself (skb->data[]), but
> > I am not sure about whether this approach is a good design decision.
> > I am open to suggestions on where to place the parameters.
>
> Isn't this what the data that is skb_reserve'd at the beginning of skb's allocated by netdev_alloc_skb is for? If you take an extra reference to the skb and/or use a destructor hook you should be good, right?
>
> you should just be able to push ->data using skb_reserve(sizeof your private data) in the beginning of the skb, or is that a horrible idea Dave?
That space is reserved for a copy of the ethernet header when doing bridge/filtering.
Yes, its a stupid, undocumented hack.
If irda needs additional protocol space, it could advertise a larger hardware header
size and use the additional space for hidden protocol info.
next prev parent reply other threads:[~2008-10-23 23:16 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-21 18:20 Regression: Recent networking (qdisc?) patches break irda_get_next_speed() Alex Villacís Lasso
2008-10-21 19:37 ` Jarek Poplawski
2008-10-21 23:37 ` Alex Villacís Lasso
2008-10-21 23:41 ` David Miller
[not found] ` <20081021.164121.257737412.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2008-10-23 0:24 ` Alex Villacís Lasso
2008-10-23 22:13 ` Brandeburg, Jesse
2008-10-23 23:16 ` Stephen Hemminger [this message]
2008-10-24 0:21 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081023161641.0d4f714d@extreme \
--to=shemminger@vyatta.com \
--cc=avillaci@ceibo.fiec.espol.edu.ec \
--cc=davem@davemloft.net \
--cc=irda-users@lists.sourceforge.net \
--cc=jesse.brandeburg@intel.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.