* Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
  * Copyright 2007      Johannes Berg <johannes@sipsolutions.net>
  * Copyright 2013-2014  Intel Mobile Communications GmbH
- * Copyright (C) 2018 Intel Corporation
+ * Copyright (C) 2018, 2020 Intel Corporation
  *
  * Transmit and frame generation functions.
  */
        struct ieee80211_local *local = sdata->local;
        struct sk_buff *skb;
        struct ethhdr *ehdr;
+       u32 ctrl_flags = 0;
        u32 flags;
 
        /* Only accept CONTROL_PORT_PROTOCOL configured in CONNECT/ASSOCIATE
            proto != cpu_to_be16(ETH_P_PREAUTH))
                return -EINVAL;
 
+       if (proto == sdata->control_port_protocol)
+               ctrl_flags |= IEEE80211_TX_CTRL_PORT_CTRL_PROTO;
+
        if (unencrypted)
                flags = IEEE80211_TX_INTFL_DONT_ENCRYPT;
        else
        skb_reset_mac_header(skb);
 
        local_bh_disable();
-       __ieee80211_subif_start_xmit(skb, skb->dev, flags, 0);
+       __ieee80211_subif_start_xmit(skb, skb->dev, flags, ctrl_flags);
        local_bh_enable();
 
        return 0;