diff --git a/deepin-devicemanager/src/DeviceManager/DeviceInfo.cpp b/deepin-devicemanager/src/DeviceManager/DeviceInfo.cpp index a739aaab..522c9769 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceInfo.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceInfo.cpp @@ -726,9 +726,9 @@ void DeviceBaseInfo::mapInfoToList() void DeviceBaseInfo::setHwinfoLshwKey(const QMap &mapInfo) { - // 网卡使用物理地址作为匹配值 + // 网卡使用物理地址+逻辑设备名作为匹配值 if (mapInfo.find("HW Address") != mapInfo.end()) { - m_HwinfoToLshw = mapInfo["HW Address"]; + m_HwinfoToLshw = (mapInfo.find("Device File") != mapInfo.end()) ? mapInfo["HW Address"] + mapInfo["Device File"] : mapInfo["HW Address"]; return; } @@ -773,9 +773,11 @@ void DeviceBaseInfo::setHwinfoLshwKey(const QMap &mapInfo) bool DeviceBaseInfo::matchToLshw(const QMap &mapInfo) { - // 网卡设备与序列号匹配上 + // 网卡设备与序列号匹配上 或者加上逻辑设备名 if (mapInfo.find("logical name") != mapInfo.end() && mapInfo.find("serial") != mapInfo.end()) { - if (m_HwinfoToLshw == mapInfo["serial"]) { + if (m_HwinfoToLshw == mapInfo["serial"] + mapInfo["logical name"]) { + return true; + } else if (m_HwinfoToLshw == mapInfo["serial"]) { return true; } } diff --git a/deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp b/deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp index bb1559a3..bdaf1e59 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp @@ -151,7 +151,7 @@ bool DeviceNetwork::setInfoFromHwinfo(const QMap &mapInfo) m_CanUninstall = !driverIsKernelIn(m_Driver); return true; } - + setAttribute(mapInfo, "Device File", m_LogicalName); setAttribute(mapInfo, "HW Address", m_MACAddress); setAttribute(mapInfo, "Permanent HW Address", m_UniqueID); setAttribute(mapInfo, "SysFS Device Link", m_SysPath); diff --git a/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp b/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp index f2370953..3f698b1b 100644 --- a/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp +++ b/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp @@ -273,9 +273,10 @@ void DeviceGenerator::generatorNetworkDevice() for (QList >::const_iterator it = lstLshw.begin(); it != lstLshw.end(); ++it) { if ((*it).find("serial") == (*it).end()) continue; - const QString &serialNumber = (*it)["serial"]; + const QString &serialNumber = ((*it).find("logical name") != (*it).end()) ? (*it)["serial"] + (*it)["logical name"] : (*it)["serial"]; for (QList::iterator itDevice = lstDevice.begin(); itDevice != lstDevice.end(); ++itDevice) { - if (!serialNumber.isEmpty() && ((*itDevice)->uniqueID() == serialNumber || (*itDevice)->hwAddress() == serialNumber)) { + const QString &ser2Number = (*itDevice)->logicalName().isEmpty() ? (*itDevice)->hwAddress() : (*itDevice)->hwAddress() + (*itDevice)->logicalName(); + if (!serialNumber.isEmpty() && ((*itDevice)->uniqueID() == serialNumber || ser2Number == serialNumber)) { (*itDevice)->setInfoFromLshw(*it); break; }