From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id D12772BE0 for ; Tue, 31 May 2016 10:45:43 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga104.fm.intel.com with ESMTP; 31 May 2016 01:45:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,395,1459839600"; d="scan'208";a="987926385" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga002.jf.intel.com with ESMTP; 31 May 2016 01:45:42 -0700 Received: from fmsmsx113.amr.corp.intel.com (10.18.116.7) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.248.2; Tue, 31 May 2016 01:45:42 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by FMSMSX113.amr.corp.intel.com (10.18.116.7) with Microsoft SMTP Server (TLS) id 14.3.248.2; Tue, 31 May 2016 01:45:42 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.220]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.150]) with mapi id 14.03.0248.002; Tue, 31 May 2016 16:45:39 +0800 From: "Lu, Wenzhuo" To: "Wu, Jingjing" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH 1/2] ixgbe: VF supports mailbox interruption for PF link up/down Thread-Index: AQHRt/IeHKreiqmd00KG3VG7aqBZ7Z/SwBgg Date: Tue, 31 May 2016 08:45:39 +0000 Message-ID: <6A0DE07E22DDAD4C9103DF62FEBC090903477A0E@shsmsx102.ccr.corp.intel.com> References: <1464069991-31051-1-git-send-email-wenzhuo.lu@intel.com> <1464069991-31051-2-git-send-email-wenzhuo.lu@intel.com> <9BB6961774997848B5B42BEC655768F80E148ECC@SHSMSX103.ccr.corp.intel.com> In-Reply-To: <9BB6961774997848B5B42BEC655768F80E148ECC@SHSMSX103.ccr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 1/2] ixgbe: VF supports mailbox interruption for PF link up/down 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: Tue, 31 May 2016 08:45:44 -0000 Hi Jingjing, Thanks for the comments. Please see inline. > -----Original Message----- > From: Wu, Jingjing > Sent: Friday, May 27, 2016 4:31 PM > To: Lu, Wenzhuo; dev@dpdk.org > Cc: Lu, Wenzhuo > Subject: RE: [dpdk-dev] [PATCH 1/2] ixgbe: VF supports mailbox interrupti= on for > PF link up/down >=20 > > +static void ixgbevf_mbx_process(struct rte_eth_dev *dev) { > > + struct ixgbe_hw *hw =3D IXGBE_DEV_PRIVATE_TO_HW(dev->data- > > >dev_private); > > + u32 in_msg =3D 0; > > + > > + if (ixgbe_read_mbx(hw, &in_msg, 1, 0)) > > + return; > > + > > + /* PF reset VF event */ > > + if (in_msg =3D=3D IXGBE_PF_CONTROL_MSG) > > + _rte_eth_dev_callback_process(dev, > > RTE_ETH_EVENT_INTR_RESET); } > > + >=20 > RTE_ETH_EVENT_INTR_RESET is used for PF reset event reporting, and this > patch is to support PF link change. Maybe RTE_ETH_EVENT_INTR_LSC should b= e > used here instead. > Or you need to distinguish which control message is coming from PF. Ixgbe PF driver use IXGBE_PF_CONTROL_MSG to cover LSC, configuration, link = up/down. After these events, VF cannot work. I want the user to reset the VF port to= make it work again. Let me explain more in commit log to make it clearer. >=20 > > +static int > > +ixgbevf_dev_interrupt_get_status(struct rte_eth_dev *dev) { > > + uint32_t eicr; > > + struct ixgbe_hw *hw =3D IXGBE_DEV_PRIVATE_TO_HW(dev->data- > > >dev_private); > > + struct ixgbe_interrupt *intr =3D > > + IXGBE_DEV_PRIVATE_TO_INTR(dev->data->dev_private); > > + ixgbevf_intr_disable(hw); > > + > > + /* read-on-clear nic registers here */ > > + eicr =3D IXGBE_READ_REG(hw, IXGBE_VTEICR); > > + intr->flags =3D 0; > > + > > + /* only one misc vector supported - mailbox */ > > + eicr &=3D IXGBE_VTEICR_MASK; > > + if (eicr =3D=3D IXGBE_MISC_VEC_ID) > > + intr->flags |=3D IXGBE_FLAG_MAILBOX; > > + > > + return 0; > > +} > > + > > +static int > > +ixgbevf_dev_interrupt_action(struct rte_eth_dev *dev) { > > + struct ixgbe_hw *hw =3D IXGBE_DEV_PRIVATE_TO_HW(dev->data- > > >dev_private); > > + struct ixgbe_interrupt *intr =3D > > + IXGBE_DEV_PRIVATE_TO_INTR(dev->data->dev_private); > > + > > + if (intr->flags & IXGBE_FLAG_MAILBOX) { > > + ixgbevf_mbx_process(dev); > > + intr->flags &=3D ~IXGBE_FLAG_MAILBOX; > > + } > > + > > + ixgbevf_intr_enable(hw); > > + > > + return 0; > > +} >=20 >=20 > For the readability, it's better to put ixgbevf_intr_disable and > ixgbevf_intr_enable in the same function, for example, at the beginning = and > ending of ixgbevf_dev_interrupt_handler. O, I follow the style of ixgbe. It's a good suggestion, I may create a new = patch to enhance it later. >=20 > Thanks > Jingjing