Hello. On 2/28/2016 7:41 PM, Andrew Lunn wrote:
With the introduction of switches as linux devices and the use of the component framework, probing has become more complex. Add some documentation. Signed-off-by: Andrew Lunn <and...@lunn.ch> --- Documentation/networking/dsa/dsa.txt | 48 ++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/Documentation/networking/dsa/dsa.txt b/Documentation/networking/dsa/dsa.txt index aa9c1f9313cd..376afa135a81 100644 --- a/Documentation/networking/dsa/dsa.txt +++ b/Documentation/networking/dsa/dsa.txt @@ -398,6 +398,54 @@ Switch configuration on the management interface and "hardcode"/"force" this MAC address for the CPU/management interface as an optimization +Call flow +--------- + +With the ability for switch devices to be true linux devices, the call
Linux.
+flow is somewhat complex. The component framework is used to link the +dsa framework as the master, with switch devices, as slaves.
Commas not needed before "as".
+ +A switch device should add itself as a component in its probe +function. + +The DSA framework can either be configured using a platform_data +structure or from the device tree. If device tree is being used, the +dsa framework probe function will allocate a platform_data structure, +and populate it using the device tree, via the dsa_of_probe() +function. Within the DSA device tree, switch devices are represented +by a phandle to the switch device. These phandles are saved into the +platform data so that when switch slaves register themselves, they can +be correctly positioned in the DSA cluster. + +The DSA probe function then creates a dsa_switch_tree structure which +is the overarching structure representing a switch cluster. The probe +function then looks in the platform data for the phandles to slave
Platform data and phandles?
+devices, and adds a component match based on the phandle. The +component master is then created. This causes the component framework +to link slaves to the master. + +If all the slave switch can be found, the masters bind function is
Switches? Master's?
+called, dsa_bind(). This in tern causes the switch slaves bind
In term?
+function to be called. + +The switches bind function allocated memory for its own private use,
Switch's?
+and for a dsa_switch structure, which represents one switch in a DSA +cluster. The switch then registers with the DSA framework using +dsa_switch_register(). + +dsa_switch_register() looks in the platform data and finds the +position within the cluster for the switch which is registering. The +switches dsa_switch structure is then attached to the dsa_switch_tree
Switch's?
+structure in the correct place.
[...] MBR, Sergei