Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

problem mit modprobe ipw2200

Alles rund um das Internet, Internet-Anwendungen (E-Mail, Surfen, Cloud usw.) und das Einrichten von Netzwerken einschl. VPN unter Linux

Moderator: Moderatoren

Antworten
vida_jan
Newbie
Newbie
Beiträge: 8
Registriert: 5. Aug 2005, 23:13

problem mit modprobe ipw2200

Beitrag von vida_jan »

wenn ich ipw2200 mit modprobe ipw2200 bekomme ich folgendes:

Code: Alles auswählen

WARNING: Error inserting ieee80211 (/lib/modules/2.6.12-rc3-vidalinux/net/ieee80 211.ko): Unknown symbol in module, or unknown parameter (see dmesg)
FATAL: Error inserting ipw2200 (/lib/modules/2.6.12-rc3-vidalinux/net/ipw2200.ko ): Unknown symbol in module, or unknown parameter (see dmesg)

dmesg liefert dann folgendes:

Code: Alles auswählen

ieee80211_crypt: registered algorithm 'NULL'
ieee80211: Unknown symbol is_multicast_ether_addr
ipw2200: Unknown symbol is_multicast_ether_addr
ipw2200: Unknown symbol ieee80211_wx_set_encode
ipw2200: Unknown symbol ieee80211_wx_get_encode
ipw2200: Unknown symbol ieee80211_txb_free
ipw2200: Unknown symbol ieee80211_wx_get_scan
ipw2200: Unknown symbol ieee80211_rx
ipw2200: Unknown symbol ieee80211_rx_mgt
ipw2200: Unknown symbol free_ieee80211
ipw2200: Unknown symbol alloc_ieee80211
was kann ich da machen?
Freecoffee
Guru
Guru
Beiträge: 1750
Registriert: 29. Sep 2004, 17:00
Wohnort: Bayern

Beitrag von Freecoffee »

Ein aktuelles IEEE80211-System verwenden. Die neueren IPW-Treiber erfordern das. Schau mal bei http://ieee80211.sourceforge.net vorbei.

Greetz, HB
vida_jan
Newbie
Newbie
Beiträge: 8
Registriert: 5. Aug 2005, 23:13

Beitrag von vida_jan »

hmm .. habe nun die neuesten treiber installiert, aber der fehler tritt immernoch auf ... sollte vllt noch erwähnen, dass ich vidalinux benutzte und dort ipw2100 vorinstalliert war .. habe zwar versucht dieses zu löschen, war aber vllt nicht 100% erfolgreich :roll:
vida_jan
Newbie
Newbie
Beiträge: 8
Registriert: 5. Aug 2005, 23:13

Beitrag von vida_jan »

gibt es vllt eine möglichkeit von allen ipw einstellungen und dateien loszukommen und komplett von vorne zu beginnen?

was mich stutzig macht ist, dass wenn ich den treiber mit emerge -C ipw2200 lösche, modprobe ipw2200 immernoch eine ausgabe gibt und sagt dass er dir geforderten dateien nicht findet :roll:
Freecoffee
Guru
Guru
Beiträge: 1750
Registriert: 29. Sep 2004, 17:00
Wohnort: Bayern

Beitrag von Freecoffee »

Wenn du von der oben angegebenen Adresse das aktuellste IEEE80211-Paket geladen hast und es nach Anleitung installierst, säubert es erst einmal den Kernel von eventuellen Altresten einer Vorgängerversion. Um es aber auch wirklich einzubinden musst du entweder die evtl. bereits vorhandenen Module von Hand ausklinken (via rmmod bzw. modprobe -r) oder einen Neustart machen.
Danach kannst du dann den Treiber von http://ipw2200.sf.net installieren, der eine aktuelle IEEE80211-Umgebung voraussetzt. Auch hier musst du vor der Benutzung ein evtl. bereits eingebundenes Modul entfernen. Sollte das mit dem modprobe erst nicht klappen, kannst du auch testweise im ipw2200-Verzeichnis einmal in der Konsole ein ". load" ausführen.
Wenn deine Probleme damit andauern, schick doch einfach einmal die Ausgabe von dmesg (den Teil mit IEEE80211 und IPW).

Greetz, HB
vida_jan
Newbie
Newbie
Beiträge: 8
Registriert: 5. Aug 2005, 23:13

Beitrag von vida_jan »

also das säubern hat nun geklappt!

glaube ich habe den möglichen fehler gefunden:

führe make von ieee80211 aus und bekomme folgende warnung:

