CVSROOT: /cvs Module name: src Changes by: d...@cvs.openbsd.org 2017/06/12 17:20:10
Modified files: sys/net : hfsc.c Log message: have the timeout call if qstart via the serialiser isntead of directly hfsc schedules a timeout to keep traffic moving if somethings has been delayed an no other tx activity has occurred. that timeout was calling (*ifp->if_qstart)(ifq) rather than ifq_start. the latter prevents concurrent calls to if_qstart. without this change bjorn ketelaars on misc@ was experiencing weird pauses in traffic and lockups because the tx ring was corrupted because re_start was run concurrently, once from the stack and once from hfsc. thanks to bjorn ketelaars for debugging, and mikeb@ for most of the legwork in diagnosing the problem. ok mikeb@