> > 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!Received on Wed Mar 07 2012 - 14:38:47 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:24 UTC