Date: Thu, 21 Jun 2007 09:18:14 +0200 From: "Alexander Pohoyda" <alexander.pohoyda@gmx.net> To: freebsd-drivers@freebsd.org Subject: Finally SiS190 NIC driver ported! Message-ID: <20070621071814.271290@gmx.net>
next in thread | raw e-mail | index | archive | help
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@gmx.net> PGP Key fingerprint: 7F C9 CC 5A 75 CD 89 72 15 54 5F 62 20 23 C6 44
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070621071814.271290>