免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
打印 上一主题 下一主题

[网络子系统] 无线网卡驱动ath9k的一个函数不理解,求大神看看 [复制链接]

求职 : 通讯/电信开
论坛徽章:
2
2015亚冠之鹿岛鹿角
日期:2015-07-08 11:58:2615-16赛季CBA联赛之佛山
日期:2015-12-21 17:28:04
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-26 21:39 |显示全部楼层 |倒序浏览
本帖最后由 九阳神功爱喝茶 于 2014-12-26 21:44 编辑

      小弟被导师拉去搞网络协议,基本就我一个人在研究,还请各位看看。新手第一次发帖。
  1.         if (puttxbuf) {
  2.                 TX_STAT_INC(txq->axq_qnum, puttxbuf);
  3.                 ath9k_hw_puttxbuf(ah, txq->axq_qnum, bf->bf_daddr);
  4.                 ath_dbg(common, XMIT, "TXDP[%u] = %llx (%p)\n",
  5.                         txq->axq_qnum, ito64(bf->bf_daddr), bf->bf_desc);
  6.         }

  7.         if (!edma || sc->tx99_state) {
  8.                 TX_STAT_INC(txq->axq_qnum, txstart);
  9.                 ath9k_hw_txstart(ah, txq->axq_qnum);
  10.         }
复制代码
如上所是,这是ath9k无线网卡驱动源代码的数据包发送的最后一个函数,我很不理解的是为什么采用edma方式的就不需要使能相应队列(注:ath9k_hw_txstart即为使能相应队列,如下代码所示),而不采用的就需要。还有就是不论用不用EDMA机制我想的,只要一次允许然后不关闭不就不用再次使能允许了?还是怎么的呢?我没看见有地方关闭这个队列的使能啊。非常疑惑,还请各位看看,无限感谢。
  1. void ath9k_hw_txstart(struct ath_hw *ah, u32 q)
  2. {
  3.         ath_dbg(ath9k_hw_common(ah), QUEUE, "Enable TXE on queue: %u\n", q);
  4.         REG_WRITE(ah, AR_Q_TXE, 1 << q);
  5. }
复制代码

求职 : 通讯/电信开
论坛徽章:
2
2015亚冠之鹿岛鹿角
日期:2015-07-08 11:58:2615-16赛季CBA联赛之佛山
日期:2015-12-21 17:28:04
2 [报告]
发表于 2014-12-27 23:47 |显示全部楼层
那为什么在不用EDMA机制下要总是重新使能允许?只使能一次不可以吗?回复 2# abutter


   

求职 : 通讯/电信开
论坛徽章:
2
2015亚冠之鹿岛鹿角
日期:2015-07-08 11:58:2615-16赛季CBA联赛之佛山
日期:2015-12-21 17:28:04
3 [报告]
发表于 2014-12-27 23:55 |显示全部楼层
还请前辈说说什么事WMAC模式啊
abutter 发表于 2014-12-27 20:06
这应该是发送包的方式,要么用 EDMA 方式把 memory 中的包内容传到 WMAC;另外是一种队列的模式,当可以 ...

求职 : 通讯/电信开
论坛徽章:
2
2015亚冠之鹿岛鹿角
日期:2015-07-08 11:58:2615-16赛季CBA联赛之佛山
日期:2015-12-21 17:28:04
4 [报告]
发表于 2014-12-28 11:54 |显示全部楼层
再次麻烦你了,使能不就是把相应的寄存器为设置为1,然后数据就发送出去了吗?为什么还和中断有关了,怎么触发的中断?
abutter 发表于 2014-12-28 10:46
发送使能是只要有空闲就会来中断,你填充新的描述符之后当然要再次使能了。

求职 : 通讯/电信开
论坛徽章:
2
2015亚冠之鹿岛鹿角
日期:2015-07-08 11:58:2615-16赛季CBA联赛之佛山
日期:2015-12-21 17:28:04
5 [报告]
发表于 2014-12-28 12:30 |显示全部楼层
兄弟你的意思是ath9k_hw_txstart(ah, txq->axq_qnum);之后还不能把数据发送出去,还要等到信道空闲然后才能发送出去,然后触发中断通知CPU清除使能?那这句话起到的作用又是啥呢?ath9k_hw_txstart(ah, txq->axq_qnum);
abutter 发表于 2014-12-28 12:20
回复 7# 九阳神功爱喝茶

我的猜测是:这个中断是发送空闲中断,意思是可以发送新的包的时候就产生中断, ...

求职 : 通讯/电信开
论坛徽章:
2
2015亚冠之鹿岛鹿角
日期:2015-07-08 11:58:2615-16赛季CBA联赛之佛山
日期:2015-12-21 17:28:04
6 [报告]
发表于 2015-03-10 12:45 |显示全部楼层
C问题解决了吗?怎么做我也想知道,我一直都是打印的回复 10# yjcheng08


   

求职 : 通讯/电信开
论坛徽章:
2
2015亚冠之鹿岛鹿角
日期:2015-07-08 11:58:2615-16赛季CBA联赛之佛山
日期:2015-12-21 17:28:04
7 [报告]
发表于 2015-04-29 10:35 |显示全部楼层
部分懂回复 12# 1shuangtl1


   

求职 : 通讯/电信开
论坛徽章:
2
2015亚冠之鹿岛鹿角
日期:2015-07-08 11:58:2615-16赛季CBA联赛之佛山
日期:2015-12-21 17:28:04
8 [报告]
发表于 2015-04-29 16:00 |显示全部楼层
我看讲这个的好像很少,所以我每次都是自己摸索着自己试试的回复 14# 1shuangtl1


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP