(_bna)->bits.error_status_bits = (__HFN_INT_ERR_MASK);          \
        (_bna)->bits.error_mask_bits = (__HFN_INT_ERR_MASK);            \
        (_bna)->bits.halt_status_bits = __HFN_INT_LL_HALT;              \
+       (_bna)->bits.halt_mask_bits = __HFN_INT_LL_HALT;                \
 }
 
 #define ct2_reg_addr_init(_bna, _pcidev)                               \
 
                                                rcb->rxq->buffer_size);
                if (unlikely(!skb)) {
                        BNAD_UPDATE_CTR(bnad, rxbuf_alloc_failed);
+                       rcb->rxq->rxbuf_alloc_failed++;
                        goto finishing;
                }
                unmap_array[unmap_prod].skb = skb;
        spin_unlock_irqrestore(&bnad->bna_lock, flags);
 
        rx_info->rx = NULL;
+       rx_info->rx_id = 0;
 
        bnad_rx_res_free(bnad, res_info);
 }
        rx = bna_rx_create(&bnad->bna, bnad, rx_config, &rx_cbfn, res_info,
                        rx_info);
        spin_unlock_irqrestore(&bnad->bna_lock, flags);
-       if (!rx)
+       if (!rx) {
+               err = -ENOMEM;
                goto err_return;
+       }
        rx_info->rx = rx;
 
        /*
 bnad_pci_probe(struct pci_dev *pdev,
                const struct pci_device_id *pcidev_id)
 {
-       bool    using_dac = false;
+       bool    using_dac;
        int     err;
        struct bnad *bnad;
        struct bna *bna;
                        bna_num_rxp_set(bna, BNAD_NUM_RXP + 1))
                        err = -EIO;
        }
+       spin_unlock_irqrestore(&bnad->bna_lock, flags);
+       if (err)
+               goto disable_ioceth;
+
+       spin_lock_irqsave(&bnad->bna_lock, flags);
        bna_mod_res_req(&bnad->bna, &bnad->mod_res_info[0]);
        spin_unlock_irqrestore(&bnad->bna_lock, flags);