mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-22 14:49:24 +01:00
wiphy: track GET_REG ID
Keep track of the GET_REG call so it can be canceled if the wiphy goes down.
This commit is contained in:
parent
544aafb675
commit
dfcba7c83c
11
src/wiphy.c
11
src/wiphy.c
@ -121,6 +121,7 @@ struct wiphy {
|
|||||||
/* Work queue for this radio */
|
/* Work queue for this radio */
|
||||||
struct l_queue *work;
|
struct l_queue *work;
|
||||||
bool work_in_callback;
|
bool work_in_callback;
|
||||||
|
unsigned int get_reg_id;
|
||||||
|
|
||||||
bool support_scheduled_scan:1;
|
bool support_scheduled_scan:1;
|
||||||
bool support_rekey_offload:1;
|
bool support_rekey_offload:1;
|
||||||
@ -341,6 +342,9 @@ static void wiphy_free(void *data)
|
|||||||
|
|
||||||
l_debug("Freeing wiphy %s[%u]", wiphy->name, wiphy->id);
|
l_debug("Freeing wiphy %s[%u]", wiphy->name, wiphy->id);
|
||||||
|
|
||||||
|
if (wiphy->get_reg_id)
|
||||||
|
l_genl_family_cancel(nl80211, wiphy->get_reg_id);
|
||||||
|
|
||||||
for (i = 0; i < NUM_NL80211_IFTYPES; i++)
|
for (i = 0; i < NUM_NL80211_IFTYPES; i++)
|
||||||
l_free(wiphy->iftype_extended_capabilities[i]);
|
l_free(wiphy->iftype_extended_capabilities[i]);
|
||||||
|
|
||||||
@ -1875,6 +1879,8 @@ static void wiphy_get_reg_cb(struct l_genl_msg *msg, void *user_data)
|
|||||||
uint32_t tmp;
|
uint32_t tmp;
|
||||||
bool global;
|
bool global;
|
||||||
|
|
||||||
|
wiphy->get_reg_id = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NL80211_CMD_GET_REG contains an NL80211_ATTR_WIPHY iff the wiphy
|
* NL80211_CMD_GET_REG contains an NL80211_ATTR_WIPHY iff the wiphy
|
||||||
* uses a self-managed regulatory domain.
|
* uses a self-managed regulatory domain.
|
||||||
@ -1892,8 +1898,9 @@ static void wiphy_get_reg_domain(struct wiphy *wiphy)
|
|||||||
msg = l_genl_msg_new(NL80211_CMD_GET_REG);
|
msg = l_genl_msg_new(NL80211_CMD_GET_REG);
|
||||||
l_genl_msg_append_attr(msg, NL80211_ATTR_WIPHY, 4, &wiphy->id);
|
l_genl_msg_append_attr(msg, NL80211_ATTR_WIPHY, 4, &wiphy->id);
|
||||||
|
|
||||||
if (!l_genl_family_send(wiphy->nl80211, msg, wiphy_get_reg_cb, wiphy,
|
wiphy->get_reg_id = l_genl_family_send(wiphy->nl80211, msg,
|
||||||
NULL)) {
|
wiphy_get_reg_cb, wiphy, NULL);
|
||||||
|
if (!wiphy->get_reg_id) {
|
||||||
l_error("Error sending NL80211_CMD_GET_REG for %s", wiphy->name);
|
l_error("Error sending NL80211_CMD_GET_REG for %s", wiphy->name);
|
||||||
l_genl_msg_unref(msg);
|
l_genl_msg_unref(msg);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user