Describe the bug
calling nx_icmp_ping consequenctly calls _nx_icmp_interface_ping.
It inhibits preemption and then nests into packet tranmission.
This prevents any nested code to block, e.g.: to wait for shared resource or to wait until the packet hand over finishes in the interface driver. Necessary in the EMW3080 driver (LOCK, SEM_WAIT).
My setup:
To Reproduce
Steps to reproduce the behavior:
- Have a interface driver that requires some kind of blocking (resource locking, waiting for txn to finish etc.)
- Start some interface interaction (send packet, ....)
- Call
nx_icmp_ping from other thread, whole the interface driver is busy
Expected behavior
_nx_icmp_interface_ping does not inhibit preemption thus allows interface driver to properly work
Impact
nx_icmp_ping now easily breaks the interface driver (mutexes, sempahores,.. do not work)
Describe the bug
calling
nx_icmp_pingconsequenctly calls_nx_icmp_interface_ping.It inhibits preemption and then nests into packet tranmission.
This prevents any nested code to block, e.g.: to wait for shared resource or to wait until the packet hand over finishes in the interface driver. Necessary in the EMW3080 driver (LOCK, SEM_WAIT).
My setup:
To Reproduce
Steps to reproduce the behavior:
nx_icmp_pingfrom other thread, whole the interface driver is busyExpected behavior
_nx_icmp_interface_pingdoes not inhibit preemption thus allows interface driver to properly workImpact
nx_icmp_pingnow easily breaks the interface driver (mutexes, sempahores,.. do not work)