cfg80211: separate intersection section in __set_regdom()
So far the __set_regdom() code is pretty generic as the intersection case is fairly straight forward; this will however change when 802.11d support is added so lets separate intersection code for now in preparation for 802.11d support. This patch only has slight functional changes. Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
8375af3ba2
commit
b8295acdc3
@@ -826,10 +826,6 @@ static int __set_regdom(const struct ieee80211_regdomain *rd)
|
|||||||
if (WARN_ON(!reg_is_valid_request(rd->alpha2)))
|
if (WARN_ON(!reg_is_valid_request(rd->alpha2)))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
reset_regdomains();
|
|
||||||
|
|
||||||
/* Country IE parsing coming soon */
|
|
||||||
|
|
||||||
if (!is_valid_rd(rd)) {
|
if (!is_valid_rd(rd)) {
|
||||||
printk(KERN_ERR "cfg80211: Invalid "
|
printk(KERN_ERR "cfg80211: Invalid "
|
||||||
"regulatory domain detected:\n");
|
"regulatory domain detected:\n");
|
||||||
@@ -837,16 +833,33 @@ static int __set_regdom(const struct ieee80211_regdomain *rd)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unlikely(last_request->intersect)) {
|
if (!last_request->intersect) {
|
||||||
|
reset_regdomains();
|
||||||
|
cfg80211_regdomain = rd;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Intersection requires a bit more work */
|
||||||
|
|
||||||
|
if (last_request->initiator != REGDOM_SET_BY_COUNTRY_IE) {
|
||||||
|
|
||||||
intersected_rd = regdom_intersect(rd, cfg80211_regdomain);
|
intersected_rd = regdom_intersect(rd, cfg80211_regdomain);
|
||||||
if (!intersected_rd)
|
if (!intersected_rd)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
/* We can trash what CRDA provided now */
|
||||||
kfree(rd);
|
kfree(rd);
|
||||||
rd = intersected_rd;
|
rd = NULL;
|
||||||
|
|
||||||
|
reset_regdomains();
|
||||||
|
cfg80211_regdomain = intersected_rd;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tada! */
|
/* Country IE parsing coming soon */
|
||||||
cfg80211_regdomain = rd;
|
reset_regdomains();
|
||||||
|
WARN_ON(1);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user