Page MenuHomeFreeBSD

iflib: Prevent watchdog from resetting idle queues
ClosedPublic

Authored by piotr.pietruszewski_intel.com on Sep 19 2019, 10:15 AM.

Details

Summary

While changing link state in iflib_link_state_change(), queues are
marked as IFLIB_QUEUE_IDLE to disable watchdog. Currently, iflib_timer()
watchdog does not check for previous queue status before marking it as
IFLIB_QUEUE_HUNG.

This patch adds check of queue status before marking it as hung.

Signed-off-by: Piotr Pietruszewski <piotr.pietruszewski@intel.com>

Diff Detail

Repository
rS FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

I'm not sure, but I think the only way this can happen is when the link is down. Is that the caee here?

I'm not sure, but I think the only way this can happen is when the link is down. Is that the caee here?

Yes. We discovered that while investigating this PR: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=239240

Would it make sense then to assert that the link is down?

erj added a subscriber: erj.Oct 8 2019, 5:54 PM

Would it make sense then to assert that the link is down?

Could you clarify on what you mean by that? Did you mean have a check for when the link is down, or an actual kernel assert? I think some of us internally were confused about what you meant.

Yes, I meant adding a KASSERT or at least a comment.

gallatin accepted this revision.Dec 22 2019, 11:09 PM
This revision is now accepted and ready to land.Dec 22 2019, 11:09 PM
erj accepted this revision.Jan 2 2020, 11:34 PM
This revision was automatically updated to reflect the committed changes.