wsm_cmd
struct wsm_cmd wsm_cmd;
spin_lock(&priv->wsm_cmd.lock);
priv->wsm_cmd.done ? "idle" : "active");
priv->wsm_cmd.cmd, priv->wsm_cmd.len);
priv->wsm_cmd.ret);
spin_unlock(&priv->wsm_cmd.lock);
spin_lock_init(&priv->wsm_cmd.lock);
priv->wsm_cmd.done = 1;
spin_lock(&priv->wsm_cmd.lock);
while (!priv->wsm_cmd.done) {
spin_unlock(&priv->wsm_cmd.lock);
spin_lock(&priv->wsm_cmd.lock);
priv->wsm_cmd.done = 0;
spin_unlock(&priv->wsm_cmd.lock);
spin_lock(&priv->wsm_cmd.lock);
BUG_ON(priv->wsm_cmd.ptr);
priv->wsm_cmd.ptr = buf->begin;
priv->wsm_cmd.len = buf_len;
priv->wsm_cmd.arg = arg;
priv->wsm_cmd.cmd = cmd;
spin_unlock(&priv->wsm_cmd.lock);
priv->wsm_cmd.done, tmo);
if (!ret && !priv->wsm_cmd.done) {
spin_lock(&priv->wsm_cmd.lock);
priv->wsm_cmd.done = 1;
priv->wsm_cmd.ptr = NULL;
spin_unlock(&priv->wsm_cmd.lock);
pr_err("CMD req (0x%04x) stuck in firmware, killing BH\n", priv->wsm_cmd.cmd);
spin_lock(&priv->wsm_cmd.lock);
BUG_ON(!priv->wsm_cmd.done);
ret = priv->wsm_cmd.ret;
spin_unlock(&priv->wsm_cmd.lock);
u16 wsm_cmd;
spin_lock(&priv->wsm_cmd.lock);
wsm_arg = priv->wsm_cmd.arg;
wsm_cmd = priv->wsm_cmd.cmd &
priv->wsm_cmd.cmd = 0xFFFF;
spin_unlock(&priv->wsm_cmd.lock);
if (WARN_ON((id & ~0x0400) != wsm_cmd)) {
spin_lock(&priv->wsm_cmd.lock);
priv->wsm_cmd.ret = ret;
priv->wsm_cmd.done = 1;
spin_unlock(&priv->wsm_cmd.lock);
if (priv->wsm_cmd.ptr) { /* CMD request */
spin_lock(&priv->wsm_cmd.lock);
BUG_ON(!priv->wsm_cmd.ptr);
*data = priv->wsm_cmd.ptr;
*tx_len = priv->wsm_cmd.len;
spin_unlock(&priv->wsm_cmd.lock);
if (data == priv->wsm_cmd.ptr) {
spin_lock(&priv->wsm_cmd.lock);
priv->wsm_cmd.ptr = NULL;
spin_unlock(&priv->wsm_cmd.lock);