void rtllib_ips_leave_wq(struct net_device *dev) { struct r8192_priv *priv = (struct r8192_priv *)rtllib_priv(dev); RT_RF_POWER_STATE rtState; rtState = priv->rtllib->eRFPowerState; if(priv->rtllib->PowerSaveControl.bInactivePs){ if(rtState == eRfOff){ if(priv->rtllib->RfOffReason > RF_CHANGE_BY_IPS) { RT_TRACE(COMP_ERR, "%s(): RF is OFF.\n",__FUNCTION__); return; } else{ printk("=========>%s(): IPSLeave\n",__FUNCTION__); queue_work_rsl(priv->rtllib->wq,&priv->rtllib->ips_leave_wq); } } } }
int rtllib_wx_set_scan(struct rtllib_device *ieee, struct iw_request_info *a, union iwreq_data *wrqu, char *b) { int ret = 0; down(&ieee->wx_sem); if (ieee->iw_mode == IW_MODE_MONITOR || !(ieee->proto_started)) { ret = -1; goto out; } if (ieee->state == RTLLIB_LINKED) { queue_work_rsl(ieee->wq, &ieee->wx_sync_scan_wq); /* intentionally forget to up sem */ return 0; } out: up(&ieee->wx_sem); return ret; }