- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
?
HYPERLINK "/yming0221/article/details/6628624" ARM-Linux驱动--DM9000网卡驱动分析(四)
1、接下来接着分析DM9000网卡驱动的数据接收函数
[cpp]? HYPERLINK "/yming0221/article/details/6628624" \o "view plain" view plain HYPERLINK "/yming0221/article/details/6628624" \o "copy" copy
/*?
?*??Received?a?packet?and?pass?to?upper?layer?
?*??接收数据包,将数据包传递给上层?
?*/??
static?void??
dm9000_rx(struct?net_device?*dev)??
{??
????board_info_t?*db?=?netdev_priv(dev);/*?得到网卡私有信息数据结构的首地址?*/??
????struct?dm9000_rxhdr?rxhdr;/*?该结构体封装了dm9000接收的数据包信息?*/??
????struct?sk_buff?*skb;??
????u8?rxbyte,?*rdptr;??
????bool?GoodPacket;??
????int?RxLen;??
??
????/*?Check?packet?ready?or?not?*/??
????do?{??
????????/*?MRCMDX是内存数据预取读命令?*/??
????????ior(db,?DM9000_MRCMDX);?/*?Dummy?read?*/??
????????/*?Get?most?updated?data?*/??
????????rxbyte?=?readb(db->io_data);??
??
????????/*?Status?check:?this?byte?must?be?0?or?1?*/??
????????/*?DM9000_PKT_ERR??????????0x02?,表示接收出错?*/??
????????if?(rxbyte?&?DM9000_PKT_ERR)?{??
????????????dev_warn(db->dev,?"status?check?fail:?%d\n",?rxbyte);/*?输出提示信息?*/??
????????????iow(db,?DM9000_RCR,?0x00);??/*?Stop?Device?关闭设备?*/??
????????????iow(db,?DM9000_ISR,?IMR_PAR);???/*?Stop?INT?request?停止中断请求*/??
????????????return;??
????????}??
??????????
????????/*?DM9000_PKT_RDY??????????0x01?没有准备好,直接返回*/??
????????if?(!(rxbyte?&?DM9000_PKT_RDY))??
????????????return;??
??
????????/*?A?packet?ready?now??&?Get?status/length?*/??
????????GoodPacket?=?true;??
????????writeb(DM9000_MRCMD,?db->io_addr);/*?MRCMD是地址增加的数据读取命令?*/??
??
????????(db->inblk)(db->io_data,?&rxhdr,?sizeof(rxhdr));/*?读取数据,从RX_SRAM到?rxhdr结构体中*/??
??
????????RxLen?=?le16_to_cpu(rxhdr.RxLen);??
??
????????if?(netif_msg_rx_status(db))??
????????????dev_dbg(db->dev,?"RX:?status?%02x,?length?%04x\n",??
????????????????rxhdr.RxStatus,?RxLen);??
??
????????/*?Packet?Status?check?,检查包的完整性*/??
????????if?(RxLen?<?0x40)?{??
????????????GoodPacket?=?false;??
????????????if?(netif_msg_rx_err(db))??
????????????????dev_dbg(db->dev,?"RX:?Bad?Packet?(runt)\n")
您可能关注的文档
- 09919NA(口语参考+独立作文范文).doc
- 25103 广联达图形算量培训教材.doc
- 30186单位(子单位)工程安全和功能检验资料核查及主要功能抽查记录.doc
- 35003工业化学清洗 (质量管理体系专业审核指导书).doc
- 50206 木结构工程施工质量验收规范.doc
- 130711班团员民主评议总结.doc
- 133974公路工程量清单与新定额的对应关系(全国).doc
- 137197麦肯锡工具与方法概述与基本框架.ppt
- 388747广州番禺区中部(蔡边)污水管网系统首期工程施工方案sdchenshangwen.doc
- 70986593××电机(集团)有限公司企业文化项目建议书.ppt
- 2022年部编人教版九年级数学上册期末考试题及答案【最新】.doc
- 人教部编版四年级数学(上册)期末质量分析卷及答案.doc
- 人教版一年级科学下册期中试卷及答案【一套】.doc
- 2023年人教版九年级地理(上册)期末考试卷及答案.doc
- 2022-2023年人教版七年级数学下册期中测试卷及答案【全面】.doc
- 苏教版五年级《数学》下册全单元测试题【附答案】.docx
- 人教版三年级语文上册期末考试卷及答案【全面】.doc
- 部编版五年级数学下册期中考试题及答案【完美版】.doc
- 2022年部编版六年级数学上册期末试卷加答案.doc
- 2021—2022年部编人教版三年级语文上册期末试卷(参考答案).doc
文档评论(0)