mac80211-hwsim: support destroying radio by name
[pandora-kernel.git] / drivers / net / wireless / mac80211_hwsim.c
index 4e92a5b..e9f7c1e 100644 (file)
@@ -2544,16 +2544,27 @@ static int hwsim_create_radio_nl(struct sk_buff *msg, struct genl_info *info)
 static int hwsim_destroy_radio_nl(struct sk_buff *msg, struct genl_info *info)
 {
        struct mac80211_hwsim_data *data;
-       int idx;
+       s64 idx = -1;
+       const char *hwname = NULL;
 
-       if (!info->attrs[HWSIM_ATTR_RADIO_ID])
+       if (info->attrs[HWSIM_ATTR_RADIO_ID])
+               idx = nla_get_u32(info->attrs[HWSIM_ATTR_RADIO_ID]);
+       else if (info->attrs[HWSIM_ATTR_RADIO_NAME])
+               hwname = (void *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]);
+       else
                return -EINVAL;
-       idx = nla_get_u32(info->attrs[HWSIM_ATTR_RADIO_ID]);
 
        spin_lock_bh(&hwsim_radio_lock);
        list_for_each_entry(data, &hwsim_radios, list) {
-               if (data->idx != idx)
-                       continue;
+               if (idx >= 0) {
+                       if (data->idx != idx)
+                               continue;
+               } else {
+                       if (hwname &&
+                           strcmp(hwname, wiphy_name(data->hw->wiphy)))
+                               continue;
+               }
+
                list_del(&data->list);
                spin_unlock_bh(&hwsim_radio_lock);
                mac80211_hwsim_destroy_radio(data);