[etherlab-dev] Multiple mailbox protocols and other issues

Knud Baastrup kba at deif.com
Fri Feb 13 09:38:38 CET 2015


See my in-lined comments!

BR, Knud

-----Original Message-----
From: Gavin Lambert [mailto:gavinl at compacsort.com] 
Sent: 12. februar 2015 23:50
To: Knud Baastrup
Cc: etherlab-dev at etherlab.org
Subject: RE: [etherlab-dev] Multiple mailbox protocols and other issues

On 13 February 2015 03:30, quoth Knud Baastrup:
> I have attached a new set of patches (now by using git format-patch, 
> which also imply that the patch names are given by the commit text).
> 
> I believe that I have addressed the issues you highlighted in prior 
> mails including the alias support that might be relevant for us as 
> well sometime
in
> the future.

Nice!  Although there still seem to be some funny things going on with the whitespace, eg. see patch 0013's master/fsm_slave_config.c's second hunk (ec_fsm_slave_config_enter_mbox_sync).
[Knud] I guess I need more help to figure this out. I cannot (with my current knowledge of patch management) see anything wrong in this specific hunk (line 374 to 476). Do you get some kind of warning when applying the patch or how do you observe the issue?
 
> The locks that conflicts with RTAI could be removed with a define 
> guard,
e.g.
> re-use the EC_RTDM define already available?

They're not conflicts, and I wasn't suggesting any specific changes (as I said, I don't use RTDM myself so I don't really know specifics).  It was just a comment to indicate why the master originally didn't do any locking there, and that your original problem *could* theoretically have been solved by doing the locking in the application code instead, as it's only an issue with concurrent realtime tasks, which are likely to need some application-level locking anyway.  It's a possible reason that Florian might not want to accept the patch, but that doesn't mean that you should modify or withdraw it -- that's something he can decide.
[Knud] Agree, we will keep the locks and let Florian decide to what extend he will include the patch.

I'll integrate your new patchset into my build and do a bit more testing; I'm hoping to post my full patch queue in a few days.  This will include your patches as well -- I hope you don't mind?  (They'll be clearly attributed, of course.)
[Knud] That is fully ok. I believe it will just further improve the chances for getting the patches merged into trunk by Florian. Feel free to do any improvements on the patches as well.

Just some further thoughts on patch 0010 (deferring the sdo dictionary
fetch): one of the interesting things about fsm_slave over fsm_master is that the former can run in parallel while the latter only in series.  In principle, this means that if someone issues "ethercat sdos" with no filters on a large network, the fetch time could be reduced considerably.  (It won't reduce the time to that of a single slave, as it has caps on the number of slave FSMs it can run in parallel to prevent blowing out the number of frames and causing latency.)  Currently your patch forces this to still run sequentially anyway, because the ioctl is blocking and it only does one slave at a time.

I was thinking about having a go at trying to make that change myself, but having said that, given that running "ethercat sdos" on multiple slaves is not particularly useful (since networks usually contain many duplicates) and that this is generally only used during development or commissioning, I'm not sure whether it's really worth it.
[Knud] I agree, it is tempting now to take next step and do this in parallel. It currently requires a patient user to wait several minutes for an ethercat sdos command (with no progress information) to complete. Today we as well only fetch the dictionary for debug and test purposes so we do not plan to further improve this for the moment.

I was also wondering if it should do a more limited dictionary fetch by default (just of the PDOs), which could improve some of the logging, but even then those messages only appear when the debug level is increased, so most of the time it wouldn't be all that useful.  And someone can just look at the slave docs (or a local dictionary scan) if they want to interpret logs to find out what a particular SDO entry is called from its index:subindex.




More information about the Etherlab-dev mailing list