Let me try to describe the problem in more details: 1) When user space is calling "iw reg set <contry_code>" iw utility will send NL80211_CMD_REQ_SET_REG through nl80211 to cfg80211. 2) cfg80211 will process this call in reg_todo work that is defined here https://git.kernel.org/cgit/linux/kernel/git/linville/wireless.git/tree/net/wireless/reg.c#n1621 3) reg_todo work is calling reg_process_pending_hints to process the call from user space where it checks if last request was processed(https://git.kernel.org/cgit/linux/kernel/git/linville/wireless.git/tree/net/wireless/reg.c#n1576). But last request is still there! This last request is "NL80211_REGDOM_SET_BY_CORE" request that cfg80211 sent on init for first regulatory domain initialization. So the problem is that the first request that is sent by inbuilt cfg80211 will be never process and will always stay in last_request variable(https://git.kernel.org/cgit/linux/kernel/git/linville/wireless.git/tree/net/wireless/reg.c#n91) Kalle, did you ever tried inbuilt into kernel cfg80211? This problem is 100% reproducible because inbuilt modules will be always initialize before user space. 2013/9/10 Kalle Valo <kvalo@xxxxxxxxxx>: > Eugene Krasnikov <k.eugene.e@xxxxxxxxx> writes: > >> No, the flag CONFIG_CFG80211_INTERNAL_REGDB does not help and it should not. >> >> The problem is that cfg80211 will stuck in situation when cfg80211 is >> initialized before user space. One way to get cfg80211 out of this >> state is to run crda once right after user space is up and running. >> But again is this intentional? Or it is more like a workaround? > > With the internal regdb you do not need crda anymore, so why does it still > get stuck? Where does it exactly get stuck? > > -- > Kalle Valo -- Best regards, Eugene -- 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