From patchwork Wed Feb 10 13:08:23 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Uvarov X-Patchwork-Id: 61664 Delivered-To: patch@linaro.org Received: by 10.112.43.199 with SMTP id y7csp2635228lbl; Wed, 10 Feb 2016 05:13:46 -0800 (PST) X-Received: by 10.107.152.142 with SMTP id a136mr39278490ioe.84.1455110026004; Wed, 10 Feb 2016 05:13:46 -0800 (PST) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id r6si30240638ige.11.2016.02.10.05.13.45; Wed, 10 Feb 2016 05:13:45 -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 Received: by lists.linaro.org (Postfix, from userid 109) id 3D2876674D; Wed, 10 Feb 2016 13:13:45 +0000 (UTC) Authentication-Results: lists.linaro.org; dkim=fail reason="verification failed; unprotected key" header.d=linaro.org header.i=@linaro.org header.b=WKyN/UVe; dkim-adsp=none (unprotected policy); dkim-atps=neutral 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 A596661CD3; Wed, 10 Feb 2016 13:11:18 +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 34186618C6; Wed, 10 Feb 2016 13:10:17 +0000 (UTC) Received: from mail-lb0-f180.google.com (mail-lb0-f180.google.com [209.85.217.180]) by lists.linaro.org (Postfix) with ESMTPS id 399F161D60 for ; Wed, 10 Feb 2016 13:08:44 +0000 (UTC) Received: by mail-lb0-f180.google.com with SMTP id uq3so6758727lbc.3 for ; Wed, 10 Feb 2016 05:08:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9JtmpMFAN+8mor1PbD+7u8IZpBnjlfrxvQsuTw9Agpw=; b=WKyN/UVeKfFj72PHDTBf/HNcAph5lNBmU6vUtoDJPF1oGU1BgE6H78G6U5GB20h6EH rIxohO6AcXrCnWRH++uvO9T0zzIQKr1xTLy+r7WKM1qmITzy1jdBcApQzqg+HJH+rBGx gCaTwgz4zvCw/TVJE9oaqWdCQ2eLRUEuYeEmE= 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=9JtmpMFAN+8mor1PbD+7u8IZpBnjlfrxvQsuTw9Agpw=; b=bg4ouscIMtBQ1EMYiAO5xd3eOZQjE5gNhavEg9JIZm3IEl23VrD6UIWADFlqYq9GvI tzbcEs88yhGtRa7Vl76adGfb7DzQKiD8cREgEOej+EernM7gRX6fklXF6m3kKIkBQmel SNO/PkiNEt5KY0dSalgIYKfIdtNpA8rFMLsne8tNukC6CF+UaI69k82KX4u6ZxxqRCV6 M1dZ5W09ngTUFdNrG3vctkO8EbSFF7dbqIjswwLLSXxA9xoisxWv7KRDu24bxctLs93C b7ex0DQp/8eKPTLxFrDP3lgWd4RfTv3IaNFniKVn0Y7q28KR9YaQWm6D/vcDYAQkx8B5 cy7A== X-Gm-Message-State: AG10YOQ9ZNrkVAfAhIO8C6R3FDM2behxzmAuR9HpHOESilwKHbr8QftcjcGwnx5z8qXCYDInyJM= X-Received: by 10.112.160.199 with SMTP id xm7mr13356849lbb.32.1455109723213; Wed, 10 Feb 2016 05:08:43 -0800 (PST) Received: from localhost.localdomain (ppp91-76-173-134.pppoe.mtu-net.ru. [91.76.173.134]) by smtp.gmail.com with ESMTPSA id y3sm454147lbk.40.2016.02.10.05.08.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 10 Feb 2016 05:08:42 -0800 (PST) From: Maxim Uvarov To: lng-odp@lists.linaro.org Date: Wed, 10 Feb 2016 16:08:23 +0300 Message-Id: <1455109705-5871-8-git-send-email-maxim.uvarov@linaro.org> X-Mailer: git-send-email 2.7.1.250.gff4ea60 In-Reply-To: <1455109705-5871-1-git-send-email-maxim.uvarov@linaro.org> References: <1455109705-5871-1-git-send-email-maxim.uvarov@linaro.org> X-Topics: patch Subject: [lng-odp] [API-NEXT PATCHv20 7/9] linux-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 27b6553..97fea77 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -718,7 +718,7 @@ int pktin_poll(pktio_entry_t *entry, int num_queue, int index[]) 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) { @@ -733,7 +733,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; @@ -742,7 +744,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) { @@ -762,7 +764,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; @@ -771,7 +774,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) { @@ -787,13 +790,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; @@ -818,7 +821,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;