WANTED: someone who knows what exactly that ssb thingy is intended/used for

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

WANTED: someone who knows what exactly that ssb thingy is intended/used for

Stefan Bader-2
Hi all,

I somehow wondered why on a Dell Inspiron 1521 the wireless is not cooperating
by default. The problem turns out to be the ssb module, which is not only a
dependency to the b44 driver (for the wired network card) but also likes to
handle the Broadcom 4328 device.

The PCI bus looks like this (skipping some non-relevant devices):

-[0000:00]-+-00.0  ATI Technologies Inc RS690 Host Bridge [1002:7910]
            +-05.0-[0000:0b]----00.0  Broadcom Corporation BCM4328 802.11a/b/g/n
            |                         [14e4:4328]
            +-14.0  ATI Technologies Inc SBx00 SMBus Controller [1002:4385]
            +-14.1  ATI Technologies Inc SB600 IDE [1002:438c]
            +-14.2  ATI Technologies Inc SBx00 Azalia (Intel HDA) [1002:4383]
            +-14.3  ATI Technologies Inc SB600 PCI to LPC Bridge [1002:438d]
            +-14.4-[0000:03]--+-00.0  Broadcom Corporation BCM4401-B0 100Base-TX
            |                 |       [14e4:170c]
            |                 +-01.0  Ricoh Co Ltd R5C832 IEEE 1394 Controller
            |                 |       [1180:0832]
            |                 +-01.1  Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro
            |                 |       Host Adapter [1180:0822]
            |                 +-01.2  Ricoh Co Ltd R5C843 MMC Host Controller
            |                 |       [1180:0843]
            |                 +-01.3  Ricoh Co Ltd R5C592 Memory Stick Bus Host
            |                 |       Adapter [1180:0592]
            |                 \-01.4  Ricoh Co Ltd xD-Picture Card Controller
                                      [1180:0852]
with
00:05.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (PCI Express
                     Port 1)
0b:00.0 Network controller: Broadcom Corporation BCM4328 802.11a/b/g/n (rev 03)
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge


In the end wireless works well when removing b44, ssb and wl. Then loading wl
first, followed by b44 (which pulls in ssb).
Somehow I got no clear idea what the ssb is and how it would look if present.
Would a PCI-SSB bridge look different or is Broadcom using the same PCI ID for
different devices? Both drivers clearly match for the same PCI ID and are the
only ones to do so.

Any hints appreciated.

Stefan

--

When all other means of communication fail, try words!



--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

Re: WANTED: someone who knows what exactly that ssb thingy is intended/used for

Fumihito YOSHIDA-2
Hi Stefan,

Im not well versed in the subject, but i have some knowledge.

ssb (Sonics Silicon Backplane, in *BSD world, they called "SiBa")
is backplane bus protcol of Broadcom intelligent SoC devices.
// In broadcom terms, "SoC" is included ethernet/wireless ethernet devices.

Your Inspiron 1521(and any other dell's laptop, they use broadcom
onboard ethernet + WLAN) has 2 ssb devices, plz see below diagram;

<PCI or HTr/MuTIOL PCI-bridge chip>
   |PCI|              |PCI|
 <BCM4401-B0>       <BCM4328>
  |ssb(a)|           |ssb(b)|
bcm nic unit        bcm WLAN unit

(guess from heuristics)
Perhaps, when loading b44, that do swallow hungrily ssb(a), ssb(b)
and BCM4401,  the wl cannot get own ssb(b).
(/guess)

So,
> Would a PCI-SSB bridge look different or is Broadcom using the same PCI ID for
> different devices?
Physically yes, they are dirrerent devices, but they have same backends.

> Both drivers clearly match for the same PCI ID and are the only ones to do so.

In other hands, root cause of this complicated contraption, the ssb has
something went wrong behavior[0], but i dont know why...

[0] e.g.: https://bugs.launchpad.net/bugs/333903

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

Re: WANTED: someone who knows what exactly that ssb thingy is intended/used for

Stefan Bader-2
Fumihito YOSHIDA wrote:

