RE: [PATCH -mm 0/2] RapidIO: Changes to handling of RIO switches
From: Bounine, Alexandre <hidden>
Date: 2010-10-22 16:51:59
Also in:
lkml
Micha Nelissen [off-list ref] wrote:
=20 Alexandre Bounine wrote:quoted
1. Using one storage location common for switches and endpoints
eliminates
quoted
unnecessary device type checks during maintenance access operations. While destination IDs and hop counts have different meaning for
endpoints and
quoted
switches, this does not prevent us from storing them in the primary
RIO device
quoted
structure (rio_dev) for both types.=20 How can you say this? The two variables have different meanings, this logically implies you can't merge them. So how do you say 'this does
not
prevent us from ...' without providing a reason?
Looks like I formulated it bad - better would be: they have different interpretation by hardware but logically in RapidIO they have single role - destid/hopcount are a device coordinates in the RIO network used to access that device.
quoted
2. Convert RIO switch device structures (rio_dev + rio_switch) into
single
quoted
allocation unit. This change is based on the fact that RIO switches
are using
quoted
common RIO device objects anyway. Allocating RIO switch objects as
RIO devices
quoted
with added space for switch information simplifies handling of RIO
switch device
quoted
objects.=20 I still don't think that's a good idea because the rdev->rswitch
pointer
can be defined to point to the switch that a given rio_dev is
connected
to. This is useful for quick lookups. How else can to know to which switch a given device is connected?
rdev->rswitch is not a pointer to the entire switch device object - it is a pointer to the switch specific extension associated with given rio_dev (if applicable). There is no other role for rdev->rswitch. Why would you keep a pointer to device data extension instead of the pointer to attached device object itself? BTW, I have back and forward links added in previous patches and only one link that may be added later is a forward link from mport to the attached rio_dev (ptr to rio_switch will not work here because it can be switchless connection). But this reference has to be added into rio_mport. =20 Alex.