#define DRV_NAME               "fnic"
 #define DRV_DESCRIPTION                "Cisco FCoE HBA Driver"
-#define DRV_VERSION            "1.6.0.49"
+#define DRV_VERSION            "1.6.0.50"
 #define PFX                    DRV_NAME ": "
 #define DFX                     DRV_NAME "%d: "
 
        u32 vlan_hw_insert:1;           /* let hw insert the tag */
        u32 in_remove:1;                /* fnic device in removal */
        u32 stop_rx_link_events:1;      /* stop proc. rx frames, link events */
+       u32 link_events:1;              /* set when we get any link event*/
 
        struct completion *remove_wait; /* device remove thread blocks */
 
 
 
        spin_lock_irqsave(&fnic->fnic_lock, flags);
 
+       fnic->link_events = 1;      /* less work to just set everytime*/
+
        if (fnic->stop_rx_link_events) {
                spin_unlock_irqrestore(&fnic->fnic_lock, flags);
                return;
 
        fnic->lport = lp;
        fnic->ctlr.lp = lp;
 
+       fnic->link_events = 0;
+
        snprintf(fnic->name, sizeof(fnic->name) - 1, "%s%d", DRV_NAME,
                 host->host_no);
 
 
        /* Issue firmware reset for fnic, wait for reset to complete */
 retry_fw_reset:
        spin_lock_irqsave(&fnic->fnic_lock, flags);
-       if (unlikely(fnic->state == FNIC_IN_FC_TRANS_ETH_MODE)) {
+       if (unlikely(fnic->state == FNIC_IN_FC_TRANS_ETH_MODE) &&
+                    fnic->link_events) {
                /* fw reset is in progress, poll for its completion */
                spin_unlock_irqrestore(&fnic->fnic_lock, flags);
                schedule_timeout(msecs_to_jiffies(100));