qcacmn: Avoid adding cmd to serialization queue if disabled

Add API to fetch the vdev queue status and avoid enqueueing command
to serialization queue if the vdev queue is found to be disabled

Change-Id: If615b07dceaeb3113592f24355f254c8e70ca8a2
CRs-Fixed: 2470208
这个提交包含在:
Vivek
2019-06-13 15:04:50 +05:30
提交者 nshrivas
父节点 420a8d3c6d
当前提交 140070028c
修改 3 个文件,包含 43 行新增0 行删除

查看文件

@@ -588,6 +588,16 @@ wlan_serialization_get_vdev_active_cmd_type(struct wlan_objmgr_vdev *vdev);
QDF_STATUS QDF_STATUS
wlan_ser_get_cmd_activation_status(struct wlan_objmgr_vdev *vdev); wlan_ser_get_cmd_activation_status(struct wlan_objmgr_vdev *vdev);
/**
* wlan_ser_is_vdev_queue_enabled() - Return vdev queue status
* @vdev: vdev object
*
* This API return vdev queue enable status
*
* Return: true if vdev queue is enabled
*/
bool wlan_ser_is_vdev_queue_enabled(struct wlan_objmgr_vdev *vdev);
/** /**
* wlan_ser_validate_umac_cmd() - validate umac cmd data * wlan_ser_validate_umac_cmd() - validate umac cmd data
* @vdev: objmgr vdev pointer * @vdev: objmgr vdev pointer

查看文件

@@ -676,6 +676,25 @@ error:
return cmd_type; return cmd_type;
} }
bool wlan_ser_is_vdev_queue_enabled(struct wlan_objmgr_vdev *vdev)
{
struct wlan_ser_vdev_obj *ser_vdev_obj;
struct wlan_serialization_vdev_queue *vdev_queue;
ser_vdev_obj = wlan_serialization_get_vdev_obj(vdev);
if (!ser_vdev_obj) {
ser_err("invalid ser_vdev_obj");
return false;
}
vdev_queue = wlan_serialization_get_vdev_queue_obj(
ser_vdev_obj, WLAN_SER_CMD_NONSCAN);
if (vdev_queue->queue_disable)
return false;
else
return true;
}
QDF_STATUS QDF_STATUS
wlan_ser_get_cmd_activation_status(struct wlan_objmgr_vdev *vdev) wlan_ser_get_cmd_activation_status(struct wlan_objmgr_vdev *vdev)
{ {

查看文件

@@ -41,6 +41,8 @@ wlan_vdev_mlme_ser_start_bss(struct wlan_serialization_command *cmd)
return WLAN_SER_CMD_DENIED_UNSPECIFIED; return WLAN_SER_CMD_DENIED_UNSPECIFIED;
} }
if (!wlan_ser_is_vdev_queue_enabled(cmd->vdev))
return WLAN_SER_CMD_QUEUE_DISABLED;
/* /*
* Serialization command filtering logic * Serialization command filtering logic
* a. Cancel any existing start bss cmd in the pending queue * a. Cancel any existing start bss cmd in the pending queue
@@ -77,6 +79,9 @@ wlan_vdev_mlme_ser_stop_bss(struct wlan_serialization_command *cmd)
mlme_err("Null input"); mlme_err("Null input");
return WLAN_SER_CMD_DENIED_UNSPECIFIED; return WLAN_SER_CMD_DENIED_UNSPECIFIED;
} }
if (!wlan_ser_is_vdev_queue_enabled(cmd->vdev))
return WLAN_SER_CMD_QUEUE_DISABLED;
/* /*
* Serialization command filtering logic * Serialization command filtering logic
* a. Cancel any existing start/stop/restart command in the pending * a. Cancel any existing start/stop/restart command in the pending
@@ -112,6 +117,9 @@ wlan_vdev_mlme_ser_restart_bss(struct wlan_serialization_command *cmd)
mlme_err("Null input"); mlme_err("Null input");
return WLAN_SER_CMD_DENIED_UNSPECIFIED; return WLAN_SER_CMD_DENIED_UNSPECIFIED;
} }
if (!wlan_ser_is_vdev_queue_enabled(cmd->vdev))
return WLAN_SER_CMD_QUEUE_DISABLED;
/* /*
* Serialization command filtering logic * Serialization command filtering logic
* a. Cancel any existing RESTART cmd in the pending queue * a. Cancel any existing RESTART cmd in the pending queue
@@ -133,6 +141,9 @@ wlan_vdev_mlme_ser_connect(struct wlan_serialization_command *cmd)
mlme_err("Null input"); mlme_err("Null input");
return WLAN_SER_CMD_DENIED_UNSPECIFIED; return WLAN_SER_CMD_DENIED_UNSPECIFIED;
} }
if (!wlan_ser_is_vdev_queue_enabled(cmd->vdev))
return WLAN_SER_CMD_QUEUE_DISABLED;
/* /*
* Serialization command filtering logic * Serialization command filtering logic
* a. Cancel any existing CONNECT cmd in the pending queue * a. Cancel any existing CONNECT cmd in the pending queue
@@ -165,6 +176,9 @@ wlan_vdev_mlme_ser_disconnect(struct wlan_serialization_command *cmd)
mlme_err("Null input"); mlme_err("Null input");
return WLAN_SER_CMD_DENIED_UNSPECIFIED; return WLAN_SER_CMD_DENIED_UNSPECIFIED;
} }
if (!wlan_ser_is_vdev_queue_enabled(cmd->vdev))
return WLAN_SER_CMD_QUEUE_DISABLED;
/* /*
* Serialization command filtering logic * Serialization command filtering logic
* a.Cancel any existing CONNECT/DISCONNECT/RESTART command in the * a.Cancel any existing CONNECT/DISCONNECT/RESTART command in the