Return-path: Received: from mail-oa0-f53.google.com ([209.85.219.53]:58945 "EHLO mail-oa0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751637Ab3K3RHc (ORCPT ); Sat, 30 Nov 2013 12:07:32 -0500 Received: by mail-oa0-f53.google.com with SMTP id m1so11315512oag.26 for ; Sat, 30 Nov 2013 09:07:31 -0800 (PST) Message-ID: <529A1B52.6040605@lwfinger.net> (sfid-20131130_180736_573286_BD840A8D) Date: Sat, 30 Nov 2013 11:07:30 -0600 From: Larry Finger MIME-Version: 1.0 To: "Nikita N." , linux-wireless@vger.kernel.org Subject: Re: RTL8187 bugs References: <1385589961.19021.52907237.3EE33E5B@webmail.messagingengine.com> <52966D64.2030805@lwfinger.net> <1385593188.3627.52911717.4E0712D9@webmail.messagingengine.com> <52968893.6060405@lwfinger.net> <1385812990.14905.53777877.7646278B@webmail.messagingengine.com> In-Reply-To: <1385812990.14905.53777877.7646278B@webmail.messagingengine.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Sender: linux-wireless-owner@vger.kernel.org List-ID: On 11/30/2013 06:03 AM, Nikita N. wrote: > We got it Larry! :) > eeprom module is *MISSING*! :) > Here what I did - I just added the following debug line in rtl8187_probe > just after eeprom_93cx6_multiread call: > printk(KERN_WARNING "mac_addr= %pM\n",mac_addr); > the result was: > " > Loading modules backported from Linux version v3.13-rc1-0-g6ce4eac > Backport generated by backports.git v3.13-rc1-1-0-g988d789 > cfg80211: Calling CRDA to update world regulatory domain > cfg80211: World regulatory domain updated: > cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, > max_eirp) > cfg80211: (2402000 KHz - 2494000 KHz @ 40000 KHz), (N/A, 3000 mBm) > cfg80211: (4910000 KHz - 5235000 KHz @ 40000 KHz), (N/A, 3000 mBm) > NET: Registered protocol family 10 > mac_addr= 00:00:00:00:00:00 > rtl8187: Invalid hwaddr! Using randomly generated MAC address > ieee80211 phy0: Selected rate control algorithm 'minstrel_ht' > ieee80211 phy0: hwaddr f2:0c:b5:7e:10:b8, RTL8187vB (default) V1 + > rtl8225z2, rfkill mask 2 > rtl8187: Customer ID is 0x00 > Registered led device: rtl8187-phy0::radio > Registered led device: rtl8187-phy0::tx > Registered led device: rtl8187-phy0::rx > rtl8187: wireless switch is on > usbcore: registered new interface driver rtl8187 > " > > mac_addr=00 told me that maybe something is wrong into eeprom library?? > and in fact what a surprise, library is what, oops, missing! :)) > Compilation gives no errors because in the .h eeprom functions are > defined as external, but at runtime.. who knows what system library > picked up to set/get eeprom params!? some lost old bugged code, thats > what scares me.. :P > > Anyway, I went back and copied the eeprom module from compat 3.9 to > backport 3.13 tree: > backports-3.13-rc1-1/drivers/misc/eeprom/Makefile > obj-$(CPTCFG_EEPROM_93CX6) += eeprom_93cx6.o > backports-3.13-rc1-1/Makefile.kernel > obj-$(CPTCFG_MAC80211) += drivers/misc/eeprom/ > backports-3.13-rc1-1/drivers/misc/eeprom/eeprom_93cx6.c > Make install again, and voila: > " > Loading modules backported from Linux version v3.13-rc1-0-g6ce4eac > Backport generated by backports.git v3.13-rc1-1-0-g988d789 > cfg80211: Calling CRDA to update world regulatory domain > NET: Registered protocol family 10 > mac_addr= 00:e0:6c:X:X:X > ieee80211 phy0: Selected rate control algorithm 'minstrel_ht' > ieee80211 phy0: hwaddr 00:e0:6c:X:X:X, RTL8187vB (default) V1 + > rtl8225z2, rfkill mask 2 > " > The right mac address is back! :) > > But unfortunately that didnt solve the issue with bad filtered frames in > monitor mode :( > I have the heavy suspect that this eeprom bug could be the cause, as we > dont know which library used to set the eeprom data - hence eeprom data > got corrupted. > And I indeed noticed, as you too I hope, that sometimes after changing > mac by WindowsXP tool or macchanger, the faked mac persists after reboot > and is detected by linux afterwords! some weird data could really be > left persistent into interface.. > > So, I really count on your honest professionalism to help me in fixing > this frames issue, because if it happened now, it can happen again with > other users and other interfaces.. and we cant keep trashing interfaces > because we dont know where the problem comes from.. dont you agree? I still do not believe that you "trashed" your device. You were not corrupting the EEPROM data, you were missing the driver to load the data, thus the driver was making up the data. In the kernel, the configuration process forces the EEPROM driver to be selected whenever the RTL8187 driver is selected, thus I cannot even simulate this "problem". From this and other "bugs" you are reporting, it is clear that your kernel configuration is severely broken. You are perfectly welcome to hack at the driver as much as you want, but be aware that the kind of packet filtering you are asking about is done by the firmware on the device. As we have no access to that firmware, there is little that can be done. If you are correct that there was a regression that caused monitor mode to fail at some point, then I suggest that you bisect the problem. As rtl8187 has not changed in several years, that regression is likely caused by some other part of the wireless stack. The last time I used one of my rtl8187 devices in monitor mode was with a 3.12 kernel, and it worked with kismet and captured all the data I needed. Larry