Hi,
I am trying to get batman-adv (kernelland) running on Ubiquiti Networks hardware. Unfortunately the Ubiquiti SDK uses kernel 2.6.15 and batman-adv needs at least 2.6.20. I did have some success in patching and running batman-adv-kernelland 0.1 (r1176). I would of course prefer using batman-adv 0.2 but I do have problems implementing the older kernel workqueue API.
Perhaps someone can give me a hint on porting for example this function from send.c to the old workqueue API.
void send_outstanding_bat_packet(struct work_struct *work) { struct delayed_work *delayed_work = container_of(work, struct delayed_work, work); struct forw_packet *forw_packet = container_of(delayed_work, struct forw_packet, delayed_work); unsigned long flags;
spin_lock_irqsave(&forw_bat_list_lock, flags); hlist_del(&forw_packet->list); spin_unlock_irqrestore(&forw_bat_list_lock, flags);
send_packet(forw_packet);
/** * we have to have at least one packet in the queue * to determine the queues wake up time unless we are * shutting down */ if ((forw_packet->own) && (atomic_read(&module_state) != MODULE_DEACTIVATING)) schedule_own_packet(forw_packet->if_incoming);
forw_packet_free(forw_packet); }
Kind regards, Franz