From 80f7246bfb968c6b0855fbebb185e3182b729fb9 Mon Sep 17 00:00:00 2001 From: Sravan Kumar Kairam Date: Tue, 26 Jul 2016 17:59:59 +0530 Subject: [PATCH] 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]);