linux usb有线网卡驱动_基于USB设备的Linux网络驱动程序开发
open回调函数的主要代码如下:
……
usb_fill_bulk_urb(dev->rx_urb, //构造读请求的URB
dev->udev,
usb_rcvbulkpipe(dev->udev, 6), //指定读端点
dev->rx_skb->data,
512,
read_bulk_callback, //使用read_bulk_callback做为URB的
dev //回调函数。
);
if((result = usb_submit_urb(dev->rx_urb, GFP_KERNEL))){ //将URB发送给
…… //USB Core
}
netif_start_queue(netdev); //使能网络传输队列
……
当读请求URB完成时,意味着主机收到了一个数据包或该URB超时,此时read_bulk_callback将会被内核调用。无论是哪种情况,为了将来可能到来的数据包能够及时得被主机读取,驱动程序都应该再发送一个读请求URB给USB Core。而在主机收到数据包的情况下,read_bulk_callback函数构造一个skb_buff数据结构来描述数据包,并调用 netif_rx函数,把该数据包交给上层协议,从而完成一次接受过程。
与接受过程相比,发送数据包的过程简单了很多。当网络子系统准备发送一个数据包时,上层协议将会构造一个skb_buff数据结构来描述数据包,并且调用网络驱动程序注册的hard_start_xmit回调函数来发送该数据包。由于该函数被调用时内核持有xmit_lock自旋锁,因而驱动程序可以不必考虑对设备写操作的同步问题。hard_start_xmit函数根据数据包的长度将其拆分为USB设备可以传输的长度,然后构造相应的写请求 URB,发送至USB Core即可。
hard_start_xmit回调函数的主要代码如下:
……
usb_fill_bulk_urb(dev->tx_urb, //构造写请求的URB
dev->udev,
usb_sndbulkpipe(dev->udev, 2), //指定写端点
skb->data,
512,//count,
write_bulk_callback, //使用write_bulk_callback做为URB的回调函数。
dev
);
if((result = usb_submit_urb(dev->tx_urb, GFP_ATOMIC))){ //将URB发送给
…… //USB Core
}
写请求URB完成时,write_bulk_callback回调函数被内核调用。该函数判断写请求URB是否成功完成。根据URB的完成情况,驱动程序需要更新网络接口的相应统计数据,例如成功/失败发送包的数目等。
5. 小结
本文从工程应用出发,介绍了Linux的体系结构及其网络子系统,并结合USB设备在Linux下的访问机制,研究了USB驱动程序实现异步通知的方法,并给出了USB网络驱动程序的设计框架和实例。在实际测试中,本文分析的驱动程序运行稳定,并且达到了预期的网络传输速度。
参考文献:
[1] J. Corbet, A. Rubini, and G. Kroah-Hartman. Linux Device Drivers, Third Edition. 2005, O'Reilly Media, Inc.
[2]毛德操 胡希明. Linux内核源代码情景分析. 2001. 浙江大学出版社.
[3]Daniel P. Bovet, M. Cesati. Understanding the Linux Kernel, Second Edition. 2002, O'Reilly Media, Inc.
[4]李少甫 何小庆 江文瑞.The Development of Embedded Wireless LAN Application System Based on MontaVista Linux.微计算机信息. 2002年11期49-51
linux usb有线网卡驱动_基于USB设备的Linux网络驱动程序开发相关推荐
- linux usb有线网卡驱动_有线网卡Linux驱动安装小记
一直使用无线网,竟然没发现我的有线网卡Atheros AR8162竟然没有驱动,在此小记: ubuntu 12.04 以及 基于ubuntu的mint 13 maya 都有这个问题 在linux下查看 ...
- linux kernel有线网卡驱动enc28j60分析 一
1.为了更好低学习linux的网络驱动架构,本文选择分析linux kernel下的有线网卡驱动enc28j60来学习网络驱动架构. enc28j60是一个10/100Mb的有线网卡,适用于嵌入式设备 ...
- 电脑重新安装了有线网卡驱动,并且能上网,但网络连接图标有红叉怎么去掉
1.右击桌面的''计算机''图标,点击"管理". 2.然后按照:计算机管理(本地)-> 系统工具->性能 找到"设备管理器"(注:不是任务管理器 ...
- USB 3G网卡驱动流程
USB 3G网卡驱动流程 简介 首先介绍一下linux下的整体驱动模式: 本文基于的linux kernel版本为2.6.36 (并且华为EM770W驱动,是由FriendlyARM公司定制的. 所以 ...
- 0 【Ubuntu/Linux】Ubuntu18.04有线连接图标不见(Linux系统安装2.5G有线网卡驱动,亲测避坑)
前言 本人电脑安装的是windows10+Ubuntu18.04双系统,不是Linux虚拟机!!!!(虚拟机的网络问题需要看别的文章了) 本人的电脑是微星B560M MOTAR主板,该主板的网卡是2. ...
- linux网卡驱动离线安装_新装Linux系统没有网卡驱动的解决办法和步骤
刚安装的linux系统没有网卡驱动,下面给出我的解决方法: (机器系统是RHEL5.3) 首先说明几个命令: #lsmod --显示已载入系统的模块. 执行lsmod指令,会列出所有已载入系统的模块. ...
- win10下安装华为Atals USB虚拟网卡驱动
1. 用USB连接电脑和HUAWEI Atlas 200 进入设备管理器,查看设备驱动安装情况 2. 安装驱动 (1) 在RNDIS上点击右键,选择更新驱动程序 (2) 接下来选择浏览我的电脑以查找驱 ...
- 【Linux】ubuntu16.04/18.04安装I219-V有线网卡驱动
intel219网卡的linux驱动,ubuntu16.04/18.04安装I219-V有线网卡驱动问题解决方法(示例代码) 安装ubuntu16.04/18.04 LTS后无网络连接的解决方法: 1 ...
- linux安装网卡驱动make报错,ubuntu12.04 安装有线网卡驱动make时报错
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ubuntu12.04 安装有线网卡驱动make时报错: make[1]: 正在进入目录 `/usr/src/linux-headers-3.2.0-57 ...
- linux网卡驱动离线安装_在linux下安装网卡驱动的方法
本文告诉你如何在linux系统下安装网卡驱动. 把网卡驱动COPY 到软盘上.在linux 的/tmp下建个空目录,然后再把软盘上的驱动COPY到这个空目录下. 解压缩: #tar zxvf r100 ...
最新文章
- static slice是什么呢?
- Python 过程式编程与函数式编程
- MYSQL数据库字母数字混合字段排序问题
- Amazon EMR(Elastic MapReduce):亚马逊Hadoop托管服务运行架构Hadoop云服务之战:微软vs.亚马逊...
- research in attraction
- 《弗洛伊德及其后继者》读书笔记(part4)--梅兰妮·克莱因与当代克莱因学派理论
- 新书《编写可测试的JavaScript代码 》出版,感谢支持
- java 窗口线程_Java 窗体与线程问题
- 微软以白金会员加入 OpenChain 开源组织
- 用Win2003做×××借线
- 科大讯飞:5年内 科技会场没机器人端茶倒水就太low了
- WPF-使用代码创建Grid行与列,并将控件添加到Grid中的指定行指定列
- ARM指令集之乘法指令
- [全程动图]解决Offline Explorer崩溃闪退的问题和一些小技巧(如何下载js、100线程下载)
- 整合ssh时 犯的愚蠢问题
- 停息挂账一定要付首付款吗_什么是停息挂账?停息挂账能解决问题吗?
- Linux 系统结构详解
- 关于安装mathtype后找不到电脑预装office2016安装路径的问题
- 计算机打字失灵,电脑键盘在打字的时候出现按键失灵的原因是什么
- 全国计算机等级考试补考时间,全国计算机等级考试可以补考么(全国计算机一级报名时间)...
热门文章
- swf播放器air android 版,网极SWF播放器安卓版
- 思科网络模拟器7.3.1版本的下载和安装
- 杭州初中计算机老师怎么样,杭州中学两位老师,获得浙江省优质课评比一等奖。学生激动留言,这么多年老师还是这么漂亮!...
- ORA-00932: 数据类型不一致: 应为 -,但却获得 -
- vss服务器状态失败_vss问题解决办法
- html5手机端页面布局,移动端H5常见的布局方式有哪些
- 从内存池到连接池 老码农眼中的资源池
- 常用媒体查询以及手机横竖屏监听
- mybatis事务处理
- PC端用Itunes备份Iphone时修改备份路径的办法