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 caizdret = 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);
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;