2.6.11-rc4, VIA VT6102 und via-rhine / rhinefet

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Antworten
SoeDib
Member
Member
Beiträge: 103
Registriert: 3. Jun 2004, 18:18

2.6.11-rc4, VIA VT6102 und via-rhine / rhinefet

Beitrag von SoeDib » 18. Feb 2005, 21:41

Moin alle,
wer - wie ich - einen neueren Kernel verwenden möchte und statt des Ethernettreibers "via-rhine" lieber den Treiber "rhinefet" von Via für den VT6102 benutzen möchte, wird feststellen, daß der Treiber (zumindest) nicht mit den (Vanilla-)Sourcen kompiliert werden kann. Um das zum Laufen zu kriegen, mußte ich rhine_main.c im rhinefet-Quellverzeichnis etwas verändern. Ich hab zwar eigentlich nicht viel Ahnung vom Programmieren oder von Ethernet-Karten - aber funktionieren tuts trotzdem. Die Veränderungen sind hier als Diff wiedergegeben:

Code: Alles auswählen

--- rhine_main.c	2005-02-17 20:45:36.000000000 +0000
+++ rhine_main.c-2.6.11-rc4-soe-1	2005-02-17 21:31:35.000000000 +0000
@@ -15,13 +15,29 @@
  *
  * File: rhine_main.c
  *
- * Purpose: Functions for Linux drver interfaces.
+ * Purpose: Functions for Linux driver interfaces.
  *
  * Author: Chuang Liang-Shing, AJ Jiang
  *
  * Date: Aug 15, 2003
  *
  */
+ 
+/*
+ * ********************************************************************
+ * Fixed version for use with kernel 2.6.11-rc4 (and above, probably)
+ *
+ * The fixes rely mainly on guesses derived from the differences
+ * between the kernel sources for SuSE's 2.6.5-7.145-default and
+ * the Vanilla 2.6.11-rc4 kernels. On my machine this version compiles,
+ * installs and runs nicely, but if it doesn't on your's, I'm probably
+ * not the right one to ask why  - in other words: I'm neither a
+ * programmer nor an expert on ethernet devices ;-)
+ * 
+ * Soe (s_dibbern {at} web.de)
+ * 2005-02-17
+ * ********************************************************************
+ */
 
 #undef __NO_VERSION__
 
@@ -1208,7 +1224,7 @@
     //drop frame not met IEEE 802.3
     if (pInfo->flags & RHINE_FLAGS_VAL_PKT_LEN) {
         if ((skb->protocol==htons(ETH_P_802_2)) &&
-            (skb->len!=ntohs(skb->mac.ethernet->h_proto))) {
+            (skb->len!=ntohs(eth_hdr(skb)->h_proto))) {
             skb_put(skb,-(pRD->rdesc0.f15Length-4));
             pStats->rx_length_errors++;
             return FALSE;
@@ -2851,8 +2867,8 @@
 
     netif_stop_queue(dev);
     spin_lock_irq(&pInfo->lock);
-    pci_save_state(pcid, pInfo->pci_state);
-
+    pci_save_state(pcid);
+	
 #ifdef ETHTOOL_GWOL
         rhine_shutdown(pInfo);
     if (pInfo->flags & RHINE_FLAGS_WOL_ENABLED) {
@@ -2885,7 +2901,7 @@
 
     pci_set_power_state(pcid, 0);
     pci_enable_wake(pcid, 0, 0);
-    pci_restore_state(pcid, pInfo->pci_state);
+    pci_restore_state(pcid);
 
     enable_mmio(pInfo);
 
Den Code einfach hier rauskopieren, unter (z.B.) "patch_rhinefet-2.6.11-rc4" abspeichern, in das Verzeichnis der rhinefet-Quellen (also dasjenige, in dem "rhine_main.c" liegt) verschieben und mit "patch -b <patch_rhinefet-2.6.11-rc4" ausführen. Die Option "-b" sorgt dafür, daß vor dem patchen eine Backup-Kopie von rhine_main.c unter dem Namen rhine_main.c.orig angelegt wird.

ACHTUNG: Ich sehe gerade, daß mein Browser beim Markieren an jede Zeile ein Leerzeichen anhängt - das verwirrt "patch". Man kann zum Speichern einen Editor wie Kate oder SciTE verwenden, die können unnötige Leerzeichen am Zeilenende automatisch vor dem Speichern entfernen. Also, wenn der Patch fehlschlägt oder sonst unerwartet verläuft, bitte die Zeilenenden kontrollieren.

Grüße,
SD
SuSE 10.0 & WinXPproSP1, 1,3GHz Duron, 512MB RAM
Opera op Platt - deegten Kraam. ;)

Werbung:
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast