#
252555 |
|
03-Jul-2013 |
np |
MFC/backport core kernel and userspace parts of r237263 (TCP_OFFLOAD rework). MFC r237563, r239511, r243603, r245915, r245916, r245919, r245921, r245922, r245924, r245925, r245932, r245934 too.
Build tested with make universe.
r237263: - Updated TOE support in the kernel. ...
r237563: Fix clang warning when compiling iw_cxgb.
r239511: Correctly handle the case where an inp has already been dropped by the time the TOE driver reports that an active open failed. toe_connect_failed is supposed to handle this but it should be provided the inpcb instead of the tcpcb which may no longer be around.
r243603: Make sure that tcp_timer_activate() correctly sees TCP_OFFLOAD (or not).
r245915: Heed SO_NO_OFFLOAD.
r245916: Teach toe_4tuple_check() to deal with IPv6 4-tuples too.
r245919: Add TCP_OFFLOAD hook in syncache_respond for IPv6 too, just like the one that exists for IPv4.
r245921: There is no need to call into the TOE driver twice in pru_rcvd (tod_rcvd and then tod_output right after that).
r245922: Avoid NULL dereference in nd6_storelladdr when no mbuf is provided. It is called this way from a couple of places in the OFED code. (toecore calls it too but that's going to change shortly).
r245924: Move lle_event to if_llatbl.h
lle_event replaced arp_update_event after the ARP rewrite and ended up in if_ether.h simply because arp_update_event used to be there too. IPv6 neighbor discovery is going to grow lle_event support and this is a good time to move it to if_llatbl.h.
The two in-tree consumers of this event - OFED and toecore - are not affected.
r245925: Generate lle_event in the IPv6 neighbor discovery code too.
r245932: Teach toe_l2_resolve to resolve IPv6 destinations too.
r245934: Add checks for SO_NO_OFFLOAD in a couple of places that I missed earlier in r245915.
|
#
250893 |
|
21-May-2013 |
delphij |
MFC r250374:
According to the documentation, on Linux, cancel_delayed_work() does not do drain (flush_workqueue() in Linux terms) but instead returns true if the work was removed before it is run, or false otherwise.
Simulate this by removing the taskqueue_drain() and return the value derived from taskqueue_cancel()'s return value.
This would solve a witness warning caused by calling taskqueue_drain() with a non-sleepable lock held, like:
taskqueue_drain with the following non-sleepable locks held: exclusive rw lle (lle) r = 0 (0xfffffe001450b410) locked @ /usr/src/sys/netinet/in.c:1484 KDB: stack backtrace: db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xffffff848d4f7690 kdb_backtrace() at kdb_backtrace+0x39/frame 0xffffff848d4f7740 witness_warn() at witness_warn+0x4a8/frame 0xffffff848d4f7800 taskqueue_drain() at taskqueue_drain+0x3a/frame 0xffffff848d4f7840 set_timeout() at set_timeout+0x4a/frame 0xffffff848d4f7860 netevent_callback() at netevent_callback+0x16/frame 0xffffff848d4f7870 arpintr() at arpintr+0x9b5/frame 0xffffff848d4f7930
This do not affect kernel without OFED compiled in.
Reported by: Garrett Cooper <yaneurabeya gmail com>
|