From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 88088C618 for ; Tue, 23 Jun 2015 16:30:18 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP; 23 Jun 2015 07:30:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,666,1427785200"; d="scan'208";a="512966706" Received: from irsmsx153.ger.corp.intel.com ([163.33.192.75]) by FMSMGA003.fm.intel.com with ESMTP; 23 Jun 2015 07:30:15 -0700 Received: from irsmsx155.ger.corp.intel.com (163.33.192.3) by IRSMSX153.ger.corp.intel.com (163.33.192.75) with Microsoft SMTP Server (TLS) id 14.3.224.2; Tue, 23 Jun 2015 15:30:15 +0100 Received: from irsmsx108.ger.corp.intel.com ([169.254.11.201]) by irsmsx155.ger.corp.intel.com ([169.254.14.239]) with mapi id 14.03.0224.002; Tue, 23 Jun 2015 15:30:14 +0100 From: "Dumitrescu, Cristian" To: Thomas Monjalon , "Gajdzica, MaciejX T" Thread-Topic: [dpdk-dev] [PATCH v5 01/13] port: added structures for port stats and config option Thread-Index: AQHQrbx/Lu426ASoPkC4PzXf/+FlnJ26H2mA Date: Tue, 23 Jun 2015 14:30:14 +0000 Message-ID: <3EB4FA525960D640B5BDFFD6A3D891263238FA63@IRSMSX108.ger.corp.intel.com> References: <1434706885-4519-1-git-send-email-maciejx.t.gajdzica@intel.com> <1434706885-4519-2-git-send-email-maciejx.t.gajdzica@intel.com> <2173119.kJ61eenqfH@xps13> In-Reply-To: <2173119.kJ61eenqfH@xps13> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH v5 01/13] port: added structures for port stats and config option 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, 23 Jun 2015 14:30:19 -0000 > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Thomas Monjalon > Sent: Tuesday, June 23, 2015 2:55 PM > To: Gajdzica, MaciejX T > Cc: dev@dpdk.org > Subject: Re: [dpdk-dev] [PATCH v5 01/13] port: added structures for port > stats and config option >=20 > 2015-06-19 11:41, Maciej Gajdzica: > > /** Input port interface defining the input port operation */ > > struct rte_port_in_ops { > > rte_port_in_op_create f_create; /**< Create */ > > rte_port_in_op_free f_free; /**< Free */ > > rte_port_in_op_rx f_rx; /**< Packet RX (packet burst) */ > > + rte_port_in_op_stats_read f_stats; /**< Stats */ > > }; >=20 > Isn't it breaking an ABI? This is simply adding a field at the end of the API structure. This structu= re is instantiated per each port type and its role is very similar to a dr= iver ops structure, for example: in file "rte_port_ethdev.h": extern struct rte_port_out_ops rte_port_ethde= v_writer_ops; in file "rte_port_ring.h": extern struct rte_port_out_ops rte_port_ring_wr= iter_nodrop_ops; Typically, instances of these structures are only referenced through pointe= rs by application code (and other libraries, like librte_pipeline), so code= that is not aware of this last field in the structure will still continue = to work. The only case I see possible when code will break is if somebody would crea= te an array of such structures, but I think this is not a realistic scenari= o. Instances of this structure are infrequent: once per port type in librte= _port, and new instances are only created when the user wants to create new= port type. Basically, instances of this structure are created in isolation= and not in bulk (arrays). Due to this, I do not see this as breaking the API. I think this is the mos= t it could be done to minimize the effect on the ABI will still adding new = functionality. Please let me know what you think. >=20 > > struct rte_port_out_ops { > > - rte_port_out_op_create f_create; /**< Create */ > > - rte_port_out_op_free f_free; /**< Free */ > > - rte_port_out_op_tx f_tx; /**< Packet TX (single packet) */ > > - rte_port_out_op_tx_bulk f_tx_bulk; /**< Packet TX (packet burst) > */ > > - rte_port_out_op_flush f_flush; /**< Flush */ > > + rte_port_out_op_create f_create; /**< Create */ > > + rte_port_out_op_free f_free; /**< Free */ > > + rte_port_out_op_tx f_tx; /**< Packet > TX (single packet) */ > > + rte_port_out_op_tx_bulk f_tx_bulk; /**< Packet TX > (packet burst) */ > > + rte_port_out_op_flush f_flush; /**< Flush */ >=20 > What is the goal of this change? Breaking the alignment? Shall we submit a new patch revision to fix the alignment of the comments? >=20 > > + rte_port_out_op_stats_read f_stats; /**< Stats */