By vita78 on X 20, 2005
Users of x86 32bit machines following the howto use Eurotel Data Expres (CDMA) on Solaris will likely experience an error message from _cat_ after 10 seconds from establishing the connection: \*cat: input error on if1in10: I/O error\* It happens because the ugen_bulk_timeout tunable is not working (on particular platforms). The root cause is that the compiler has optimized a reference to this tunable away. Simply - the timeout value can't be tuned by changing the _/etc/system_ until the bug 6333195 is fixed. Thanks to Mirek for discovering it and thanks to authors of _DTrace_ tool, since it was quite simple to find the root cause by tracing the function flow in the kernel and dumping their arguments. Here is a list of possible workarounds:
- periodically ping some machine through the sppp0 interface - your modem will not become idle.
- use an ugly loop in shell: ( while :; do cat if1in10; done ) | pppd call etcdma > if1out11
- use (at own risk) a small shell/mdb script cdma_ugen_bulk_timeout, which will increase the timeout. It runs the kernel debugger and modifies one instruction's operand (holding the timeout value) in ugen_epx_bulk_req() function. The change is valid until a next reboot and should be done before starting _pppd_ . You should be a superuser to launch it. The correct output looks like:
noname:/tmp# chmod +x /tmp/cdma_ugen_bulk_timeout noname:/tmp# /tmp/cdma_ugen_bulk_timeout ugen_epx_bulk_req+0x5a: 0xa = 0x57e40