summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2017-01-28 00:21:48 -0700
committerLinux Build Service Account <lnxbuild@localhost>2017-01-28 00:21:48 -0700
commit54518a369bf4a288fb6126e069581940164c428d (patch)
treefd026b5bddb7e4b3b4caff82c1f7d74e7ba3a18c
parent868e208ffc324b31ec0f82520f464cced1520bea (diff)
parentca82dee574df5dbef02a95f719eca05a4105f66c (diff)
Promotion of wlan-cmn.driver.lnx.1.0-00122.
CRs Change ID Subject -------------------------------------------------------------------------------------------------------------- 688141 Ife64d3aafef584448eb04ec126ae8884a1fc91f5 Release 5.1.0.27 1091052 Ic05a829eadbf974598370c494a5cff10201ec600 qcacmn: Fix header include bug 1079697 I8e1faf6099f8fbc869c8af42b7511a13e66e6bed qcacmn: Remove redundant qdf_mem_zero calls 688141 I62c833b78418192d1212a232a78ae23ce9778b15 Release 5.1.0.26Z 1114094 I52768029d3ccf007b7d9999e796de3366ac0ae35 qcacmn: Set PER based roam value for config 1105081 I265f15476f1a23a268f159a44b6a3e4243fb9068 qcacmn: Add support to randomize probe req SA and Seq nu Change-Id: I330c2c2166225a8a742a0574e8e7c098441df935 CRs-Fixed: 688141, 1091052, 1114094, 1079697, 1105081
-rw-r--r--VERSION.txt2
-rw-r--r--hif/src/ar9888def.h4
-rw-r--r--hif/src/ce/ce_main.c3
-rw-r--r--hif/src/hif_main.c2
-rw-r--r--hif/src/sdio/hif_sdio_dev.c1
-rw-r--r--hif/src/sdio/if_sdio.c1
-rw-r--r--hif/src/sdio/native_sdio/src/hif.c1
-rw-r--r--hif/src/sdio/native_sdio/src/hif_scatter.c5
-rw-r--r--htc/htc.c4
-rw-r--r--qdf/inc/qdf_util.h19
-rw-r--r--wmi/inc/wmi_unified_param.h23
-rw-r--r--wmi/src/wmi_unified_tlv.c33
12 files changed, 73 insertions, 25 deletions
diff --git a/VERSION.txt b/VERSION.txt
index 22d9ead90f1e..c5b29b96eaea 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1,2 +1,2 @@
-Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.26Y
+Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.27
Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22D
diff --git a/hif/src/ar9888def.h b/hif/src/ar9888def.h
index 9e291cc407c3..1ebe643d746e 100644
--- a/hif/src/ar9888def.h
+++ b/hif/src/ar9888def.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -26,7 +26,7 @@
*/
#ifndef _AR9888DEF_H_
-#define AR9888__AR9888DEF_H_
+#define _AR9888DEF_H_
/* Base Addresses */
#define AR9888_RTC_SOC_BASE_ADDRESS 0x00004000
diff --git a/hif/src/ce/ce_main.c b/hif/src/ce/ce_main.c
index 6f9cce4080d1..836ada93c8cd 100644
--- a/hif/src/ce/ce_main.c
+++ b/hif/src/ce/ce_main.c
@@ -617,7 +617,6 @@ struct CE_handle *ce_init(struct hif_softc *scn,
return NULL;
}
malloc_CE_state = true;
- qdf_mem_zero(CE_state, sizeof(*CE_state));
scn->ce_id_to_state[CE_id] = CE_state;
qdf_spinlock_create(&CE_state->ce_index_lock);
@@ -677,7 +676,6 @@ struct CE_handle *ce_init(struct hif_softc *scn,
*/
malloc_src_ring = true;
}
- qdf_mem_zero(ptr, CE_nbytes);
src_ring = CE_state->src_ring =
(struct CE_ring_state *)ptr;
@@ -825,7 +823,6 @@ struct CE_handle *ce_init(struct hif_softc *scn,
}
return NULL;
}
- qdf_mem_zero(ptr, CE_nbytes);
dest_ring = CE_state->dest_ring =
(struct CE_ring_state *)ptr;
diff --git a/hif/src/hif_main.c b/hif/src/hif_main.c
index 2b6470d1003e..b00c25aac852 100644
--- a/hif/src/hif_main.c
+++ b/hif/src/hif_main.c
@@ -403,8 +403,6 @@ struct hif_opaque_softc *hif_open(qdf_device_t qdf_ctx, uint32_t mode,
return GET_HIF_OPAQUE_HDL(scn);
}
- qdf_mem_zero(scn, bus_context_size);
-
scn->qdf_dev = qdf_ctx;
scn->hif_con_param = mode;
qdf_atomic_init(&scn->active_tasklet_cnt);
diff --git a/hif/src/sdio/hif_sdio_dev.c b/hif/src/sdio/hif_sdio_dev.c
index 0d31414407ec..b427148be85b 100644
--- a/hif/src/sdio/hif_sdio_dev.c
+++ b/hif/src/sdio/hif_sdio_dev.c
@@ -231,7 +231,6 @@ struct hif_sdio_device *hif_dev_create(struct hif_sdio_dev *hif_device,
return NULL;
}
- qdf_mem_zero(pdev, sizeof(struct hif_sdio_device));
qdf_spinlock_create(&pdev->Lock);
qdf_spinlock_create(&pdev->TxLock);
qdf_spinlock_create(&pdev->RxLock);
diff --git a/hif/src/sdio/if_sdio.c b/hif/src/sdio/if_sdio.c
index 7118f239d4a8..289e130e5e12 100644
--- a/hif/src/sdio/if_sdio.c
+++ b/hif/src/sdio/if_sdio.c
@@ -93,7 +93,6 @@ static A_STATUS hif_sdio_probe(void *context, void *hif_handle)
ret = -ENOMEM;
goto err_alloc;
}
- qdf_mem_zero(scn, sizeof(*scn));
scn->hif_handle = hif_handle;
hif_configure_device(hif_handle, HIF_DEVICE_GET_OS_DEVICE,
diff --git a/hif/src/sdio/native_sdio/src/hif.c b/hif/src/sdio/native_sdio/src/hif.c
index bfe728827030..f3a247f33334 100644
--- a/hif/src/sdio/native_sdio/src/hif.c
+++ b/hif/src/sdio/native_sdio/src/hif.c
@@ -2550,7 +2550,6 @@ static struct hif_sdio_dev *add_hif_device(struct sdio_func *func)
hifdevice = (struct hif_sdio_dev *) qdf_mem_malloc(sizeof(
struct hif_sdio_dev));
AR_DEBUG_ASSERT(hifdevice != NULL);
- qdf_mem_zero(hifdevice, sizeof(*hifdevice));
#if HIF_USE_DMA_BOUNCE_BUFFER
hifdevice->dma_buffer = qdf_mem_malloc(HIF_DMA_BUFFER_SIZE);
AR_DEBUG_ASSERT(hifdevice->dma_buffer != NULL);
diff --git a/hif/src/sdio/native_sdio/src/hif_scatter.c b/hif/src/sdio/native_sdio/src/hif_scatter.c
index 9f81eb46834f..71d042ff0d21 100644
--- a/hif/src/sdio/native_sdio/src/hif_scatter.c
+++ b/hif/src/sdio/native_sdio/src/hif_scatter.c
@@ -377,8 +377,6 @@ QDF_STATUS setup_hif_scatter_support(struct hif_sdio_dev *device,
struct HIF_SCATTER_REQ_PRIV));
if (NULL == req_priv)
goto end;
- qdf_mem_zero(req_priv, sizeof(
- struct HIF_SCATTER_REQ_PRIV));
/* save the device instance */
req_priv->device = device;
/* allocate the scatter request */
@@ -392,9 +390,6 @@ QDF_STATUS setup_hif_scatter_support(struct hif_sdio_dev *device,
qdf_mem_free(req_priv);
goto end;
}
- /* just zero the main part of the scatter request */
- qdf_mem_zero(req_priv->hif_scatter_req,
- sizeof(struct _HIF_SCATTER_REQ));
/* back pointer to the private struct */
req_priv->hif_scatter_req->hif_private[0] = req_priv;
/* allocate a bus request for this scatter request */
diff --git a/htc/htc.c b/htc/htc.c
index 7a2d74a24d1d..61104aaefd6a 100644
--- a/htc/htc.c
+++ b/htc/htc.c
@@ -79,7 +79,6 @@ static HTC_PACKET *build_htc_tx_ctrl_packet(qdf_device_t osdev)
if (NULL == pPacket) {
break;
}
- qdf_mem_zero(pPacket, sizeof(HTC_PACKET));
netbuf = qdf_nbuf_alloc(osdev, HTC_CONTROL_BUFFER_SIZE,
20, 4, true);
if (NULL == netbuf) {
@@ -261,8 +260,6 @@ HTC_HANDLE htc_create(void *ol_sc, HTC_INIT_INFO *pInfo, qdf_device_t osdev,
return NULL;
}
- qdf_mem_zero(target, sizeof(HTC_TARGET));
-
htc_runtime_pm_init(target);
qdf_spinlock_create(&target->HTCLock);
qdf_spinlock_create(&target->HTCRxLock);
@@ -285,7 +282,6 @@ HTC_HANDLE htc_create(void *ol_sc, HTC_INIT_INFO *pInfo, qdf_device_t osdev,
HTC_PACKET *pPacket =
(HTC_PACKET *) qdf_mem_malloc(sizeof(HTC_PACKET));
if (pPacket != NULL) {
- qdf_mem_zero(pPacket, sizeof(HTC_PACKET));
free_htc_packet_container(target, pPacket);
}
}
diff --git a/qdf/inc/qdf_util.h b/qdf/inc/qdf_util.h
index e6b4a708598a..5356ba89b2cb 100644
--- a/qdf/inc/qdf_util.h
+++ b/qdf/inc/qdf_util.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -481,4 +481,21 @@ unsigned long qdf_rounddown_pow_of_two(unsigned long n)
return __qdf_rounddown_pow_of_two(n);
}
+/**
+ * qdf_is_group_addr() - checks whether addr is multi cast
+ * @mac_addr: address to be checked for multicast
+ *
+ * Check if the input mac addr is multicast addr
+ *
+ * Return: true if multicast addr else false
+ */
+static inline
+bool qdf_is_group_addr(uint8_t *mac_addr)
+{
+ if (mac_addr[0] & 0x01)
+ return true;
+ else
+ return false;
+}
+
#endif /*_QDF_UTIL_H*/
diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h
index 3102fc5687e5..ee7a5ba1582c 100644
--- a/wmi/inc/wmi_unified_param.h
+++ b/wmi/inc/wmi_unified_param.h
@@ -998,6 +998,11 @@ struct ap_ps_params {
* @bssid_list: Lisst of bssid to scan
* @ie_data: IE data buffer pointer
* @passive_flag: Is this passive scan
+ * @enable_scan_randomization: enable scan randomization feature
+ * @mac_addr: MAC address used with randomization
+ * @mac_addr_mask: MAC address mask used with randomization, bits that
+ * are 0 in the mask should be randomized, bits that are 1 should
+ * be taken from the @mac_addr
*/
struct scan_start_params {
uint32_t scan_id;
@@ -1040,6 +1045,10 @@ struct scan_start_params {
uint8_t *ie_data;
int passive_flag;
#endif
+ /* mac address randomization attributes */
+ bool enable_scan_randomization;
+ uint8_t mac_addr[QDF_MAC_ADDR_SIZE];
+ uint8_t mac_addr_mask[QDF_MAC_ADDR_SIZE];
};
/**
@@ -1610,9 +1619,14 @@ struct rssi_monitor_param {
/**
* struct scan_mac_oui - oui paramters
* @oui: oui parameters
+ * @vdev_id: session id
+ * @enb_probe_req_sno_randomization: set to true for enabling
+ * seq number randomization of probe req frames
*/
struct scan_mac_oui {
uint8_t oui[WMI_WIFI_SCANNING_MAC_OUI_LENGTH];
+ uint32_t vdev_id;
+ bool enb_probe_req_sno_randomization;
};
#define WMI_PASSPOINT_REALM_LEN 256
@@ -2029,6 +2043,11 @@ struct pno_nw_type {
* @pnoscan_adaptive_dwell_mode: adaptive dwelltime mode for pno scan
* @channel_prediction_full_scan: periodic timer upon which a full scan needs
* to be triggered.
+ * @enable_pno_scan_randomization: enable pno scan randomization feature
+ * @mac_addr: MAC address used with randomization
+ * @mac_addr_mask: MAC address mask used with randomization, bits that
+ * are 0 in the mask should be randomized, bits that are 1 should
+ * be taken from the @mac_addr
*/
struct pno_scan_req_params {
uint8_t enable;
@@ -2055,6 +2074,10 @@ struct pno_scan_req_params {
enum wmi_dwelltime_adaptive_mode pnoscan_adaptive_dwell_mode;
uint32_t channel_prediction_full_scan;
#endif
+ /* mac address randomization attributes */
+ bool enable_pno_scan_randomization;
+ uint8_t mac_addr[QDF_MAC_ADDR_SIZE];
+ uint8_t mac_addr_mask[QDF_MAC_ADDR_SIZE];
};
diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c
index 5803901d6b86..d8c6f699f335 100644
--- a/wmi/src/wmi_unified_tlv.c
+++ b/wmi/src/wmi_unified_tlv.c
@@ -1496,6 +1496,18 @@ QDF_STATUS send_scan_start_cmd_tlv(wmi_unified_t wmi_handle,
cmd->num_ssids = params->num_ssids;
cmd->ie_len = params->ie_len;
cmd->n_probes = params->n_probes;
+
+ /* mac randomization attributes */
+ if (params->enable_scan_randomization) {
+ cmd->scan_ctrl_flags |= WMI_SCAN_ADD_SPOOFED_MAC_IN_PROBE_REQ |
+ WMI_SCAN_RANDOM_SEQ_NO_IN_PROBE_REQ;
+ WMI_CHAR_ARRAY_TO_MAC_ADDR(params->mac_addr, &cmd->mac_addr);
+ WMI_CHAR_ARRAY_TO_MAC_ADDR(params->mac_addr_mask,
+ &cmd->mac_mask);
+ }
+
+ WMI_LOGI("scan_ctrl_flags = %x", cmd->scan_ctrl_flags);
+
buf_ptr += sizeof(*cmd);
tmp_ptr = (uint32_t *) (buf_ptr + WMI_TLV_HDR_SIZE);
for (i = 0; i < params->num_chan; ++i)
@@ -4107,6 +4119,13 @@ QDF_STATUS send_scan_probe_setoui_cmd_tlv(wmi_unified_t wmi_handle,
WMI_LOGD("%s: wmi:oui received from hdd %08x", __func__,
cmd->prob_req_oui);
+ cmd->vdev_id = psetoui->vdev_id;
+ cmd->flags = WMI_SCAN_PROBE_OUI_SPOOFED_MAC_IN_PROBE_REQ;
+ if (psetoui->enb_probe_req_sno_randomization)
+ cmd->flags |= WMI_SCAN_PROBE_OUI_RANDOM_SEQ_NO_IN_PROBE_REQ;
+
+ WMI_LOGI(FL("vdev_id = %d, flags = %x"), cmd->vdev_id, cmd->flags);
+
if (wmi_unified_cmd_send(wmi_handle, wmi_buf, len,
WMI_SCAN_PROB_REQ_OUI_CMDID)) {
WMI_LOGE("%s: failed to send command", __func__);
@@ -6074,6 +6093,16 @@ QDF_STATUS send_pno_start_cmd_tlv(wmi_unified_t wmi_handle,
/** TODO: Discrete firmware doesn't have command/option to configure
* App IE which comes from wpa_supplicant as of part PNO start request.
*/
+
+ /* mac randomization attributes */
+ if (pno->enable_pno_scan_randomization) {
+ cmd->flags |= WMI_NLO_CONFIG_SPOOFED_MAC_IN_PROBE_REQ |
+ WMI_NLO_CONFIG_RANDOM_SEQ_NO_IN_PROBE_REQ;
+ WMI_CHAR_ARRAY_TO_MAC_ADDR(pno->mac_addr, &cmd->mac_addr);
+ WMI_CHAR_ARRAY_TO_MAC_ADDR(pno->mac_addr_mask, &cmd->mac_mask);
+ }
+ WMI_LOGI("pno flags = %x", cmd->flags);
+
ret = wmi_unified_cmd_send(wmi_handle, buf, len,
WMI_NETWORK_LIST_OFFLOAD_CONFIG_CMDID);
if (ret) {
@@ -10895,10 +10924,6 @@ QDF_STATUS send_per_roam_config_cmd_tlv(wmi_unified_t wmi_handle,
/* fill in per roam config values */
wmi_per_config->vdev_id = req_buf->vdev_id;
- if (req_buf->per_config.enable) {
- /* Enable for both Tx and Rx*/
- req_buf->per_config.enable = 3;
- }
wmi_per_config->enable = req_buf->per_config.enable;
wmi_per_config->high_rate_thresh =