Kaynağa Gözat

qcacmn: 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.

Use the correct bitmap sent by cld for disabling the hw filter.

Change-Id: I465e2ec40b6fde8a9e99743a1b9979b67cce5408
CRs-Fixed: 2194973
Nachiket Kukade 7 yıl önce
ebeveyn
işleme
200fbf7f4b
1 değiştirilmiş dosya ile 9 ekleme ve 4 silme
  1. 9 4
      wmi_unified_tlv.c

+ 9 - 4
wmi_unified_tlv.c

@@ -14542,11 +14542,16 @@ static QDF_STATUS send_conf_hw_filter_cmd_tlv(wmi_unified_t wmi,
 		  WMITLV_TAG_STRUC_wmi_hw_data_filter_cmd_fixed_param,
 		  WMITLV_GET_STRUCT_TLVLEN(wmi_hw_data_filter_cmd_fixed_param));
 	cmd->vdev_id = req->vdev_id;
-	cmd->enable = req->mode != PMO_HW_FILTER_DISABLED;
-	cmd->hw_filter_bitmap = req->mode;
+	cmd->enable = req->enable;
+	/* Set all modes in case of disable */
+	if (!cmd->enable)
+		cmd->hw_filter_bitmap = ((uint32_t)~0U);
+	else
+		cmd->hw_filter_bitmap = req->mode_bitmap;
 
-	WMI_LOGD("configure hw filter (vdev_id: %d, mode: %d)",
-		 req->vdev_id, req->mode);
+	WMI_LOGD("Send %s hw filter mode: 0x%X for vdev id %d",
+		 req->enable ? "enable" : "disable", req->mode_bitmap,
+		 req->vdev_id);
 
 	status = wmi_unified_cmd_send(wmi, wmi_buf, sizeof(*cmd),
 				      WMI_HW_DATA_FILTER_CMDID);