From: Gary Thomas <gary@mlbassoc.com>
To: Lennert Buytenhek <buytenh@wantstofly.org>
Cc: jdb@comx.dk, Jesper Dangaard Brouer <hawk@diku.dk>,
netdev <netdev@vger.kernel.org>
Subject: Re: Marvell 88E609x switch?
Date: Tue, 10 Mar 2009 09:11:22 -0600 [thread overview]
Message-ID: <49B6831A.4080506@mlbassoc.com> (raw)
In-Reply-To: <20090310133635.GS4738@xi.wantstofly.org>
Lennert Buytenhek wrote:
> On Tue, Mar 10, 2009 at 05:20:21AM -0600, Gary Thomas wrote:
>
>>>> After much experimentation, I finally found out what was
>>>> wrong. Basically, the trunk masks have 8 bits on the 6131,
>>>> but 11 bits on the 609x and this wasn't being handled. Once
>>>> the trunk masks were reset by the init code, there was no
>>>> path to the CPU port from the LAN ports :-( The attached
>>>> patch is what I've ended up with. It works, at least for
>>>> a single switch.
>>> Cool. How about the patch below then?
>> This looks fine to me - is this part safe on the smaller parts
>> (6131, etc)? I wasn't sure about setting those "reserved" bits
>> on other chips.
>
> It should be OK, but I'll test it to make sure.
>
>
>>> That's a bit trickier, but also not entirely hard:
>>> - Instead of the CPU port concept, we'll have to use the port number
>>> that brings us one hop closer to the CPU (i.e. the upstream port).
>>> - Assign each chip a DSA device address (instead of always setting it
>>> to zero).
>>> - Populate the 'DSA device address -> port' mapping table for each
>>> switch.
>>> - Enable DSA tagging and flooding of unknown unicasts and multicasts
>>> on all inter-switch links and not just on the CPU port on switch 0.
>>>
>>> I don't think it makes sense to implement Dijkstra in the kernel, so
>>> it's probably easiest to just pass in a precomputed NxN array of how
>>> to go from which switch to which switch via which port, along with a
>>> separate DSA port list for each switch chip.
>>>
>>> I don't have multi-switch chip setups myself, or I would have
>>> implemented this already. But I can whip up some patches to try..
>> That would be great. What I'd like to figure out is a
>> way to provide that mapping (static from the driver point
>> of view), much like the current "port_names[]" table now.
>
> Something a la the attached patch should be enough from the
> data structure point of view, AFAICS. And then you'd have:
>
>
>> For my particular setup, there are two cases (on the same
>> board):
>> Switch 1 - ports 1..8
>> Switch 2 - ports 9..16
>> Switch 3 - ports 17..24 (cascaded off of Switch 2)
>> Thus, the only access to Switch 3 and its ports is indirect via
>> Switch 2.
>>
>> Presumably, one could have a multiple cascade, so this structure
>> should be considered from the start.
>
> Switch 1 can correspond to its own DSA platform device as it is now.
>
> And for switch 2/3 you'd then have something a la:
>
>
> struct dsa_switch_data switches[] = {
> {
> .mii_bus = &blah,
> .sw_addr = 2,
> .port_names[0] = "p9",
> .port_names[1] = "p10",
> .port_names[2] = "p11",
> .port_names[3] = "p12",
> .port_names[4] = "p13",
> .port_names[5] = "p14",
> .port_names[6] = "p15",
> .port_names[7] = "p16",
> .port_names[9] = "dsa",
> .port_names[10] = "cpu",
> }, {
> .mii_bus = &blah,
> .sw_addr = 3,
> .port_names[0] = "p17",
> .port_names[1] = "p18",
> .port_names[2] = "p19",
> .port_names[3] = "p20",
> .port_names[4] = "p21",
> .port_names[5] = "p22",
> .port_names[6] = "p23",
> .port_names[7] = "p24",
> .port_names[9] = "dsa",
> },
> };
>
> struct dsa_platform_data switch23 = {
> .netdev = &blah,
> .nr_switches = 2,
> .sw = switches,
> .rtable = {
> { -1, 9 },
> { 9, -1 },
> },
> };
>
> Or something along those lines.
>
> Thoughts?
>
The setup looks good. Let me know when you have the rest of
the patch ready to test (I'm all setup here)
--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------
next prev parent reply other threads:[~2009-03-10 15:12 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-25 1:16 Marvell 88E609x switch? Gary Thomas
2009-02-25 6:31 ` Jesper Dangaard Brouer
2009-02-25 13:15 ` Lennert Buytenhek
2009-02-25 21:30 ` Gary Thomas
2009-02-26 15:11 ` Lennert Buytenhek
2009-02-26 15:47 ` Gary Thomas
2009-02-26 15:57 ` Lennert Buytenhek
2009-02-27 1:12 ` Gary Thomas
2009-02-27 1:19 ` Lennert Buytenhek
2009-02-27 12:25 ` Gary Thomas
2009-02-27 12:42 ` Gary Thomas
2009-02-27 12:53 ` Lennert Buytenhek
2009-02-27 13:19 ` Gary Thomas
2009-02-27 13:23 ` Lennert Buytenhek
2009-02-27 13:27 ` Gary Thomas
2009-02-27 14:27 ` Lennert Buytenhek
2009-02-27 14:36 ` Gary Thomas
2009-02-27 14:40 ` Lennert Buytenhek
2009-02-27 14:55 ` Gary Thomas
2009-02-27 14:57 ` Lennert Buytenhek
2009-02-27 15:08 ` Gary Thomas
2009-02-27 15:14 ` Lennert Buytenhek
2009-02-27 15:25 ` Gary Thomas
2009-02-27 15:27 ` Lennert Buytenhek
2009-02-27 15:29 ` Gary Thomas
2009-02-27 15:31 ` Lennert Buytenhek
2009-02-27 15:44 ` Gary Thomas
2009-02-27 15:52 ` Lennert Buytenhek
2009-02-27 21:12 ` Jesper Dangaard Brouer
2009-02-27 22:28 ` Lennert Buytenhek
2009-03-02 10:56 ` Jesper Dangaard Brouer
2009-03-02 11:05 ` Jesper Dangaard Brouer
2009-03-02 15:14 ` Gary Thomas
2009-03-02 15:22 ` Gary Thomas
2009-03-02 22:05 ` Jesper Dangaard Brouer
2009-03-02 22:32 ` Gary Thomas
2009-03-03 8:52 ` Jesper Dangaard Brouer
2009-03-03 9:04 ` Jesper Dangaard Brouer
2009-03-03 12:02 ` Gary Thomas
2009-03-03 12:03 ` Gary Thomas
2009-03-03 12:32 ` Jesper Dangaard Brouer
2009-03-03 13:25 ` Gary Thomas
2009-03-03 13:30 ` Gary Thomas
2009-03-03 21:52 ` Gary Thomas
2009-03-06 15:49 ` Gary Thomas
2009-03-07 15:53 ` Jesper Dangaard Brouer
[not found] ` <20090310102805.GO4738@xi.wantstofly.org>
2009-03-10 11:20 ` Gary Thomas
2009-03-10 13:36 ` Lennert Buytenhek
2009-03-10 15:11 ` Gary Thomas [this message]
2009-03-11 15:12 ` Lennert Buytenhek
2009-03-11 21:28 ` Lennert Buytenhek
2009-03-10 9:56 ` Lennert Buytenhek
2009-03-10 9:43 ` Lennert Buytenhek
[not found] ` <20090310093915.GK4738@xi.wantstofly.org>
2009-03-10 11:20 ` Gary Thomas
2009-02-28 17:37 ` Gary Thomas
2009-02-28 19:10 ` Jesper Dangaard Brouer
2009-02-28 19:31 ` Gary Thomas
2009-03-02 10:14 ` Jesper Dangaard Brouer
2009-03-10 9:34 ` Lennert Buytenhek
2009-02-27 12:52 ` Lennert Buytenhek
2009-02-27 13:22 ` Gary Thomas
2009-02-27 14:25 ` Lennert Buytenhek
2009-02-27 15:18 ` Anton Vorontsov
2009-02-27 15:26 ` Gary Thomas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49B6831A.4080506@mlbassoc.com \
--to=gary@mlbassoc.com \
--cc=buytenh@wantstofly.org \
--cc=hawk@diku.dk \
--cc=jdb@comx.dk \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.