资源简介
linux网络设备驱动示例代码,linux网络设备驱动示例代码,linux网络设备驱动示例代码,自己编写的代码,欢迎下载。。

代码片段和文件信息
#include
#include
#include
#include
#include
struct net_device * gec_dev;
char dev_addr[6];
static int gecnet_init(struct net_device *dev)
{
printk(KERN_INFO “gec_net_init \n“);
return 0;
}
static void gecnet_uninit(struct net_device *dev)
{
printk(KERN_INFO “gecnet_uninit \n“);
}
static int gecnet_open(struct net_device *dev)
{
netif_start_queue(dev);
printk(KERN_INFO “gecnet_open \n“);
return 0;
}
static int gecnet_stop(struct net_device *dev)
{
netif_stop_queue(dev);
printk(KERN_INFO “gecnet_stop \n“);
return 0;
}
static netdev_tx_t gecnet_start_xmit(struct sk_buff *skbstruct net_device *dev)
{
printk(KERN_INFO “gecnet_start_xmit \n“);
//hw_net_write(skb->dataskb->lenoffset);//将数据写入硬件寄存器
dev->stats.tx_bytes += skb->len;//更新状态数据
/* free this SKB */
dev_kfree_skb(skb); //释放sk_buff空间
return NETDEV_TX_OK;
}
static int gec_net_rx(struct net_device *dev)
{
struct sk_buff *skb;
int RxLen = 10;
char *data;
//获取芯片本次收包的长度
//get_pgk_len(&RxLen);
skb = dev_alloc_skb(RxLen + 4);
skb_reserve(skb 2);
//data 为硬件接受到的数据地址
memcpy(skb_put(skb RxLen - 4)dataRxLen);
dev->stats.rx_bytes += RxLen;
dev->stats.rx_packets++;
/* Pass to upper layer */
skb->protocol = eth_type_trans(skb dev);
skb->ip_summed = CHECKSUM_UNNECESSARY;
//递交数据包
netif_rx(skb);
}
struct net_device_ops gec_netops ={
.ndo_init = gecnet_init
.ndo_uninit = gecnet_uninit
.ndo_open = gecnet_open
.ndo_stop = gecnet_stop
.ndo_start_xmit = gecnet_start_xmit
};
static int __init gec_net_init(void)
{
int reti;
gec_dev = alloc_etherdev(sizeof(struct net_device));
ether_setup(gec_dev);
gec_dev->stats.rx_packets = 0;
gec_dev->stats.tx_packets = 0;
gec_dev->stats.rx_bytes = 10;
gec_dev->stats.tx_bytes = 10;
gec_dev->netdev_ops = &gec_netops;
gec_dev->ml_priv = &gec_netops;
for(i=0;i<6;i++)
dev_addr[i] = 0x33;
gec_dev->dev_addr = dev_addr;
sprintf(gec_dev->name“gec_net%d“0);
ret = register_netdev(gec_dev);
if(ret)
goto err1;
return 0;
err1:
printk(KERN_ERR “register_netdev err!\n“);
return -ENODEV;
}
static void __exit gec_net_exit(void)
{
unregister_netdev(gec_dev);
free_netdev(gec_dev);
}
module_init(gec_net_init);
module_exit(gec_net_exit);
MODULE_LICENSE(“GPL“);
MODULE_AUTHOR(“GEC“);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-08-10 23:24 net\
文件 168 2013-07-26 11:44 net\.built-in.o.cmd
文件 287 2013-07-26 17:20 net\.gec_net.ko.cmd
文件 17632 2013-07-26 11:44 net\.gec_net.mod.o.cmd
文件 31887 2013-07-26 17:20 net\.gec_net.o.cmd
目录 0 2013-07-26 15:18 net\.tmp_versions\
文件 61 2013-07-26 17:20 net\.tmp_versions\gec_net.mod
文件 8 2013-07-26 11:44 net\built-in.o
文件 2568 2013-08-10 23:20 net\gec_net.c
文件 114575 2013-07-26 17:20 net\gec_net.ko
文件 444 2013-07-26 11:44 net\gec_net.mod.c
文件 12856 2013-07-26 11:44 net\gec_net.mod.o
文件 102864 2013-07-26 17:20 net\gec_net.o
文件 617 2011-09-08 00:38 net\Makefile
文件 0 2013-07-26 11:44 net\Module.symvers
文件 38 2013-07-26 17:20 net\modules.order
文件 9993 2011-09-08 00:27 net\net.c
- 上一篇:S5PV210按键控制LED
- 下一篇:wm8960 音频播放
相关资源
- Visio图标-最新最全的网络通信图标库
- 基于蓝牙4.0的设备通信方案设计与实
- uboot到linux logo显示不间断 补丁
- WPF USB 网络 串口 通信软件
- ManageEngine_OpManager_12.3安装手册+管理员
- WPE三件套(WPE+CCP+E2G)冰枫修改版
- TCL-S1916 ,1924交换机管理程序
- UNIX/LINUX编程实践教程的源码
- 连续hopfield神经网络解决TSP问题
- Linux任务管理器
- linux应用层的华容道游戏源代码
- Windows异步套接字网络编程
- 改进的BP神经网络算法
- 通风网络解算程序 fortran90
- 证券总部网络拓扑结构示意图网络拓
- 校园网络规划与设计课程设计
- 网络唤醒代码
- delphi 通过Ping命令检测网络是否正常
- ubuntu9.10 可加载内核模块和字符设备驱
- ipv6网络抓包程序
- MP3文件ID3v2ID3v2APEv2标签读取
- 防火墙编程-Visual C 网络通信开发
- 基于bp神经网络的表情识别
- MFC网络编程实例
- 操作系统实验——虚存管理实验
- IpHlpApi.h&IpHlpApi.lib
- linux下的发包工具sendip
- 尚观培训linux许巍关于c 的笔记和讲义
- 尚观培训linux董亮老师关于数据结构的
- linux 线程池源码 c 版
评论
共有 条评论