From: Zyta Szpak <zr@semihalf.com>
To: Panu Matilainen <pmatilai@redhat.com>,
remy.horton@intel.com, thomas.monjalon@6wind.com
Cc: dev@dpdk.org
Subject: Re: [PATCH 1/2] ethdev: add callback to get register size in bytes
Date: Mon, 30 May 2016 11:32:35 +0200 [thread overview]
Message-ID: <574C08B3.8060301@semihalf.com> (raw)
In-Reply-To: <e9f8a6c6-da28-25e0-dbf9-6163d0ed817d@redhat.com>
On 27.05.2016 12:28, Panu Matilainen wrote:
> On 05/25/2016 09:36 AM, zr@semihalf.com wrote:
>> From: Zyta Szpak <zr@semihalf.com>
>>
>> Version 2 of fixing the fixed register width assumption.
>> rte_eth_dev_get_reg_length and rte_eth_dev_get_reg callbacks
>> do not provide register size to the app in any way. It is
>> needed to allocate proper number of bytes before retrieving
>> registers content with rte_eth_dev_get_reg.
>>
>> Signed-off-by: Zyta Szpak <zr@semihalf.com>
>> ---
>> lib/librte_ether/rte_ethdev.c | 12 ++++++++++++
>> lib/librte_ether/rte_ethdev.h | 18 ++++++++++++++++++
>> 2 files changed, 30 insertions(+)
>>
>> diff --git a/lib/librte_ether/rte_ethdev.c
>> b/lib/librte_ether/rte_ethdev.c
>> index a31018e..e0765f8 100644
>> --- a/lib/librte_ether/rte_ethdev.c
>> +++ b/lib/librte_ether/rte_ethdev.c
>> @@ -3231,6 +3231,18 @@ rte_eth_dev_get_reg_length(uint8_t port_id)
>> }
>>
>> int
>> +rte_eth_dev_get_reg_width(uint8_t port_id)
>> +{
>> + struct rte_eth_dev *dev;
>> +
>> + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
>> +
>> + dev = &rte_eth_devices[port_id];
>> + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->get_reg_width, -ENOTSUP);
>> + return (*dev->dev_ops->get_reg_width)(dev);
>> +}
>> +
>> +int
>> rte_eth_dev_get_reg_info(uint8_t port_id, struct rte_dev_reg_info
>> *info)
>> {
>> struct rte_eth_dev *dev;
>> diff --git a/lib/librte_ether/rte_ethdev.h
>> b/lib/librte_ether/rte_ethdev.h
>> index 2757510..552eaed 100644
>> --- a/lib/librte_ether/rte_ethdev.h
>> +++ b/lib/librte_ether/rte_ethdev.h
>> @@ -1292,6 +1292,9 @@ typedef int (*eth_timesync_write_time)(struct
>> rte_eth_dev *dev,
>> typedef int (*eth_get_reg_length_t)(struct rte_eth_dev *dev);
>> /**< @internal Retrieve device register count */
>>
>> +typedef int (*eth_get_reg_width_t)(struct rte_eth_dev *dev);
>> +/**< @internal Retrieve device register byte number */
>> +
>> typedef int (*eth_get_reg_t)(struct rte_eth_dev *dev,
>> struct rte_dev_reg_info *info);
>> /**< @internal Retrieve registers */
>> @@ -1455,6 +1458,8 @@ struct eth_dev_ops {
>>
>> eth_get_reg_length_t get_reg_length;
>> /**< Get # of registers */
>> + eth_get_reg_width_t get_reg_width;
>> + /**< Get # of bytes in register */
>> eth_get_reg_t get_reg;
>> /**< Get registers */
>> eth_get_eeprom_length_t get_eeprom_length;
>
> This is an ABI break, but maybe it is part of that "driver
> implementation API" which is exempt from the ABI/API policies. Thomas?
>
>> @@ -3971,6 +3976,19 @@ int rte_eth_tx_queue_info_get(uint8_t port_id,
>> uint16_t queue_id,
>> */
>> int rte_eth_dev_get_reg_length(uint8_t port_id);
>>
>> +/*
>> + * Retrieve the number of bytes in register for a specific device
>> + *
>> + * @param port_id
>> + * The port identifier of the Ethernet device.
>> + * @return
>> + * - (>=0) number of registers if successful.
>> + * - (-ENOTSUP) if hardware doesn't support.
>> + * - (-ENODEV) if *port_id* invalid.
>> + * - others depends on the specific operations implementation.
>> + */
>> +int rte_eth_dev_get_reg_width(uint8_t port_id);
>> +
>> /**
>> * Retrieve device registers and register attributes
>> *
>
> The function needs to be exported via rte_ether_version.map as well.
OK, right!
>
> - Panu -
>>
>
prev parent reply other threads:[~2016-05-30 9:32 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-11 10:48 [PATCH] examples/ethtool: include case for 64-bit registers zr
2016-05-20 8:25 ` Remy Horton
2016-05-23 5:11 ` Zyta Szpak
2016-05-25 6:36 ` [PATCH 1/2] ethdev: add callback to get register size in bytes zr
2016-05-25 6:36 ` [PATCH 2/2] examples/ethtool: get reg width to allocate memory zr
2016-05-25 13:14 ` Remy Horton
2016-05-25 13:14 ` [PATCH 1/2] ethdev: add callback to get register size in bytes Remy Horton
2016-05-30 9:00 ` Zyta Szpak
2016-05-27 10:28 ` Panu Matilainen
2016-05-27 14:43 ` Thomas Monjalon
2016-05-30 9:32 ` Zyta Szpak [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=574C08B3.8060301@semihalf.com \
--to=zr@semihalf.com \
--cc=dev@dpdk.org \
--cc=pmatilai@redhat.com \
--cc=remy.horton@intel.com \
--cc=thomas.monjalon@6wind.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.