cfg80211 'iw reg set' no longer works after trying to set invalid country code You can change the wireless region by using 'iw set reg'. Normally you can switch back and forth just fine... # iw reg set US # iw reg get | grep country country US: # iw reg set JP # iw reg get | grep country country JP: # iw reg set US # iw reg get | grep country country US: However, if we try to use an invalid country code, such as XX: # iw reg set XX # iw reg get | grep country country US: ... it doesn't take. Okay, no big deal. Let's try setting it back to JP: # iw reg set JP # iw reg get | grep country country US: We're now stuck at the country code we were at before we put the invalid one in. In dmesg, this exchange looks like: # dmesg | grep cfg80211 cfg80211: Calling CRDA to update world regulatory domain cfg80211: World regulatory domain updated: cfg80211: Calling CRDA for country: US cfg80211: Regulatory domain changed to country: US cfg80211: Calling CRDA for country: JP cfg80211: Regulatory domain changed to country: JP cfg80211: Calling CRDA for country: US cfg80211: Regulatory domain changed to country: US cfg80211: Calling CRDA for country: XX ... and we're stuck there. What looks to be happening is that the kernel uses udev to call /sbin/crda with a new COUNTRY= setting, but /sbin/crda bails out with -1 because of 'No country match in regulatory database', and never sends a netlink message back to the kernel to give it the regulatory information for that country. The kernel then seems to be stuck waiting for a message that will never come. The only way I can figure to unstick it is to reboot. -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html