• RK3588修改eth0和eth1,对调这两个网卡设备的名称


    1、以太网卡的名称一般是ethX(X可以是0,1,2,3…),一般我们的设备只有一个网卡,并且一般也不会改变它的网卡名称,所以不需要关注此问题,但是有一些设备有两三个网卡,有时候我们需要eth0是指定的硬件网卡设备,此时我们就需要人为干预一下,修改一下网卡的名称,使其满足我们的使用场景。
    2、在rk平台,假如你的两个网卡都是使用的gmac口,例如gmac0和gmac1口,此时只需要在dts适当调整一下位置,让gmac1放在dts比较靠前的位置,在gmac0之前,让gmac1端的网卡先被注册,即可对调eth0和eth1网卡设备;

    3、如果你的网卡设备一个是接的gmac0,一个是其他的接口,比如pcie的网卡,那么2的方法就不管用了。
    此时需要去到驱动端去修改。
    例如我这里,主控平台是rk3588,kerne版本是5.1,gmac0端的网卡注册成了eth0,对应pcie网卡只能注册成eth1了,
    我这里由于设备使用要求,要把pcie网卡命名成eth0,才能满足要求,此时就需要把gmac端对应的网卡命名成eth1。
    修改如下:在注册网卡设备之前使用strcpy去修改,例如我这里, 分别找到gmac端和pcie端网卡注册的地方,在网卡注册之前去修改好它的设备名称:

    gmac端网卡注册的地方(网卡设置注册接口:register_netdev):

    +++ b/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
    @@ -5198,12 +5198,15 @@ int stmmac_dvr_probe(struct device *device,
                    goto error_phy_setup;
            }
    
    +       printk("czd: _%s_ %d 1111 ndev->name is %s\n", __func__, __LINE__, ndev->name);
    +        strcpy(ndev->name, "eth1"); //rename eth0 to eth1 by caizd
            ret = register_netdev(ndev);
            if (ret) {
                    dev_err(priv->device, "%s: ERROR %i registering the device\n",
                            __func__, ret);
                    goto error_netdev_register;
            }
    +       printk("czd: _%s_ %d 2222 ndev->name is %s\n", __func__, __LINE__, ndev->name);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    pcie端网卡注册的地方:

    +++ b/kernel/drivers/net/ethernet/realtek/r8125/r8125_n.c
    @@ -14065,12 +14066,15 @@ rtl8125_init_one(struct pci_dev *pdev,
             }
    
             rtl8125_tally_counter_clear(tp);
    -
    +       printk("czd: _%s_ %d 1 pdev-name is %s\n", __func__, __LINE__, dev->name);
             pci_set_drvdata(pdev, dev);
    +        strcpy(dev->name, "eth0"); //add by caizd
    +       printk("czd: _%s_ %d 2 pdev-name is %s\n", __func__, __LINE__, dev->name);
             rc = register_netdev(dev);
             if (rc)
                     goto err_out;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    【从零开始学微服务】01.微服务的过去与现在
    第15章 基于规格说明的测试技术 15.1 - 基于规格说明的测试的概述 15.2 - 测试用例设计方法
    .Net 472&6.0 Razor编译时的小差异
    Cy7.5标记阿霉素;提供CY系列菁染料CY3、CY5、CY5.5、CY7、CY7.5,ICG,荧光素FITC,Bodipy系列染料标记阿霉素
    【PostgreSQL】Postgres数据库安装、配置、使用DBLink详解
    搭建搜题公众号【最新】
    C++ 中 API 兼容与 ABI 兼容万字详解
    ThingBoard源码解析-缓存
    vue 路由
    对话MySQL之父:一个优秀程序员可抵5个普通程序员
  • 原文地址:https://blog.csdn.net/qq_30624591/article/details/132984157