[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openvswitch-discuss
Subject:    [ovs-discuss] =?utf-8?q?Adding_a_Queue_in_Datapath?=
From:       nw_an () naver ! com (Namwon An)
Date:       2014-08-22 6:01:21
Message-ID: 19a049c459e9a123dc89b1c31aaa7 () cweb14 ! nm ! nhnsystem ! com
[Download RAW message or body]

Hello, everyone.
I am modifying the datapath of ovs to queue incoming packets and delay the time of \
process of them. In datapath.c, I added codes creating a thread that inputs incoming \
packets to a queue, and process them later (in regular). Once \
ovs_dp_process_received_packet() is called, it queues an incoming packet to my queue \
and return, and later my thread process packets queued through calling \
ovs_dp_process_received_packet() again. To do that, points of vport and sk_buff \
should be queued and dequeued. I used udelay() to make my thread process its job in \
regular. But, when I loaded my modified module into kernel, it made kernel frozen.
I do not know how to debug kernel well, but I checked log of dmesg and I could not \
find any reason. So, I replaced udelay() with schedule_timeout(), and at that time \
kernel did not die. However, after a few seconds, the kernel died too.
I do not understand why this happened.
I used spinlock technique to protect my queue between regular datapath and the \
process of my thread. raw_spin_lock_irqsave() and raw_spin_unlock_irqrestore() were \
used, because spin_lock() and spin_unlock() freeze kernel (I do not understand). Does \
anyone know why this happened and what I have to do?  
- Namwon An 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://openvswitch.org/pipermail/discuss/attachments/20140822/32e876f2/attachment-0001.html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic