lkml.org 
[lkml]   [2022]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 6.0 297/862] wifi: ath11k: Include STA_KEEPALIVE_ARP_RESPONSE TLV header by default
    Date
    From: Baochen Qiang <quic_bqiang@quicinc.com>

    [ Upstream commit b7b6f86149a7e06269d61a7a5206360f5b642f80 ]

    In current code STA_KEEPALIVE_ARP_RESPONSE TLV header is included only
    when ARP method is used, this causes firmware always to crash when wowlan
    is enabled because firmware needs it to be present no matter ARP method
    is used or not.

    Fix this issue by including STA_KEEPALIVE_ARP_RESPONSE TLV header by
    default.

    Also fix below typo:
    s/WMI_TAG_STA_KEEPALVE_ARP_RESPONSE/WMI_TAG_STA_KEEPALIVE_ARP_RESPONSE/

    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3

    Fixes: 0f84a156aa3b ("ath11k: Handle keepalive during WoWLAN suspend and resume")
    Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20220913044358.2037-1-quic_bqiang@quicinc.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/ath/ath11k/wmi.c | 9 +++++----
    drivers/net/wireless/ath/ath11k/wmi.h | 2 +-
    2 files changed, 6 insertions(+), 5 deletions(-)

    diff --git a/drivers/net/wireless/ath/ath11k/wmi.c b/drivers/net/wireless/ath/ath11k/wmi.c
    index 88ee4f9d19da..b658ea60dcf7 100644
    --- a/drivers/net/wireless/ath/ath11k/wmi.c
    +++ b/drivers/net/wireless/ath/ath11k/wmi.c
    @@ -8962,12 +8962,13 @@ int ath11k_wmi_sta_keepalive(struct ath11k *ar,
    cmd->interval = arg->interval;
    cmd->method = arg->method;

    + arp = (struct wmi_sta_keepalive_arp_resp *)(cmd + 1);
    + arp->tlv_header = FIELD_PREP(WMI_TLV_TAG,
    + WMI_TAG_STA_KEEPALIVE_ARP_RESPONSE) |
    + FIELD_PREP(WMI_TLV_LEN, sizeof(*arp) - TLV_HDR_SIZE);
    +
    if (arg->method == WMI_STA_KEEPALIVE_METHOD_UNSOLICITED_ARP_RESPONSE ||
    arg->method == WMI_STA_KEEPALIVE_METHOD_GRATUITOUS_ARP_REQUEST) {
    - arp = (struct wmi_sta_keepalive_arp_resp *)(cmd + 1);
    - arp->tlv_header = FIELD_PREP(WMI_TLV_TAG,
    - WMI_TAG_STA_KEEPALVE_ARP_RESPONSE) |
    - FIELD_PREP(WMI_TLV_LEN, sizeof(*arp) - TLV_HDR_SIZE);
    arp->src_ip4_addr = arg->src_ip4_addr;
    arp->dest_ip4_addr = arg->dest_ip4_addr;
    ether_addr_copy(arp->dest_mac_addr.addr, arg->dest_mac_addr);
    diff --git a/drivers/net/wireless/ath/ath11k/wmi.h b/drivers/net/wireless/ath/ath11k/wmi.h
    index 4da248ffa318..ba5343a3411f 100644
    --- a/drivers/net/wireless/ath/ath11k/wmi.h
    +++ b/drivers/net/wireless/ath/ath11k/wmi.h
    @@ -1214,7 +1214,7 @@ enum wmi_tlv_tag {
    WMI_TAG_NS_OFFLOAD_TUPLE,
    WMI_TAG_FTM_INTG_CMD,
    WMI_TAG_STA_KEEPALIVE_CMD,
    - WMI_TAG_STA_KEEPALVE_ARP_RESPONSE,
    + WMI_TAG_STA_KEEPALIVE_ARP_RESPONSE,
    WMI_TAG_P2P_SET_VENDOR_IE_DATA_CMD,
    WMI_TAG_AP_PS_PEER_CMD,
    WMI_TAG_PEER_RATE_RETRY_SCHED_CMD,
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-10-19 10:58    [W:4.161 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site