diff --git a/core/hdd/src/wlan_hdd_oemdata.c b/core/hdd/src/wlan_hdd_oemdata.c index 805d63dca434..e6a786f2a578 100644 --- a/core/hdd/src/wlan_hdd_oemdata.c +++ b/core/hdd/src/wlan_hdd_oemdata.c @@ -1126,6 +1126,7 @@ oem_data_attr_policy[QCA_WLAN_VENDOR_ATTR_OEM_DATA_PARAMS_MAX + 1] = { .len = OEM_DATA_MAX_SIZE }, + [QCA_WLAN_VENDOR_ATTR_OEM_DEVICE_INFO] = {.type = NLA_U8}, [QCA_WLAN_VENDOR_ATTR_OEM_DATA_RESPONSE_EXPECTED] = {.type = NLA_FLAG}, }; @@ -1235,6 +1236,7 @@ __wlan_hdd_cfg80211_oem_data_handler(struct wiphy *wiphy, { struct net_device *dev = wdev->netdev; QDF_STATUS status = QDF_STATUS_SUCCESS; + uint8_t mac_id; int ret; struct sk_buff *skb = NULL; struct oem_data oem_data = {0}; @@ -1274,6 +1276,21 @@ __wlan_hdd_cfg80211_oem_data_handler(struct wiphy *wiphy, return -EINVAL; } + if (tb[QCA_WLAN_VENDOR_ATTR_OEM_DEVICE_INFO]) + oem_data.pdev_vdev_flag = + nla_get_u8(tb[QCA_WLAN_VENDOR_ATTR_OEM_DEVICE_INFO]); + + if (oem_data.pdev_vdev_flag) { + status = policy_mgr_get_mac_id_by_session_id(hdd_ctx->psoc, + adapter->vdev_id, + &mac_id); + if (QDF_IS_STATUS_ERROR(status)) { + hdd_err("get mac id failed"); + return -EINVAL; + } + oem_data.pdev_id = mac_id; + oem_data.is_host_pdev_id = true; + } oem_data.data_len = nla_len(tb[QCA_WLAN_VENDOR_ATTR_OEM_DATA_CMD_DATA]); if (!oem_data.data_len) {