Tercer encuentro
Una vez que ya tenemos funcionando la lógica y la infraestructura para que el kernel sepa que nuestro driver es el que se ocupa de este dispositivo cada vez que alguien lo enchufa al bus USB, ahora nos toca cumplir la promesa, y efectivamente ocuparnos de él.
Durante este encuentro, nos dedicamos esencialmente a cargar el firmware en la placa, de modo que pueda efectivamente funcionar. Para eso, Christoph nos provee del archivo vt6656.fw, un montón de código binario que no sabemos qué hace (¡GRRR!), pero que debemos enviar al dongle en sucesivos mensajes de control. Para que request_firmware() pueda proveernos este firmware cuando inicializamos el driver, tenemos que poner el archivo en el directorio /lib/firmware.
Una vez que cargamos el firmware con éxito en la tarjeta, por fin podemos bootearla con otro mensaje de control, y tenemos ya una placa de red funcional. Ahora podemos preguntarle cosas como la versión de firmware, o la dirección MAC, o el contenido de la memoria EEPROM del dispositivo (en la que guarda datos persistentes) ¡y nos contesta! De hecho, podemos incluso escribir en la memoria EEPROM, y de esa manera cambiar la dirección MAC de la tarjeta de forma permanente.
Todavía nos falta inicializarla correctamente, configurarla y aprender a enviar y recibir datos antes de que podamos conectarnos a la red, y para que todo eso funcione tenemos que construir las estructuras de datos necesarias para poder pasar información de ida vuelta entre la pila mac80211 y el protocolo USB del firmware.