> Hi Stefan,
>
> Im not well versed in the subject, but i have some knowledge.
>
> ssb (Sonics Silicon Backplane, in *BSD world, they called "SiBa")
> is backplane bus protcol of Broadcom intelligent SoC devices.
> // In broadcom terms, "SoC" is included ethernet/wireless ethernet devices.
>
> Your Inspiron 1521(and any other dell's laptop, they use broadcom
> onboard ethernet + WLAN) has 2 ssb devices, plz see below diagram;
>
> <PCI or HTr/MuTIOL PCI-bridge chip>
>    |PCI|              |PCI|
>  <BCM4401-B0>       <BCM4328>
>   |ssb(a)|           |ssb(b)|
> bcm nic unit        bcm WLAN unit
>
> (guess from heuristics)
> Perhaps, when loading b44, that do swallow hungrily ssb(a), ssb(b)
> and BCM4401,  the wl cannot get own ssb(b).
> (/guess)
>

Hi Fumihito,

thank you for this explanation. Interestingly, from experiments, the wl driver
module works without the ssb module being loaded. My explanation is that the
ssb driver binds to all supported pci devices. So it either does handle this
internally or it does not need to explicitly address the ssb.

> So,
>> Would a PCI-SSB bridge look different or is Broadcom using the same PCI ID for
>> different devices?
> Physically yes, they are dirrerent devices, but they have same backends.
>
>> Both drivers clearly match for the same PCI ID and are the only ones to do so.
>
> In other hands, root cause of this complicated contraption, the ssb has
> something went wrong behavior[0], but i dont know why...
>
> [0] e.g.: https://bugs.launchpad.net/bugs/333903

Right in this bug, the solution is to force the load order right. I wondered
whether there can be a simpler (more automatic) solution to this. IOW, could
the ssb driver somehow decide whether to bind to this pci id or not. But from
your explanation it seems to me the pci side would always "see" the network
device. The wl driver would need to be aware, that it needs to use the ssb
driver (I guess) and not directly try to talk to the pci device.

-- Stefan

When all other means of communication fail, try words!



--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

Re: WANTED: someone who knows what exactly that ssb thingy is intended/used for

Matthew Garrett
On Wed, Jul 08, 2009 at 06:20:30PM +0200, Stefan Bader wrote:

> thank you for this explanation. Interestingly, from experiments, the wl driver
> module works without the ssb module being loaded. My explanation is that the
> ssb driver binds to all supported pci devices. So it either does handle this
> internally or it does not need to explicitly address the ssb.

Each PCI broadcom device has its own PCI->SSB bridge. By default, the
ssb driver will bind to all the ssb devices available. If wl is loaded
first then wl will claim the b43 PCI->SSB bridge. ssb will no longer be
able to bind to that PCI device, but if loaded later will succeed in
binding to the b44 PCI->SSB bridge.

The optimal solution to this is to implement support for the LP and
N-phys in the b43 driver. The alternative is to fiddle with load order -
that'll involve working out some way to enforce entries appearing
earlier in the module mapping files.

--
Matthew Garrett | [hidden email]

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

Re: WANTED: someone who knows what exactly that ssb thingy is intended/used for

Stefan Bader-2
Matthew Garrett wrote:

> On Wed, Jul 08, 2009 at 06:20:30PM +0200, Stefan Bader wrote:
>
>> thank you for this explanation. Interestingly, from experiments, the wl driver
>> module works without the ssb module being loaded. My explanation is that the
>> ssb driver binds to all supported pci devices. So it either does handle this
>> internally or it does not need to explicitly address the ssb.
>
> Each PCI broadcom device has its own PCI->SSB bridge. By default, the
> ssb driver will bind to all the ssb devices available. If wl is loaded
> first then wl will claim the b43 PCI->SSB bridge. ssb will no longer be
> able to bind to that PCI device, but if loaded later will succeed in
> binding to the b44 PCI->SSB bridge.
>
What looks a bit strange to me is that for the b44 case, it is the driver that
matches by pci id and loads ssb as it depends on it. The b44 driver has one
modalias to the ssb bus but three more that match on the pci bus. So ssb does
not bind to all broadcom devices.
On the other hand the b43 driver has only aliases for the ssb bus. None which
would match against the 4328 device (obviously, the driver needs to get support
for it).

> The optimal solution to this is to implement support for the LP and
> N-phys in the b43 driver. The alternative is to fiddle with load order -
> that'll involve working out some way to enforce entries appearing
> earlier in the module mapping files.
>

This is what is done in the end (doing some modprobe rules to un- and reload
the b44 part after loading the wl driver). The whole issue was just me
wondering why there is the ssb driver matching for the pci device but nothing
else is happening apart from that. It would not be my first case of re-using
the same pci id for two different devices.
But knowing the background, well ok, at least I know why this twiddling is
necessary.


--

When all other means of communication fail, try words!



--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team