if (addr->in_progress)
                return -EINPROGRESS;
 
-       if (!qeth_card_hw_is_reachable(card)) {
-               addr->disp_flag = QETH_DISP_ADDR_DELETE;
-               return 0;
-       }
-
-       rc = qeth_l3_deregister_addr_entry(card, addr);
+       if (qeth_card_hw_is_reachable(card))
+               rc = qeth_l3_deregister_addr_entry(card, addr);
 
        hash_del(&addr->hnode);
        kfree(addr);
        spin_lock_bh(&card->ip_lock);
 
        hash_for_each_safe(card->ip_htable, i, tmp, addr, hnode) {
-               if (addr->disp_flag == QETH_DISP_ADDR_DELETE) {
-                       qeth_l3_deregister_addr_entry(card, addr);
-                       hash_del(&addr->hnode);
-                       kfree(addr);
-               } else if (addr->disp_flag == QETH_DISP_ADDR_ADD) {
+               if (addr->disp_flag == QETH_DISP_ADDR_ADD) {
                        if (addr->proto == QETH_PROT_IPV4) {
                                addr->in_progress = 1;
                                spin_unlock_bh(&card->ip_lock);