Introduction
============
This document presents information to users about 32Bit 10/100/1000Mbps 
Gigabit Ethernet Adapter and the relevant LINUX software driver 


Files in this release
---------------------

The following files are included in the /LINUX directory

gnc.c           -Linux Network OS Specific Module File
gnc01t.h        -Driver header file
hsm.c           -Hardware Specific Module File
hsm.h           -Hardware Specific Module Header File
nsm.h           -HSM related data structures
nsmtypes.h      -Definition type define
sp.c            -Tunable Parameters
Makefile        -Rules to compile and install the driver.


Installation
============
The following subsections describe the procedure for installing the 
driver for LINUX.
   
 1. To install the driver, login as root, insert the floppy disk with
    the GNC0101T driver, and mount the disk into the system with the
    following command.
 
         # mount -t msdos /dev/fd0 /mnt
 
 2. Copy the files from floppy into an appropriate directory.
 
         # mkdir gnc0101t
         # cd gnc0101t
         # cp /mnt/linux/* .
 
 3. To create a new driver object module and install the current
    driver object module in the file system run
 
         # make
         # cp gncm.o /lib/modules/2.2.12-20/net
 
 4. To Make the driver load when the system boots up, the following 
    lines needs to be put in any of the startup scripts like
    /etc/rc.d/rc.local or /etc/rc.d/init.d/network
 
         # /sbin/insmod /lib/modules/2.2.12-20/net/gncm.o
         # /sbin/ifconfig <interface-name> <ip-addr>
 
 The driver can be dynamically loaded and unloaded from a running 
 kernel with the following commands
 
         # insmod gncm.o
         # rmmod gncm.o
 
 To install and test the driver, shutdown the network stack, install
 the driver,and re-start the startup the stack again.
 
         # sh /etc/rc.d/init.d/network stop
         # insmod gncm.o
         # sh /etc/rc.d/init.d/network start
 
 The tunable parameters of the driver like the Receive and Transmit 
 buffers are put in the file nsm.h under the heading "Tunable
 parameters".
 The default value of RX_QUEUE_SZ is 100, on a high end system putting 
 a value of 200 for RX_QUEUE_SZ can give better performance.
 
 To try jumbo frames, the mtu size can be increased using the ifconfig 
 utility, as follows 
 
         # ifconfig <interface-name> mtu <mtu-size>
         eg: ifconfig eth0 mtu 3000
 
 The BUF_SIZE_MAX value in nsm.h (Tunable parameter) should be changed
 to 4096. 
 
 <mtu-size> can be increased upto 4000 bytes for sane operation.
 

FUNCTIONALITY TESTING
---------------------

When the driver is loaded into the system via `insmod' it probes the
PCI bus to locate all GNC0101T devices, and creates control structures
for each. The driver logs a couple of messages available in
`/var/log/messages' for each device with information about its PCI
geographic location, IRQ, IO address, and some basic debug information 
(addresses of some important structures).

All the devices on the PCI bus can be listed by,

         # cat /proc/pci

IRQ and IO address information from this can be correlated with the
information displayed by the driver in `/var/log/messages'

When the TCP/IP stack is initialized, it opens all configured ethernet 
devices, and initializes them for use. At this time, the driver will
perform autonegotiation and log information about the link status.
The driver can then be tested by running ping, telnet, ftp, NFS etc.
