Browse Source

qcacmn: Support to enable/disable SWBA events in beacon offload

When SWBA event is enabled, the FW will sent an event to the
host on every TBTT beacon.
Note that, unlike the legacy offload chips, this event is not
used by the host to send out the beacon frame itself.

Change-Id: Icf4440d79f7dbfb544f9d98c4de0e84bdb150459
CRs-Fixed: 2200805
Vinay Adella 7 years ago
parent
commit
940d1d3c34
2 changed files with 28 additions and 7 deletions
  1. 9 2
      wmi/inc/wmi_unified_param.h
  2. 19 5
      wmi/src/wmi_unified_tlv.c

+ 9 - 2
wmi/inc/wmi_unified_param.h

@@ -8098,14 +8098,21 @@ struct wmi_host_ready_ev_param {
 	bool agile_capability;
 };
 
+enum bcn_offload_control_param {
+	BCN_OFFLD_CTRL_TX_DISABLE = 0,
+	BCN_OFFLD_CTRL_TX_ENABLE,
+	BCN_OFFLD_CTRL_SWBA_DISABLE,
+	BCN_OFFLD_CTRL_SWBA_ENABLE,
+};
+
 /**
  * struct bcn_offload_control - Beacon offload control params
  * @vdev_id: vdev identifer of VAP to control beacon tx
- * @bcn_tx_enable: Enable or Disable beacon TX in offload mode
+ * @bcn_ctrl_op: values from enum bcn_offload_control_param
  */
 struct bcn_offload_control {
 	uint32_t vdev_id;
-	bool bcn_tx_enable;
+	enum bcn_offload_control_param bcn_ctrl_op;
 };
 
 /**

+ 19 - 5
wmi/src/wmi_unified_tlv.c

@@ -17161,12 +17161,26 @@ QDF_STATUS send_bcn_offload_control_cmd_tlv(wmi_unified_t wmi_handle,
 			WMITLV_GET_STRUCT_TLVLEN
 			(wmi_bcn_offload_ctrl_cmd_fixed_param));
 	cmd->vdev_id = bcn_ctrl_param->vdev_id;
-	if (bcn_ctrl_param->bcn_tx_enable)
-		cmd->bcn_ctrl_op = WMI_BEACON_CTRL_TX_ENABLE;
-	else
+	switch (bcn_ctrl_param->bcn_ctrl_op) {
+	case BCN_OFFLD_CTRL_TX_DISABLE:
 		cmd->bcn_ctrl_op = WMI_BEACON_CTRL_TX_DISABLE;
-
-
+		break;
+	case BCN_OFFLD_CTRL_TX_ENABLE:
+		cmd->bcn_ctrl_op = WMI_BEACON_CTRL_TX_ENABLE;
+		break;
+	case BCN_OFFLD_CTRL_SWBA_DISABLE:
+		cmd->bcn_ctrl_op = WMI_BEACON_CTRL_SWBA_EVENT_DISABLE;
+		break;
+	case BCN_OFFLD_CTRL_SWBA_ENABLE:
+		cmd->bcn_ctrl_op = WMI_BEACON_CTRL_SWBA_EVENT_ENABLE;
+		break;
+	default:
+		WMI_LOGE("WMI_BCN_OFFLOAD_CTRL_CMDID unknown CTRL Operation %d",
+			bcn_ctrl_param->bcn_ctrl_op);
+		wmi_buf_free(buf);
+		return QDF_STATUS_E_FAILURE;
+		break;
+	}
 	ret = wmi_unified_cmd_send(wmi_handle, buf, len,
 			WMI_BCN_OFFLOAD_CTRL_CMDID);