Adjust graceful restart timer handling for multi-AFI/SAFI sessions
The timer is global for all AFI/SAFI but the first EoR would clear the timer
which then can result in stale routes. Instead stop clearing the timer and
use a new flag CAPA_GR_FINISHED. The code no longer clears CAPA_GR_RESTARTING
on EoR but instead sets CAPA_GR_FINISHED and so when the timer fires the
loop over all AFI/SAFI pairs will will skip all the ones that only have
CAPA_GR_RESTARTING set (but no CAPA_GR_FINISHED).
On top of this improve parse_capabilities() by respecting that only the last
instance of the capability matters. Also make sure capa_neg_calc() does not
write anything to capa.neg.grestart if the capability is disabled on our
end.
Reported by N0zoM1z0
OK tb@
change some busy wait delays to tsleep
Previously tsleep was avoided in usleep_range(), drm_msleep() and
fsleep() on precision grounds. That shouldn't be a problem after
kern_synch.c rev 1.225.
This change prevents inteldrm GuC initialisation errors seen on
Alder Lake by daniel@ and rsadowski@
Problem found by and initial patch from daniel@