patches for if_iwi and wlan for WEP mode
Mitsuru IWASAKI
iwasaki at jp.FreeBSD.org
Wed Mar 7 15:38:47 UTC 2012
> > In RELENG_7, data frame is transmitted by iwi_tx_start() like this.
> >
> > ether_output
> > ether_output_frame
> > IFQ_HANDOFF/IFQ_HANDOFF_ADJ
> > if_start
> > iwi_start
> > iwi_tx_start
> >
> > After 8.0-RELEASE, device specific if_transmit() is called via net80211 layer.
> >
> > ether_output
> > ether_output_frame
> > if_transmit
> > IFQ_HANDOFF/IFQ_HANDOFF_ADJ
> > if_start
> > ieee80211_start
> > parent->if_transmit(ie. iwi_transmit())
> >
> > There was not if_transmit method in iwi(4), so I add it.
> > On if_qflush(), CURRENT kernel complains that `transmit and qflush
> > must both either be set or both be NULL' from if.c.
> > I wrote iwi_qflush(), but actually never tested it...
>
> Hmm, it still is the case for >= 8 afaik, there is a default
> if_transmit() which is used for all wireless drivers which seems to
> work pretty well. That's why I'm wondering, iwi(4) would be the first
> driver to have it's own if_transmit() function. I'm not aware of any
> technical reason for adding one, or did I miss something? If not I'd
> rather not have one added, for sake of consistency.
By your this comment, I noticed that my understanding on iwi_start()
call stack > 8.0 was wrong a bit, correct one is like this;
ether_output
ether_output_frame
if_transmit
IFQ_HANDOFF/IFQ_HANDOFF_ADJ
if_start
ieee80211_start
parent->if_transmit(ie. if_transmit())
IFQ_HANDOFF/IFQ_HANDOFF_ADJ
if_start
iwi_start
iwi_start_locked
iwi_tx_start
So iwi_transmit and iwi_qflush would not be necessary.
Today's version of patches at:
http://people.freebsd.org/~iwasaki/iwi/iwi-20120307.diff
This would be the final version I hope.
Thanks!
More information about the freebsd-current
mailing list