From patchwork Wed Dec 27 20:22:30 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zhang X-Patchwork-Id: 32778 X-Patchwork-Delegate: helin.zhang@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AF5031B241; Thu, 28 Dec 2017 04:32:21 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 4FA591B168; Thu, 28 Dec 2017 04:32:18 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 27 Dec 2017 19:32:17 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,468,1508828400"; d="scan'208";a="17055492" Received: from dpdk27.sh.intel.com ([10.67.111.90]) by fmsmga001.fm.intel.com with ESMTP; 27 Dec 2017 19:32:16 -0800 From: Qi Zhang To: wenzhuo.lu@intel.com Cc: dev@dpdk.org, wei.dai@intel.com, liang-min.wang@intel.com, Qi Zhang , stable@dpdk.org Date: Wed, 27 Dec 2017 15:22:30 -0500 Message-Id: <1514406150-17517-2-git-send-email-qi.z.zhang@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1514406150-17517-1-git-send-email-qi.z.zhang@intel.com> References: <1514406150-17517-1-git-send-email-qi.z.zhang@intel.com> Subject: [dpdk-dev] [PATCH 2/2] net/e1000: fix mailbox interrupt handler X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Mailbox interrupt handler only take care of the PF reset notification, for other message mbx->ops.read should not be called since it get chance to break the foreground VF to PF communication. Fixes: 316f4f1adc2e ("net/igb: support VF mailbox interrupt for link up/down") Cc: stable@dpdk.org Signed-off-by: Qi Zhang Acked-by: Wei Dai --- drivers/net/e1000/igb_ethdev.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c index fdc139f..0d8bc49 100644 --- a/drivers/net/e1000/igb_ethdev.c +++ b/drivers/net/e1000/igb_ethdev.c @@ -2970,13 +2970,17 @@ void igbvf_mbx_process(struct rte_eth_dev *dev) struct e1000_mbx_info *mbx = &hw->mbx; u32 in_msg = 0; - if (mbx->ops.read(hw, &in_msg, 1, 0)) - return; + /* peek the message first */ + in_msg = E1000_READ_REG(hw, E1000_VMBMEM(0)); /* PF reset VF event */ - if (in_msg == E1000_PF_CONTROL_MSG) + if (in_msg == E1000_PF_CONTROL_MSG) { + /* dummy mbx read to ack pf */ + if (mbx->ops.read(hw, &in_msg, 1, 0)) + return; _rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_RESET, NULL, NULL); + } } static int