Compat Wireless 3.6.8 1 Snpc Tar Bz2
0902
- Nov 18, 2013 Re: Compat wireless patched for 3.8 & 3.9 « Reply #21 on: November 15, 2013, 06:34:50 AM » So, is this all you did to the kernel and drivers? That is very interesting. These instructions are of course well known and I applied them allways.
- How to install Atheros AR8162 Ethernet drivers If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.
I posted a question earlier that got no traction regarding compiling the RTL8187 drivers for the infinity for use in backtrack for ARM.
I have since completed the compile and have successfully used the adapter I bought on the tablet with them. What is attached are the compiled compat-wireless drivers, specifically: compat-wireless-3.6.8-1-snpc.tar.bz2
They include the 'mac80211.compat08082009.wl_frag+ack_v1.patch' and the 'channel-negative-one-maxim.patch'
I am attaching them for those interested or who have a similar need. I am not interested in being bombarded with questions/complaints about it not working for them or whatever. I may post a tutorial later with the problems I ran across and how I compiled these drivers that may help others with different chipsets.
These drivers work successfully with BT5 for ARM on my infinity and an ebay RTL8187L chipset external USB wireless device. To see more ID's they might work check here for RTL8187 PCI ID's that compat-wireless drivers might work for: http://linuxwireless.org/en/users/Drivers/rtl8187
Once in backtrack you will need to MAKE SURE the built in wireless is turned off on the tablet then in terminal with SU:
rmmod bcmdhd.ko
You will have to have the compat-wireless package I referenced above downloaded and uncompress and run: make wlunload in the folder you uncompress it to.
This will get rid of cfg80211.ko rmmod would probably work for that too but I know this works.
Now insmod in the following order:
insmod eeprom_93cx6.ko
insmod compat.ko
insmod cfg80211.ko
insmod mac80211.ko
insmod rtl8187.ko
It can all be scripted, feel free to do so.
With your wireless device plugged in to USB run airmon-ng and you should see your card in the list.
You will have to of course reboot to re-enable the built-in wireless.
Enjoy!
PermalinkBrowse filesI have since completed the compile and have successfully used the adapter I bought on the tablet with them. What is attached are the compiled compat-wireless drivers, specifically: compat-wireless-3.6.8-1-snpc.tar.bz2
They include the 'mac80211.compat08082009.wl_frag+ack_v1.patch' and the 'channel-negative-one-maxim.patch'
I am attaching them for those interested or who have a similar need. I am not interested in being bombarded with questions/complaints about it not working for them or whatever. I may post a tutorial later with the problems I ran across and how I compiled these drivers that may help others with different chipsets.
These drivers work successfully with BT5 for ARM on my infinity and an ebay RTL8187L chipset external USB wireless device. To see more ID's they might work check here for RTL8187 PCI ID's that compat-wireless drivers might work for: http://linuxwireless.org/en/users/Drivers/rtl8187
Once in backtrack you will need to MAKE SURE the built in wireless is turned off on the tablet then in terminal with SU:
rmmod bcmdhd.ko
You will have to have the compat-wireless package I referenced above downloaded and uncompress and run: make wlunload in the folder you uncompress it to.
This will get rid of cfg80211.ko rmmod would probably work for that too but I know this works.
Now insmod in the following order:
insmod eeprom_93cx6.ko
insmod compat.ko
insmod cfg80211.ko
insmod mac80211.ko
insmod rtl8187.ko
It can all be scripted, feel free to do so.
With your wireless device plugged in to USB run airmon-ng and you should see your card in the list.
You will have to of course reboot to re-enable the built-in wireless.
Enjoy!
* Version based on latest linux-next.git tree named compat-wireless-YYYY-MM-DD.tar.bz2 * Version based on linux-2.6-stable.git tree named compat-wireless-2.6.CC.DD.tar.bz2 Both versions should work for every kernel > 2.6.24.
initial commit from compat-wireless-2.6.39-1.tar.bz2
Showing 1,358 changed files with 856,731 additions and 0 deletions.
356 COPYRIGHT
Oops, something went wrong.
467 Makefile
Compat Wireless 3.6 8 1 Snpc Tar Bz2 Download
Oops, something went wrong.
417 README
Oops, something went wrong.
14 code-metrics.txt
@@ -0,0 +1,14 @@ | |
001b[36mcompat-wireless code metrics001b[00m | |
001b[35m 832630001b[00m - Total upstream lines of code being pulled | |
001b[01;32m 2215001b[00m - backport code changes | |
001b[01;32m 1922001b[00m - backport code additions | |
001b[01;32m 293001b[00m - backport code deletions | |
001b[01;32m 7534001b[00m - backport from compat module | |
001b[01;32m 9749001b[00m - total backport code | |
001b[31m 1.1709001b[00m - % of code consists of backport work | |
Base tree: 001b[01;32mlinux-2.6-allstable.git001b[00m | |
Base tree version: 001b[35mv2.6.39001b[00m | |
compat-wireless release: 001b[01;33mcompat-wireless-v2.6.39-1001b[00m |
32 compat/Makefile
@@ -0,0 +1,32 @@ | |
obj-m += compat.o | |
#compat-objs := | |
obj-$(CONFIG_COMPAT_FIRMWARE_CLASS) += compat_firmware_class.o | |
obj-$(CONFIG_COMPAT_KFIFO) += kfifo.o | |
compat-y += main.o | |
# Compat kernel compatibility code | |
compat-$(CONFIG_COMPAT_KERNEL_14) += compat-2.6.14.o | |
compat-$(CONFIG_COMPAT_KERNEL_18) += compat-2.6.18.o | |
compat-$(CONFIG_COMPAT_KERNEL_19) += compat-2.6.19.o | |
compat-$(CONFIG_COMPAT_KERNEL_21) += compat-2.6.21.o | |
compat-$(CONFIG_COMPAT_KERNEL_22) += compat-2.6.22.o | |
compat-$(CONFIG_COMPAT_KERNEL_23) += compat-2.6.23.o | |
compat-$(CONFIG_COMPAT_KERNEL_24) += compat-2.6.24.o | |
compat-$(CONFIG_COMPAT_KERNEL_25) += | |
compat-2.6.25.o | |
pm_qos_params.o | |
compat-$(CONFIG_COMPAT_KERNEL_26) += compat-2.6.26.o | |
compat-$(CONFIG_COMPAT_KERNEL_27) += compat-2.6.27.o | |
compat-$(CONFIG_COMPAT_KERNEL_28) += compat-2.6.28.o | |
compat-$(CONFIG_COMPAT_KERNEL_29) += compat-2.6.29.o | |
compat-$(CONFIG_COMPAT_KERNEL_32) += compat-2.6.32.o | |
compat-$(CONFIG_COMPAT_KERNEL_33) += compat-2.6.33.o | |
compat-$(CONFIG_COMPAT_KERNEL_35) += compat-2.6.35.o | |
compat-$(CONFIG_COMPAT_KERNEL_36) += compat-2.6.36.o | |
compat-$(CONFIG_COMPAT_KERNEL_37) += compat-2.6.37.o | |
compat-$(CONFIG_COMPAT_KERNEL_38) += compat-2.6.38.o | |
compat-$(CONFIG_COMPAT_KERNEL_39) += compat-2.6.39.o |
14 compat/compat-2.6.14.c
@@ -0,0 +1,14 @@ | |
/* | |
* Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
* | |
* Compatibility file for Linux wireless for kernels 2.6.14. | |
*/ | |
#include<net/compat.h> | |
/* 2.6.14 compat code goes here */ | |
14 compat/compat-2.6.18.c
@@ -0,0 +1,14 @@ | |
/* | |
* Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
* | |
* Compatibility file for Linux wireless for kernels 2.6.18. | |
*/ | |
#include<net/compat.h> | |
/* 2.6.18 compat code goes here */ | |
14 compat/compat-2.6.19.c
@@ -0,0 +1,14 @@ | |
/* | |
* Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
* | |
* Compatibility file for Linux wireless for kernels 2.6.19. | |
*/ | |
#include<net/compat.h> | |
/* 2.6.19 compat code goes here */ | |
14 compat/compat-2.6.21.c
@@ -0,0 +1,14 @@ | |
/* | |
* Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
* | |
* Compatibility file for Linux wireless for kernels 2.6.21. | |
*/ | |
#include<net/compat.h> | |
/* 2.6.21 compat code goes here */ | |
14 compat/compat-2.6.22.c
@@ -0,0 +1,14 @@ | |
/* | |
* Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
* | |
* Compatibility file for Linux wireless for kernels 2.6.22. | |
*/ | |
#include<net/compat.h> | |
/* 2.6.22 compat code goes here */ | |
239 compat/compat-2.6.23.c
@@ -0,0 +1,239 @@ | |
/* | |
* Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
* | |
* Compatibility file for Linux wireless for kernels 2.6.23. | |
*/ | |
#include<net/compat.h> | |
/* On net/core/dev.c as of 2.6.24 */ | |
int__dev_addr_delete(struct dev_addr_list **list, int *count, | |
void *addr, int alen, int glbl) | |
{ | |
struct dev_addr_list *da; | |
for (; (da = *list) != NULL; list = &da->next) { | |
if (memcmp(da->da_addr, addr, da->da_addrlen) 0 && | |
alen da->da_addrlen) { | |
if (glbl) { | |
int old_glbl = da->da_gusers; | |
da->da_gusers = 0; | |
if (old_glbl 0) | |
break; | |
} | |
if (--da->da_users) | |
return0; | |
*list = da->next; | |
kfree(da); | |
(*count)--; | |
return0; | |
} | |
} | |
return -ENOENT; | |
} | |
EXPORT_SYMBOL(__dev_addr_delete); | |
/* On net/core/dev.c as of 2.6.24. This is not yet used by mac80211 but | |
* might as well add it */ | |
int__dev_addr_add(struct dev_addr_list **list, int *count, | |
void *addr, int alen, int glbl) | |
{ | |
struct dev_addr_list *da; | |
for (da = *list; da != NULL; da = da->next) { | |
if (memcmp(da->da_addr, addr, da->da_addrlen) 0 && | |
da->da_addrlen alen) { | |
if (glbl) { | |
int old_glbl = da->da_gusers; | |
da->da_gusers = 1; | |
if (old_glbl) | |
return0; | |
} | |
da->da_users++; | |
return0; | |
} | |
} | |
da = kmalloc(sizeof(*da), GFP_ATOMIC); | |
if (da NULL) | |
return -ENOMEM; | |
memcpy(da->da_addr, addr, alen); | |
da->da_addrlen = alen; | |
da->da_users = 1; | |
da->da_gusers = glbl ? 1 : 0; | |
da->next = *list; | |
*list = da; | |
(*count)++; | |
return0; | |
} | |
EXPORT_SYMBOL(__dev_addr_add); | |
/* Part of net/core/dev_mcast.c as of 2.6.23. This is a slightly different version. | |
* Since da->da_synced is not part of 2.6.22 we need to take longer route when | |
* syncing */ | |
/** | |
* dev_mc_sync - Synchronize device's multicast list to another device | |
* @to: destination device | |
* @from: source device | |
* | |
* Add newly added addresses to the destination device and release | |
* addresses that have no users left. The source device must be | |
* locked by netif_tx_lock_bh. | |
* | |
* This function is intended to be called from the dev->set_multicast_list | |
* function of layered software devices. | |
*/ | |
intdev_mc_sync(struct net_device *to, struct net_device *from) | |
{ | |
struct dev_addr_list *da, *next, *da_to; | |
int err = 0; | |
netif_tx_lock_bh(to); | |
da = from->mc_list; | |
while (da != NULL) { | |
int synced = 0; | |
next = da->next; | |
da_to = to->mc_list; | |
/* 2.6.22 does not have da->da_synced so lets take the long route */ | |
while (da_to != NULL) { | |
if (memcmp(da_to->da_addr, da->da_addr, da_to->da_addrlen) 0 && | |
da->da_addrlen da_to->da_addrlen) | |
synced = 1; | |
break; | |
} | |
if (!synced) { | |
err = __dev_addr_add(&to->mc_list, &to->mc_count, | |
da->da_addr, da->da_addrlen, 0); | |
if (err < 0) | |
break; | |
da->da_users++; | |
} elseif (da->da_users1) { | |
__dev_addr_delete(&to->mc_list, &to->mc_count, | |
da->da_addr, da->da_addrlen, 0); | |
__dev_addr_delete(&from->mc_list, &from->mc_count, | |
da->da_addr, da->da_addrlen, 0); | |
} | |
da = next; | |
} | |
if (!err) | |
__dev_set_rx_mode(to); | |
netif_tx_unlock_bh(to); | |
return err; | |
} | |
EXPORT_SYMBOL(dev_mc_sync); | |
/* Part of net/core/dev_mcast.c as of 2.6.23. This is a slighty different version. | |
* Since da->da_synced is not part of 2.6.22 we need to take longer route when | |
* unsyncing */ | |
/** | |
* dev_mc_unsync - Remove synchronized addresses from the destination | |
* device | |
* @to: destination device | |
* @from: source device | |
* | |
* Remove all addresses that were added to the destination device by | |
* dev_mc_sync(). This function is intended to be called from the | |
* dev->stop function of layered software devices. | |
*/ | |
voiddev_mc_unsync(struct net_device *to, struct net_device *from) | |
{ | |
struct dev_addr_list *da, *next, *da_to; | |
netif_tx_lock_bh(from); | |
netif_tx_lock_bh(to); | |
da = from->mc_list; | |
while (da != NULL) { | |
bool synced = false; | |
next = da->next; | |
da_to = to->mc_list; | |
/* 2.6.22 does not have da->da_synced so lets take the long route */ | |
while (da_to != NULL) { | |
if (memcmp(da_to->da_addr, da->da_addr, da_to->da_addrlen) 0 && | |
da->da_addrlen da_to->da_addrlen) | |
synced = true; | |
break; | |
} | |
if (!synced) { | |
da = next; | |
continue; | |
} | |
__dev_addr_delete(&to->mc_list, &to->mc_count, | |
da->da_addr, da->da_addrlen, 0); | |
__dev_addr_delete(&from->mc_list, &from->mc_count, | |
da->da_addr, da->da_addrlen, 0); | |
da = next; | |
} | |
__dev_set_rx_mode(to); | |
netif_tx_unlock_bh(to); | |
netif_tx_unlock_bh(from); | |
} | |
EXPORT_SYMBOL(dev_mc_unsync); | |
/* Added as of 2.6.23 on net/core/dev.c. Slightly modifed, no dev->set_rx_mode on | |
* 2.6.22 so ignore that. */ | |
/* | |
* Upload unicast and multicast address lists to device and | |
* configure RX filtering. When the device doesn't support unicast | |
* filtering it is put in promiscous mode while unicast addresses | |
* are present. | |
*/ | |
void__dev_set_rx_mode(struct net_device *dev) | |
{ | |
/* dev_open will call this function so the list will stay sane. */ | |
if (!(dev->flags&IFF_UP)) | |
return; | |
if (!netif_device_present(dev)) | |
return; | |
/* This needs to be ported to 2.6.22 framework */ | |
#if0 | |
/* Unicast addresses changes may only happen under the rtnl, | |
* therefore calling __dev_set_promiscuity here is safe. | |
*/ | |
if (dev->uc_count > 0 && !dev->uc_promisc) { | |
__dev_set_promiscuity(dev, 1); | |
dev->uc_promisc = 1; | |
} else if (dev->uc_count 0 && dev->uc_promisc) { | |
__dev_set_promiscuity(dev, -1); | |
dev->uc_promisc = 0; | |
} | |
#endif | |
if (dev->set_multicast_list) | |
dev->set_multicast_list(dev); | |
} | |
/** | |
* pci_try_set_mwi - enables memory-write-invalidate PCI transaction | |
* @dev: the PCI device for which MWI is enabled | |
* | |
* Enables the Memory-Write-Invalidate transaction in %PCI_COMMAND. | |
* Callers are not required to check the return value. | |
* | |
* RETURNS: An appropriate -ERRNO error value on error, or zero for success. | |
*/ | |
intpci_try_set_mwi(struct pci_dev *dev) | |
{ | |
int rc = 0; | |
#ifdef HAVE_PCI_SET_MWI | |
rc = pci_set_mwi(dev); | |
#endif | |
return rc; | |
} | |
EXPORT_SYMBOL(pci_try_set_mwi); | |
#endif | |
Please sign in to comment.