- 求职 : 通讯/电信开
- 论坛徽章:
- 2
|
本帖最后由 九阳神功爱喝茶 于 2014-12-26 21:44 编辑
小弟被导师拉去搞网络协议,基本就我一个人在研究,还请各位看看。新手第一次发帖。- if (puttxbuf) {
- TX_STAT_INC(txq->axq_qnum, puttxbuf);
- ath9k_hw_puttxbuf(ah, txq->axq_qnum, bf->bf_daddr);
- ath_dbg(common, XMIT, "TXDP[%u] = %llx (%p)\n",
- txq->axq_qnum, ito64(bf->bf_daddr), bf->bf_desc);
- }
- if (!edma || sc->tx99_state) {
- TX_STAT_INC(txq->axq_qnum, txstart);
- ath9k_hw_txstart(ah, txq->axq_qnum);
- }
复制代码 如上所是,这是ath9k无线网卡驱动源代码的数据包发送的最后一个函数,我很不理解的是为什么采用edma方式的就不需要使能相应队列(注:ath9k_hw_txstart即为使能相应队列,如下代码所示),而不采用的就需要。还有就是不论用不用EDMA机制我想的,只要一次允许然后不关闭不就不用再次使能允许了?还是怎么的呢?我没看见有地方关闭这个队列的使能啊。非常疑惑,还请各位看看,无限感谢。- void ath9k_hw_txstart(struct ath_hw *ah, u32 q)
- {
- ath_dbg(ath9k_hw_common(ah), QUEUE, "Enable TXE on queue: %u\n", q);
- REG_WRITE(ah, AR_Q_TXE, 1 << q);
- }
复制代码 |
|