-
Notifications
You must be signed in to change notification settings - Fork 102
Description
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?