For any kind of networking you don't have to write an in-kernel driver, as you can do it in the user mode using tun/tap as the in-kernel part. (Actually this tun/tap method is also common for VPN software.) You can use the standard "AT command set" firmware or create your own for ESP8266, and write a user mode daemon that takes that serial port, speaks that protocol, and presents a tun/tap interface to the kernel. The same goes if you decided to put ESP8266 on I2C.
I would like to avoid any kind of coding for this project. There is just no time for that, besides, it is not fun. Maximum is some bash script to configure stuff.
There is SC18IS602B that is a I2C slave to SPI master chip. Then put the SDIO Wi-Fi module into SPI mode and win. And if you have four spare GPIO, there is a Linux kernel driver that fabricates a bit banged SPI port out of GPIOs too.
Well, I'm sure both solutions could work in theory. In reality? There are some timing requirements when making a wifi connection, and I'm not sure if a 400Khz I2C or an unknown speed bit-banging would be sufficient for that.
Wi-Fi mini-PCIe cards or M.2 cards often expose Wi-Fi over PCIe for the sake of performance, which is not what you need here.
And often not. I've found Wifi cards with the RTL8188 on it, which clearly dont have PCIe. I'm actually wondering, if majority of cards use the PICe or the USB.
Another idea is actually a CPU swap to something like MT7688. That is actually a MIPS wireless router chipset, but it runs Linux and have built-in 2.4GHz Wi-Fi. (Actually it even have a PCIe x1 root complex available. Technically you can even have a full featured PCIe/SATA/USB M.2 slot on this thing.)
That would be a year long project. I would rather free up an SDIO interface on the board. You know, if it works, dont change it.
Hint: I used mouser.com search engine. Theres more USB wifi modules:
Good thing I haven't thought about that. No, really, please stop, you are not helping. This is what SiLabs tells you about your magic module:
"in general using WGM110 as a network interface in Linux is not possible. "