From c7d68db191d6cfb87a1ce9bd85b914e4bae07e5d Mon Sep 17 00:00:00 2001 From: Kiran Venkatappa Date: Wed, 8 Feb 2017 14:51:13 +0530 Subject: [PATCH] qcacmn: Add pdev_id in pdev commands and events pdev_id is used to get the pdev for which the event is recieved. Add this in extract APIs to fetch the pdev from pdev_ids and use it for further processing. This is change is part of changes required to support multi-radio. Change-Id: Iadda098ccb31be5e8e43083158802abe49ac01b4 CRs-Fixed: 2003898 --- wmi/inc/wmi_unified_param.h | 85 +++++++++++++++++++++++++++-------- wmi/src/wmi_unified_non_tlv.c | 53 ++++++++++++++++++++-- wmi/src/wmi_unified_tlv.c | 34 +++++++++++++- 3 files changed, 147 insertions(+), 25 deletions(-) diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 8bd6c5607d..9421002226 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -456,6 +456,9 @@ enum wmi_dwelltime_adaptive_mode { * @if_id: interface id * @type: interface type * @subtype: interface subtype + * @nss_2g: NSS for 2G + * @nss_5g: NSS for 5G + * @pdev_id: pdev id on pdev for this vdev */ struct vdev_create_params { uint8_t if_id; @@ -463,6 +466,7 @@ struct vdev_create_params { uint32_t subtype; uint8_t nss_2g; uint8_t nss_5g; + uint32_t pdev_id; }; /** @@ -1159,6 +1163,7 @@ struct scan_start_params { * @scan_id: scan id * @req_type: scan request type * @vdev_id: vdev id + * @pdev_id: pdev_id * @all_scans: Stop all scans * @vap_scans: stop vap scans * @specific_scan: specific scan @@ -1170,6 +1175,7 @@ struct scan_stop_params { uint32_t scan_id; uint32_t req_type; uint32_t vdev_id; + uint32_t pdev_id; #ifndef CONFIG_MCL bool all_scans; bool vap_scans; @@ -1210,11 +1216,13 @@ struct scan_chan_list_params { #else /** * struct scan_chan_list_params - scan channel list cmd parameter + * @pdev_id: pdev_id * @num_chan: no of scan channels * @nallchans: nall chans * @ch_param: pointer to channel_paramw */ struct scan_chan_list_params { + uint32_t pdev_id; uint16_t nallchans; struct channel_param ch_param[1]; }; @@ -3747,6 +3755,7 @@ struct vdev_spectral_enable_params { * @ctl_2G: CTL 2G * @ctl_5G: CTL 5G * @dfsDomain: DFS domain + * @pdev_id: pdev_id */ struct pdev_set_regdomain_params { uint16_t currentRDinuse; @@ -3755,6 +3764,7 @@ struct pdev_set_regdomain_params { uint32_t ctl_2G; uint32_t ctl_5G; uint8_t dfsDomain; + uint32_t pdev_id; }; /** @@ -4502,6 +4512,7 @@ struct rx_reorder_queue_remove_params { * @num_peer_stats: number of peer stats event structures 0 or max peers * @num_bcnflt_stats: number of beacon filter stats * @num_chan_stats: number of channel stats + * @pdev_id: pdev_id */ typedef struct { wmi_host_stats_id stats_id; @@ -4511,6 +4522,7 @@ typedef struct { uint32_t num_peer_stats; uint32_t num_bcnflt_stats; uint32_t num_chan_stats; + uint32_t pdev_id; } wmi_host_stats_event; /** @@ -5548,6 +5560,10 @@ struct wmi_host_fw_abi_ver { * @num_ocb_vdevs: * @num_ocb_channels: * @num_ocb_schedules: + * @num_ns_ext_tuples_cfg: + * @bpf_instruction_size: + * @max_bssid_rx_filters: + * @use_pdev_id: */ typedef struct { uint32_t num_vdevs; @@ -5609,6 +5625,10 @@ typedef struct { uint32_t num_ocb_vdevs; uint32_t num_ocb_channels; uint32_t num_ocb_schedules; + uint32_t num_ns_ext_tuples_cfg; + uint32_t bpf_instruction_size; + uint32_t max_bssid_rx_filters; + uint32_t use_pdev_id; } target_resource_config; /** @@ -5616,11 +5636,13 @@ typedef struct { * @event_type: event type add/delete * @peer_mac: peer mac * @dest_mac: destination mac address + * @vdev_id: vdev id */ typedef struct { uint32_t event_type[4]; u_int8_t peer_mac[IEEE80211_ADDR_LEN]; u_int8_t dest_mac[IEEE80211_ADDR_LEN]; + uint32_t vdev_id; } wds_addr_event_t; /** * Enum replicated for host abstraction with FW @@ -5671,6 +5693,7 @@ typedef struct { * scan source for a scan result mgmt frame * @rssi: combined RSSI, i.e. the sum of the snr + noise floor (dBm units) * @tsf_delta: + * @pdev_id: pdev_id */ typedef struct { uint32_t channel; @@ -5683,6 +5706,7 @@ typedef struct { uint32_t flags; int32_t rssi; uint32_t tsf_delta; + uint32_t pdev_id; } wmi_host_mgmt_rx_hdr; /** @@ -5796,18 +5820,22 @@ typedef struct { * chan3: {NFCalPower_chain0, NFCalPower_chain1, * NFCalPower_chain2, NFCalPower_chain3}, * @freqNum: frequency number + * @pdev_id: pdev_id */ typedef struct { int8_t nfdBr[WMI_HOST_RXG_CAL_CHAN_MAX * WMI_HOST_MAX_NUM_CHAINS]; int8_t nfdBm[WMI_HOST_RXG_CAL_CHAN_MAX * WMI_HOST_MAX_NUM_CHAINS]; uint32_t freqNum[WMI_HOST_RXG_CAL_CHAN_MAX]; + uint32_t pdev_id; } wmi_host_pdev_nfcal_power_all_channels_event; /** * struct wmi_host_pdev_tpc_event - WMI host pdev TPC event + * @pdev_id: pdev_id * @tpc: */ typedef struct { + uint32_t pdev_id; uint32_t tpc[1]; } wmi_host_pdev_tpc_event; @@ -5836,6 +5864,7 @@ enum { /** * struct wmi_host_pdev_tpc_config_event - host pdev tpc config event + * @pdev_id: pdev_id * @regDomain: * @chanFreq: * @phyMode: @@ -5854,6 +5883,7 @@ enum { * @ratesArray: */ typedef struct { + uint32_t pdev_id; uint32_t regDomain; uint32_t chanFreq; uint32_t phyMode; @@ -5932,10 +5962,12 @@ typedef struct { * struct wmi_host_mgmt_tx_compl_event - TX completion event * @desc_id: from tx_send_cmd * @status: WMI_MGMT_TX_COMP_STATUS_TYPE + * @pdev_id: pdev_id */ typedef struct { uint32_t desc_id; uint32_t status; + uint32_t pdev_id; } wmi_host_mgmt_tx_compl_event; #define WMI_HOST_TIM_BITMAP_ARRAY_SIZE 17 @@ -5995,6 +6027,7 @@ typedef struct { * @peer_macaddr: peer mac address * @reason: kickout reason * @rssi: rssi + * @pdev_id: pdev_id */ typedef struct { uint8_t peer_macaddr[IEEE80211_ADDR_LEN]; @@ -6006,6 +6039,7 @@ typedef struct { * struct wmi_host_peer_sta_ps_statechange_event - ST ps state change event * @peer_macaddr: peer mac address * @peer_ps_stats: peer PS state + * @pdev_id: pdev_id */ typedef struct { uint8_t peer_macaddr[IEEE80211_ADDR_LEN]; @@ -6027,6 +6061,7 @@ typedef struct { /* TODO: ratecode_160 needs to add for future chips */ /** * struct wmi_sa_rate_cap - smart antenna rat capabilities + * @pdev_id: pdev_id * @ratecode_legacy: Rate code array for CCK OFDM * @ratecode_20: Rate code array for 20MHz BW * @ratecode_40: Rate code array for 40MHz BW @@ -6554,6 +6589,7 @@ typedef struct _wmi_host_chan_info { * @buf_len: * @phy_err_mask0: * @phy_err_mask1: + * @pdev_id: pdev_id */ typedef struct _wmi_host_phyerr { wmi_host_rf_info_t rf_info; @@ -6565,6 +6601,7 @@ typedef struct _wmi_host_phyerr { uint32_t buf_len; uint32_t phy_err_mask0; uint32_t phy_err_mask1; + uint32_t pdev_id; } wmi_host_phyerr_t; /** @@ -6740,6 +6777,7 @@ typedef struct { /** * struct wmi_host_chan_info_event - Channel info WMI event + * @pdev_id: pdev_id * @err_code: Error code * @freq: Channel freq * @cmd_flags: Read flags @@ -6752,6 +6790,7 @@ typedef struct { * @rx_11b_mode_data_duration: 11b mode data duration */ typedef struct { + uint32_t pdev_id; uint32_t err_code; uint32_t freq; uint32_t cmd_flags; @@ -6766,16 +6805,19 @@ typedef struct { /** * struct wmi_host_pdev_channel_hopping_event + * @pdev_id: pdev_id * @noise_floor_report_iter: Noise threshold iterations with high values * @noise_floor_total_iter: Total noise threshold iterations */ typedef struct { + uint32_t pdev_id; uint32_t noise_floor_report_iter; uint32_t noise_floor_total_iter; } wmi_host_pdev_channel_hopping_event; /** * struct wmi_host_pdev_bss_chan_info_event + * @pdev_id: pdev_id * @freq: Units in MHz * @noise_floor: units are dBm * @rx_clear_count_low: @@ -6791,6 +6833,7 @@ typedef struct { * @reserved: */ typedef struct { + uint32_t pdev_id; uint32_t freq; uint32_t noise_floor; uint32_t rx_clear_count_low; @@ -6811,10 +6854,12 @@ typedef struct { * struct wmi_host_inst_stats_resp * @iRSSI: Instantaneous RSSI * @peer_macaddr: peer mac address + * @pdev_id: pdev_id */ typedef struct { uint32_t iRSSI; wmi_host_mac_addr peer_macaddr; + uint32_t pdev_id; } wmi_host_inst_stats_resp; /* Event definition and new structure addition to send event @@ -6869,31 +6914,34 @@ enum { token_info.field2 |= ((unused_token) & 0xffff); \ } while (0) +/** + * struct wmi_host_atf_peer_stats_info + * @field1: bits 15:0 peer_ast_index WMI_ATF_PEER_STATS_GET_PEER_AST_IDX + * bits 31:16 reserved + * @field2: bits 15:0 used tokens WMI_ATF_PEER_STATS_GET_USED_TOKENS + * bits 31:16 unused tokens WMI_ATF_PEER_STATS_GET_UNUSED_TOKENS + * @field3: for future use + */ typedef struct { - /** - * field1 contains: - * bits 15:0 peer_ast_index WMI_ATF_PEER_STATS_GET_PEER_AST_IDX - * WMI_ATF_PEER_STATS_SET_PEER_AST_IDX - * bits 31:16 reserved - * - * field2 contains: - * bits 15:0 used tokens WMI_ATF_PEER_STATS_GET_USED_TOKENS - * WMI_ATF_PEER_STATS_SET_USED_TOKENS - * bits 31:16 unused tokens WMI_ATF_PEER_STATS_GET_UNUSED_TOKENS - * WMI_ATF_PEER_STATS_SET_UNUSED_TOKENS - * - * field3 for future use - */ uint32_t field1; uint32_t field2; uint32_t field3; } wmi_host_atf_peer_stats_info; +/** + * struct wmi_host_atf_peer_stats_event + * @pdev_id: pdev_id + * @num_atf_peers: number of peers in token_info_list + * @comp_usable_airtime: computed usable airtime in tokens + * @reserved[4]: reserved for future use + * @wmi_host_atf_peer_stats_info token_info_list: list of num_atf_peers + */ typedef struct { - uint32_t num_atf_peers; /** number of peers in token_info_list */ - uint32_t comp_usable_airtime; /** computed usable airtime in tokens */ - uint32_t reserved[4]; /** reserved for future use */ - wmi_host_atf_peer_stats_info token_info_list[1/*num_atf_peers*/]; + uint32_t pdev_id; + uint32_t num_atf_peers; + uint32_t comp_usable_airtime; + uint32_t reserved[4]; + wmi_host_atf_peer_stats_info token_info_list[1]; } wmi_host_atf_peer_stats_event; /** @@ -7335,5 +7383,4 @@ struct wmi_host_fips_event_param { uint32_t data_len; uint32_t *data; }; - #endif /* _WMI_UNIFIED_PARAM_H_ */ diff --git a/wmi/src/wmi_unified_non_tlv.c b/wmi/src/wmi_unified_non_tlv.c index 9882400bf6..42cad5952d 100644 --- a/wmi/src/wmi_unified_non_tlv.c +++ b/wmi/src/wmi_unified_non_tlv.c @@ -38,6 +38,14 @@ #if defined(WMI_NON_TLV_SUPPORT) || defined(WMI_TLV_AND_NON_TLV_SUPPORT) #include "wmi.h" #include "wmi_unified.h" + +/* Pdev_id starts from 1. For backward compatability value zero is used + * for broadcast ID. pdev_id is used to distinguish the radio for which event + * is recieved. Since non-tlv target has only one radio, setting + * default pdev_id to one to keep rest of the code using WMI APIs unfiorm. + */ +#define WMI_NON_TLV_DEFAULT_PDEV_ID 1 + /** * send_vdev_create_cmd_non_tlv() - send VDEV create command to fw * @wmi_handle: wmi handle @@ -5759,6 +5767,11 @@ static QDF_STATUS extract_wds_addr_event_non_tlv(wmi_unified_t wmi_handle, wds_ev->dest_mac[4+i] = ((u_int8_t *)&(ev->dest_mac.mac_addr47to32))[i]; } + /* vdev_id is not available in legacy. It is required only to get + * pdev, hence setting it to zero as legacy as only one pdev. + */ + wds_ev->vdev_id = 0; + return QDF_STATUS_SUCCESS; } @@ -5779,7 +5792,7 @@ static QDF_STATUS extract_dcs_interference_type_non_tlv( (wmi_dcs_interference_event_t *) evt_buf; param->interference_type = ev->interference_type; - param->pdev_id = 1; + param->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; return QDF_STATUS_SUCCESS; } @@ -5836,6 +5849,8 @@ static QDF_STATUS extract_fips_event_data_non_tlv(wmi_unified_t wmi_handle, struct wmi_host_fips_event_param *param) { wmi_pdev_fips_event *event = (wmi_pdev_fips_event *)evt_buf; + + param->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; #ifdef BIG_ENDIAN_HOST { /*****************LE to BE conversion*************************/ @@ -5955,6 +5970,7 @@ static QDF_STATUS extract_mgmt_rx_params_non_tlv(wmi_unified_t wmi_handle, hdr->phy_mode = ev->hdr.phy_mode; hdr->buf_len = ev->hdr.buf_len; hdr->status = ev->hdr.status; + hdr->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; *bufp = ev->bufp; @@ -6216,6 +6232,7 @@ static QDF_STATUS extract_pdev_tpc_config_ev_param_non_tlv(wmi_unified_t wmi_han { wmi_pdev_tpc_config_event *event = (wmi_pdev_tpc_config_event *)evt_buf; + param->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; param->regDomain = event->regDomain; param->chanFreq = event->chanFreq; param->phyMode = event->phyMode; @@ -6264,6 +6281,8 @@ static QDF_STATUS extract_nfcal_power_ev_param_non_tlv(wmi_unified_t wmi_handle, qdf_mem_copy(param->nfdBm, event->nfdBm, sizeof(param->nfdBm)); qdf_mem_copy(param->freqNum, event->freqNum, sizeof(param->freqNum)); + param->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; + return QDF_STATUS_SUCCESS; } @@ -6282,6 +6301,7 @@ static QDF_STATUS extract_pdev_tpc_ev_param_non_tlv(wmi_unified_t wmi_handle, wmi_pdev_tpc_event *event = (wmi_pdev_tpc_event *)evt_buf; qdf_mem_copy(param->tpc, event->tpc, sizeof(param->tpc)); + param->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; return QDF_STATUS_SUCCESS; } @@ -6346,6 +6366,7 @@ static QDF_STATUS extract_pdev_reserve_ast_ev_param_non_tlv( (wmi_pdev_reserve_ast_entry_event *) evt_buf; *result = ev->result; + return QDF_STATUS_SUCCESS; } @@ -6488,6 +6509,7 @@ static QDF_STATUS extract_peer_sta_kickout_ev_non_tlv(wmi_unified_t wmi_handle, /**Following not available in legacy wmi*/ ev->reason = 0; ev->rssi = 0; + return QDF_STATUS_SUCCESS; } @@ -6853,6 +6875,8 @@ static QDF_STATUS extract_comb_phyerr_non_tlv(wmi_unified_t wmi_handle, void *ev phyerr->tsf64 |= (((uint64_t) pe->hdr.tsf_u32) << 32); *buf_offset = sizeof(pe->hdr); + phyerr->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; + return QDF_STATUS_SUCCESS; } @@ -6879,6 +6903,8 @@ static QDF_STATUS extract_single_phyerr_non_tlv(wmi_unified_t wmi_handle, int n = 0; uint8_t *data; + phyerr->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; + n = (int) *buf_offset; data = (uint8_t *) evt_buf; @@ -6892,7 +6918,7 @@ static QDF_STATUS extract_single_phyerr_non_tlv(wmi_unified_t wmi_handle, /* ensure there's at least space for the header */ if ((datalen - n) < sizeof(ev->hdr)) { qdf_print( - "%s: not enough space? (datalen=%d, n=%d, hdr=%d bytes\n", + "%s: not enough space? (datalen=%d, n=%d, hdr=%zd bytes\n", __func__, datalen, n, @@ -7134,6 +7160,8 @@ static QDF_STATUS extract_composite_phyerr_non_tlv(wmi_unified_t wmi_handle, /* XXX what should errors be? */ } + phyerr->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; + pe = (wmi_composite_phyerr_rx_event *) evt_buf; ph = &pe->hdr; @@ -7270,6 +7298,7 @@ static QDF_STATUS extract_all_stats_counts_non_tlv(wmi_unified_t wmi_handle, stats_param->num_peer_stats = ev->num_peer_stats; stats_param->num_bcnflt_stats = ev->num_bcnflt_stats; stats_param->num_chan_stats = 0; + stats_param->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; return QDF_STATUS_SUCCESS; } @@ -7666,6 +7695,7 @@ static QDF_STATUS extract_chan_info_event_non_tlv(wmi_unified_t wmi_handle, { wmi_chan_info_event *chan_info_ev = (wmi_chan_info_event *)evt_buf; + chan_info->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; chan_info->err_code = chan_info_ev->err_code; chan_info->freq = chan_info_ev->freq; chan_info->cmd_flags = chan_info_ev->cmd_flags; @@ -7698,6 +7728,7 @@ static QDF_STATUS extract_channel_hopping_event_non_tlv( wmi_pdev_channel_hopping_event *event = (wmi_pdev_channel_hopping_event *)evt_buf; + ch_hopping->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; ch_hopping->noise_floor_report_iter = event->noise_floor_report_iter; ch_hopping->noise_floor_total_iter = event->noise_floor_total_iter; @@ -7719,8 +7750,20 @@ static QDF_STATUS extract_bss_chan_info_event_non_tlv(wmi_unified_t wmi_handle, wmi_pdev_bss_chan_info_event *event = (wmi_pdev_bss_chan_info_event *)evt_buf; - qdf_mem_copy(bss_chan_info, event, - sizeof(wmi_pdev_bss_chan_info_event)); + bss_chan_info->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; + bss_chan_info->freq = event->freq; + bss_chan_info->noise_floor = event->noise_floor; + bss_chan_info->rx_clear_count_low = event->rx_clear_count_low; + bss_chan_info->rx_clear_count_high = event->rx_clear_count_high; + bss_chan_info->cycle_count_low = event->cycle_count_low; + bss_chan_info->cycle_count_high = event->cycle_count_high; + bss_chan_info->tx_cycle_count_low = event->tx_cycle_count_low; + bss_chan_info->tx_cycle_count_high = event->tx_cycle_count_high; + bss_chan_info->rx_cycle_count_low = event->rx_cycle_count_low; + bss_chan_info->rx_cycle_count_high = event->rx_cycle_count_high; + bss_chan_info->rx_bss_cycle_count_low = event->rx_bss_cycle_count_low; + bss_chan_info->rx_bss_cycle_count_high = event->rx_bss_cycle_count_high; + bss_chan_info->reserved = event->reserved; return QDF_STATUS_SUCCESS; } @@ -7739,6 +7782,7 @@ static QDF_STATUS extract_inst_rssi_stats_event_non_tlv( { wmi_inst_stats_resp *event = (wmi_inst_stats_resp *)evt_buf; + inst_rssi_resp->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; qdf_mem_copy(inst_rssi_resp, event, sizeof(wmi_inst_stats_resp)); return QDF_STATUS_SUCCESS; @@ -7783,6 +7827,7 @@ static QDF_STATUS extract_atf_peer_stats_ev_non_tlv( wmi_atf_peer_stats_event *evt = (wmi_atf_peer_stats_event *)evt_buf; + ev->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID; ev->num_atf_peers = evt->num_atf_peers; ev->comp_usable_airtime = evt->comp_usable_airtime; qdf_mem_copy(&ev->reserved[0], &evt->reserved[0], diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 8aa3a702c9..3d3d18cdbe 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -31,6 +31,30 @@ #include "wmi_unified_priv.h" #include "wmi_version_whitelist.h" + +/* copy_vdev_create_pdev_id() - copy pdev from host params to target command + * buffer. + * @cmd: pointer target vdev create command buffer + * @param: pointer host params for vdev create + * + * Return: None + */ +#ifdef CONFIG_MCL +static inline void copy_vdev_create_pdev_id( + wmi_vdev_create_cmd_fixed_param * cmd, + struct vdev_create_params *param) +{ + cmd->pdev_id = WMI_PDEV_ID_SOC; +} +#else +static inline void copy_vdev_create_pdev_id( + wmi_vdev_create_cmd_fixed_param * cmd, + struct vdev_create_params *param) +{ + cmd->pdev_id = param->pdev_id; +} +#endif + /** * send_vdev_create_cmd_tlv() - send VDEV create command to fw * @wmi_handle: wmi handle @@ -66,7 +90,7 @@ static QDF_STATUS send_vdev_create_cmd_tlv(wmi_unified_t wmi_handle, cmd->vdev_type = param->type; cmd->vdev_subtype = param->subtype; cmd->num_cfg_txrx_streams = num_bands; - cmd->pdev_id = WMI_PDEV_ID_SOC; + copy_vdev_create_pdev_id(cmd, param); WMI_CHAR_ARRAY_TO_MAC_ADDR(macaddr, &cmd->vdev_macaddr); WMI_LOGD("%s: ID = %d VAP Addr = %02x:%02x:%02x:%02x:%02x:%02x", __func__, param->if_id, @@ -2023,6 +2047,7 @@ static QDF_STATUS send_scan_stop_cmd_tlv(wmi_unified_t wmi_handle, cmd->vdev_id = param->vdev_id; cmd->requestor = param->requestor; cmd->scan_id = param->scan_id; + cmd->pdev_id = param->pdev_id; /* stop the scan with the corresponding scan_id */ cmd->req_type = param->req_type; ret = wmi_unified_cmd_send(wmi_handle, wmi_buf, @@ -2142,6 +2167,7 @@ static QDF_STATUS send_scan_chan_list_cmd_tlv(wmi_unified_t wmi_handle, WMI_LOGD("no of channels = %d, len = %d", chan_list->nallchans, len); + cmd->pdev_id = chan_list->pdev_id; cmd->num_scan_chans = chan_list->nallchans; WMITLV_SET_HDR((buf_ptr + sizeof(wmi_scan_chan_list_cmd_fixed_param)), WMITLV_TAG_ARRAY_STRUC, @@ -9769,7 +9795,9 @@ void wmi_copy_resource_config(wmi_resource_config *resource_cfg, tgt_res_cfg->num_ocb_channels; resource_cfg->num_ocb_schedules = tgt_res_cfg->num_ocb_schedules; - + resource_cfg->bpf_instruction_size = tgt_res_cfg->bpf_instruction_size; + resource_cfg->max_bssid_rx_filters = tgt_res_cfg->max_bssid_rx_filters; + resource_cfg->use_pdev_id = tgt_res_cfg->use_pdev_id; } #ifdef CONFIG_MCL /** @@ -12345,6 +12373,7 @@ static QDF_STATUS extract_mgmt_rx_params_tlv(wmi_unified_t wmi_handle, return QDF_STATUS_E_INVAL; } + hdr->pdev_id = ev_hdr->pdev_id; hdr->channel = ev_hdr->channel; hdr->snr = ev_hdr->snr; @@ -12524,6 +12553,7 @@ static QDF_STATUS extract_mgmt_tx_compl_param_tlv(wmi_unified_t wmi_handle, } cmpl_params = param_buf->fixed_param; + param->pdev_id = cmpl_params->pdev_id; param->desc_id = cmpl_params->desc_id; param->status = cmpl_params->status;