
network-stack
文章平均质量分 71
shuimuyq
这个作者很懒,什么都没留下…
展开
-
DM9000网卡驱动源码分析系列06 - open && stop
static void dm9000_mask_interrupts(struct board_info *db) { iow(db, DM9000_IMR, IMR_PAR); } 屏蔽中断 static void dm9000_unmask_interrupts(struct board_info *db) { iow(db, DM9000_IMR, db->imr_all); } 恢复原创 2015-12-09 16:19:47 · 772 阅读 · 0 评论 -
DM9000网卡驱动源码分析系列07 - interrupt && read && write
static void dm9000_schedule_poll(struct board_info *db) { if (db->type == TYPE_DM9000E) schedule_delayed_work(&db->phy_poll, HZ * 2); } 区别对待dm9000e, 如果是dm9000e 则在这里schedule_delayed_work, HZ代表1秒 如原创 2015-12-09 17:23:19 · 711 阅读 · 0 评论 -
DM9000网卡驱动源码分析系列08 - 整理补充
/* * Davicom DM9000 Fast Ethernet driver for Linux. * Copyright (C) 1997 Sten Wang * * This program is free software; you can redistribute it and/or * modify it under the terms of the GN原创 2015-12-10 09:29:46 · 914 阅读 · 0 评论 -
snull驱动环境搭建与测试分析
Here are possible values for the network numbers. Once you put these lines in /etc/networks, you can call your networks by name. The values were chosen from the range of numbers reserved for priv原创 2015-12-18 17:05:36 · 729 阅读 · 0 评论 -
DM9000网卡驱动源码分析系列05 - net_device_ops(ioctl ...)
static const struct net_device_ops dm9000_netdev_ops = { .ndo_open = dm9000_open, .ndo_stop = dm9000_stop, .ndo_start_xmit = dm9000_start_xmit, .ndo_tx_timeout = dm9000_timeout, .ndo_set_rx_m原创 2015-12-08 17:32:02 · 723 阅读 · 0 评论 -
DM9000网卡驱动源码分析系列01 - platform总线
驱动的作用是使能,让设备工作,如果是网卡设备,就是能通过网卡设备收发包 对于内核来说有通用的收发包回调函数 驱动开发人员为特定的网卡开发驱动程序,然后注册回调函数到内核,这样这个特定的设备就得到内核支持 也就是说这个操作系统能通过这类网卡进行上网通信 驱动的开发也是分层的 每个设备都是自己特定的板级信息(board_info),这些信息包含生产商,生产编号,mac地址等等 如果原创 2015-12-07 14:58:56 · 507 阅读 · 0 评论 -
DM9000网卡驱动源码分析系列00 - 初衷与目标
网络上已经有很多网友分析过dm9000网卡驱动了 这次我分析dm9000的初衷是想了解一下底层收发包的一个流程 所以我并不会纠结于网卡寄存器的操作,大概只是了解一下,操作什么寄存器进行读写 另外我并没有花过多时间分析ethtool等工具的底层驱动支持 我分析的核心部分是网卡驱动的框架以及收发包的中断处理流程 dm9000这样一个相对简单的网卡驱动, 所有代码不到2000行,便于理原创 2015-12-07 14:51:04 · 420 阅读 · 0 评论 -
DM9000网卡驱动源码分析系列03 - probe && remove
static struct dm9000_plat_data *dm9000_parse_dt(struct device *dev) { struct dm9000_plat_data *pdata; struct device_node *np = dev->of_node; const void *mac_addr; if (!IS_ENABLED(CONFIG_OF) || !n原创 2015-12-08 08:56:26 · 1090 阅读 · 0 评论 -
DM9000网卡驱动源码分析系列04 - ethtool
/* ethtool ops */ static void dm9000_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) { struct board_info *dm = to_dm9000_board(dev); strlcpy(info->driver, CARDNAME, size原创 2015-12-08 14:18:15 · 723 阅读 · 0 评论