Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cycle error in handleMnCycTimeExceed on Windows 10 with network load #279

Open
testrunner123 opened this issue Aug 23, 2017 · 1 comment

Comments

@testrunner123
Copy link
Contributor

We have openPowerlink 2.3.2 stack and Vimba camera (Ethernet) driver running on one PC with Windows 10 64-bit. Each of them are using separate network card. Both are operated at the same time. Powerlink cycle is 10ms. Camera is generating something like 62 Mbyte/s data stream. But it works.
However, if I run at the same time program communicating intern on PC with network on loopback adapter then from time to time Powerlink stack restarts communication to B&R Powerlink controller. CPU Load is low: ~12% (multicore system).

From debugging issue, I've found that it comes because function timerHdlCycleCb() signal error 30 (kErrorEdrvCurTxListEmpty) that in turn provoked "Cycle error" in handleMnCycTimeExceed(). The reason is that notification from network card driver about successful send of packets did not come. I've find out that these notifications comes ~10ms later bundled into one call of protocolSendNblComplete() protocol driver function (drv_ndis_intermediate).

From Documentation for NDIS 6.0 NdisSendNetBufferLists() function:

NDIS can collect the structures and data from multiple send requests into a single linked list of NET_BUFFER_LIST structures before it passes the list to ProtocolSendNetBufferListsComplete.

So it seems the problem is the effect of collecting callbacks in NDIS on Windows 10 under high network load. Unfortunately these callbacks play very important role in openPowerlink implementation of cycle timing.

Is there any solution for this problem?

@testrunner123
Copy link
Contributor Author

NDIS callback collect period on Windows 10 64-bit Pro 10.0.14393 seems to be 10ms. The only workaround at the moment is to set Powerlink cycle to 20ms.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant