On 02.08.20 17:02, Shay Bar wrote:
On 06/07/2020 14:52, John Crispin wrote:
-static void
+static int
ath11k_mac_setup_vdev_create_params(struct ath11k_vif *arvif,
struct vdev_create_params *params)
{
struct ath11k *ar = arvif->ar;
struct ath11k_pdev *pdev = ar->pdev;
+ struct ieee80211_vif *parent;
params->if_id = arvif->vdev_id;
params->type = arvif->vdev_type;
params->subtype = arvif->vdev_subtype;
params->pdev_id = pdev->pdev_id;
+ params->vdevid_trans = 0;
+ switch (ieee80211_get_multi_bssid_mode(arvif->vif)) {
+ case NL80211_MULTIPLE_BSSID_TRANSMITTED:
+ params->flags = WMI_HOST_VDEV_FLAGS_TRANSMIT_AP;
+ break;
+ case NL80211_MULTIPLE_BSSID_NON_TRANSMITTED:
+ params->flags = WMI_HOST_VDEV_FLAGS_NON_TRANSMIT_AP;
+ parent = ieee80211_get_multi_bssid_parent(arvif->vif);
+ if (!parent)
+ return -ENOENT;
+ if (ar->hw->wiphy != ieee80211_vif_to_wdev(parent)->wiphy)
+ return -EINVAL;
+ params->vdevid_trans = ath11k_vif_to_arvif(parent)->vdev_id;
+ break;
+ default:
+ params->flags = WMI_HOST_VDEV_FLAGS_NON_MBSSID_AP;
+ break;
+ }
Hi John,
The ath11k_mac_setup_vdev_create_params() is called from the add_interface hook
which is called from ieee80211_do_open() which is, for the first (TRANSMITTED)
interface, before wdev->multi_bssid_mode is set to NL80211_MULTIPLE_BSSID_TRANSMITTED
(set upon start_ap from hostapd).
Can you please explain how wdev->multi_bssid_mode can have
NL80211_MULTIPLE_BSSID_TRANSMITTED value in the above code ?
Hi Shay,
https://patchwork.kernel.org/patch/11587085/
John