* Copyright 2008 Johannes Berg <johannes@sipsolutions.net>
  * Copyright 2013-2014  Intel Mobile Communications GmbH
  * Copyright 2016      Intel Deutschland GmbH
- * Copyright (C) 2018-2020 Intel Corporation
+ * Copyright (C) 2018-2021 Intel Corporation
  */
 #include <linux/kernel.h>
 #include <linux/slab.h>
        }
 
        request = kzalloc(struct_size(request, channels, n_channels) +
-                         sizeof(*request->scan_6ghz_params) * count,
+                         sizeof(*request->scan_6ghz_params) * count +
+                         sizeof(*request->ssids) * rdev_req->n_ssids,
                          GFP_KERNEL);
        if (!request) {
                cfg80211_free_coloc_ap_list(&coloc_ap_list);
 
        if (request->n_channels) {
                struct cfg80211_scan_request *old = rdev->int_scan_req;
-
                rdev->int_scan_req = request;
 
+               /*
+                * Add the ssids from the parent scan request to the new scan
+                * request, so the driver would be able to use them in its
+                * probe requests to discover hidden APs on PSC channels.
+                */
+               request->ssids = (void *)&request->channels[request->n_channels];
+               request->n_ssids = rdev_req->n_ssids;
+               memcpy(request->ssids, rdev_req->ssids, sizeof(*request->ssids) *
+                      request->n_ssids);
+
                /*
                 * If this scan follows a previous scan, save the scan start
                 * info from the first part of the scan