DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Burakov, Anatoly" <anatoly.burakov@intel.com>
To: Hajkowski <marcinx.hajkowski@intel.com>, david.hunt@intel.com
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v3 2/4] power: extend guest channel api for reading
Date: Wed, 27 Mar 2019 14:23:28 +0000	[thread overview]
Message-ID: <63269bb6-ad80-2ac7-a337-880b8dec6c9e@intel.com> (raw)
In-Reply-To: <20190321105506.6656-3-marcinx.hajkowski@intel.com>

On 21-Mar-19 10:55 AM, Hajkowski wrote:
> From: Marcin Hajkowski <marcinx.hajkowski@intel.com>
> 
> Added new experimental API rte_power_guest_channel_receive_msg
> which gives possibility to receive messages send to guest.
> 
> Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
> ---
>   lib/librte_power/channel_commands.h    |  5 ++
>   lib/librte_power/guest_channel.c       | 65 ++++++++++++++++++++++++++
>   lib/librte_power/guest_channel.h       | 35 ++++++++++++++
>   lib/librte_power/rte_power_version.map |  1 +
>   4 files changed, 106 insertions(+)
> 
> diff --git a/lib/librte_power/channel_commands.h b/lib/librte_power/channel_commands.h
> index e7b93a797..33fd53a6d 100644
> --- a/lib/librte_power/channel_commands.h
> +++ b/lib/librte_power/channel_commands.h
> @@ -28,6 +28,11 @@ extern "C" {
>   #define CPU_POWER_SCALE_MIN     4
>   #define CPU_POWER_ENABLE_TURBO  5
>   #define CPU_POWER_DISABLE_TURBO 6
> +
> +/* Generic Power Command Response */
> +#define CPU_POWER_CMD_ACK       1
> +#define CPU_POWER_CMD_NACK      2
> +
>   #define HOURS 24
>   
>   #define MAX_VFS 10
> diff --git a/lib/librte_power/guest_channel.c b/lib/librte_power/guest_channel.c
> index 9cf7d2cb2..3213fa769 100644
> --- a/lib/librte_power/guest_channel.c
> +++ b/lib/librte_power/guest_channel.c
> @@ -10,6 +10,7 @@
>   #include <fcntl.h>
>   #include <string.h>
>   #include <errno.h>
> +#include <poll.h>
>   
>   
>   #include <rte_log.h>
> @@ -19,6 +20,9 @@
>   
>   #define RTE_LOGTYPE_GUEST_CHANNEL RTE_LOGTYPE_USER1
>   
> +/* Timeout for incoming message in milliseconds. */
> +#define TIMEOUT 10
> +
>   static int global_fds[RTE_MAX_LCORE] = { [0 ... RTE_MAX_LCORE-1] = -1 };
>   
>   int
> @@ -125,6 +129,67 @@ int rte_power_guest_channel_send_msg(struct channel_packet *pkt,
>   	return guest_channel_send_msg(pkt, lcore_id);
>   }
>   
> +int power_guest_channel_read_msg(struct channel_packet *pkt,
> +			unsigned int lcore_id)
> +{
> +	int ret;
> +
> +	struct pollfd fds;

Nitpick, but we generally prefer having a newline after definitions.

> +	fds.fd = global_fds[lcore_id];
> +	fds.events = POLLIN;
> +
> +	ret = poll(&fds, 1, TIMEOUT);
> +	if (ret == 0) {
> +		RTE_LOG(DEBUG, GUEST_CHANNEL, "Timeout occurs during poll function.\n");

Occurred?

> +		return -1;
> +	} else if (ret < 0) {
> +		RTE_LOG(ERR, GUEST_CHANNEL, "Error occurred during poll function: %s\n",
> +				strerror(ret));
> +		return -1;
> +	}
> +
> +	void *buffer = pkt;

Declarations have to be in the beginning of the function.

> +
> +	if (lcore_id >= RTE_MAX_LCORE) {
> +		RTE_LOG(ERR, GUEST_CHANNEL, "Channel(%u) is out of range 0...%d\n",
> +				lcore_id, RTE_MAX_LCORE-1);
> +		return -1;
> +	}
> +
> +	if (global_fds[lcore_id] < 0) {
> +		RTE_LOG(ERR, GUEST_CHANNEL, "Channel is not connected\n");
> +		return -1;
> +	}
> +
> +	int buffer_len = sizeof(*pkt);

Same, declarations on top.

> +
> +	while (buffer_len > 0) {
> +		ret = read(global_fds[lcore_id],
> +				buffer, buffer_len);
> +		if (ret < 0) {
> +			if (errno == EINTR)
> +				continue;
> +			return -1;
> +		}
> +		/* No data has been read, this can indicate not
> +		 * consistent buffer_len with actual data size.
> +		 */
> +		if (ret == 0) {
> +			RTE_LOG(ERR, GUEST_CHANNEL, "No more data has been read.\n");
> +			return -1;
> +		}

If i remember correctly, this cannot happen with a blocking fifo read 
unless the fifo was closed either by us or by the other end. Perhaps the 
error message should be reworded to reflect that? E.g. something like 
"Expected more data, but fifo is closed"?

-- 
Thanks,
Anatoly

  parent reply	other threads:[~2019-03-27 14:23 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-21 10:55 [dpdk-dev] [PATCH v3 0/4] bidirect guest channel Hajkowski
2019-03-21 10:55 ` Hajkowski
2019-03-21 10:55 ` [dpdk-dev] [PATCH v3 1/4] power: fix invalid socket indicator value Hajkowski
2019-03-21 10:55   ` Hajkowski
2019-03-22 10:56   ` Maxime Coquelin
2019-03-22 10:56     ` Maxime Coquelin
2019-03-27 14:03   ` Burakov, Anatoly
2019-03-27 14:03     ` Burakov, Anatoly
2019-03-21 10:55 ` [dpdk-dev] [PATCH v3 2/4] power: extend guest channel api for reading Hajkowski
2019-03-21 10:55   ` Hajkowski
2019-03-22 11:00   ` Maxime Coquelin
2019-03-22 11:00     ` Maxime Coquelin
2019-03-22 11:53     ` Ananyev, Konstantin
2019-03-22 11:53       ` Ananyev, Konstantin
2019-03-27 14:23   ` Burakov, Anatoly [this message]
2019-03-27 14:23     ` Burakov, Anatoly
2019-03-21 10:55 ` [dpdk-dev] [PATCH v3 3/4] power: process incoming confirmation cmds Hajkowski
2019-03-21 10:55   ` Hajkowski
2019-03-27 14:51   ` Burakov, Anatoly
2019-03-27 14:51     ` Burakov, Anatoly
2019-04-01 14:25   ` Pattan, Reshma
2019-04-01 14:25     ` Pattan, Reshma
2019-03-21 10:55 ` [dpdk-dev] [PATCH v3 4/4] power: send confirmation cmd to vm guest Hajkowski
2019-03-21 10:55   ` Hajkowski
2019-03-27 14:58   ` Burakov, Anatoly
2019-03-27 14:58     ` Burakov, Anatoly
2019-03-29 14:16 ` [dpdk-dev] [PATCH v3 0/4] bidirect guest channel Thomas Monjalon
2019-03-29 14:16   ` Thomas Monjalon
2019-04-02  8:21 ` [dpdk-dev] [PATCH v4 " Hajkowski
2019-04-02  8:21   ` Hajkowski
2019-04-02  8:21   ` [dpdk-dev] [PATCH v4 1/4] power: fix invalid socket indicator value Hajkowski
2019-04-02  8:21     ` Hajkowski
2019-04-02  8:21   ` [dpdk-dev] [PATCH v4 2/4] power: extend guest channel api for reading Hajkowski
2019-04-02  8:21     ` Hajkowski
2019-04-02  8:21   ` [dpdk-dev] [PATCH v4 3/4] power: process incoming confirmation cmds Hajkowski
2019-04-02  8:21     ` Hajkowski
2019-04-03  9:25     ` Pattan, Reshma
2019-04-03  9:25       ` Pattan, Reshma
2019-04-02  8:21   ` [dpdk-dev] [PATCH v4 4/4] power: send confirmation cmd to vm guest Hajkowski
2019-04-02  8:21     ` Hajkowski

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=63269bb6-ad80-2ac7-a337-880b8dec6c9e@intel.com \
    --to=anatoly.burakov@intel.com \
    --cc=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    --cc=marcinx.hajkowski@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).