From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf0-f45.google.com (mail-lf0-f45.google.com [209.85.215.45]) by dpdk.org (Postfix) with ESMTP id 52AB6293B for ; Mon, 6 Feb 2017 12:57:01 +0100 (CET) Received: by mail-lf0-f45.google.com with SMTP id v186so43312467lfa.1 for ; Mon, 06 Feb 2017 03:57:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=kbavXw5k0du0yoEgUSi8osfXSxuxJIFKjfAGzRCFkX8=; b=goNj+oPzxdpF3vbvaTX5yIOP9ySnEhhJ3/TgaalpR2YQI01xgfNGeRL6mvGFepdnTR ypQpGkBSZ70zPvAw78VKHBzjyYOVctY93fkY+QgZQvT8dwlqaL8AE6ImPZOY8Vl7cMvW EiU7lFdL2WIORnR2cyiyTNsKTyO4Br2ECAkwRIp2YBDmQMRzW1h0eiAhfHBUKjPMDKud A8a9BGFCgbmHa/WNI5zNq6A8xnYxxIqJLudHbbY7Ksb3XVj01I18sqJlnh/7vhWgRs/W vV1EgF/H1FGr6clVEgMxEOeDVFhcvnJJq7nhPMH6PWfpFpNBaKe0vV6i9uIp5co4i+u5 08jQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=kbavXw5k0du0yoEgUSi8osfXSxuxJIFKjfAGzRCFkX8=; b=fGrtchIn/798V/ACqdo9BK0rFeKP89kXInofjb7QRBCa2EUmcXZG0sb067tLz38feP XmuA64uIeAJZ6A9P+PufJfthJYNEWqhja8rXk9vc9/VQxrVBuxquI3wRQ96rrWdZQei5 F56mE+xi/rtaCxYt/c70QkAt/sYU3/agpJ0K47TvIOxx8qXpmfiXWPrPqPhaPYDktNYE DHy1qDoPQYVSFrUpPqTUzEIsF+qyjfQUoRPE8pfsUXlEXr1lkAkSZS8jc/4D2M2+9QWH G7p+QDOrU4+oCU+yH0FASjt010EdIJrut9rlj4Sr1psqdsW+E4ApVet0nDsKmDi+gkZp TjlQ== X-Gm-Message-State: AIkVDXKyIJnvaZFYlLvEAc+ispNs68OwYTkjZAFCiQuNKdwe5unW6QZGlfqUcZGftCvpng== X-Received: by 10.25.219.156 with SMTP id t28mr3575229lfi.163.1486382220837; Mon, 06 Feb 2017 03:57:00 -0800 (PST) Received: from anpa-dpdk.semihalf.local (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id u126sm198375lja.25.2017.02.06.03.56.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 06 Feb 2017 03:57:00 -0800 (PST) From: Jakub Palider To: dev@dpdk.org Cc: Jakub Palider Date: Mon, 6 Feb 2017 12:56:56 +0100 Message-Id: <1486382216-11332-1-git-send-email-jpa@semihalf.com> X-Mailer: git-send-email 2.5.0 Subject: [dpdk-dev] [PATCH v2] net/ena: solve problem with host attributes X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Feb 2017 11:57:01 -0000 The hardware may reject adding host_info in case support for host_info is missing in the list of supported features. On the other hand the list of supported featues may contain support for the host_info - typical bootstrap problem. This patch solves it by removing check against support for host_info attribute and improves error handling by reacting only to host attribute write failure to the hardware. v2 changes: - added Signed-off Signed-off-by: Jakub Palider --- drivers/net/ena/base/ena_com.c | 16 ++++------------ drivers/net/ena/ena_ethdev.c | 21 ++++++++------------- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/drivers/net/ena/base/ena_com.c b/drivers/net/ena/base/ena_com.c index 88053e3..bd6f3c6 100644 --- a/drivers/net/ena/base/ena_com.c +++ b/drivers/net/ena/base/ena_com.c @@ -2590,19 +2590,11 @@ int ena_com_set_host_attributes(struct ena_com_dev *ena_dev) struct ena_com_admin_queue *admin_queue; struct ena_admin_set_feat_cmd cmd; struct ena_admin_set_feat_resp resp; + int ret; - int ret = 0; - - if (unlikely(!ena_dev)) { - ena_trc_err("%s : ena_dev is NULL\n", __func__); - return ENA_COM_NO_DEVICE; - } - - if (!ena_com_check_supported_feature_id(ena_dev, - ENA_ADMIN_HOST_ATTR_CONFIG)) { - ena_trc_warn("Set host attribute isn't supported\n"); - return ENA_COM_PERMISSION; - } + /* Host attribute config is called before ena_com_get_dev_attr_feat + * so ena_com can't check if the feature is supported. + */ memset(&cmd, 0x0, sizeof(cmd)); admin_queue = &ena_dev->admin_queue; diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index e99bf29..f3666e5 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -368,12 +368,9 @@ static void ena_config_host_info(struct ena_com_dev *ena_dev) rc = ena_com_set_host_attributes(ena_dev); if (rc) { - if (rc == -EPERM) - RTE_LOG(ERR, PMD, "Cannot set host attributes\n"); - else - RTE_LOG(ERR, PMD, "Cannot set host attributes\n"); - - goto err; + RTE_LOG(ERR, PMD, "Cannot set host attributes\n"); + if (rc != -EPERM) + goto err; } return; @@ -424,11 +421,9 @@ static void ena_config_debug_area(struct ena_adapter *adapter) rc = ena_com_set_host_attributes(&adapter->ena_dev); if (rc) { - if (rc == -EPERM) - RTE_LOG(WARNING, PMD, "Cannot set host attributes\n"); - else - RTE_LOG(ERR, PMD, "Cannot set host attributes\n"); - goto err; + RTE_LOG(WARNING, PMD, "Cannot set host attributes\n"); + if (rc != -EPERM) + goto err; } return; @@ -1239,14 +1234,14 @@ static int ena_device_init(struct ena_com_dev *ena_dev, goto err_mmio_read_less; } - ena_config_host_info(ena_dev); - /* To enable the msix interrupts the driver needs to know the number * of queues. So the driver uses polling mode to retrieve this * information. */ ena_com_set_admin_polling_mode(ena_dev, true); + ena_config_host_info(ena_dev); + /* Get Device Attributes and features */ rc = ena_com_get_dev_attr_feat(ena_dev, get_feat_ctx); if (rc) { -- 2.5.0