________________________________________________________________________
Applicable Environment
________________________________________________________________________
- Topic: QNET - What is _NETMGR_QOS_FLUSH?
- SDP: 6.3.0 SP2
- Target: Any supported target
________________________________________________________________________
Recommendation________________________________________________________________________
Applicable for QNX630 SP2 patch234 and later versions.
The Qnet IOMSG, _NETMGR_QOS_FLUSH lets an application force a retransmission instead of waiting for Qnet to activate its own timeout. This is useful for periodic detectable hardware failures where the application can take action, instead of enabling shorter timeout periods for Qnet, which adds more load to the system.
Here's an example "netmgr_flush":
#include <sys/netmgr.h>
#include <sys/netmsg.h>
extern int __netmgr_send( void *smsg1, int ssize1, const void *smsg2,
int ssize2, void *rmsg, int rsize);
int main (void)
{
struct _io_msg msg;
msg.type = _IO_MSG;
msg.combine_len = sizeof(msg);
msg.mgrid = _IOMGR_NETMGR;
msg.subtype = _NETMGR_QOS_FLUSH;
__netmgr_send(&msg, sizeof(msg), 0, 0, 0, 0);
}
You can test it like:
1)slay io-net
2)io-net -d<driver> -p <qnet> tx_ticks=100
Ticks =100 is to slow down Qnet detection of a node being back up.
3)Verify Qnet connectivity with a remote node
4)unplug cable
5)ls /net/remote
6)Plug cable back in. ls application will remain blocked for a period of time.
We want connectivity to be restored now.
7)execute "netmgr_flush" test application. ls will now unblock with a successful transmission.
________________________________________________________________________
NOTE:
This entry has been validated against the SDP version listed above. Use
caution when considering this advice for any other SDP version. For
supported releases, please reach out to QNX Technical Support if you have any questions/concerns. ________________________________________________________________________