Code: Alles auswählen

*** Warning: "is_multicast_ether_addr" [/home/jan/ipw/ieee80211-1.0.3.tgz_FILES/ieee80211-1.0.3/ieee80211.ko] undefined!
modprobe ieee80211 gibt wie erwartet wieder dieses aus:

Code: Alles auswählen

modprobe ieee80211
FATAL: Error inserting ieee80211 (/lib/modules/2.6.12-rc3-vidalinux/net/ieee80211/ieee80211.ko): Unknown symbol in module, or unknown parameter (see dmesg)
Freecoffee
Guru
Guru
Beiträge: 1750
Registriert: 29. Sep 2004, 17:00
Wohnort: Bayern

Beitrag von Freecoffee »

Das erinnert mich an das hier. Schau mal, ob dir das hilft.

Greetz, HB
vida_jan
Newbie
Newbie
Beiträge: 8
Registriert: 5. Aug 2005, 23:13

Beitrag von vida_jan »

ja, das wirds wohl sein ... wenn du mir nun kurz noch erklärst, wie ich das anstellen muss .. sry, aber habe noch nie ein kernel patch installiert und mir wäre es doch sehr wichtig, dass das 100% klappt ;)
Freecoffee
Guru
Guru
Beiträge: 1750
Registriert: 29. Sep 2004, 17:00
Wohnort: Bayern

Beitrag von Freecoffee »

Erst einmal musst du wissen, was du patchen möchtest. Da die patch-Dateien ganz normale ASCII-Textdateien sind, kannst du einfach hineinschauen, normalerweise steht das in der ersten Zeile. Dort steht dann ein Dateiname mit einem bestimmten Pfad. Hast du die gleiche Pfadstruktur, wechselst du in der Konsole in das Verzeichnis darüber und startest patch -p0 < bla.patch. Um einen Patch rückgängig zu machen, fügst du zusätzlich zwischen "patch" und "<" die Option "-R" ein.
Stimmt deine Pfadstruktur nicht mit der angegebenen überein, musst du abzählen, ab dem wievielten "/" von links sie wieder übereinstimmen. Dann wechselst du in der Konsole in die Verzeichnisebene oberhalb der Übereinstimmung und führst "patch -p3 < bla.patch" ein, wobei du "3" durch die gefundene Zahl der Schrägstriche ersetzt. Auch hier dient die Option -R zum Rückgängigmachen des Patches.

Greetz, HB
vida_jan
Newbie
Newbie
Beiträge: 8
Registriert: 5. Aug 2005, 23:13

Beitrag von vida_jan »

ich habe dich mal in icq hinzugefügt, denke, dass wir das dort schneller regeln können.

weiß nur nich, ob ich heute abend noch dazu komme .. ansonsten, schreiben wir uns die tage bestimmt mal. :)
Freecoffee
Guru
Guru
Beiträge: 1750
Registriert: 29. Sep 2004, 17:00
Wohnort: Bayern

Beitrag von Freecoffee »

Wohl nicht, bin ab morgen im Urlaub für 10 Tage. Danach gerne. :)

Greetz, HB
vida_jan
Newbie
Newbie
Beiträge: 8
Registriert: 5. Aug 2005, 23:13

Beitrag von vida_jan »

ahso .. nagut ;) ... dann wünsch ich dir viel spass im urlaub und besseres wetter als hier! :)

und vielen dank für deine hilfe :D
vida_jan
Newbie
Newbie
Beiträge: 8
Registriert: 5. Aug 2005, 23:13

Beitrag von vida_jan »

