免费注册 查看新帖 |

Chinaunix

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

网卡驱动probe之后怎么来测网卡驱动是否正常工作? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-22 15:55 |只看该作者 |倒序浏览
小弟 在弄一个micrel公司ksz8851网卡芯片,在系统启动已经注册了platform设备,模块初始化注册平台驱动调用了ks8851_probe。进行device绑定。现在probe成功了,之后怎么做? ifconfig 并没有出现eth3。因为我有3个网卡。麻烦各位大侠指点。。

论坛徽章:
0
2 [报告]
发表于 2010-10-22 16:01 |只看该作者
你注册了你的driver是个ethdev没有?

论坛徽章:
0
3 [报告]
发表于 2010-10-22 16:05 |只看该作者
  1. static int __devinit ks8851_probe(struct platform_device *pdev)
  2. {
  3.         int err = -ENOMEM;
  4.         struct resource *io_d, *io_c;
  5.         struct net_device *netdev;
  6.         struct ks_net *ks;
  7.         u16 id, data;

  8.         io_d = platform_get_resource(pdev, IORESOURCE_MEM, 0);
  9.         io_c = platform_get_resource(pdev, IORESOURCE_MEM, 1);

  10.         if (!request_mem_region(io_d->start, resource_size(io_d), DRV_NAME))
  11.                 goto err_mem_region;

  12.         if (!request_mem_region(io_c->start, resource_size(io_c), DRV_NAME))
  13.                 goto err_mem_region1;

  14.         netdev = alloc_etherdev(sizeof(struct ks_net));
  15.         if (!netdev)
  16.                 goto err_alloc_etherdev;

  17.         SET_NETDEV_DEV(netdev, &pdev->dev);

  18.         ks = netdev_priv(netdev);
  19.         ks->netdev = netdev;
  20.         ks->hw_addr = ioremap(io_d->start, resource_size(io_d));

  21.         if (!ks->hw_addr)
  22.                 goto err_ioremap;

  23.         ks->hw_addr_cmd = ioremap(io_c->start, resource_size(io_c));
  24.         if (!ks->hw_addr_cmd)
  25.                 goto err_ioremap1;

  26.         ks->irq = platform_get_irq(pdev, 0);

  27.         if (ks->irq < 0) {
  28.                 err = ks->irq;
  29.                 goto err_get_irq;
  30.         }

  31.         ks->pdev = pdev;

  32.         mutex_init(&ks->lock);
  33.         spin_lock_init(&ks->statelock);

  34.         netdev->netdev_ops = &ks_netdev_ops;
  35.         netdev->ethtool_ops = &ks_ethtool_ops;

  36.         /* setup mii state */
  37.         ks->mii.dev             = netdev;
  38.         ks->mii.phy_id          = 1,
  39.         ks->mii.phy_id_mask     = 1;
  40.         ks->mii.reg_num_mask    = 0xf;
  41.         ks->mii.mdio_read       = ks_phy_read;
  42.         ks->mii.mdio_write      = ks_phy_write;

  43.         ks_info(ks, "message enable is %d\n", msg_enable);
  44.         /* set the default message enable */
  45.         ks->msg_enable = netif_msg_init(msg_enable, (NETIF_MSG_DRV |
  46.                                                      NETIF_MSG_PROBE |
  47.                                                      NETIF_MSG_LINK));
  48.         ks_read_config(ks);

  49.         /* simple check for a valid chip being connected to the bus */
  50.         if ((ks_rdreg16(ks, KS_CIDER) & ~CIDER_REV_MASK) != CIDER_ID) {
  51.                 ks_err(ks, "failed to read device ID\n");
  52.                 err = -ENODEV;
  53.                 goto err_register;
  54.         }

  55.         if (ks_read_selftest(ks)) {
  56.                 ks_err(ks, "failed to read device ID\n");
  57.                 err = -ENODEV;
  58.                 goto err_register;
  59.         }

  60.         err = register_netdev(netdev);
  61.         if (err)
  62.                 goto err_register;

  63.         platform_set_drvdata(pdev, netdev);

  64.         ks_soft_reset(ks, GRR_GSR);
  65.         ks_hw_init(ks);
  66.         ks_disable_qmu(ks);
  67.         ks_setup(ks);
  68.         ks_setup_int(ks);
  69.         memcpy(netdev->dev_addr, ks->mac_addr, 6);

  70.         data = ks_rdreg16(ks, KS_OBCR);
  71.         ks_wrreg16(ks, KS_OBCR, data | OBCR_ODS_16MA);

  72.         /**
  73.          * If you want to use the default MAC addr,
  74.          * comment out the 2 functions below.
  75.          */

  76.         random_ether_addr(netdev->dev_addr);
  77.         ks_set_mac(ks, netdev->dev_addr);

  78.         id = ks_rdreg16(ks, KS_CIDER);

  79.         printk(KERN_INFO DRV_NAME
  80.                 " Found chip, family: 0x%x, id: 0x%x, rev: 0x%x\n",
  81.                 (id >> 8) & 0xff, (id >> 4) & 0xf, (id >> 1) & 0x7);
  82.         return 0;

  83. err_register:
  84. err_get_irq:
  85.         iounmap(ks->hw_addr_cmd);
  86. err_ioremap1:
  87.         iounmap(ks->hw_addr);
  88. err_ioremap:
  89.         free_netdev(netdev);
  90. err_alloc_etherdev:
  91.         release_mem_region(io_c->start, resource_size(io_c));
  92. err_mem_region1:
  93.         release_mem_region(io_d->start, resource_size(io_d));
  94. err_mem_region:
  95.         return err;
  96. }
复制代码
回复 2# snail_314
驱动内核已经有了的。我只是在bsp中注册平台设备。

论坛徽章:
0
4 [报告]
发表于 2010-10-22 16:19 |只看该作者
进/sys/devices/platform/fsl-ks8851.0
ls -l
lrwxrwxrwx    1 root     root            0 Jan  1 00:01 bus -> ../../../bus/platform
lrwxrwxrwx    1 root     root            0 Jan  1 00:01 driver -> ../../../bus/platform/drivers/fsl-ks8851
-r--r--r--    1 root     root         4096 Jan  1 00:01 modalias
lrwxrwxrwx    1 root     root            0 Jan  1 00:01 net:eth2 -> ../../../class/net/eth2
lrwxrwxrwx    1 root     root            0 Jan  1 00:01 subsystem -> ../../../bus/platform
-rw-r--r--    1 root     root         4096 Jan  1 00:01 uevent
但是ifconfig 看不到eth2 ,要指定ifconfig eth2才能看到网卡信息。

论坛徽章:
0
5 [报告]
发表于 2010-10-22 16:23 |只看该作者
ip -a 查看
ifconfig eth2 up试下

论坛徽章:
0
6 [报告]
发表于 2010-10-22 16:32 |只看该作者
回复 5# epegasus


   呵呵, 网卡没激活,不好意思。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
7 [报告]
发表于 2010-10-22 18:04 |只看该作者
嗯,加载驱动之后,可以用 ifconfig ethx up 来启动一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP