Skip to contentSkip to conversation

kernel 2.6: can't get 3c575/PCMCIA working - other PCMCIA card work

DISCUSSION martin f krafft 2 participants 8 messages Jan 6, 2004 – Jan 11, 2004

lore
Share & tools
lore
#0 lore raw

I have an ancient laptop with a yenta_socket PCMCIA bridge and three cards, each with Hinds' pcmcia-cs driver indicated:

Orinico Wireless LAN (wvlan_cs)
3COM 3c575 (3c575_cs)
Psion Gold Card Modem (serial_cs)

I have compiled a 2.6.0 kernel with the following relevant options:

CONFIG_PCMCIA=y
CONFIG_YENTA=y
CONFIG_CARDBUS=y
CONFIG_HOTPLUG_PCI=y
CONFIG_PCMCIA_HERMES=m
CONFIG_NET_PCMCIA=y
CONFIG_PCMCIA_3C574=m
CONFIG_SERIAL_8250=m
CONFIG_SERIAL_8250_CS=y

Furthermore, I installed the following relevant software packages:

ii  pcmcia-cs      3.2.5-2        PCMCIA Card Services for Linux
ii  hotplug        0.0.20031013-2 Linux Hotplug Scripts

I can get the Orinico card working just fine, and the modem is also detected perfectly. However, the 3c575 card won't be recognised. All I get from the hotplug system is:

pci.agent: ... no modules for PCI slot 0000:06:00.0

and that's whether I put "3c574_cs" into the $DRIVERS list of /etc/hotplug/pci.agent or not.

What's going on? Is the 3c575 not supported by 3c574_cs? Is there any way to get this card working?

Thanks,

Signature · 7 lines
martin;              (greetings from the heart of the sun.)
  \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net@madduck
 
invalid/expired pgp subkeys? use subkeys.pgp.net as keyserver!
 
"convictions are more dangerous enemies of truth than lies."
                                                 - friedrich nietzsche
#1 lore raw
Quoted 6 lines · martin f krafft

I have an ancient laptop with a yenta_socket PCMCIA bridge and three cards, each with Hinds' pcmcia-cs driver indicated:

Orinico Wireless LAN (wvlan_cs)
3COM 3c575 (3c575_cs)
Psion Gold Card Modem (serial_cs)

What is 3c575_cs ? I think you actually mean 3c574_cs. Or maybe you mean you have a 3com 3ccfe575 Cardbus card? The above is rather too ambiguous.

Quoted 4 lines

However, the 3c575 card won't be recognised. All
I get from the hotplug system is:

pci.agent: ... no modules for PCI slot 0000:06:00.0

This indicates that the card you inserted is a Cardbus card. In which case, the PCMCIA driver "3c574_cs" is definitely not what you want. You want to use the 3c59x driver, though the hotplug subsystem should automatically pick that up from the PCI ids.

Could you insert the card, and then provide the output of lspci -vx ?

Signature · 4 lines
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 PCMCIA      - http://pcmcia.arm.linux.org.uk/
                 2.6 Serial core
#2 lore raw

Thanks for taking the time to reply!

also sprach Russell King <[email protected]> [2004.01.11.1300 +0100]:

Quoted 7 lines
Quoted 3 lines

Orinico Wireless LAN (wvlan_cs)
3COM 3c575 (3c575_cs)
Psion Gold Card Modem (serial_cs)

What is 3c575_cs ? I think you actually mean 3c574_cs. Or maybe you mean you have a 3com 3ccfe575 Cardbus card? The above is rather too ambiguous.

The card is a 3CCFE575BT-D. Under 2.4 with Hinds' pcmcia-cs modules, the driver was called 3c575_cs. Under 2.6 with the kernel drivers, only 3c574_cs exists. I assumed that 3c574_cs would also support the 3c575_cs, but I guess I am wrong.

A 3CCFE574BT works just fine with 574_cs (although upon removal, ifconfig will hang in the 'D' state forever. I guess that's a separate issue though. I will research this and post another time.

Quoted 9 lines
Quoted 4 lines

However, the 3c575 card won't be recognised. All
I get from the hotplug system is:

pci.agent: ... no modules for PCI slot 0000:06:00.0

This indicates that the card you inserted is a Cardbus card. In which case, the PCMCIA driver "3c574_cs" is definitely not what you want. You want to use the 3c59x driver, though the hotplug subsystem should automatically pick that up from the PCI ids.

Interesting. Well, I do not have 3c59x compiled in the kernel. I shall do this and find out.

Quoted 1 line

Could you insert the card, and then provide the output of lspci -vx ?

ftp://ftp.madduck.net/scratch/3c575-lspci.gz [1.5Kb]

Thanks for your time!

Signature · 8 lines
martin;              (greetings from the heart of the sun.)
  \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net@madduck
 
invalid/expired pgp subkeys? use subkeys.pgp.net as keyserver!
 
until lions have their historians,
tales of the hunt shall always glorify the hunter.
                                                    -- african proverb
#3 lore raw
Quoted 4 lines · martin f krafft

The card is a 3CCFE575BT-D. Under 2.4 with Hinds' pcmcia-cs modules, the driver was called 3c575_cs. Under 2.6 with the kernel drivers, only 3c574_cs exists. I assumed that 3c574_cs would also support the 3c575_cs, but I guess I am wrong.

The situation in vanilla 2.4 and 2.6 kernels is as follows: xxx_cs drivers only drive PCMCIA cards. They do not drive Cardbus cards - Cardbus cards look exactly like normal PCI cards, and are therefore the drivers are handled by the PCI subsystem. PCMCIA helps out only to detect the card insertion/removal events.

Hope this helps to make things a little clearer.

Quoted 3 lines

A 3CCFE574BT works just fine with 574_cs (although upon removal, ifconfig will hang in the 'D' state forever. I guess that's a separate issue though. I will research this and post another time.

Indeed.

Quoted 3 lines
Quoted 1 line

Could you insert the card, and then provide the output of lspci -vx ?

ftp://ftp.madduck.net/scratch/3c575-lspci.gz [1.5Kb]

... which seems to be exactly the same as my 3ccfe575bt card I have here. I note though that the product description seems to be wrong (the PCI IDs are identical.) The card is most definitely "3CCFE575BT" and not "3c575".

Yours:

02:00.0 Ethernet controller: 3Com Corporation 3c575 [Megahertz] 10/100 LAN Card Bus (rev 01)
Subsystem: 3Com Corporation 3C575 Megahertz 10/100 LAN Cardbus PC Card

Mine:

04:00.0 Ethernet controller: 3Com Corporation 3CCFE575BT Cyclone CardBus (rev 01)
Subsystem: 3Com Corporation 3C575 Megahertz 10/100 LAN Cardbus PC Card

Socket 1:
product info: "3Com Corporation", "3CCFE575BT", "LAN Cardbus Card", "001"
manfid: 0x0101, 0x5157
function: 6 (network)

Signature · 4 lines
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 PCMCIA      - http://pcmcia.arm.linux.org.uk/
                 2.6 Serial core
#4 lore raw

also sprach Russell King <[email protected]> [2004.01.11.1354 +0100]:

Quoted 1 line

Hope this helps to make things a little clearer.

It does. Thanks. (It's very cool!)

Quoted 3 lines

... which seems to be exactly the same as my 3ccfe575bt card I have here. I note though that the product description seems to be wrong (the PCI IDs are identical.) The card is most definitely "3CCFE575BT" and not "3c575".

Well, it does have a -D after the 3CCFE575BT (as read on the card itself)

Anyhow, I will recompile 2.6.1 with 3c59x and then report.

Thanks for your time!

Signature · 6 lines
martin;              (greetings from the heart of the sun.)
  \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net@madduck
 
invalid/expired pgp subkeys? use subkeys.pgp.net as keyserver!
 
"every day is long. 86400 doesn't fit in a short."
#5 lore raw
In reply to Russell King

also sprach Russell King <[email protected]> [2004.01.11.1354 +0100]:

Quoted 3 lines

Cardbus cards look exactly like normal PCI cards, and are therefore the drivers are handled by the PCI subsystem. PCMCIA helps out only to detect the card insertion/removal events.

Are you sure about the latter. Cause the driver gets loaded whether cardmgr is started or not. But in any case, cardmgr does not configure the interface. Where can I find the hook for Cardbus cards to do configuration after initialisation?

Signature · 8 lines
martin;              (greetings from the heart of the sun.)
  \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net@madduck
 
invalid/expired pgp subkeys? use subkeys.pgp.net as keyserver!
 
"i wish there was a knob on the tv to turn up the intelligence.
 there's a knob called 'brightness', but it doesn't seem to work."
                                                          -- gallagher
#6 lore raw
Quoted 6 lines · martin f krafft

also sprach Russell King <[email protected]> [2004.01.11.1354 +0100]:

Quoted 3 lines

Cardbus cards look exactly like normal PCI cards, and are therefore the drivers are handled by the PCI subsystem. PCMCIA helps out only to detect the card insertion/removal events.

Are you sure about the latter.

Yes.

Quoted 2 lines

Cause the driver gets loaded whether cardmgr is started or not. But in any case, cardmgr does not configure the interface.

cardmgr doesn't play a part when you've inserted a cardbus card - it doesn't even know that a card has been inserted into the slot.

Quoted 2 lines

Where can I find
the hook for Cardbus cards to do configuration after initialisation?

It's all done via the hotplug subsystem, which is integrated into the driver model.

Basically, we discover that a cardbus card has been inserted, and ask the PCI layer to scan the slot. We add the new device to the list of PCI devices, which automatically causes the hotplug system to call /sbin/hotplug for the new PCI device.

The hotplug scripts are then supposed to load the driver as necessary (using /etc/modules.conf) which creates a network interface. This then causes the hotplug scripts to be invoked again, this time for the new network interface, which should configure it.

Signature · 4 lines
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 PCMCIA      - http://pcmcia.arm.linux.org.uk/
                 2.6 Serial core
#7 lore raw

also sprach Russell King <[email protected]> [2004.01.11.1602 +0100]:

Quoted 5 lines
Quoted 2 lines

Cause the driver gets loaded whether cardmgr is started or not. But in any case, cardmgr does not configure the interface.

cardmgr doesn't play a part when you've inserted a cardbus card - it doesn't even know that a card has been inserted into the slot.

So with 'PCMCIA' you didn't mean the user-space programs.

Quoted 5 lines

The hotplug scripts are then supposed to load the driver as necessary (using /etc/modules.conf) which creates a network interface. This then causes the hotplug scripts to be invoked again, this time for the new network interface, which should configure it.

Nifty. I will RTFM and hopefully find my way around in this versatile complexity.

Cheers,

Signature · 10 lines
martin;              (greetings from the heart of the sun.)
  \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net@madduck
 
invalid/expired pgp subkeys? use subkeys.pgp.net as keyserver!
 
"when faced with a new problem, the wise algorithmist
 will first attempt to classify it as np-complete.
 this will avoid many tears and tantrums as
 algorithm after algorithm fails."
                                                          -- g. niruta