From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from tyo202.gate.nec.co.jp (TYO202.gate.nec.co.jp [210.143.35.52]) by dpdk.org (Postfix) with ESMTP id A4C8D3F9 for ; Fri, 6 Jun 2014 09:55:37 +0200 (CEST) Received: from mailgate3.nec.co.jp ([10.7.69.193]) by tyo202.gate.nec.co.jp (8.13.8/8.13.4) with ESMTP id s567tmfQ009526 for ; Fri, 6 Jun 2014 16:55:48 +0900 (JST) Received: from mailsv4.nec.co.jp (imss61.nec.co.jp [10.7.69.156]) by mailgate3.nec.co.jp (8.11.7/3.7W-MAILGATE-NEC) with ESMTP id s567tmJ29888 for ; Fri, 6 Jun 2014 16:55:48 +0900 (JST) Received: from mail02.kamome.nec.co.jp (mail02.kamome.nec.co.jp [10.25.43.5]) by mailsv4.nec.co.jp (8.13.8/8.13.4) with ESMTP id s567tmlc002682 for ; Fri, 6 Jun 2014 16:55:48 +0900 (JST) Received: from bpxc99gp.gisp.nec.co.jp ([10.38.151.141] [10.38.151.141]) by mail01b.kamome.nec.co.jp with ESMTP id BT-MMP-78450; Fri, 6 Jun 2014 16:54:48 +0900 Received: from BPXM14GP.gisp.nec.co.jp ([169.254.1.238]) by BPXC13GP.gisp.nec.co.jp ([10.38.151.141]) with mapi id 14.02.0328.011; Fri, 6 Jun 2014 16:54:47 +0900 From: Hiroshi Shimamoto To: "dev@dpdk.org" Thread-Topic: [memnic PATCH] linux: fix to disable softirq before netif_receive_skb() Thread-Index: Ac+BXIoEjScYa/YFS9KuKJ0+PvZe7Q== Date: Fri, 6 Jun 2014 07:54:47 +0000 Message-ID: <7F861DC0615E0C47A872E6F3C5FCDDBD01101844@BPXM14GP.gisp.nec.co.jp> Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.205.5.123] Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Cc: Hayato Momma Subject: [dpdk-dev] [memnic PATCH] linux: fix to disable softirq before netif_receive_skb() X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jun 2014 07:55:38 -0000 From: Hiroshi Shimamoto Calling netif_receive_skb() from memnic thread may cause deadlock, if softirq is not disabled. The netif_receive_skb() should be called in softirq context, but memnic thread is not softirq context. That may conflict softirq work like a timer handler in kernel network stack. Signed-off-by: Hiroshi Shimamoto Reviewed-by: Hayato Momma --- linux/memnic_net.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/linux/memnic_net.c b/linux/memnic_net.c index fadece6..a1b433a 100644 --- a/linux/memnic_net.c +++ b/linux/memnic_net.c @@ -133,8 +133,14 @@ static int memnic_thread(void *param) continue; } =20 + local_bh_disable(); + /* + * Disable softirq here to avoid race between timers and + * netif_receive_skb + */ for (i =3D 0; i < n; i++) netif_receive_skb(skbs[i]); + local_bh_enable(); =20 cnt =3D 0; } --=20 1.8.4