Estoy usando el controlador Realtek Wi-Fi rtl8192du en el kernel de Linux 3.10.53. Muchas de las API utilizadas en el controlador fueron obsoletas y arrojaron un error de tiempo de compilación. Reemplazo las API y ahora el controlador se está registrando cuando se inicia el kernel. Pero la interfaz wlan0 está inactiva. Cuando configuro la interfaz, muestra que kthread_run está devolviendo ENOMEM. El fragmento de código está debajo
u32 rtw_start_drv_threads(_adapter *padapter)
{
----------
----------
padapter->cmdThread = kthread_run(rtw_cmd_thread, padapter, "RTW_CMD_THREAD");
if(padapter->cmdThread < 0)
_status = _FAIL;
else
_rtw_down_sema(&padapter->cmdpriv.terminate_cmdthread_sema);
}
¿Hay alguna manera de evitar que kthread_run devuelva el error ENOMEM para que el ifconfig wlan0 up sea exitoso?
linux
networking
wireless-networking
drivers
Krishna
fuente
fuente
Esa no es la forma de adaptar el controlador al núcleo. La forma de hacerlo es instalar backports.
MariusMatutiae
Descargué el último controlador RTL8192DU del sitio web de Realtek. Pero el controlador también ha utilizado kernel_thread en lugar de kthread_run, lo que nuevamente arroja un error de compilación contra el kernel de Linux 3.10.53.Tal vez necesito volver a buscar el controlador RTL8192DU compatible con el kernel 3.10.53
Krishna
Los backports están destinados a ser controladores antiguos con nuevas API ... ¿verdad? Tengo la versión anterior del controlador usb rtl8192du y el kernel de Linux más nuevo, que causa el desastre compatible
Krishna
No, se supone que los backports son nuevos controladores para los núcleos antiguos. Tienes un kernel muy viejo, 3.10. Puede ser nuevo para la versión de la distribución que está ejecutando, pero es muy antigua. LTS Ubuntu 14.04 usa 3.16, el kernel estable más reciente es 4.2
MariusMatutiae
Bueno. En realidad, estoy construyendo el controlador Realtek Wi-Fi para Android Lollipop con la versión del kernel 3.10.53 para mi placa de destino. En lugar de reemplazar kthread_run, utilicé kernel_thread () solamente y lo agregué como EXPORT_SYMBOL en el archivo kernel fork.c. El error de compilación debido a kernel_thread está resuelto e insmod está funcionando. Pero de nuevo "Error de segmentación" está ocurriendo cuando configuro ifconfig wlan0 :(
Krishna