static int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
 {
+       struct adapter *padapter = container_of(pcmdpriv, struct adapter, cmdpriv);
        u8 bAllow = false; /* set to true to allow enqueuing cmd when hw_init_completed is false */
 
        /* To decide allow or not */
-       if ((pcmdpriv->padapter->pwrctrlpriv.bHWPwrPindetect) &&
-           (!pcmdpriv->padapter->registrypriv.usbss_enable)) {
+       if ((padapter->pwrctrlpriv.bHWPwrPindetect) &&
+           (!padapter->registrypriv.usbss_enable)) {
                if (cmd_obj->cmdcode == _Set_Drv_Extra_CMD_) {
                        struct drvextra_cmd_parm        *pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)cmd_obj->parmbuf;
 
        if (cmd_obj->cmdcode == _SetChannelPlan_CMD_)
                bAllow = true;
 
-       if ((!pcmdpriv->padapter->hw_init_completed && !bAllow) ||
+       if ((!padapter->hw_init_completed && !bAllow) ||
            !pcmdpriv->cmdthd_running)  /* com_thread not running */
                return _FAIL;
        return _SUCCESS;
 u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
 {
        int res = _FAIL;
-       struct adapter *padapter = pcmdpriv->padapter;
+       struct adapter *padapter = container_of(pcmdpriv, struct adapter, cmdpriv);
 
        if (!cmd_obj)
                goto exit;
 
        struct completion terminate_cmdthread_comp;
        struct __queue cmd_queue;
        u8 cmdthd_running;
-       struct adapter *padapter;
 };
 
 #define init_h2fwcmd_w_parm_no_rsp(pcmd, pparm, code) \
 
 
        rtw_init_cmd_priv(&padapter->cmdpriv);
 
-       padapter->cmdpriv.padapter = padapter;
-
        if (rtw_init_mlme_priv(padapter) == _FAIL) {
                RT_TRACE(_module_os_intfs_c_, _drv_err_, ("\n Can't init mlme_priv\n"));
                ret8 = _FAIL;