static spinlock_t wq_lock;
static struct list_head workq;
static wait_queue_head_t more_work;
static struct task_struct *workq_thread;
static struct work_struct *current_work;
static spinlock_t wq_lock;
static struct list_head workq;
static wait_queue_head_t more_work;
static struct task_struct *workq_thread;
static struct work_struct *current_work;
-static void queue_work(struct work_struct *work)
+static void add_work_to_ovs_wq(struct work_struct *work)
+{
+ list_add_tail(&work->entry, &workq);
+ wake_up(&more_work);
+}
+static void __queue_work(struct work_struct *work)
static void _delayed_work_timer_fn(unsigned long __data)
{
struct delayed_work *dwork = (struct delayed_work *)__data;
static void _delayed_work_timer_fn(unsigned long __data)
{
struct delayed_work *dwork = (struct delayed_work *)__data;
else {
INIT_WORK(&barr.work, wq_barrier_func);
init_completion(&barr.done);
else {
INIT_WORK(&barr.work, wq_barrier_func);
init_completion(&barr.done);