Commit Graph

2289 Commits

Author SHA1 Message Date
Esben Haabendal 81758004fd Improve synchronization of master->domains list
Introduce a new lock for synchronization of the master->domains list, and use
that instead of the big master_sem lock, improving real-time performance of
fx. ecrt_domain_process() when EoE thread is being shut down (or other
use-cases where master_sem is held for extended periods).

The following locking order is used:

* master->master_sem
* master->domains_lock
* master->io_sem
* domain->datagram_pairs_lock

Meaning that it is allowed to take domains_lock while holding master_sem, and
it is allowed to hold domains_lock while locking io_sem and
datagram_pairs_lock.

[RV: For now, the lockdep_assert_held() annotations are commented out,
since they don't compile with CONFIG_PROVE_LOCKING and (the default)
--disable-rtmutex.]
2022-09-01 15:38:01 +02:00
Esben Haabendal 19b8ddea18 Add lock protection of domain->datagram_pairs
While domain->datagram_pairs was previously partly protected by the
master->master_sem lock (it was not done consistently though), the fix
to protection of master->datagram_queue made it even worse.

This change adds protection of domain->datagram_pairs using a new lock
dedicated to this.  The domain->datagram_pairs_lock is acquired in the actual
functions accessing the domain->datagram_pairs, and this currently means that
it is acquired both in situations where master->master_sem is held and in
situations where master->io_sem is held.
2022-09-01 15:37:58 +02:00
Esben Haabendal 2372382259 Acquire master->io_sem lock where needed
With this, we should have in place so that master->io_sem is always held when
accessing master->datagram_queue.

Note, the use of master->master_sem in ec_ioctl_send() and
ec_ioctl_receive() were wrong (introduced in commit cef602586c). The
only thing needing to be synchronized there is the access to
master->datagram_queue, which is protected by master->io_sem.

This corresponds roughly to the fixes for stable-1.5 that are seen in
https://gitlab.com/etherlab.org/ethercat/-/merge_requests/36 .
2022-09-01 15:37:54 +02:00
Esben Haabendal e243c6b7db Clarify purpose of master->io_sem
In order to ensure proper use of locking, the purpose of each mutex/semaphore
must be clear and documented.

This is my best guess.  The master->io_sem has a simple purpose, synchronizing
access to the master->datagram_queue list structure.
2022-09-01 15:37:50 +02:00
Florian Pose fa890a8b61 Applied 0021-Await-SDO-dictionary-to-be-fetched.patch 2022-06-23 12:43:34 +02:00
Florian Pose 8896d3b879 Applied 0020-eoe-ip.patch 2022-06-23 12:39:52 +02:00
Florian Pose 5f84d54890 Applied 0000-version-magic.patch and bumped to 1.6 2022-06-23 12:20:47 +02:00
Florian Pose 44c6c3d1da Merge branch 'master' of ../git 2022-06-23 11:55:13 +02:00
Florian Pose f943348d98 Applied 0019-Support-for-multiple-mailbox-protocols.patch 2022-06-23 11:54:10 +02:00
Florian Pose 429ba9356e Applied 0018-Use-call-back-functions.patch 2022-06-23 11:27:28 +02:00
Florian Pose cef602586c Applied 0017-Master-locks-to-avoid-corrupted-datagram-queue.patch 2022-06-23 11:26:20 +02:00
Florian Pose d1e3d2e0a3 Removed duplicate pre-commit rule. 2022-06-23 11:22:08 +02:00
Florian Pose 9955855f7e Applied 0016-If-enable-rtmutex-use-rtmutexes-instead-of-semaphore.patch 2022-06-23 11:21:51 +02:00
Florian Pose 667e93284d Applied 0015-Clear-configuration-on-deactivate-even-if-not-activa.patch 2022-06-23 11:00:45 +02:00
Florian Pose a3fa7cecaf Applied 0014-Fix-NOHZ-local_softirq_pending-08-warning.patch 2022-06-23 10:59:45 +02:00
Florian Pose d09daadfbb Applied 0013-Do-not-reuse-the-index-of-a-pending-datagram.patch 2022-06-23 10:58:57 +02:00
Florian Pose 8db3e5abf4 Applied 0012-Added-newline-to-syslog-message-MAC-address-derived.patch 2022-06-23 10:56:33 +02:00
Florian Pose 57342c99ca Applied 0011-Reduced-printing-to-avoid-syslog-spam.patch 2022-06-23 10:55:57 +02:00
Florian Pose d1dc6795f3 Applied 0010-Make-busy-logging-a-little-less-irritating.patch 2022-06-23 10:55:03 +02:00
Florian Pose 90f3f7e841 Applied 0009-Avoid-changing-running-slaves-DC-offset.patch 2022-06-23 10:53:56 +02:00
Florian Pose 225af9f787 Applied 0008-read-reference-slave-clock-64bit-time.patch 2022-06-23 10:45:16 +02:00
Florian Pose 6cac716122 Applied 0007-replace-fprintf-calls-with-EC_PRINT_ERR.patch 2022-06-23 10:31:41 +02:00
Florian Pose 234695fe44 Applied 0006-avoid-ssize_t.patch 2022-06-23 10:26:43 +02:00
Florian Pose 405c88f6d6 Applied 0005-disable-eoe.patch 2022-06-23 10:25:36 +02:00
Florian Pose efcd95ed9c Applied 0004-fix-eoe-clear.patch 2022-06-23 10:13:49 +02:00
Florian Pose d0d4535df0 Applied 0003-print-sync-signed.patch 2022-06-23 10:13:00 +02:00
Florian Pose 17eddce68d Applied 0002-Distributed-Clock-fixes-from-Jun-Yuan.patch 2022-06-23 10:12:12 +02:00
Florian Pose b4f8c0e750 Added 0001-Distributed-Clock-fixes-and-helpers.patch 2022-06-23 10:07:34 +02:00
Florian Pose c9c43ac439 Added pre-commit configuration. 2022-06-23 10:06:04 +02:00
Florian Pose 89677140fa Minor: Fixed indent. 2022-05-17 14:09:00 +02:00
Bjarne von Horn 1f55565fbb Fix setting mac_address
eoe->dev->dev_addr is read_only in 5.17.0
using eth_hw_addr_set instead
2022-05-17 14:06:42 +02:00
Florian Pose 2628069c5a Fixed distribution of bash completions file. 2022-05-16 10:39:53 +02:00
Florian Pose 907a3633a2 Install bash completions. 2022-05-16 10:10:59 +02:00
Florian Pose 526370a5a5 Merge branch 'master' of gitlab.com:etherlab.org/ethercat 2022-05-16 09:50:44 +02:00
Florian Pose da0b5e1d73 Merge branch 'bash_completion' into 'master'
Bash completion for ethercat tool

