From 63b327d89c344dfbcd5386e4c0f87b706a3d47ee Mon Sep 17 00:00:00 2001 From: Sravan Kumar Kairam Date: Tue, 26 Jul 2016 17:59:59 +0530 Subject: [PATCH 01/10] qcacmn: Send anycast addresses for NS offload Propagation from qcacld-2.0 to qcacld-3.0 Current implementation has support for IPv6 addresses of type unicast for NS offload to firmware. As part of this change add anycast addresses for NS offload. CRs-Fixed: 954880 --- wmi/inc/wmi_unified_param.h | 2 ++ wmi/src/wmi_unified_tlv.c | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 9bb8deeefdcd..9ece421c77e3 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -3033,6 +3033,7 @@ struct wmi_dual_mac_config { * @self_macaddr: self mac address * @srcIPv6AddrValid: src ipv6 address valid flag * @targetIPv6AddrValid: target ipv6 address valid flag + * @target_ipv6_addr_ac_type: target ipv6 address type * @slotIdx: slot index */ struct ns_offload_req_params { @@ -3042,6 +3043,7 @@ struct ns_offload_req_params { struct qdf_mac_addr self_macaddr; uint8_t srcIPv6AddrValid; uint8_t targetIPv6AddrValid[WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA]; + uint8_t target_ipv6_addr_ac_type[WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA]; uint8_t slotIdx; }; #endif /* WLAN_NS_OFFLOAD */ diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 76287d8745c1..e37e232ae8c9 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -9659,6 +9659,10 @@ QDF_STATUS send_enable_arp_ns_offload_cmd_tlv(wmi_unified_t wmi_handle, A_MEMCPY(&ns_tuple->solicitation_ipaddr, ¶m->nsOffloadInfo. selfIPv6Addr[i], sizeof(WMI_IPV6_ADDR)); + if (param->nsOffloadInfo. + target_ipv6_addr_ac_type[i]) + ns_tuple->flags |= + WMI_NSOFF_FLAGS_IS_IPV6_ANYCAST; WMI_LOGD("NS solicitedIp: %pI6, targetIp: %pI6", ¶m->nsOffloadInfo.selfIPv6Addr[i], ¶m->nsOffloadInfo. @@ -9729,6 +9733,10 @@ QDF_STATUS send_enable_arp_ns_offload_cmd_tlv(wmi_unified_t wmi_handle, A_MEMCPY(&ns_tuple->solicitation_ipaddr, ¶m->nsOffloadInfo.selfIPv6Addr[i], sizeof(WMI_IPV6_ADDR)); + if (param->nsOffloadInfo. + target_ipv6_addr_ac_type[i]) + ns_tuple->flags |= + WMI_NSOFF_FLAGS_IS_IPV6_ANYCAST; WMI_LOGD("Index %d NS solicitedIp: %pI6, targetIp: %pI6", i, ¶m->nsOffloadInfo.selfIPv6Addr[i], ¶m->nsOffloadInfo.targetIPv6Addr[i]); From 020997beda3c71da3878f6f67c2d92cc2eb2aa1b Mon Sep 17 00:00:00 2001 From: "Selvaraj, Sridhar" Date: Mon, 4 Jul 2016 21:40:23 +0530 Subject: [PATCH 02/10] qcacmn: Add support to provide assoc IEs to FW in RSO command As part of MBO(Multiband Operations), host driver need to supply the Assoc IEs to FW after initial connection. FW uses these Assoc IE's in subsequent roaming.i.e Reassociation requests. This Fix updates the WMI interface to provide support for passing Assoc IEs to FW. Change-Id: Ida3d2947714002233090a3f9075dd8d674a3c224 CRs-Fixed: 1039969 --- wmi/inc/wmi_unified_param.h | 4 ++++ wmi/src/wmi_unified_tlv.c | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 39111a43eeb7..6e54165f7f28 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -237,6 +237,8 @@ #define TARGET_INIT_STATUS_GEN_FAILED 0x1 #define TARGET_GET_INIT_STATUS_REASON(status) ((status) & 0xffff) #define TARGET_GET_INIT_STATUS_MODULE_ID(status) (((status) >> 16) & 0xffff) + +#define MAX_ASSOC_IE_LENGTH 1024 typedef uint32_t TARGET_INIT_STATUS; typedef enum { @@ -1714,6 +1716,8 @@ struct roam_offload_scan_params { * structure */ roam_offload_param roam_offload_params; #endif + uint32_t assoc_ie_length; + uint8_t assoc_ie[MAX_ASSOC_IE_LENGTH]; }; /* struct roam_offload_scan_rssi_params - structure containing diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 44a2738efb0e..eabe80fc23fd 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -4082,6 +4082,7 @@ QDF_STATUS send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle, wmi_roam_11i_offload_tlv_param *roam_offload_11i; wmi_roam_11r_offload_tlv_param *roam_offload_11r; wmi_roam_ese_offload_tlv_param *roam_offload_ese; + wmi_tlv_buf_len_param *assoc_ies; #endif /* WLAN_FEATURE_ROAM_OFFLOAD */ /* Need to create a buf with roam_scan command at * front and piggyback with scan command */ @@ -4116,13 +4117,17 @@ QDF_STATUS send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle, } else { len += WMI_TLV_HDR_SIZE; } + + len += (sizeof(*assoc_ies) + (2*WMI_TLV_HDR_SIZE) + + roundup(roam_req->assoc_ie_length, + sizeof(uint32_t))); } else { if (roam_req->is_roam_req_valid) WMI_LOGD("%s : roam offload = %d", __func__, roam_req->roam_offload_enabled); else WMI_LOGD("%s : roam_req is NULL", __func__); - len += (2 * WMI_TLV_HDR_SIZE); + len += (4 * WMI_TLV_HDR_SIZE); } if (roam_req->is_roam_req_valid && roam_req->roam_offload_enabled) { @@ -4138,6 +4143,7 @@ QDF_STATUS send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle, } buf_ptr = (uint8_t *) wmi_buf_data(buf); + roam_scan_mode_fp = (wmi_roam_scan_mode_fixed_param *) buf_ptr; WMITLV_SET_HDR(&roam_scan_mode_fp->tlv_header, WMITLV_TAG_STRUC_wmi_roam_scan_mode_fixed_param, @@ -4312,7 +4318,30 @@ QDF_STATUS send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle, buf_ptr += WMI_TLV_HDR_SIZE; WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, WMITLV_GET_STRUCT_TLVLEN(0)); + buf_ptr += WMI_TLV_HDR_SIZE; } + + WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, + sizeof(*assoc_ies)); + buf_ptr += WMI_TLV_HDR_SIZE; + + assoc_ies = (wmi_tlv_buf_len_param *) buf_ptr; + WMITLV_SET_HDR(&assoc_ies->tlv_header, + WMITLV_TAG_STRUC_wmi_tlv_buf_len_param, + WMITLV_GET_STRUCT_TLVLEN(wmi_tlv_buf_len_param)); + assoc_ies->buf_len = roam_req->assoc_ie_length; + + buf_ptr += sizeof(*assoc_ies); + + WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_BYTE, + roundup(assoc_ies->buf_len, sizeof(uint32_t))); + buf_ptr += WMI_TLV_HDR_SIZE; + + if (assoc_ies->buf_len != 0) { + qdf_mem_copy(buf_ptr, roam_req->assoc_ie, + assoc_ies->buf_len); + } + } else { WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, WMITLV_GET_STRUCT_TLVLEN(0)); @@ -4325,6 +4354,12 @@ QDF_STATUS send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle, buf_ptr += WMI_TLV_HDR_SIZE; WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, WMITLV_GET_STRUCT_TLVLEN(0)); + buf_ptr += WMI_TLV_HDR_SIZE; + WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, + WMITLV_GET_STRUCT_TLVLEN(0)); + buf_ptr += WMI_TLV_HDR_SIZE; + WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_BYTE, + WMITLV_GET_STRUCT_TLVLEN(0)); } #endif /* WLAN_FEATURE_ROAM_OFFLOAD */ status = wmi_unified_cmd_send(wmi_handle, buf, From 3c46e5dfb0d4efb9768d5572a9a92aaf880059e2 Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Wed, 24 Aug 2016 04:42:24 -0700 Subject: [PATCH 03/10] Release 5.1.0.22T Release 5.1.0.22T Change-Id: Id14d205f448481f470495a83c099ec8c29fb8d95 CRs-Fixed: 688141 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index 9b705309a2c4..33423ab1b0ab 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.22S +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.22T Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C From 80f7246bfb968c6b0855fbebb185e3182b729fb9 Mon Sep 17 00:00:00 2001 From: Sravan Kumar Kairam Date: Tue, 26 Jul 2016 17:59:59 +0530 Subject: [PATCH 04/10] qcacmn: Send anycast addresses for NS offload Propagation from qcacld-2.0 to qcacld-3.0 Current implementation has support for IPv6 addresses of type unicast for NS offload to firmware. As part of this change add anycast addresses for NS offload. CRs-Fixed: 954880 --- wmi/inc/wmi_unified_param.h | 2 ++ wmi/src/wmi_unified_tlv.c | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 6e54165f7f28..b846298f0f38 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -3084,6 +3084,7 @@ struct wmi_dual_mac_config { * @self_macaddr: self mac address * @srcIPv6AddrValid: src ipv6 address valid flag * @targetIPv6AddrValid: target ipv6 address valid flag + * @target_ipv6_addr_ac_type: target ipv6 address type * @slotIdx: slot index */ struct ns_offload_req_params { @@ -3093,6 +3094,7 @@ struct ns_offload_req_params { struct qdf_mac_addr self_macaddr; uint8_t srcIPv6AddrValid; uint8_t targetIPv6AddrValid[WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA]; + uint8_t target_ipv6_addr_ac_type[WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA]; uint8_t slotIdx; }; #endif /* WLAN_NS_OFFLOAD */ diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index eabe80fc23fd..f709315bda70 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -9858,6 +9858,10 @@ QDF_STATUS send_enable_arp_ns_offload_cmd_tlv(wmi_unified_t wmi_handle, A_MEMCPY(&ns_tuple->solicitation_ipaddr, ¶m->nsOffloadInfo. selfIPv6Addr[i], sizeof(WMI_IPV6_ADDR)); + if (param->nsOffloadInfo. + target_ipv6_addr_ac_type[i]) + ns_tuple->flags |= + WMI_NSOFF_FLAGS_IS_IPV6_ANYCAST; WMI_LOGD("NS solicitedIp: %pI6, targetIp: %pI6", ¶m->nsOffloadInfo.selfIPv6Addr[i], ¶m->nsOffloadInfo. @@ -9928,6 +9932,10 @@ QDF_STATUS send_enable_arp_ns_offload_cmd_tlv(wmi_unified_t wmi_handle, A_MEMCPY(&ns_tuple->solicitation_ipaddr, ¶m->nsOffloadInfo.selfIPv6Addr[i], sizeof(WMI_IPV6_ADDR)); + if (param->nsOffloadInfo. + target_ipv6_addr_ac_type[i]) + ns_tuple->flags |= + WMI_NSOFF_FLAGS_IS_IPV6_ANYCAST; WMI_LOGD("Index %d NS solicitedIp: %pI6, targetIp: %pI6", i, ¶m->nsOffloadInfo.selfIPv6Addr[i], ¶m->nsOffloadInfo.targetIPv6Addr[i]); From feeffba91bbe302d8163fe166098f4089d186636 Mon Sep 17 00:00:00 2001 From: Himanshu Agarwal Date: Wed, 20 Jul 2016 19:59:01 +0530 Subject: [PATCH 05/10] qcacmn: Add API to update mark parameter in sk_buff structure Propagation from qcacld-2.0 to qcacmn. Add API to update skb->mark whenever first packet after WOW wakeup is received through HTT layer. Change-Id: I877dd7af9a58ebc02d73461cc2a29e86a3945dec CRs-Fixed: 989984 --- qdf/inc/qdf_nbuf.h | 13 +++++++++++++ qdf/linux/src/i_qdf_nbuf.h | 14 ++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/qdf/inc/qdf_nbuf.h b/qdf/inc/qdf_nbuf.h index ab752c499aa8..3221164012fc 100644 --- a/qdf/inc/qdf_nbuf.h +++ b/qdf/inc/qdf_nbuf.h @@ -2057,4 +2057,17 @@ qdf_nbuf_get_priv_ptr(qdf_nbuf_t buf) */ unsigned int qdf_nbuf_update_radiotap(struct mon_rx_status *rx_status, qdf_nbuf_t nbuf, uint32_t headroom_sz); + +/** + * qdf_nbuf_mark_wakeup_frame() - mark wakeup frame. + * @buf: Pointer to nbuf + * + * Return: None + */ +static inline void +qdf_nbuf_mark_wakeup_frame(qdf_nbuf_t buf) +{ + __qdf_nbuf_mark_wakeup_frame(buf); +} + #endif /* _QDF_NBUF_H */ diff --git a/qdf/linux/src/i_qdf_nbuf.h b/qdf/linux/src/i_qdf_nbuf.h index f1eaeef2483d..050f73cc37ec 100644 --- a/qdf/linux/src/i_qdf_nbuf.h +++ b/qdf/linux/src/i_qdf_nbuf.h @@ -66,6 +66,9 @@ typedef struct sk_buff *__qdf_nbuf_t; #define QDF_NBUF_CB_PACKET_TYPE_WAPI 3 #define QDF_NBUF_CB_PACKET_TYPE_DHCP 4 +/* mark the first packet after wow wakeup */ +#define QDF_MARK_FIRST_WAKEUP_PACKET 0x80000000 + /* * Make sure that qdf_dma_addr_t in the cb block is always 64 bit aligned */ @@ -1655,5 +1658,16 @@ static inline void __qdf_invalidate_range(void *start, void *end) } #endif +/** + * __qdf_nbuf_mark_wakeup_frame() - mark wakeup frame. + * @buf: Pointer to nbuf + * + * Return: None + */ +static inline void +__qdf_nbuf_mark_wakeup_frame(__qdf_nbuf_t buf) +{ + buf->mark |= QDF_MARK_FIRST_WAKEUP_PACKET; +} #endif /*_I_QDF_NET_BUF_H */ From b4f7b7e702a2e58e7a55d992d5f0975830a2828c Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Wed, 24 Aug 2016 11:33:28 -0700 Subject: [PATCH 06/10] Release 5.1.0.22U Release 5.1.0.22U Change-Id: I8cfac920de0ab8668f1208efce4e79e911836748 CRs-Fixed: 688141 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index 33423ab1b0ab..c88ba7880540 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.22T +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.22U Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C From 8f312f27040d20e0a2abb0b27b086c6326b6d51c Mon Sep 17 00:00:00 2001 From: Rajeev Kumar Date: Wed, 24 Aug 2016 16:24:51 -0700 Subject: [PATCH 07/10] qcacmn: Reduce wake up IRQ enable/disable log level IRQ wake up is happening as expected so reduce WLAN CE 2 IRQ wake up request log to info level to avoid logging it every time on console. Change-Id: I9838c80d5133b3f872b1129e41d4f722ba57b011 CRs-Fixed: 1059081 --- hif/src/snoc/if_snoc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hif/src/snoc/if_snoc.c b/hif/src/snoc/if_snoc.c index ab0bda16b323..a414958d0082 100644 --- a/hif/src/snoc/if_snoc.c +++ b/hif/src/snoc/if_snoc.c @@ -371,8 +371,8 @@ QDF_STATUS hif_snoc_setup_wakeup_sources(struct hif_softc *scn, bool enable) return QDF_STATUS_E_RESOURCES; } - HIF_ERROR("%s: expecting wake from ce %d, irq %d", - __func__, dl_pipe, irq_to_wake_on); + HIF_INFO("%s: expecting wake from ce %d, irq %d enable %d", + __func__, dl_pipe, irq_to_wake_on, enable); return QDF_STATUS_SUCCESS; } From 35b4bced3255b36a8b68bfe67a44a562d0a740fe Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Thu, 25 Aug 2016 18:53:13 -0700 Subject: [PATCH 08/10] Release 5.1.0.22V Release 5.1.0.22V Change-Id: I0218454347bca67a8b89ccdbee3801c7444da9b6 CRs-Fixed: 688141 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index c88ba7880540..5e4d25b7f50c 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.22U +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.22V Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C From 92cf0523d8701344fea28f438822863cb7b7cef5 Mon Sep 17 00:00:00 2001 From: Rajeev Kumar Sirasanagandla Date: Fri, 19 Aug 2016 18:47:26 +0530 Subject: [PATCH 09/10] qcacmn: Modify __qdf_assert to invoke QDF_BUG Currently, __qdf_assert is doing kernel panic, deviating the purpose of assert - "Asserts are NOT used for stopping a program in case of an error". To address this, modify __qdf_assert to invoke QDF_BUG which in turn warns or crashes based on the macro PANIC_ON_BUG. Change-Id: Ie62484f8f369d8aafa3b1970feafe556b2c94ffa CRs-Fixed: 1015603 --- qdf/linux/src/i_qdf_util.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qdf/linux/src/i_qdf_util.h b/qdf/linux/src/i_qdf_util.h index 1cfb71614232..9894e1c2a368 100644 --- a/qdf/linux/src/i_qdf_util.h +++ b/qdf/linux/src/i_qdf_util.h @@ -203,7 +203,7 @@ static inline bool __qdf_is_macaddr_equal(struct qdf_mac_addr *mac_addr1, pr_err("Assertion failed! %s:%s %s:%d\n", \ # expr, __func__, __FILE__, __LINE__); \ dump_stack(); \ - BUG_ON(1); \ + QDF_BUG(0); \ } \ } while (0) From 712e243e9176eb6f48473c0a1b785ea653bc3a85 Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Fri, 26 Aug 2016 12:19:14 -0700 Subject: [PATCH 10/10] Release 5.1.0.22W Release 5.1.0.22W Change-Id: I1c3ef08a31447e6b7ee928c00a96d085a9cb43f8 CRs-Fixed: 688141 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index 5e4d25b7f50c..b142a31e4f87 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.22V +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.22W Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C