Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: [netbsd-11] src/sys/dev/pci
Module Name: src
Committed By: martin
Date: Sat Sep 19 16:22:48 UTC 2026
Modified Files:
src/sys/dev/pci [netbsd-11]: if_ixl.c
Log Message:
Pull up following revision(s) (requested by tls in ticket #481):
sys/dev/pci/if_ixl.c: revision 1.102
sys/dev/pci/if_ixl.c: revision 1.103
Fix link state handling in ixl driver (PR 60736):
1. The admin queue ("ATQ") polling could skip completions if there was
more than one pending command. Force ixl_atq_poll() to go in order
and simplify by looping around the post_locked and done_locked functions.
This makes ixl_atq_poll_done() superfluous, so remove that.
2. Add missing "goto out" in ixl_get_link_status() so we return EBUSY
instead of falling through to cv_timedwait(). This is much
less likely with fix 1 above but worth fixing anyway.
3. Mostly undo 1.92 - don't block waiting on link in ixl_init(), instead,
fire off a link status check and ignore the result. Meanwhile, in
ixl_init_locked(), enable the hardware link status interrupt.
Addresses the source of the multiple pending completions that triggered
problem 1 while still ensuring we get link status at initialization.
Get rid of the wait in ixl_get_link_status, get rid of IXL_LINK_FLAG_WAITDONE;
fix another instance of the cv_timedwait() pattern noticed by riastradh@ in
PR kern/60736 . The only remaining change from revision 1.92 is the addition
of sc_link_state_done_task which avoids a lock inversion.
To generate a diff of this commit:
cvs rdiff -u -r1.100 -r1.100.2.1 src/sys/dev/pci/if_ixl.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Home |
Main Index |
Thread Index |
Old Index