Finally SiS190 NIC driver ported!
Alexander Pohoyda
alexander.pohoyda at gmx.net
Thu Jun 21 07:44:55 UTC 2007
Hello,
Based on the code of SiS900/7016 FreeBSD driver and using SiS190/191 Linux and Solaris drivers as references, I have developed a working FreeBSD driver for the above mentioned SiS190 NIC.
It works stable for a few months on my amd64-based FreeBSD-5.4 machine in 64bit mode. I don't know whether it works in 32bit mode. I have also removed the sis_poll() code because I didn't have time to test it.
Since this is my first driver ever, I have a few questions open which I would like to clarify.
This NIC uses main memory for both receive and transmit descriptor rings but descriptor structures and registers are different from the ones used in SiS900/7016, so I decided to write a separate driver. How should I name this new driver? Is if_sis190.c + if_sis190reg.h right? It could later be extended to support also SiS191 NIC, I suppose. Or should I really merge the code with the sis(4) driver?
I do not clearly understand the reason of separating the data into list_data and chain_data structures. It seems unnecessary in my driver.
In sis_encap() function I have to always defragment MBUF chain, otherwise big packets (e.g. during SSH connection there are packets consisting of 3 chunks) are broken. When defragmentation is done -- SSH and other protocols work. Is there a well-known mistake that causes this behavior?
--
Alexander Pohoyda <alexander.pohoyda at gmx.net>
PGP Key fingerprint:
7F C9 CC 5A 75 CD 89 72 15 54 5F 62 20 23 C6 44
More information about the freebsd-drivers
mailing list