Hi folks, While testing Intel 3168 card. I hit this problem where the driver can't set regulatory domain properly. The iwlmvm driver first tries to get regulatory domain from kernel (iwl_mvm_get_current_regdomain()), and then from bios. Below are the relevant code from nvm.c, with my debug lines: 886 regd = iwl_mvm_get_current_regdomain(mvm, NULL); 887 if (IS_ERR_OR_NULL(regd)) 888 return -EIO; 889 890 IWL_INFO(mvm, "eniacz: regd from kernel=%s\n", regd->alpha2); 891 892 IWL_INFO(mvm, "eniacz: mcc supported=%d\n", iwl_mvm_is_wifi_mcc_supported(mvm)); 893 IWL_INFO(mvm, "eniacz: IWL_UCODE_TLV_API_WIFI_MCC_UPDATE=%d\n", fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_WIFI_MCC_UPDATE)); 894 IWL_INFO(mvm, "eniacz: IWL_UCODE_TLV_CAPA_LAR_MULTI_MCC=%d\n", fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_LAR_MULTI_MCC)); 895 if (iwl_mvm_is_wifi_mcc_supported(mvm) && 896 !iwl_mvm_get_bios_mcc(mvm, mcc)) { 897 kfree(regd); 898 regd = iwl_mvm_get_regdomain(mvm->hw->wiphy, mcc, 899 MCC_SOURCE_BIOS, NULL); 900 if (IS_ERR_OR_NULL(regd)) 901 return -EIO; 902 IWL_INFO(mvm, "eniacz: regd from bios=%s\n", regd->alpha2); 903 } 904 905 retval = regulatory_set_wiphy_regd_sync_rtnl(mvm->hw->wiphy, regd); 906 kfree(regd); 907 return retval; The first problem is line 890 always returns 00, regardless of what I have set in cfg80211. The second problem is that iwlwifi-3168-21.ucode doesn't support MCC, even though Intel claim 3168 support it. iwlwifi-8000C-14.ucode does support MCC but that only work with 8260 modules. When I compile code from HEAD, I found it is requesting version 23 of the firmware (4.6.0 requests 21). But I can't find v23 firmware anywhere. My question is how can do I enforce regulatory domain settings on a 3168 module. Either cfg80211 or bios approach will work for me but right now neither of them is. Regards/Eniac -- 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