diff --git a/dp/inc/cdp_txrx_cmn_struct.h b/dp/inc/cdp_txrx_cmn_struct.h index bc7be4bdbb..f61c605c5e 100644 --- a/dp/inc/cdp_txrx_cmn_struct.h +++ b/dp/inc/cdp_txrx_cmn_struct.h @@ -1460,6 +1460,7 @@ enum cdp_pdev_param_type { * @cdp_rxdma_refill_ring_size: RXDMA refill ring size config * @cdp_rx_refill_buf_pool_size: RX refill ring size config * @cdp_rxdma_buf_ring_size: RXDMA buf ring size config + * @mac_addr: vdev mac address */ typedef union cdp_config_param_t { /* peer params */ @@ -1562,6 +1563,8 @@ typedef union cdp_config_param_t { int cdp_rxdma_refill_ring_size; int cdp_rx_refill_buf_pool_size; int cdp_rxdma_buf_ring_size; + + uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; } cdp_config_param_type; /** @@ -1652,6 +1655,7 @@ enum cdp_pdev_bpr_param { * @CDP_ENABLE_WRAP: qwrap ap * @CDP_ENABLE_TRAFFIC_END_INDICATION: enable/disable traffic end indication * @CDP_VDEV_TX_TO_FW: Set to_fw bit for tx packets for the vdev + * @CDP_VDEV_SET_MAC_ADDR: Set mac address for vdev */ enum cdp_vdev_param_type { CDP_ENABLE_NAWDS, @@ -1702,6 +1706,7 @@ enum cdp_vdev_param_type { #ifdef FEATURE_DIRECT_LINK CDP_VDEV_TX_TO_FW, #endif + CDP_VDEV_SET_MAC_ADDR, }; /** diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index b35b5ceb67..5c3f5a6696 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -7561,6 +7561,14 @@ dp_set_vdev_param(struct cdp_soc_t *cdp_soc, uint8_t vdev_id, vdev->to_fw = val.cdp_vdev_tx_to_fw; break; #endif + case CDP_VDEV_SET_MAC_ADDR: + dp_info("set mac addr, old mac addr" QDF_MAC_ADDR_FMT + " new mac addr: " QDF_MAC_ADDR_FMT " for vdev %d", + QDF_MAC_ADDR_REF(vdev->mac_addr.raw), + QDF_MAC_ADDR_REF(val.mac_addr), vdev->vdev_id); + qdf_mem_copy(&vdev->mac_addr.raw[0], val.mac_addr, + QDF_MAC_ADDR_SIZE); + break; default: break; }