• Johannes Berg's avatar
    iwlwifi: fix uCode event tracing · 2b2db58d
    Johannes Berg authored
    Fix multiple bugs in event tracing:
    
    1) If you enable uCode tracing with the device down,
       it will still attempt to access the device and
       continuously log "MAC is in deep sleep!" errors.
       Fix this by only starting logging when the device
       is actually alive.
    
    2) Now you can set the flag when the device is down,
       but logging doesn't happen when you bring it up.
       To fix that, start logging when the device comes
       alive. This means we don't log before -- we could
       do that but I don't need it right now.
    
    3) For some reason we read the error instead of the
       event log -- use the right pointer.
    
    4) Optimise SRAM reading of event log header.
    
    5) Fix reading write pointer == capacity, which can
       happen due to racy SRAM access
    
    6) Most importantly: fix an error where we would try
       to read WAY too many events (like 2^32-300) when
       we read the wrap counter before it is updated by
       the uCode -- this does happen in practice and will
       cause the driver to hang the machine.
    
    7) Finally, change the timer to 10ms instead of 100ms
       as 100ms is too slow to capture all data with a
       normal event log and with 100ms the log will wrap
       multiple times before we have a chance to read it.
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    2b2db58d
iwl-dev.h 30.2 KB