From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <gage.eads@intel.com> Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 3B0C65599 for <dev@dpdk.org>; Thu, 23 Mar 2017 17:46:09 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=intel.com; i=@intel.com; q=dns/txt; s=intel; t=1490287570; x=1521823570; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=+hvPF82l3/g729UMQtN+gVG22wGgFVoWD59RNr/61eo=; b=JR37uTkn/tQxuGmaZ9Xnc3XX+s3mxJIntG7hZWXbkfrtvIAz0VChmUIY xIHuW9JqPGB8Ae7TOb7gXE+3hFMkmQ==; Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Mar 2017 09:46:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,210,1486454400"; d="scan'208";a="1126279574" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga001.fm.intel.com with ESMTP; 23 Mar 2017 09:46:08 -0700 Received: from fmsmsx117.amr.corp.intel.com (10.18.116.17) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 23 Mar 2017 09:46:08 -0700 Received: from fmsmsx108.amr.corp.intel.com ([169.254.9.101]) by fmsmsx117.amr.corp.intel.com ([169.254.3.194]) with mapi id 14.03.0319.002; Thu, 23 Mar 2017 09:46:07 -0700 From: "Eads, Gage" <gage.eads@intel.com> To: Jerin Jacob <jerin.jacob@caviumnetworks.com>, "dev@dpdk.org" <dev@dpdk.org> CC: "thomas.monjalon@6wind.com" <thomas.monjalon@6wind.com>, "Richardson, Bruce" <bruce.richardson@intel.com>, "Van Haaren, Harry" <harry.van.haaren@intel.com>, "hemant.agrawal@nxp.com" <hemant.agrawal@nxp.com>, "nipun.gupta@nxp.com" <nipun.gupta@nxp.com>, "santosh.shukla@caviumnetworks.com" <santosh.shukla@caviumnetworks.com> Thread-Topic: [dpdk-dev] [PATCH 08/39] event/octeontx: add mailbox support Thread-Index: AQHSlEO6b7KsckKiv0WXcGZHNvrttaGiuj4w Date: Thu, 23 Mar 2017 16:46:07 +0000 Message-ID: <9184057F7FC11744A2107296B6B8EB1E01E9073C@FMSMSX108.amr.corp.intel.com> References: <1488562101-6658-1-git-send-email-jerin.jacob@caviumnetworks.com> <1488562101-6658-9-git-send-email-jerin.jacob@caviumnetworks.com> In-Reply-To: <1488562101-6658-9-git-send-email-jerin.jacob@caviumnetworks.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.1.200.108] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 08/39] event/octeontx: add mailbox support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <http://dpdk.org/ml/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://dpdk.org/ml/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <http://dpdk.org/ml/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> X-List-Received-Date: Thu, 23 Mar 2017 16:46:10 -0000 Hi Jerin, I identified a few issues below. Thanks, Gage <snip> > +static inline void > +mbox_send_requeust(struct mbox *m, struct octeontx_mbox_hdr *hdr, > + const void *txmsg, uint16_t txsize) "requeust" -> "request" <snip> > + > +static inline int > +mbox_wait_response(struct mbox *m, struct octeontx_mbox_hdr *hdr, > + void *rxmsg, uint16_t rxsize) > +{ > + int res =3D 0, wait; > + uint16_t len; > + struct mbox_ram_hdr rx_hdr; > + uint64_t *ram_mbox_hdr =3D (uint64_t *)m->ram_mbox_base; > + uint8_t *ram_mbox_msg =3D m->ram_mbox_base + sizeof(struct > +mbox_ram_hdr); > + > + /* Wait for response */ > + wait =3D MBOX_WAIT_TIME; > + while (wait > 0) { > + rte_delay_us(100); > + rx_hdr.u64 =3D rte_read64(ram_mbox_hdr); > + if (rx_hdr.chan_state =3D=3D MBOX_CHAN_STATE_RES) > + break; > + wait -=3D 10; > + } 'wait' is in units of milliseconds ("Mbox operation timeout in milliseconds= "), so the function subtracts 10 ms after spinning for 100 us. Is that inte= ntional? > + > + hdr->res_code =3D rx_hdr.res_code; > + m->tag_own++; > + > + /* Tag mismatch */ > + if (m->tag_own !=3D rx_hdr.tag) { > + res =3D -EBADR; > + goto error; > + } > + > + /* PF nacked the msg */ > + if (rx_hdr.res_code !=3D MBOX_RET_SUCCESS) { > + res =3D -EBADMSG; > + goto error; > + } > + > + /* Timeout */ > + if (wait <=3D 0) { > + res =3D -ETIMEDOUT; > + goto error; > + } Will a timeout mean rx_hdr is invalid? If so, the timeout error should be c= hecked before checking for a PF nack or tag mismatch. <snip> > +static inline int > +mbox_send(struct mbox *m, struct octeontx_mbox_hdr *hdr, const void > *txmsg, > + uint16_t txsize, void *rxmsg, uint16_t rxsize) { > + int res =3D -EINVAL; > + > + if (m->init_once =3D=3D 0 || hdr =3D=3D NULL || > + txsize > MAX_RAM_MBOX_LEN || rxsize > > MAX_RAM_MBOX_LEN) { > + ssovf_log_err("Invalid init_once=3D%d hdr=3D%p txsz=3D%d rxsz=3D%d", > + m->init_once, hdr, txsize, rxsize); > + return res; > + } > + > + rte_spinlock_lock(&m->lock); > + > + mbox_send_requeust(m, hdr, txmsg, txsize); "requeust" -> "request"