qcacmn: Add support to dynamic MAC address update

Currently, MAC address update is supported only when interface is down.
Because of this framework needs to issue interface down and interface
up to update the MAC address.

This is resulting in connection time increase when MAC address
randomization is enabled for every new connection.

To optimize the connection time, add support to update the MAC address
without bringing the interface to down state.

Change-Id: Ic3eff6a9571f885292021b2c178d26b0eace5042
CRs-Fixed: 3063475
Tento commit je obsažen v:
Bapiraju Alla
2021-10-12 00:14:14 +05:30
odevzdal Madan Koyyalamudi
rodič a50a68c40d
revize ca4b3fabf6
16 změnil soubory, kde provedl 407 přidání a 0 odebrání

Zobrazit soubor

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -208,4 +209,18 @@ QDF_STATUS wlan_mlme_psoc_enable(struct wlan_objmgr_psoc *psoc);
* FAILURE, if cleanup fails
*/
QDF_STATUS wlan_mlme_psoc_disable(struct wlan_objmgr_psoc *psoc);
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
/**
* wlan_vdev_mlme_send_set_mac_addr() - Send set MAC address command to FW
* @mac_addr: VDEV MAC address
* @mld_addr: VDEV MLD address
* @vdev: Pointer to object manager VDEV
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_vdev_mlme_send_set_mac_addr(struct qdf_mac_addr mac_addr,
struct qdf_mac_addr mld_addr,
struct wlan_objmgr_vdev *vdev);
#endif
#endif

Zobrazit soubor

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -573,3 +574,18 @@ bool mlme_max_chan_switch_is_set(struct wlan_objmgr_vdev *vdev)
return phy_config->max_chan_switch_ie;
}
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
QDF_STATUS mlme_vdev_ops_send_set_mac_address(struct qdf_mac_addr mac_addr,
struct qdf_mac_addr mld_addr,
struct wlan_objmgr_vdev *vdev)
{
QDF_STATUS ret = QDF_STATUS_E_FAILURE;
if (glbl_ops && glbl_ops->mlme_vdev_send_set_mac_addr)
ret = glbl_ops->mlme_vdev_send_set_mac_addr(mac_addr, mld_addr,
vdev);
return ret;
}
#endif

Zobrazit soubor

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -299,3 +300,12 @@ QDF_STATUS wlan_vdev_mlme_deinit(void)
return QDF_STATUS_SUCCESS;
}
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
QDF_STATUS wlan_vdev_mlme_send_set_mac_addr(struct qdf_mac_addr mac_addr,
struct qdf_mac_addr mld_addr,
struct wlan_objmgr_vdev *vdev)
{
return mlme_vdev_ops_send_set_mac_address(mac_addr, mld_addr, vdev);
}
#endif