免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3458 | 回复: 3
打印 上一主题 下一主题

看多内核源码里DM9000驱动或熟悉网络驱动的大侠们进来指点指点啊 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-19 21:57 |只看该作者 |倒序浏览
看多内核源码里DM9000驱动或熟悉网络驱动的大侠们进来指点指点啊

static int
dm9000_probe(struct platform_device *pdev)
{
。。。。。。。
db = (struct board_info *) ndev->priv;。。。。

ether_setup(ndev);

        ndev->open                 = &dm9000_open;
        ndev->hard_start_xmit    = &dm9000_start_xmit;
        ndev->tx_timeout         = &dm9000_timeout;
        ndev->watchdog_timeo = msecs_to_jiffies(watchdog);
        ndev->stop                 = &dm9000_stop;
        ndev->set_multicast_list = &dm9000_hash_table;
        ndev->ethtool_ops         = &dm9000_ethtool_ops;
        ndev->do_ioctl                 = &dm9000_ioctl;

         db->msg_enable       = NETIF_MSG_LINK;
        db->mii.phy_id_mask  = 0x1f;
        db->mii.reg_num_mask = 0x1f;
        db->mii.force_media  = 0;
        db->mii.full_duplex  = 0;
        db->mii.dev             = ndev;
        db->mii.mdio_read    = dm9000_phy_read;
        db->mii.mdio_write   = dm9000_phy_write;
。。。。}

请问db->mii.mdio_read  和db->mii.mdio_write 是什么时候如何被调用的???

另外我不知道  这个db变量只是ndev->priv成员,源码里却有多出判断 db->msg_enable值的地方,我不知道 db->msg_enable是怎么被修改了的
比如:
        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");
                }
if (rxhdr.RxStatus & 0xbf) {
                        GoodPacket = false;
                        if (rxhdr.RxStatus & 0x01) {
                                if (netif_msg_rx_err(db))
                                        dev_dbg(db->dev, "fifo error\n");
                                dev->stats.rx_fifo_errors++;
                        }
                        if (rxhdr.RxStatus & 0x02) {
                                if (netif_msg_rx_err(db))
                                        dev_dbg(db->dev, "crc error\n");
                                dev->stats.rx_crc_errors++;
                        }
                        if (rxhdr.RxStatus & 0x80) {
                                if (netif_msg_rx_err(db))
                                        dev_dbg(db->dev, "length error\n");
                                dev->stats.rx_length_errors++;
                        }
                }

怎么没人指点一下呢

[ 本帖最后由 lovesunshine 于 2008-11-21 09:09 编辑 ]

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
2 [报告]
发表于 2011-06-11 20:02 |只看该作者
也想知道,有高人指点吗

论坛徽章:
0
3 [报告]
发表于 2011-06-13 15:12 |只看该作者
接收中断响应后修改的

论坛徽章:
0
4 [报告]
发表于 2013-07-31 10:47 |只看该作者
回复 1# lovesunshine

    1、db->mii.mdio_read是在检查MII接口在mii_check_media函数中被调用的,用来读取phy的link状态信息;db->mii.mdio_write是在关闭dm9000时调用的,用来将phy状态信息设置为RESET。
    2、db->msg_enable是在探测函数中被初始化为NETIF_MSG_LINK。



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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP