diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-03-16 13:05:49 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-03-16 13:05:49 +0000 |
commit | e1a8e41287337b9cccd7758ee5d0372d6ebc3210 (patch) | |
tree | 58532b03a07183c5e0d4514a8275ddd333046df8 /package | |
parent | 6cfad3ca219d4e3835d559fe442a5d500233a462 (diff) | |
download | upstream-e1a8e41287337b9cccd7758ee5d0372d6ebc3210.tar.gz upstream-e1a8e41287337b9cccd7758ee5d0372d6ebc3210.tar.bz2 upstream-e1a8e41287337b9cccd7758ee5d0372d6ebc3210.zip |
ltq-adsl-mei: fix bugs in linux 3.18 compatiblity change
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 44845
Diffstat (limited to 'package')
-rw-r--r-- | package/kernel/lantiq/ltq-adsl-mei/src/ifxmips_mei_interface.h | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/package/kernel/lantiq/ltq-adsl-mei/src/ifxmips_mei_interface.h b/package/kernel/lantiq/ltq-adsl-mei/src/ifxmips_mei_interface.h index c58732498a..1098b2b793 100644 --- a/package/kernel/lantiq/ltq-adsl-mei/src/ifxmips_mei_interface.h +++ b/package/kernel/lantiq/ltq-adsl-mei/src/ifxmips_mei_interface.h @@ -107,9 +107,31 @@ typedef enum { #define MEI_INIT_WAKELIST(name,queue) \ init_waitqueue_head(&queue) +static inline long +ugly_hack_sleep_on_timeout(wait_queue_head_t *q, long timeout) +{ + unsigned long flags; + wait_queue_t wait; + + init_waitqueue_entry(&wait, current); + + __set_current_state(TASK_INTERRUPTIBLE); + spin_lock_irqsave(&q->lock, flags); + __add_wait_queue(q, &wait); + spin_unlock(&q->lock); + + timeout = schedule_timeout(timeout); + + spin_lock_irq(&q->lock); + __remove_wait_queue(q, &wait); + spin_unlock_irqrestore(&q->lock, flags); + + return timeout; +} + /* wait for an event, timeout is measured in ms */ #define MEI_WAIT_EVENT_TIMEOUT(ev,timeout)\ - wait_event_interruptible_timeout(ev,0 == 1, timeout * HZ / 1000) + ugly_hack_sleep_on_timeout(&ev, timeout * HZ / 1000) #define MEI_WAKEUP_EVENT(ev)\ wake_up_interruptible(&ev) #endif /* IFX_MEI_BSP */ |