Hi,
I continued improving the the performance patches which results in the first usable version. I tested it in a VM environment as well as on real hardware and did not encounter problematic behavior anymore.
Changes since v1: * code rebased on top of the trunk * orig_node NULL pointer dereference fixed (thanks Linus) * bcast_own / bcast_own_sum are now protected by a spinlock * orig_node reference count had to be increased in transtable_search()
Known issues: * bonding / alternating candidates are not secured by refcounting [see find_router()] - ideas welcome
Give this code a try and let me know what you find.
Regards, Marek