From patchwork Thu Nov 12 12:36:23 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Uvarov X-Patchwork-Id: 56426 Delivered-To: patch@linaro.org Received: by 10.112.155.196 with SMTP id vy4csp392953lbb; Thu, 12 Nov 2015 04:42:01 -0800 (PST) X-Received: by 10.140.216.87 with SMTP id m84mr16622586qhb.97.1447332121123; Thu, 12 Nov 2015 04:42:01 -0800 (PST) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id 198si11264496qhh.41.2015.11.12.04.42.00; Thu, 12 Nov 2015 04:42:01 -0800 (PST) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dkim=neutral (body hash did not verify) header.i=@linaro_org.20150623.gappssmtp.com Received: by lists.linaro.org (Postfix, from userid 109) id C2E2C61FD9; Thu, 12 Nov 2015 12:42:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID, URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 3A7236200A; Thu, 12 Nov 2015 12:37:32 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 1A4C661E6D; Thu, 12 Nov 2015 12:37:27 +0000 (UTC) Received: from mail-lb0-f170.google.com (mail-lb0-f170.google.com [209.85.217.170]) by lists.linaro.org (Postfix) with ESMTPS id 385CC61FB4 for ; Thu, 12 Nov 2015 12:36:39 +0000 (UTC) Received: by lbbkw15 with SMTP id kw15so34160383lbb.0 for ; Thu, 12 Nov 2015 04:36:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro_org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=dvfrWDdAD1o7IPPvWFqPilREx7F6QkZqIp0ECKD/FFI=; b=G93wThyRn9v9jjVrm7BgHxR1XcdL3QhX4IUh9aCytpQZ5qzbOchEkk+VIGL28OaoIS WouwwVDKOYATC15F96pZgAah0kq+/w1gtfNwsw005QQP4X4Hky0kGT16KZLiikYIEkrK 8viai7aGBuDQ1fa2EGXvaJLFYPKjKXWWqZAIrLWrmbKtHoiNjMX0RmSg2P1YpA+A3QB9 eGh/M29M/v72v2/CtReG70WwpwpZoXlXHdjyIebV37I/hV9Kd7nXoFsOIach9dWWASwI OnMNlzB8e1Sy7BSxJfHp/bWj43c+UHJrjdTbGjrZoFQQ0zJpE0tzhB2R7g+BkbwREpED 7PQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=dvfrWDdAD1o7IPPvWFqPilREx7F6QkZqIp0ECKD/FFI=; b=BCbcUcfonBHsyncFccLHxlHyRtSGaN8SJ+rxKaU+BIYiuN4BNyFjd7zDGv+Th3TPmX FMjmj1Uwv4ameCgU+Ox7ZMkJtgBX7aHuFTmiXVgLQ4oFjOtGqPSpL1NcXHcBLCwG48YT XCYHBxmgzu3l0RKFR5w4z9Y92PNTjl/eyhN2bRZNrt4WP44l56FCgXEYaJFwisIiYq74 X5KFKglPBmR+LWOmQ9j8VTTWJjwIGucSXl23QIwzvii4eb+RdYKBUPt9N6evcMiUIWyk zXZStXkHEcZ2JBC2y/tZfsi6SOY+2asZojXIjul6a9tYfuQRAjfiN7HKS1sxNMAA1A6P WaUw== X-Gm-Message-State: ALoCoQn1toCl3uUq2AT/+v7FgQZiLm4Ou5GcZ0sx4rM/1IMlar2DvZwtTP4KBLFrYjnKzuwIxhNZ X-Received: by 10.112.55.97 with SMTP id r1mr7080363lbp.119.1447331798099; Thu, 12 Nov 2015 04:36:38 -0800 (PST) Received: from localhost.localdomain (ppp91-76-161-180.pppoe.mtu-net.ru. [91.76.161.180]) by smtp.gmail.com with ESMTPSA id u12sm2227179lbk.45.2015.11.12.04.36.36 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Nov 2015 04:36:37 -0800 (PST) From: Maxim Uvarov To: lng-odp@lists.linaro.org Date: Thu, 12 Nov 2015 15:36:23 +0300 Message-Id: <1447331786-13461-7-git-send-email-maxim.uvarov@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1447331786-13461-1-git-send-email-maxim.uvarov@linaro.org> References: <1447331786-13461-1-git-send-email-maxim.uvarov@linaro.org> X-Topics: patch Subject: [lng-odp] [PATCHv13 6/9] linix-generic: return error for unsupported pktio calls X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" For some pktios like loop and ipc functions like mtu, promisc, and mac addr are not applicable. Instead of crash on deference null pointer just return error if functions are not defined. Signed-off-by: Maxim Uvarov --- platform/linux-generic/odp_packet_io.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c index c3bc6a0..c8ccca2 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -708,7 +708,7 @@ int pktin_poll(pktio_entry_t *entry) int odp_pktio_mtu(odp_pktio_t id) { pktio_entry_t *entry; - int ret; + int ret = -1; entry = get_pktio_entry(id); if (entry == NULL) { @@ -723,7 +723,9 @@ int odp_pktio_mtu(odp_pktio_t id) ODP_DBG("already freed pktio\n"); return -1; } - ret = entry->s.ops->mtu_get(entry); + + if (entry->s.ops->mtu_get) + ret = entry->s.ops->mtu_get(entry); unlock_entry(entry); return ret; @@ -732,7 +734,7 @@ int odp_pktio_mtu(odp_pktio_t id) int odp_pktio_promisc_mode_set(odp_pktio_t id, odp_bool_t enable) { pktio_entry_t *entry; - int ret; + int ret = -1; entry = get_pktio_entry(id); if (entry == NULL) { @@ -748,7 +750,8 @@ int odp_pktio_promisc_mode_set(odp_pktio_t id, odp_bool_t enable) return -1; } - ret = entry->s.ops->promisc_mode_set(entry, enable); + if (entry->s.ops->promisc_mode_set) + ret = entry->s.ops->promisc_mode_set(entry, enable); unlock_entry(entry); return ret; @@ -757,7 +760,7 @@ int odp_pktio_promisc_mode_set(odp_pktio_t id, odp_bool_t enable) int odp_pktio_promisc_mode(odp_pktio_t id) { pktio_entry_t *entry; - int ret; + int ret = -1; entry = get_pktio_entry(id); if (entry == NULL) { @@ -773,13 +776,13 @@ int odp_pktio_promisc_mode(odp_pktio_t id) return -1; } - ret = entry->s.ops->promisc_mode_get(entry); + if (entry->s.ops->promisc_mode_get) + ret = entry->s.ops->promisc_mode_get(entry); unlock_entry(entry); return ret; } - int odp_pktio_mac_addr(odp_pktio_t id, void *mac_addr, int addr_size) { pktio_entry_t *entry; @@ -804,7 +807,12 @@ int odp_pktio_mac_addr(odp_pktio_t id, void *mac_addr, int addr_size) return -1; } - ret = entry->s.ops->mac_get(entry, mac_addr); + if (entry->s.ops->mac_get) + ret = entry->s.ops->mac_get(entry, mac_addr); + else { + ODP_DBG("pktio does not support mac addr get\n"); + ret = -1; + } unlock_entry(entry); return ret;