Re: 2.6.16, sk98lin out of date

From: Mws
Date: Mon Feb 13 2006 - 06:04:08 EST


On Monday 13 February 2006 11:58, you wrote:
> Hi,
>
> As I'm sure the drivers/net maintainers are well aware, SysKonnect constantly
> update their sk98lin/sky2 driver without bothering to sync their changes with
> the official linux kernel.
>
> I quickly downloaded driver version 8.31 from http://www.skd.de/ today and
> used the install script to generate a diff against 2.6.16-rc3. Even after
> fixing up some DOS EOLs in the package, the diff was still well over 1.5MBs.
> This is an enormous number of changes.
>
> The reason I'm posting is that my DFI LanParty-UT SLI-D works with this
> version of the driver, but not the version 2.6.16-rc3.
>
> [alistair] 10:55 [~] dmesg | grep sk98lin
> sk98lin: Could not read VPD data.
> sk98lin: probe of 0000:01:0a.0 failed with error -5
>
> I wonder if it's worth just identifying the "quick fix" (I've seen workarounds
> for corrupt VPDs like mine) or whether a general merge up would be
> beneficial..
>
> If nobody's maintaining this driver I wouldn't mind helping out.
>
hi,
as i do have the same problem i may help you out.

at first, syskonnect did send their kernel diffs/patches but they we're rejected caused
by coding style, indention and some people thinking that things can be done better.

i personally do apply these drivers with the generate patch function of the install.sh.

there were small modifications within kernel 2.6.16 with i also sended as a diff to syskonnect,
but got not reply.

i attached the diff, maybe it helps ya out. it works with my 2 onboard marvell yukon gbit adapters.

regards
marcel

diff -ruN linux/drivers/net/sk98lin/h/skdrv2nd.h linux-new/drivers/net/sk98lin/h/skdrv2nd.h
--- linux/drivers/net/sk98lin/h/skdrv2nd.h 2006-01-18 10:11:04.000000000 +0100
+++ linux-new/drivers/net/sk98lin/h/skdrv2nd.h 2005-09-29 10:26:12.000000000 +0200
@@ -61,7 +61,7 @@
#ifdef HAVE_POLL_CONTROLLER
#define SK_POLL_CONTROLLER
#define CONFIG_SK98LIN_NAPI
+#elif defined CONFIG_NET_POLL_CONTROLLER
-#elif CONFIG_NET_POLL_CONTROLLER
#define SK_POLL_CONTROLLER
#define CONFIG_SK98LIN_NAPI
#endif
diff -ruN linux/drivers/net/sk98lin/skge.c linux-new/drivers/net/sk98lin/skge.c
--- linux/drivers/net/sk98lin/skge.c 2006-01-18 10:22:44.000000000 +0100
+++ linux-new/drivers/net/sk98lin/skge.c 2005-09-29 10:26:12.000000000 +0200
@@ -107,7 +107,7 @@
static int __devinit sk98lin_init_device(struct pci_dev *pdev, const struct pci_device_id *ent);
static void sk98lin_remove_device(struct pci_dev *pdev);
#ifdef CONFIG_PM
+static int sk98lin_suspend(struct pci_dev *pdev, pm_message_t state);
-static int sk98lin_suspend(struct pci_dev *pdev, u32 state);
static int sk98lin_resume(struct pci_dev *pdev);
static void SkEnableWOMagicPacket(SK_AC *pAC, SK_IOC IoC, SK_MAC_ADDR MacAddr);
#endif
@@ -971,7 +971,7 @@
*/
static int sk98lin_suspend(
struct pci_dev *pdev, /* pointer to the device that is to suspend */
+pm_message_t state) /* what power state is desired by Linux? */
-u32 state) /* what power state is desired by Linux? */
{
struct net_device *dev = pci_get_drvdata(pdev);
DEV_NET *pNet = (DEV_NET*) dev->priv;
@@ -1024,7 +1024,7 @@
#else
pci_save_state(pdev, pAC->PciState);
#endif
+ pci_set_power_state(pdev, pci_choose_state(pdev, state)); /* set the state */
- pci_set_power_state(pdev, state); /* set the state */

return 0;
}
diff -ruN linux/drivers/net/sk98lin/sky2.c linux-new/drivers/net/sk98lin/sky2.c
--- linux/drivers/net/sk98lin/sky2.c 2006-01-18 10:51:36.000000000 +0100
+++ linux-new/drivers/net/sk98lin/sky2.c 2005-09-29 10:26:12.000000000 +0200
@@ -33,7 +33,7 @@
#include "h/skdrv1st.h"
#include "h/skdrv2nd.h"
#include <linux/tcp.h>
+#include <linux/ip.h>
-
/******************************************************************************
*
* Local Function Prototypes
@@ -337,7 +337,7 @@
PUSH_PKT_AS_LAST_IN_QUEUE(&pAC->TxPort[Port][0].TxQ_free, pSkPacket);
POP_FIRST_PKT_FROM_QUEUE(&pAC->TxPort[Port][0].TxAQ_working, pSkPacket);
}
+#ifdef USE_SYNC_TX_QUEUE
-#if USE_SYNC_TX_QUEUE
POP_FIRST_PKT_FROM_QUEUE(&pAC->TxPort[Port][0].TxSQ_working, pSkPacket);
while (pSkPacket != NULL) {
if ((pSkFrag = pSkPacket->pFrag) != NULL) {
@@ -902,7 +902,7 @@
pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_waiting.pTail = NULL;
spin_lock_init(&pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_waiting.QueueLock);

+#ifdef USE_SYNC_TX_QUEUE
-#if USE_SYNC_TX_QUEUE
pAC->TxPort[Port][TX_PRIO_LOW].TxSQ_working.pHead = NULL;
pAC->TxPort[Port][TX_PRIO_LOW].TxSQ_working.pTail = NULL;
spin_lock_init(&pAC->TxPort[Port][TX_PRIO_LOW].TxSQ_working.QueueLock);
@@ -2311,7 +2311,7 @@
SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC,
("No changes for TxA%d\n", Port + 1));
}
+#ifdef USE_SYNC_TX_QUEUE
-#if USE_SYNC_TX_QUEUE
if (HW_SYNC_TX_SUPPORTED(pAC)) {
/*
** Do we have a new Done idx ?

Attachment: pgp00000.pgp
Description: PGP signature