]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/wireless/nl80211.c
Merge tag 'hwlock-v5.5' of git://git.kernel.org/pub/scm/linux/kernel/git/andersson...
[linux.git] / net / wireless / nl80211.c
index 7b72286922f7263acb9c0179d4110725a4311aba..da5262b2298bda73837facb23781a3dfb8f26ca3 100644 (file)
@@ -624,6 +624,7 @@ const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
                                        .len = SAE_PASSWORD_MAX_LEN },
        [NL80211_ATTR_TWT_RESPONDER] = { .type = NLA_FLAG },
        [NL80211_ATTR_HE_OBSS_PD] = NLA_POLICY_NESTED(he_obss_pd_policy),
+       [NL80211_ATTR_VLAN_ID] = NLA_POLICY_RANGE(NLA_U16, 1, VLAN_N_VID - 2),
 };
 
 /* policy for the key attributes */
@@ -3940,6 +3941,10 @@ static int nl80211_new_key(struct sk_buff *skb, struct genl_info *info)
            key.type != NL80211_KEYTYPE_GROUP)
                return -EINVAL;
 
+       if (key.type == NL80211_KEYTYPE_GROUP &&
+           info->attrs[NL80211_ATTR_VLAN_ID])
+               key.p.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]);
+
        if (!rdev->ops->add_key)
                return -EOPNOTSUPP;
 
@@ -5711,6 +5716,9 @@ static int nl80211_set_station(struct sk_buff *skb, struct genl_info *info)
        if (info->attrs[NL80211_ATTR_STA_AID])
                params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]);
 
+       if (info->attrs[NL80211_ATTR_VLAN_ID])
+               params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]);
+
        if (info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL])
                params.listen_interval =
                     nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]);
@@ -5856,6 +5864,9 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
        params.listen_interval =
                nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]);
 
+       if (info->attrs[NL80211_ATTR_VLAN_ID])
+               params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]);
+
        if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) {
                params.support_p2p_ps =
                        nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]);
@@ -8265,10 +8276,8 @@ static int nl80211_start_sched_scan(struct sk_buff *skb,
        /* leave request id zero for legacy request
         * or if driver does not support multi-scheduled scan
         */
-       if (want_multi && rdev->wiphy.max_sched_scan_reqs > 1) {
-               while (!sched_scan_req->reqid)
-                       sched_scan_req->reqid = cfg80211_assign_cookie(rdev);
-       }
+       if (want_multi && rdev->wiphy.max_sched_scan_reqs > 1)
+               sched_scan_req->reqid = cfg80211_assign_cookie(rdev);
 
        err = rdev_sched_scan_start(rdev, dev, sched_scan_req);
        if (err)