Baochen Qiang <quic_bqiang@xxxxxxxxxxx> writes: > With WoWLAN enabled and after sleeping for a rather long time, > we are seeing that with some APs, it is not able to wake up > the STA though the correct wake up pattern has been configured. > This is because the host doesn't send keepalive command to > firmware, thus firmware will not send any packet to the AP and > after a specific time the AP kicks out the STA. > > Fix this issue by enabling keepalive before going to suspend > and disabling it after resume back. > > Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1 > > Signed-off-by: Baochen Qiang <quic_bqiang@xxxxxxxxxxx> [...] > --- a/drivers/net/wireless/ath/ath11k/wmi.h > +++ b/drivers/net/wireless/ath/ath11k/wmi.h > @@ -5907,6 +5907,45 @@ struct wmi_pdev_set_geo_table_cmd { > u32 rsvd_len; > } __packed; > > +struct wmi_sta_keepalive_cmd { > + u32 tlv_header; > + u32 vdev_id; > + u32 enabled; > + u32 method; /* WMI_STA_KEEPALIVE_METHOD_ */ > + u32 interval; /* in seconds */ > + /* NOTE: following this structure is the TLV for ARP Response: > + * WMI_STA_KEEPALVE_ARP_RESPONSE arp_resp; <-- ARP response > + */ > +} __packed; I cleaned up the comments a bit. > +enum wmi_sta_keepalive_method { > + WMI_STA_KEEPALIVE_METHOD_NULL_FRAME = 1, /* 802.11 NULL frame */ > + WMI_STA_KEEPALIVE_METHOD_UNSOLICITED_ARP_RESPONSE = 2, /* ARP response */ > + WMI_STA_KEEPALIVE_METHOD_ETHERNET_LOOPBACK = 3, /* ETHERNET LOOPBACK */ > + WMI_STA_KEEPALIVE_METHOD_GRATUITOUS_ARP_REQUEST = 4, /* gratuitous ARP req */ > + WMI_STA_KEEPALIVE_METHOD_MGMT_VENDOR_ACTION = 5, /* vendor action frame */ > +}; The comments are not really bringing any extra value from the actual names so I just removed them. -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches