qcacld-3.0: Send enable/disable flag separately in hw filter command
Before wow enable or pdev suspend host sets hardware filter bitmap and enables the filter via a command. But after resuming it sends bitmap as zero with filter disable. This is interpreted by Firmware as disable the modes set in the bitmap, so none of the modes are disabled. With this host will not receive bc/mc packets after disabling the hw filter, which it is expecting. Send the same bitmap after resume that was used before suspend. Change-Id: Ic7425274c9197e907404c3ca9ba0d5269ee51690 CRs-Fixed: 2194964
This commit is contained in:

committed by
nshrivas

parent
8c151e20cc
commit
f080407812
@@ -262,7 +262,7 @@ enum pmo_auto_pwr_detect_failure_mode {
|
||||
* @ptrn_match_enable_all_vdev: true when pattern match is enable for all vdev
|
||||
* @apf_enable: true if psoc supports apf else false
|
||||
* @arp_offload_enable: true if arp offload is supported for psoc else false
|
||||
* @hw_filter_mode: which mode the hardware filter should use during DTIM
|
||||
* @hw_filter_mode_bitmap: which mode the hardware filter should use during DTIM
|
||||
* @ns_offload_enable_static: true if psoc supports ns offload in ini else false
|
||||
* @ns_offload_enable_dynamic: to enable / disable the ns offload using
|
||||
* ioctl or vendor command.
|
||||
@@ -290,7 +290,7 @@ struct pmo_psoc_cfg {
|
||||
bool ptrn_match_enable_all_vdev;
|
||||
bool apf_enable;
|
||||
bool arp_offload_enable;
|
||||
enum pmo_hw_filter_mode hw_filter_mode;
|
||||
enum pmo_hw_filter_mode hw_filter_mode_bitmap;
|
||||
bool ns_offload_enable_static;
|
||||
bool ns_offload_enable_dynamic;
|
||||
bool packet_filter_enabled;
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -36,19 +36,21 @@
|
||||
* waking up the firmware.
|
||||
*/
|
||||
enum pmo_hw_filter_mode {
|
||||
PMO_HW_FILTER_DISABLED = 0,
|
||||
PMO_HW_FILTER_NON_ARP_BC = 1,
|
||||
PMO_HW_FILTER_NON_ICMPV6_MC = 2,
|
||||
PMO_HW_FILTER_DISABLED = 0,
|
||||
PMO_HW_FILTER_NON_ARP_BC = (1 << 0),
|
||||
PMO_HW_FILTER_NON_ICMPV6_MC = (1 << 1),
|
||||
};
|
||||
|
||||
/**
|
||||
* struct pmo_hw_filter_params - hardware filter configuration parameters
|
||||
* @vdev_id: Id of the virtual device to configure
|
||||
* @mode: the hardware filter mode to configure
|
||||
* @enable: Enable/Disable the given hw filter modes
|
||||
* @mode_bitmap: the hardware filter mode bitmap to configure
|
||||
*/
|
||||
struct pmo_hw_filter_params {
|
||||
uint8_t vdev_id;
|
||||
enum pmo_hw_filter_mode mode;
|
||||
bool enable;
|
||||
enum pmo_hw_filter_mode mode_bitmap;
|
||||
};
|
||||
|
||||
#endif /* _WLAN_PMO_HW_FILTER_PUBLIC_STRUCT_H */
|
||||
|
@@ -33,8 +33,9 @@ QDF_STATUS pmo_tgt_conf_hw_filter(struct wlan_objmgr_psoc *psoc,
|
||||
|
||||
pmo_enter();
|
||||
|
||||
pmo_debug("Configure hw filter; vdev_id:%u, mode:%d",
|
||||
req->vdev_id, req->mode);
|
||||
pmo_debug("Send %s hw filter mode 0x%X for vdev_id %u",
|
||||
req->enable ? "Enable" : "Disable", req->mode_bitmap,
|
||||
req->vdev_id);
|
||||
|
||||
ops = GET_PMO_TX_OPS_FROM_PSOC(psoc);
|
||||
if (!ops.send_conf_hw_filter_req) {
|
||||
|
Reference in New Issue
Block a user