nx_nic_intr_coalesce_t coal;
 
-       u32 fw_major;
+       u32 resv5;
        u32 fw_version;
        const struct firmware *fw;
 };
 
                }
                rds_ring->desc_head = (struct rcv_desc *)addr;
 
-               if (adapter->fw_major < 4)
+               if (NX_IS_REVISION_P2(adapter->ahw.revision_id))
                        rds_ring->crb_rcv_producer =
                                recv_crb_registers[port].crb_rcv_producer[ring];
        }
        }
 
 
-       if (adapter->fw_major >= 4) {
+       if (!NX_IS_REVISION_P2(adapter->ahw.revision_id)) {
                err = nx_fw_cmd_create_rx_ctx(adapter);
                if (err)
                        goto err_out_free;
 
        int port = adapter->portnum;
 
-       if (adapter->fw_major >= 4) {
+       if (!NX_IS_REVISION_P2(adapter->ahw.revision_id)) {
                nx_fw_cmd_destroy_rx_ctx(adapter);
                nx_fw_cmd_destroy_tx_ctx(adapter);
        } else {
 
        fw_minor = NXRD32(adapter, NETXEN_FW_VERSION_MINOR);
        fw_build = NXRD32(adapter, NETXEN_FW_VERSION_SUB);
 
-       adapter->fw_major = fw_major;
        adapter->fw_version = NETXEN_VERSION_CODE(fw_major, fw_minor, fw_build);
 
        if (adapter->portnum == 0) {
 
                NXWR32(adapter, rds_ring->crb_rcv_producer,
                                (producer-1) & (rds_ring->num_desc-1));
 
-               if (adapter->fw_major < 4) {
+               if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) {
                        /*
                         * Write a doorbell msg to tell phanmon of change in
                         * receive ring producer
 
                goto err_out_free_sw;
        }
 
-       if (adapter->fw_major < 4) {
+       if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) {
                tx_ring = adapter->tx_ring;
                tx_ring->crb_cmd_producer = crb_cmd_producer[adapter->portnum];
                tx_ring->crb_cmd_consumer = crb_cmd_consumer[adapter->portnum];
         * See if the firmware gave us a virtual-physical port mapping.
         */
        adapter->physical_port = adapter->portnum;
-       if (adapter->fw_major < 4) {
+       if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) {
                i = NXRD32(adapter, CRB_V2P(adapter->portnum));
                if (i != 0x55555555)
                        adapter->physical_port = i;
        }
 
        /* clear interrupt */
-       if (adapter->fw_major < 4)
+       if (NX_IS_REVISION_P2(adapter->ahw.revision_id))
                netxen_nic_disable_int(sds_ring);
 
        adapter->pci_write_immediate(adapter,