Browse Source

qcacmn: Add APIs to configure Active BPF Mode

Active Mode Berkeley Packet Filter (Active BPF) is a new feature that
allows firmware to apply BPF even while the Apps processor is active.
There are 3 modes:
 * Disabled: do not apply BPF in active mode
 * Enabled: apply BPF to all packets in active mode
 * Adaptive: apply BPF up to some threshold to avoid performance impact

Add WMI APIs and related logic to support configuration of Active BPF
Mode.

Change-Id: I8c0778b3fa73d148422aa103b0fc0950433fec95
CRs-Fixed: 1111400
Dustin Brown 8 years ago
parent
commit
4def31691f
3 changed files with 31 additions and 0 deletions
  1. 13 0
      wmi_unified_api.h
  2. 13 0
      wmi_unified_param.h
  3. 5 0
      wmi_unified_priv.h

+ 13 - 0
wmi_unified_api.h

@@ -858,6 +858,19 @@ QDF_STATUS wmi_unified_get_buf_extscan_hotlist_cmd(void *wmi_hdl,
 				   struct ext_scan_setbssi_hotlist_params *
 				   photlist, int *buf_len);
 
+/**
+ * wmi_unified_set_active_bpf_mode_cmd() - config active BPF mode in FW
+ * @wmi_hdl: the WMI handle
+ * @vdev_id: the Id of the vdev to apply the configuration to
+ * @ucast_mode: the active BPF mode to configure for unicast packets
+ * @mcast_bcast_mode: the active BPF mode to configure for multicast/broadcast
+ *	packets
+ */
+QDF_STATUS wmi_unified_set_active_bpf_mode_cmd(void *wmi_hdl,
+				uint8_t vdev_id,
+				enum wmi_host_active_bpf_mode ucast_mode,
+				enum wmi_host_active_bpf_mode mcast_bcast_mode);
+
 QDF_STATUS wmi_unified_stats_request_send(void *wmi_hdl,
 				uint8_t macaddr[IEEE80211_ADDR_LEN],
 				struct stats_request_params *param);

+ 13 - 0
wmi_unified_param.h

@@ -7245,4 +7245,17 @@ struct pdev_csa_switch_count_status {
 	uint32_t *vdev_ids;
 };
 
+/**
+ * enum wmi_host_active-bpf_mode - FW_ACTIVE_BPF_MODE, replicated from FW header
+ * @WMI_HOST_ACTIVE_BPF_DISABLED: BPF is disabled for all packets in active mode
+ * @WMI_HOST_ACTIVE_BPF_ENABLED: BPF is enabled for all packets in active mode
+ * @WMI_HOST_ACTIVE_BPF_ADAPTIVE: BPF is enabled for packets up to some
+ *	threshold in active mode
+ */
+enum wmi_host_active_bpf_mode {
+	WMI_HOST_ACTIVE_BPF_DISABLED =	(1 << 1),
+	WMI_HOST_ACTIVE_BPF_ENABLED =	(1 << 2),
+	WMI_HOST_ACTIVE_BPF_ADAPTIVE =	(1 << 3)
+};
+
 #endif /* _WMI_UNIFIED_PARAM_H_ */

+ 5 - 0
wmi_unified_priv.h

@@ -724,6 +724,11 @@ QDF_STATUS (*send_get_buf_extscan_hotlist_cmd)(wmi_unified_t wmi_handle,
 				   struct ext_scan_setbssi_hotlist_params *
 				   photlist, int *buf_len);
 
+QDF_STATUS (*send_set_active_bpf_mode_cmd)(wmi_unified_t wmi_handle,
+				uint8_t vdev_id,
+				enum wmi_host_active_bpf_mode ucast_mode,
+				enum wmi_host_active_bpf_mode mcast_bcast_mode);
+
 QDF_STATUS (*send_pdev_get_tpc_config_cmd)(wmi_unified_t wmi_handle,
 		uint32_t param);