-Readme File for sk98lin.o v3.02
+Readme File for sk98lin.o v3.04
SK-NET Gigabit Ethernet Adapter SK-98xx Driver for Linux
This file contains
@@ -24,8 +24,8 @@
============
The sk98lin driver supports the SysKonnect SK-NET Gigabit Ethernet
-Adapter SK-98xx family on Linux 2.2.x.
-It has been tested with Linux on Intel/x86 and ALPHA machines.
+Adapter SK-98xx family on Linux 2.2.x and above.
+It has been tested with Linux on Intel/x86, ALPHA and UltraSPARC machines.
From v3.02 on, the driver is integrated in the linux kernel source.
***
@@ -132,7 +132,8 @@
module with 'insmod'. The configuration tools of some distributions
can also give parameters to the driver module.
If you use the kernel module loader, you can set driver parameters
-in the file /etc/conf.modules. Insert a line of the form:
+in the file /etc/modules.conf (or old name: /etc/conf.modules).
+Insert a line of the form:
options sk98lin ...
@@ -281,14 +282,12 @@
the large frames. If one adapter is not set to receive large frames,
it will simply drop them.
-NOTE: If you look at the statistics (with netstat) in large frame
- mode while there is traffic on the net, you will see the
- RX error counter go up. This is because the adapter hardware
- counts received large frames as errors, although they are
- received correctly. So ignore this counter in that case.
-
You can switch back to the standard ethernet frame size with:
ifconfig eth0 mtu 1500
+
+To make this setting persitent, add a script with the 'ifconfig'
+line to the system startup sequence (named something like "S99sk98lin"
+in /etc/rc.d/rc2.d).
***
@@ -374,15 +373,27 @@
(8) HISTORY
===========
-VERSION 3.02
+VERSION 3.04 (In-Kernel version)
+Problems fixed:
+- Driver start failed on UltraSPARC
+- Rx checksum calculation for big endian machines did not work
+- Jumbo frames were counted as input-errors in netstat
+
+VERSION 3.03 (Standalone version)
+Problems fixed:
+- Compilation did not find script "printver.sh" if "." not in PATH
+Known limitations:
+- None
+
+VERSION 3.02 (In-Kernel version)
Problems fixed:
- None
New Features:
-- Integration in linux kernel source.
+- Integration in Linux kernel source (2.2.14 and 2.3.29)
Known limitations:
- None
#
# Unix 98 PTY support
diff -u --new-file --exclude-from ../exclude --recursive linux.vanilla/drivers/net/sk98lin/h/skdrv2nd.h linux.15p9/drivers/net/sk98lin/h/skdrv2nd.h
--- linux.vanilla/drivers/net/sk98lin/h/skdrv2nd.h Tue Jan 4 21:18:52 2000
+++ linux.15p9/drivers/net/sk98lin/h/skdrv2nd.h Wed Feb 16 18:29:09 2000
@@ -411,6 +411,7 @@
int RxBufSize; /* length of receive buffers */
struct net_device_stats stats; /* linux 'netstat -i' statistics */
int Index; /* internal board index number */
+ SK_BOOL JumboActivated; /* jumbo support ever activated */
/* adapter RAM sizes for queues of active port */
int RxQueueSize; /* memory used for receive queue */
diff -u --new-file --exclude-from ../exclude --recursive linux.vanilla/drivers/net/sk98lin/skcsum.c linux.15p9/drivers/net/sk98lin/skcsum.c
--- linux.vanilla/drivers/net/sk98lin/skcsum.c Tue Jan 4 21:18:52 2000
+++ linux.15p9/drivers/net/sk98lin/skcsum.c Thu Feb 17 22:03:04 2000
@@ -617,7 +617,6 @@
/*
* Calculate the TCP/UDP checksum.
*/
-
/* Get total length of IP header and data. */
/* for debuging on x86 only */
@@ -348,6 +348,7 @@
SK_AC *pAC;
struct pci_dev *pdev = NULL;
unsigned long base_address;
+unsigned short tmp;
if (probed)
return -ENODEV;
@@ -419,6 +420,15 @@
base_address = pdev->base_address[0];
+#ifdef __sparc_v9__
+ /* SPARC machines do not initialize the chache line size */
+ pci_write_config_byte(pdev, PCI_CACHE_LINE_SIZE, 64);
+ /* SPARC machines do not set "Memory write and invalidate" */
+ pci_read_config_word(pdev, PCI_COMMAND, &tmp);
+ tmp |= PCI_COMMAND_INVALIDATE;
+ pci_write_config_word(pdev, PCI_COMMAND, tmp);
+#endif
+
#ifdef SK_BIG_ENDIAN
/*
* On big endian machines, we use the adapter's aibility of
@@ -437,7 +447,12 @@
*/
+#ifndef __sparc_v9__
pAC->IoBase = (char*)ioremap(base_address, 0x4000);
+#else
+ /* workaround for bug in 2.2 kernel for sparcv9 */
+ pAC->IoBase = (char*)base_address;
+#endif
if (!pAC->IoBase){
printk(KERN_ERR "%s: Unable to map I/O register, "
"SK 98xx No. %i will be disabled.\n",
@@ -808,6 +823,14 @@
ProductStr(pAC);
printk("%s: %s\n", dev->name, pAC->DeviceStr);