Hello Franz, the workqueues are the most "non-trivial" thing which prevented us so far from backporting batman-adv to these older kernel. I'd also be interested to integrate patches if anyone has a solution for this. :) best regards, Simon On Mon, Apr 12, 2010 at 09:28:30AM +0200, Franz Böhm wrote: > 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 >