phba->cfg_poll = 0;
        else
                phba->cfg_poll = lpfc_poll;
+
+       if (phba->cfg_enable_bg)
+               phba->sli3_options |= LPFC_SLI3_BG_ENABLED;
+
        lpfc_suppress_rsp_init(phba, lpfc_suppress_rsp);
 
        lpfc_enable_fc4_type_init(phba, lpfc_enable_fc4_type);
 
         * Since lpfc_sg_seg_cnt is module param, the sg_dma_buf_size
         * used to create the sg_dma_buf_pool must be calculated.
         */
-       if (phba->cfg_enable_bg) {
+       if (phba->sli3_options & LPFC_SLI3_BG_ENABLED) {
                /*
                 * The scsi_buf for a T10-DIF I/O holds the FCP cmnd,
                 * the FCP rsp, and a SGE. Sice we have no control
 
                 * 4K Page alignment is CRITICAL to BlockGuard, double check
                 * to be sure.
                 */
-               if (phba->cfg_enable_bg  && (((unsigned long)(psb->data) &
+               if ((phba->sli3_options & LPFC_SLI3_BG_ENABLED) &&
+                   (((unsigned long)(psb->data) &
                    (unsigned long)(SLI4_PAGE_SIZE - 1)) != 0)) {
+                       lpfc_printf_log(phba, KERN_ERR, LOG_FCP,
+                                       "3369 Memory alignment error "
+                                       "addr=%lx\n",
+                                       (unsigned long)psb->data);
                        dma_pool_free(phba->lpfc_sg_dma_buf_pool,
                                      psb->data, psb->dma_handle);
                        kfree(psb);
 
                phba->hbq_get = phba->mbox->us.s3_pgp.hbq_get;
                phba->port_gp = phba->mbox->us.s3_pgp.port;
 
-               if (phba->cfg_enable_bg) {
-                       if (pmb->u.mb.un.varCfgPort.gbg)
-                               phba->sli3_options |= LPFC_SLI3_BG_ENABLED;
-                       else
+               if (phba->sli3_options & LPFC_SLI3_BG_ENABLED) {
+                       if (pmb->u.mb.un.varCfgPort.gbg == 0) {
+                               phba->cfg_enable_bg = 0;
+                               phba->sli3_options &= ~LPFC_SLI3_BG_ENABLED;
                                lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
                                                "0443 Adapter did not grant "
                                                "BlockGuard\n");
+                       }
                }
        } else {
                phba->hbq_get = NULL;
         * then turn off the global config parameters to disable the
         * feature in the driver.  This is not a fatal error.
         */
-       phba->sli3_options &= ~LPFC_SLI3_BG_ENABLED;
-       if (phba->cfg_enable_bg) {
-               if (bf_get(lpfc_mbx_rq_ftr_rsp_dif, &mqe->un.req_ftrs))
-                       phba->sli3_options |= LPFC_SLI3_BG_ENABLED;
-               else
+       if (phba->sli3_options & LPFC_SLI3_BG_ENABLED) {
+               if (!(bf_get(lpfc_mbx_rq_ftr_rsp_dif, &mqe->un.req_ftrs))) {
+                       phba->cfg_enable_bg = 0;
+                       phba->sli3_options &= ~LPFC_SLI3_BG_ENABLED;
                        ftr_rsp++;
+               }
        }
 
        if (phba->max_vpi && phba->cfg_enable_npiv &&