From patchwork Mon Nov 23 11:29:00 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Uvarov X-Patchwork-Id: 57143 Delivered-To: patch@linaro.org Received: by 10.112.155.196 with SMTP id vy4csp1376556lbb; Mon, 23 Nov 2015 03:33:39 -0800 (PST) X-Received: by 10.140.109.247 with SMTP id l110mr26191978qgf.35.1448278418998; Mon, 23 Nov 2015 03:33:38 -0800 (PST) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id z65si10827105qka.32.2015.11.23.03.33.34; Mon, 23 Nov 2015 03:33:38 -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 8463561938; Mon, 23 Nov 2015 11:33:34 +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_H2,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 92D7A61900; Mon, 23 Nov 2015 11:30:05 +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 409CB61B50; Mon, 23 Nov 2015 11:30:00 +0000 (UTC) Received: from mail-lb0-f171.google.com (mail-lb0-f171.google.com [209.85.217.171]) by lists.linaro.org (Postfix) with ESMTPS id EA895619CE for ; Mon, 23 Nov 2015 11:29:12 +0000 (UTC) Received: by lbbkw15 with SMTP id kw15so93933384lbb.0 for ; Mon, 23 Nov 2015 03:29:11 -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=+jJPxLmhuggoHgi7ikoxBWam/1nMuSlAK8EgcrCbclU=; b=IpN49Vp01Ouw2S/TAh9aq9k8k/zKoGPdeDp2ZpB4CfZOerCbJBMFdLG5toig4mfItM IpLabQdcMTXIzVup7684XouNuYJDr7vZ8psjmO+Ea26d6UxebTJtEdcjquCxsXQhhjzT vBCmvx/LueZS5YrvqN65cjGY2P7V9TaR/4HJbU9LxmPBsJxYW7snwJxBufW7i2KtA72I 0UtWxXb18rOKlPuCuaDnh1JbbNSiB6xlsRNaDixSGhYQsO7FZ8E/doetxcypiHAsZOdZ zG52s6lbp4yvb1fgluOV2yC17ts+pvL15QGvq0qNIpPEC4Rqxj8ffFYzm00tev4ileu3 EK7A== 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=+jJPxLmhuggoHgi7ikoxBWam/1nMuSlAK8EgcrCbclU=; b=YCDT8FuRM80aJk8U/SRiIgTtdlQv5wuUdUHlMugsIs1umnt4klznK4v54bXXv8XY6F g2fw/Th/SZi+z0Ls5lKh67MwFOoc+pin+kDW6YjUTo1oHndKJZQxIINDydr4l+ZlVLfg X4hjHFW1AOZ7W0fLgX+4FVmuLk0bbVMCYFX3OPIhjiH/Sf1Wxl002XzkF77YtlUep3Lf vwjF1hvzJ7WN67os598tR6vrsWflyIQcu/i28USrqu1AKr/NvDJMn/dlWXz6KrL6wCPw XjfwyZbu5AH4adcs8Ybmbb/3RpcntQo1wLqZvaGhPuxJTPn/vpRbqeX+jzYQ+HD7zK6k awPg== X-Gm-Message-State: ALoCoQm8jnAftdwg4qtHhbubiPUbNeXv3LXg84wiHqrdUn5t/AYQEB/F13/ljGOzNd7InPwIodam X-Received: by 10.112.202.101 with SMTP id kh5mr10663115lbc.66.1448278151882; Mon, 23 Nov 2015 03:29:11 -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 70sm1817754lfw.2.2015.11.23.03.29.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 23 Nov 2015 03:29:11 -0800 (PST) From: Maxim Uvarov To: lng-odp@lists.linaro.org Date: Mon, 23 Nov 2015 14:29:00 +0300 Message-Id: <1448278144-31994-7-git-send-email-maxim.uvarov@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1448278144-31994-1-git-send-email-maxim.uvarov@linaro.org> References: <1448278144-31994-1-git-send-email-maxim.uvarov@linaro.org> X-Topics: patch Subject: [lng-odp] [PATCHv16 06/10] 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..4193cb8 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;