hmm .. vllt kannst du trotzdem mir nochmal kurz erklären, wie ich den patch genau anwende, also am beispiel ipw2200 .. welche datei brauche ich? .. fixed patch? .. oder corrected patch? .. wo speicher ich den patch und wie führ ich den dann genau aus? .. habs nämlich versucht und nicht hinbekommen, er sagt mir, dass er die zu patchende datei nicht findet :(
Freecoffee
Guru
Guru
Beiträge: 1750
Registriert: 29. Sep 2004, 17:00
Wohnort: Bayern

Beitrag von Freecoffee »

Wenn ich das richtig sehe, brauchst du den fix.patch.
Allerdings erscheinen mir die Pfadangaben dort sehr merkwürdig.
Wenn es damit nicht funktioniert, probier einmal diesen hier:

Code: Alles auswählen

diff --git a/ieee80211-1.0.3/ieee80211_tx.c b/ieee80211-1.0.3/ieee80211_tx.c
--- a/ieee80211-1.0.3/ieee80211_tx.c
+++ b/ieee80211-1.0.3/ieee80211_tx.c
@@ -337,8 +337,7 @@ int ieee80211_xmit(struct sk_buff *skb,
 
 	/* Determine fragmentation size based on destination (multicast
 	 * and broadcast are not fragmented) */
-	if (is_multicast_ether_addr(dest) ||
-	    is_broadcast_ether_addr(dest))
+	if (is_multicast_ether_addr(dest))
 		frag_size = MAX_FRAG_THRESHOLD;
 	else
 		frag_size = ieee->fts;
diff --git a/ipw2200/ipw2200.c b/ipw2200/ipw2200.c
--- a/ipw2200/ipw2200.c
+++ b/ipw2200/ipw2200.c
@@ -7258,9 +7258,8 @@ static inline int is_network_packet(stru
 		if (!memcmp(header->addr2, priv->net_dev->dev_addr, ETH_ALEN))
 			return 0;
 
-		/* {broad,multi}cast packets to our IBSS go through */
-		if (is_broadcast_ether_addr(header->addr1) ||
-		    is_multicast_ether_addr(header->addr1))
+		/* multicast packets to our IBSS go through */
+		if (is_multicast_ether_addr(header->addr1))
 			return !memcmp(header->addr3, priv->bssid, ETH_ALEN);
 
 		/* packets to our adapter go through */
@@ -7273,8 +7272,7 @@ static inline int is_network_packet(stru
 			return 0;
 
 		/* {broad,multi}cast packets to our IBSS go through */
-		if (is_broadcast_ether_addr(header->addr1) ||
-		    is_multicast_ether_addr(header->addr1))
+		if (is_multicast_ether_addr(header->addr1))
 			return !memcmp(header->addr2, priv->bssid, ETH_ALEN);
 
 		/* packets to our adapter go through */
@@ -9173,8 +9171,7 @@ static inline void ipw_tx_skb(struct ipw
 	switch (priv->ieee->iw_mode) {
 	case IW_MODE_ADHOC:
 		hdr_len = IEEE80211_3ADDR_LEN;
-		unicast = !is_broadcast_ether_addr(hdr->addr1) &&
-			!is_multicast_ether_addr(hdr->addr1);
+		unicast = !is_multicast_ether_addr(hdr->addr1);
 		id = ipw_find_station(priv, hdr->addr1);
 		if (id == IPW_INVALID_STATION) {
 			id = ipw_add_station(priv, hdr->addr1);
@@ -9189,8 +9186,7 @@ static inline void ipw_tx_skb(struct ipw
 
 	case IW_MODE_INFRA:
 	default:
-		unicast = !is_broadcast_ether_addr(hdr->addr3) &&
-			!is_multicast_ether_addr(hdr->addr3);
+		unicast = !is_multicast_ether_addr(hdr->addr3);
 		hdr_len = IEEE80211_3ADDR_LEN;
 		id = 0;
 		break;
diff --git a/ieee80211-1.0.3/net/ieee80211.h b/ieee80211-1.0.3/net/ieee80211.h
--- a/ieee80211-1.0.3/net/ieee80211.h
+++ b/ieee80211-1.0.3/net/ieee80211.h
@@ -719,16 +719,12 @@ enum ieee80211_state {
 #define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5]
 
 
-extern inline int is_multicast_ether_addr(const u8 *addr)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12)
+static inline int is_multicast_ether_addr(const u8 *addr)
 {
-	return ((addr[0] != 0xff) && (0x01 & addr[0]));
-}
-
-extern inline int is_broadcast_ether_addr(const u8 *addr)
-{
-	return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) &&   \
-		(addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
+	return addr[0] & 0x01;
 }
+#endif
 
 #define CFG_IEEE80211_RESERVE_FCS (1<<0)
 #define CFG_IEEE80211_COMPUTE_FCS (1<<1)
In einem Ordner bspw. /tmp entpackst du die beiden Archive (ieee80211 und ipw2200) in je einen Unterordner namens ieee80211-1.0.3 und ipw2200. Dann wechselst du in der Konsole in den Ordner (hier /tmp) und führst patch -p1 < wieauchimmer.patch aus.
Du kannst auch zur Not selbst die Pfadangaben in der Patch-Datei ändern. Wenn er eine Datei nicht findet, zeigt das Programm dir an, wo es gesucht hat.

Greetz, HB
Antworten