Skip to content
  • Kalle Valo's avatar
    cfg80211: fix set_regdom() to cancel requests with same alpha2 · 95908535
    Kalle Valo authored
    
    
    While adding regulatory support to ath6kl I noticed that I easily
    got the regulatory code confused. The way to reproduce the bug was:
    
    1. iw reg set FI (in userspace)
    2. cfg80211 calls ath6kl_reg_notify(FI)
    3. ath6kl sets regdomain in firmware
    4. firmware sends regdomain event to notify about the new regdomain (FI)
    5. ath6kl calls regulatory_hint(FI)
    
    And this (from FI to FI transition) confuses cfg80211 and after that I
    only get "Pending regulatory request, waiting for it to be
    processed...." messages and regdomain changes won't work anymore.
    
    The reason why ath6kl calls regulatory_hint() is that firmware can change
    the regulatory domain by it's own, for example due to 11d IEs. I could
    of course workaround this in ath6kl but I think it's better to handle
    the case in cfg80211.
    
    The fix is pretty simple, use a different error code if the regdomain is
    same and then just set the request processed so that it doesn't block new
    requests.
    
    Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    95908535