* arp is transmitted to generate traffic. see activebackup_arp_monitor for
  * arp monitoring in active backup mode.
  */
-static void bond_loadbalance_arp_mon(struct work_struct *work)
+static void bond_loadbalance_arp_mon(struct bonding *bond)
 {
-       struct bonding *bond = container_of(work, struct bonding,
-                                           arp_work.work);
        struct slave *slave, *oldcurrent;
        struct list_head *iter;
        int do_failover = 0, slave_state_changed = 0;
        return should_notify_rtnl;
 }
 
-static void bond_activebackup_arp_mon(struct work_struct *work)
+static void bond_activebackup_arp_mon(struct bonding *bond)
 {
-       struct bonding *bond = container_of(work, struct bonding,
-                                           arp_work.work);
        bool should_notify_peers = false;
        bool should_notify_rtnl = false;
        int delta_in_ticks;
        }
 }
 
+static void bond_arp_monitor(struct work_struct *work)
+{
+       struct bonding *bond = container_of(work, struct bonding,
+                                           arp_work.work);
+
+       if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP)
+               bond_activebackup_arp_mon(bond);
+       else
+               bond_loadbalance_arp_mon(bond);
+}
+
 /*-------------------------- netdev event handling --------------------------*/
 
 /* Change device name */
                          bond_resend_igmp_join_requests_delayed);
        INIT_DELAYED_WORK(&bond->alb_work, bond_alb_monitor);
        INIT_DELAYED_WORK(&bond->mii_work, bond_mii_monitor);
-       if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP)
-               INIT_DELAYED_WORK(&bond->arp_work, bond_activebackup_arp_mon);
-       else
-               INIT_DELAYED_WORK(&bond->arp_work, bond_loadbalance_arp_mon);
+       INIT_DELAYED_WORK(&bond->arp_work, bond_arp_monitor);
        INIT_DELAYED_WORK(&bond->ad_work, bond_3ad_state_machine_handler);
        INIT_DELAYED_WORK(&bond->slave_arr_work, bond_slave_arr_handler);
 }