Skip site navigation (1)Skip section navigation (2)
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>