2012-03-12 16:49:37

by Larry Finger

[permalink] [raw]
Subject: Re: Linux Kernel /staging/rtl8192e network module

On 03/12/2012 10:39 AM, althaser wrote:
> Dear Larry,
>
> I don't know if you are the right person to report this bug, but if you can
> report to the right place I would be grateful.
>
> ATM, the module rtl8192e (r8192e_pci.ko) isn't auto-loaded into the kernel.
> It is rtl8192se, but this module doesn't work with rtl8192e board.
>
> The right module should be r8192e_pci.
>
> I have:
>
> # lspci -vvv
> 03:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8192E/RTL8192SE
> Wireless LAN Controller (rev 01)
> Subsystem: Askey Computer Corp. Device 7160
> Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping-
> SERR+ FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort-
> >SERR- <PERR- INTx-
> Interrupt: pin A routed to IRQ 16
> Region 0: I/O ports at 3000 [size=256]
> Region 1: Memory at f0700000 (32-bit, non-prefetchable) [size=16K]
> Capabilities: [40] Power Management version 3
> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
> Address: 0000000000000000 Data: 0000
> Capabilities: [70] Express (v1) Legacy Endpoint, MSI 00
> DevCap:MaxPayload 256 bytes, PhantFunc 0, Latency L0s <128ns, L1 <2us
> ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> DevCtl:Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 512 bytes
> DevSta:CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
> LnkCap:Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 <512ns, L1 <64us
> ClockPM+ Surprise- LLActRep- BwNot-
> LnkCtl:ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta:Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> Capabilities: [100 v1] Advanced Error Reporting
> UESta:DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC-
> UnsupReq- ACSViol-
> UEMsk:DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC-
> UnsupReq- ACSViol-
> UESvrt:DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC-
> UnsupReq- ACSViol-
> CESta:RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
> CEMsk:RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
> AERCap:First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
> Capabilities: [140 v1] Virtual Channel
> Caps:LPEVC=0 RefClk=100ns PATEntryBits=1
> Arb:Fixed- WRR32- WRR64- WRR128-
> Ctrl:ArbSelect=Fixed
> Status:InProgress-
> VC0:Caps:PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> Arb:Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> Ctrl:Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
> Status:NegoPending- InProgress-
> Capabilities: [160 v1] Device Serial Number ea-db-a7-fe-ff-b6-26-00
>
>
> $ lshal
> udi = '/org/freedesktop/Hal/devices/pci_10ec_8192'
> info.parent = '/org/freedesktop/Hal/devices/pci_8086_3b42' (string)
> info.product = 'RTL8192E/RTL8192SE Wireless LAN Controller' (string)
> info.subsystem = 'pci' (string)
> info.udi = '/org/freedesktop/Hal/devices/pci_10ec_8192' (string)
> info.vendor = 'Realtek Semiconductor Co., Ltd.' (string)
> linux.hotplug_type = 2 (0x2) (int)
> linux.subsystem = 'pci' (string)
> linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1c.0/0000:03:00.0' (string)
> pci.device_class = 2 (0x2) (int)
> pci.device_protocol = 0 (0x0) (int)
> pci.device_subclass = 128 (0x80) (int)
> pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1c.0/0000:03:00.0'
> (string)
> pci.product = 'RTL8192E/RTL8192SE Wireless LAN Controller' (string)
> pci.product_id = 33170 (0x8192) (int)
> pci.subsys_product_id = 29024 (0x7160) (int)
> pci.subsys_vendor = 'Askey Computer Corp.' (string)
> pci.subsys_vendor_id = 5199 (0x144f) (int)
> pci.vendor = 'Realtek Semiconductor Co., Ltd.' (string)
> pci.vendor_id = 4332 (0x10ec) (int)
>
> running 3.2.9 kernel version

This is not a bug. There are two kinds of devices that have PCI ID 10ec:8192,
and therefore 2 drivers. During the bus scan, it is possible that both of the
drivers will be loaded. Each of them tests the PCI revision ID. If it is 0x10,
then rtl8192se is the correct driver, whereas if it is 0x01, then r8192e_pci is
needed. Kernel 3.2.9 contains the code for these tests.

If the correct driver is loaded first, then the second will never be tested;
however, if the wrong one is first, then it will still be in memory, but it will
be inactive and have no devices attached to it. That is likely the case with
your system.

Is driver r8192e_pci generated for your kernel? What does 'modinfo r8192e_pci'
show? A number of distros make the decision not to generate many modules from
the staging tree. Perhaps yours is one of them.

Larry