return addr;
 }
 
-static int bond_has_ip(struct bonding *bond)
-{
-       struct vlan_entry *vlan, *vlan_next;
-
-       if (bond->master_ip)
-               return 1;
-
-       if (list_empty(&bond->vlan_list))
-               return 0;
-
-       list_for_each_entry_safe(vlan, vlan_next, &bond->vlan_list,
-                                vlan_list) {
-               if (vlan->vlan_ip)
-                       return 1;
-       }
-
-       return 0;
-}
-
 static int bond_has_this_ip(struct bonding *bond, __be32 ip)
 {
        struct vlan_entry *vlan, *vlan_next;
                         * if we don't know our ip yet
                         */
                        if (time_after_eq(jiffies, slave->dev->trans_start + 2*delta_in_ticks) ||
-                           (time_after_eq(jiffies, slave->dev->last_rx + 2*delta_in_ticks) &&
-                            bond_has_ip(bond))) {
+                           (time_after_eq(jiffies, slave->dev->last_rx + 2*delta_in_ticks))) {
 
                                slave->link  = BOND_LINK_DOWN;
                                slave->state = BOND_STATE_BACKUP;
 
                        if ((slave != bond->curr_active_slave) &&
                            (!bond->current_arp_slave) &&
-                           (time_after_eq(jiffies, slave_last_rx(bond, slave) + 3*delta_in_ticks) &&
-                            bond_has_ip(bond))) {
+                           (time_after_eq(jiffies, slave_last_rx(bond, slave) + 3*delta_in_ticks))) {
                                /* a backup slave has gone down; three times
                                 * the delta allows the current slave to be
                                 * taken out before the backup slave.
                 * if it is up and needs to take over as the curr_active_slave
                 */
                if ((time_after_eq(jiffies, slave->dev->trans_start + 2*delta_in_ticks) ||
-                       (time_after_eq(jiffies, slave_last_rx(bond, slave) + 2*delta_in_ticks) &&
-                        bond_has_ip(bond))) &&
+                    (time_after_eq(jiffies, slave_last_rx(bond, slave) + 2*delta_in_ticks))) &&
                        time_after_eq(jiffies, slave->jiffies + 2*delta_in_ticks)) {
 
                        slave->link  = BOND_LINK_DOWN;
                /* the current slave must tx an arp to ensure backup slaves
                 * rx traffic
                 */
-               if (slave && bond_has_ip(bond)) {
+               if (slave && IS_UP(slave->dev))
                        bond_arp_send_all(bond, slave);
-               }
        }
 
        /* if we don't have a curr_active_slave, search for the next available