Você pode fazer isso, mas obviamente esteja avisado de que o driver pode não ser totalmente compatível com o seu dispositivo!
Também envolve a recompilação do módulo do kernel, então, se isso o incomoda, aconselho cautela. Especialmente porque a maioria dos NICs exige que um blob de firmware binário personalizado seja carregado, o que pode danificar seu hardware - por isso, esteja avisado e faça um pouco de lição de casa para localizar um blob de firmware compatível.
Feliz em continuar? Bom:)
Primeiro, você precisará localizar a fonte do driver para o kernel em execução - presumo que, como você está usando o dkms, isso já está em seu sistema em algum lugar. Depois de ter isso, encontre o local onde o MODULE_DEVICE_TABLE
está registrado. De uma rápida pesquisa online, por exemplo, o arquivo r8169.c tem esta seção:
static const struct pci_device_id rtl8169_pci_tbl[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8129), 0, 0, RTL_CFG_0 },
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8136), 0, 0, RTL_CFG_2 },
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8161), 0, 0, RTL_CFG_1 },
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8167), 0, 0, RTL_CFG_0 },
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8168), 0, 0, RTL_CFG_1 },
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8169), 0, 0, RTL_CFG_0 },
{ PCI_VENDOR_ID_DLINK, 0x4300,
PCI_VENDOR_ID_DLINK, 0x4b10, 0, 0, RTL_CFG_1 },
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4300), 0, 0, RTL_CFG_0 },
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4302), 0, 0, RTL_CFG_0 },
{ PCI_DEVICE(PCI_VENDOR_ID_AT, 0xc107), 0, 0, RTL_CFG_0 },
{ PCI_DEVICE(0x16ec, 0x0116), 0, 0, RTL_CFG_0 },
{ PCI_VENDOR_ID_LINKSYS, 0x1032,
PCI_ANY_ID, 0x0024, 0, 0, RTL_CFG_0 },
{ 0x0001, 0x8168,
PCI_ANY_ID, 0x2410, 0, 0, RTL_CFG_2 },
{0,},
};
MODULE_DEVICE_TABLE(pci, rtl8169_pci_tbl);
Portanto, é aqui que o kernel informa que, se um dispositivo com qualquer uma das IDs PCI listadas for encontrado, use este driver. Você precisará adicionar uma linha extra a essa estrutura, contendo o ID do dispositivo PCI da sua NIC, recompilar (esperamos que apenas usando dkms) e reiniciar.