See merge request etherlab.org/ethercat!47
2022-05-16 07:49:24 +00:00
Bjarne von Horn 8d247b6e95 add bash completion for ethercat tool 2022-05-13 21:22:39 +02:00
Florian Pose de6a8987b7 Merge branch 'foe_with_passwd' into 'master'
Add support for FoE with password.

See merge request etherlab.org/ethercat!45
2022-04-19 10:11:49 +00:00
Shi Qiyao 29919ef8b7 Add support for FoE with password.
Patch originally from https://github.com/ribalda/ethercat which adds the
support for FoE command tool with password.
2022-04-19 11:54:16 +02:00
Florian Pose 468adde9ae Merge branch 'master' of gitlab.com:etherlab.org/ethercat 2022-04-04 14:19:35 +02:00
Florian Pose ef1814a7be Update .gitlab-ci.yml 2022-04-01 12:20:45 +00:00
Florian Pose 6d4d5726ca Build documentation. 2022-04-01 13:54:22 +02:00
Florian Pose f4b7a074e1 Added missing commands. 2022-04-01 13:52:55 +02:00
Florian Pose 9b1be4848b Merge branch 'fix_cmake' (also) into stable. 2022-03-04 10:12:12 +01:00
Florian Pose 3ee5e50a48 Merge branch 'init.d' into 'master'
Update init.d support

See merge request etherlab.org/ethercat!41
2021-12-13 10:00:16 +00:00
Nicola Fontana 9ee6693fb3 Update init.d support 2021-12-13 10:00:16 +00:00
Florian Pose b6e0cc8182 Merge branch 'updown' into 'master'
Add UPDOWN_INTERFACES option to ethercat.conf

See merge request etherlab.org/ethercat!40
2021-12-13 09:56:32 +00:00
Nicola Fontana 0ae450d7c7 Add UPDOWN_INTERFACES option to ethercat.conf 2021-12-13 09:56:32 +00:00
Florian Pose 45f2d1a988 Merge branch 'Fix-19' into 'master'
Fix #19: directly include soe_error_codes into SoeCommand.cpp

Closes #19

See merge request etherlab.org/ethercat!39
2021-11-30 09:49:01 +00:00
Florian Pose 4b05c861d7 Merge branch 'Fix-16' into 'master'
Fix #16: explicitely check for pkg-config macros

Closes #16

See merge request etherlab.org/ethercat!37
2021-11-30 09:47:49 +00:00
Nicola Fontana e30a39f36e Fix #19: directly include soe_error_codes into SoeCommand.cpp
Avoid having to rebuild conflicting master/soe_errors.c objects. Inside
the `tool` folder, the `soe_error_codes` array is used only by
SoeCommand, so this should not create further problems.
2021-11-01 20:17:26 +01:00