Version 2.0.1 (2008-03-28) ========== * Wireshark patches added for Linxdisc and LINX internal messages. * Support for Linux kernel 2.6.24 * Removed meaningless info message about already dead processes from linxdisc. * Added /* *INDENT-OFF* */ ... /* *INDENT-ON* */ guards to linx.h. * Reserved field was missing from linxdisc protocol description. * Enable linxdisc to set link parameters. * LINX Ethernet type number changed from 0x9999 to now officially allocated typenumber 0x8911. * Removed prefix eth_conn_ from ecm funcs, removed interlal_ from rlnh + ipc funcs. * Change void * in eth_cm to struct sk_buff *, remove adaptive coalescing. * STATIC_INLINE -> static inline, don't wrap list use in macros, remove other pointless ETH_CONN_* macros. * Fixed Indentation and formatting. * Fix error found by Coverity, unused variable(linux.c), mem leak(linx_message_trace.c). * Fix possible memory overflow and loops in linxdisc. * Fix typos in create_{eth,tcp}_link(3) man pages. * Add create end destroy functions for TCP to libcfg. Version 2.0.0 (2008-01-18) ========== * Set version to 2.0.0 * MTU is negotiated per default and re-negotiated if mtu of the interface is changed. * Fix possible memory leak in libcfg. * Fixed "free after free" in linx_ioctl_info_filters() and "use after free" in __linx_internal_free_pend_tmo(). * Parameter order between LINX_SIGSELECT and LINX_OSTIME was exchanged for linx_receive_w_tmo() and linx_receive_from(). * If 'make install' is issued, modules will be automatically loaded when creating links/spids. * Linxstat were showing wrong signo when listing receive queue. * New version of the User's Guide * Fixed some soft lockups by exchanging read/write locks to _bh ones in hunt.c. * Fix for memory fragmentation for when copying the signal into kernel-space. * In function eth_conn_destroy_conn(), let's delete timers before freeing lists etc. * In eth_conn_disconnect_link(), let's get the spinlock before the if-statement. * In __skb_unlink_compat(), let's unlink sk_receive_queue instead of sk_write_queue. * Fixed a recursive lock in rlnh/ipc layer. * Removed ipc_unlock_spid and replaced them with sock_put (race between linx_release (SOCK_DEAD) and linx_spid_to_sock). * Updated linxstat documentation. * LINX_INFO_SIGNAL_PAYLOAD no works with MEM_FRAGMENTATION_SUPPORT. * Removed some compiler warnings for some Linux kernel versions. * Fixed a problem in linx_skb_copy_bits. It is now synched with skb_copy_bits from 2.6.23.1 * Fixed compiler warning in association with ioctl() on PPC64. * Removed check for attach to self. Even though it's pointless it should be allowed. * The tcp cm now delivers sk_buffs to the rlnh layer. This removes a lot of memcopies and improves the performance. * Another 2.6.23 fix, only visible if MEM_FRAGMENTATION_SUPPORT is set. * Add support for PPC64 and 2.6.23 kernels. * Update patches for latest versions of libpcap and tcpdump. * Added the Linx Timeout Service. * More information has been added to procfs for Ethernet Connection manager. * Linkaddresses are sent as 32 bit now by the Ethernet Connection manager instead of 16 bits. * Add feature negotiation stuff to linxcfg, use getopt_long. * Better send with sender handling when sender is a phantom. * TCP CM protocol version was bumped to 3 and improvements were made. NOTE: Version 1, 2 and 3 are NOT compatible. * Replaced deprecated SPIN_LOCK_UNLOCKED with spin_lock_init(). * RLNH protocol adjusted, now version 2 * Fixed some minor issues found by a customer. * Added some more CFG types. Fixed bug in TCPCM CFG. * Fixed bug when compiling with per-socket statistics and link supervision. * Updated source code for tcp_cm after code review. * Fixed a problem with miscalculated statistics in tcp_cm. * Removed some compiler warnings. * Fixes for running a 32-bit LINX application on a 64-bit machine. * Linxdisc updated, version field added to protocol, updated documentation and various buggfixes. * Added asserts in liblinx. * Feature Negotiation. ETH CM protocol adjusted, now version 3. Version 1.4.1 (2007-09-21) ========== * TCP CM protocol version was bumped to 2. Version 1 and 2 are NOT compatible. * Added support for Linux kernel version 2.6.22 * TCP Connection Manager protocol was incremented. * Improved keepalive for the tcp cm. Version 1.4.0 (2007-09-18) ========== * Rename option live_timeout in the TCP CM to live_tmo for consistency with older releases. * Added new linxcfg files, linxcfg.c and linx_cfg_cm.h to MANIFEST. * Added linxdump patch files to MANIFEST, updated dir-levels in one patch file. * Updated User's Guide. * Remove linxcfg_tcp and add the functionality to linxcfg. * Update manuals and accordingly. * Endian conversion fix when routing messages using a CM that doesn't use skb buffers. * Fixed crash if user tried to create a Ethernet connection from unknown device. * Cosmetic linxstat fix. * Fixed a race between when closing of a socket and a attach is received. * Fixed bug in linxstat. * Added linxdisc.h to MANIFEST. * RLNH controll messages are no longer copied by the ethernet CM. * Optimizations and buggfixes in the RLNH layer. * Added "receive_but", i.e. receive any signal except the ones mentioned in the filter. * Added a linx tcp connection manager. * Added new linxdisc files to MANIFEST, fixed bug in linxdisc clean make rule. * Added option to filer output by socket type in linxstat. * Better collision handling and supervision of peers in linxdisc. * Support for Linux Kernel 2.6.22 without the ERRORCHECKS=yes option (struct sk_buff changed). * Renamed linxdump patches to make it easier to apply them in correct order. * Allow users to select radix when displaying signo in linxdump. * Fixed build issue with Linx on SUSE linux. * Add missing info and fix minor formatting issues in linxstat documentation. * Add missing kernel version declaration in kernel Makefile. * Add "batch mode" to linxstat, in batch mode linxstat just print # of LINX sockets. * Fixed linxdump failing to print signo on 64 bit architectures. * Added fix for linxdump not being able to save capture files. Version 1.3.0 (2007-07-05) ========== * EthCM: MTU is now fetched from the device or set when creating the link. * Added link attribute. * Added linx_get_stat and linx_free_stat to the LINX user api and updated documentation. * linxstat can now display per socket statistics. * Changed per socket statistics counters to 64bit. * Documentation was not updated when the spid field was removed from linx_hunt_param, fixed now. * Added statistics counter per-socket (enable with SOCK_STAT=yes). * Fixed memory leak in linxdisc. * Fixed bug where LINX_INFO_SIGNAL_PAYLOAD could return with a locked spinlock. * LINX_INFO_NAME now returns 0 and empty string if LINX socket has not been assigned a huntname yet. Version 1.2.0 (2007-05-14) ========== * Added the MEM_FRAGMENTATION_SUPPORT=yes build option. Used to enable memory fragmentation handling as part of intra process communication. * Added Modules.symvers to clean make target. * Fixed memory leak/wild free in linx_receive() if non EINTR error is returned from recvmsg. * Fixed a race on SMP where the LINX socket slab cache could be used after it was destroyed. * Fixed a race on SMP between receiving a fragment of a message and disconnecting the link. * Fixed a race when receiving a message while closing a socket. * linx_bmark now supports mixed endian. * Fixed a bug with no_of_pend_attach counter. * Updated and changed name for example/simple to example/linx_basic. * Updated and changed name for example/linx_bmark to bmark/linx_bmark. * Remove endian conversion of signo when forwarding messages over multihop links. * Modprobe works after running "make install" as root. Modules can be uninstalled by "make uninstall". * Renamed some module parameters. max_sock_per_link to linx_max_sockets_per_link, max_num_links to linx_max_links, linx_sockbuf_max to linx_sockbuf_size, linx_osattref_max to linx_max_attrefs and linx_spid_max to linx_max_spids. * Added error checking of previously missed out memory allocations. * Removed annoying error message when asking for the name of a dead process. * Removed debug message from linxdisc. * Fixed a race between attacher and attachee. * Updated liblinx/linx.c after a shorter review session. * Fixed a problem with linxdisc exiting when network load was high on a node. * Fixed some erroneous information in man page for linx_receive_w_tmo(). * Fix some minor ETHCM statistic bugs (stat.c/stat.h/stat.mk). * Added two patch files, one for tcpdump and one for libpcap. These two patches are needed for linx message trace. * Added LINX Message Trace to MANIFEST. * sendpage() on LINX sockets results in a NOTSUPPORTED instead of a call to sendmsg(). * Fix poll() bug in the LINX kernel module and optimized performace as well. * linux/config.h -> linux/autoconf.h, added {} around 2-statement else-branch. * Compile-time configuration of ETH_CM statistics. * Function call API for Creating/Destroying links. * Fixed interrupted syscall bug during linx_receive_w_tmo(). * Support for Linux Kernel version 2.6.20 (INIT_WORK fix). * Added missing ntohl() and fixed strncmp() bug in linxdisc. * Fixed an erroneous increment of the use count of linx_eth_cm. * Optimized LINX library. * Changed send* to return errno EPIPE if dest socket is being closed. * Removed dependencies on linux/compiler.h from example/linx_bmark * linx_receive_w_tmo now uses poll() instead of select() due to problems with many file descriptors (>1024) in select(). * Renamed main.c and common.c to linx_bmark.[hc]. * Added internal message trace support, first iteration. * Removed ioctl() calls disconnect, param_get and param_set. * Fixed cleanup of /proc when unloading cm. * Fixed buggy sem-call, was up() should be down(). * Added missing EXPORT_SYMBOL of linx_trace_lock. * Fixed race in linxstat causing inconsistent results. * Added LINX_KERNEL_WORKAROUND_1. * Fixed a lock bug in the rwsem bug workarounds in rlnh_linux.c. * Made the linx trace symbols exported to make sure linx tracing from CM kernel modules can be used. * Replace use of init_MUTEX_LOCKED with init_MUTEX followed by up. * Fixed an issue with hunt. * Fixed some issues with changes in the linux kernel. * Fixed bug in skbuff handling causing hangs on ethernet driver level. * Moved linx in procfs from /proc to /proc/net. * The linx module was split in two. LINX now consist of linx.ko and a module for CM, linx_*_cm.ko * Fixed bug causing links not to reconnect when the device MAC address is changed. * Fixed bug causing bug (crash) when a connected ethernet device is completely removed. * linx_bmark updated. * Reworked the timeout wrappers. * Removed ifdefs around use of Connection ID. * Modified build. Asserts are no longer on by default. Version 1.1.0 (2006-11-10) ========== * Fixed a problem regarding cleanup of orphan sk-buffers. * Fixed problems with removal of the LINX kernel module. * Updated the linx_bmark example with a throughput benchmark. * Updated the linx_bmark example with a liblinx api/socket api option. * Corrected bug causing the payload buffer used with sendto() and sendmsg() to be modified on little endian systems. * Improved handling of distribution related kernel version dependencies. * Some fixes regarding socket reference counting. * Some variables were not safe when running SMP. * Fixed problems when exceeding max_num_links limit. * Added limits and verification of kernel module parameters. * Use vmalloc() to allocate spid and attref arrays, kmalloc() can't handle required sizes. * Removed bad __init/__exit tags. * Extra version handling for FC4 and Monta Vista 401. * Fixed a bug in eth_cm/linux.c eth_conn_add_connection(). Connection id overwritten. * Fix a memory leak, a double free, and a NULL-ref. * Arguments when loading kernel module added. * Default hunt signal is now allocated by the linx kernel module. * Fixed a small bug regarding attach reference counting. * Introduced a retry count while sending through sendto() in linxdisc. * All linx_* function calls in liblinx now calls abort() if the LINX handle is invalid. * Fix bug in conversion from LINX_OSTIME to struct timeval in receive_w_tmo. * Fix linxdisc no longer loses its node_name upon a reread of the conf-file. * linxdisc now dynamically adapts to renaming of remote nodes. * Added linx_free_name() call to liblinx. * Build options to the kernel module are now checked. * Fix linxdisc no longer exits when a network interface it depends on is taken down * Improved SMP and 64-bit support Version 1.0.3 (2006-09-15) ========== * Go to linx_panic() when return value from linx_internal_sendmsg() is below zero * Added User's Guide * Corrected problem when retrieving the hunt name of a socket while the socket is being closed. * Fix a problem with arbitrary spids sent to linx_attach(). * Fix problem with dropped hunts when more than two links are used. * Fix a hole when linx_free_buf() could return without clearing *sig. * Clear prev and next pointers when sig_adm block is unlinked. * x86_64 support added. * Basic SMP support added (big tasklet lock). * Added node name condifuration to linxdisc. * Bug fixed memory leak in linx_attach. * Bug fixed problem unloading linx.ko. * Added LINX_INFO_SIGNAL_PAYLOAD Version 1.0.2 (2006-08-18) ========== * Fixed race-conditions in connect/disconnect and create/destory * Optimized send-receive latency and throughput by improved receive queue locking. * Possible to hunt on your self now. * Field signal_reference removed from struct linx_info_signal * Field common_filter_offset removed from struct linx_info_filters * Field critical_filter_offset removed from struct linx_info_filters * Field common_sigselect renamed to sigselect in struct linx_receive_filter_param * Field common_sigselect_size renamed to sigselect_size in struct linx_receive_filter_param Version 1.0.1 (2006-08-11) ========== * Fixed problem with receive of signals larger than 4096 bytes. * Fixed memory leak in hunt.c. * Removed dead code and NULL-pointer reference in af_linx.c. * Removed reference after free. * Fixed race-conditions. * Optimizations, minor locking changes. * Cleanup of comments in header files. * Removed unnecessary stack dumps. * "Deferred queue exhausted" was changed to a warning. * Fixed a bug in linxdisc where it got stuck in a non-interruptible state. Version 1.0 (2006-07-31) ========== * Initial Release Enea