From patchwork Fri Dec 18 11:29:12 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Uvarov X-Patchwork-Id: 58643 Delivered-To: patch@linaro.org Received: by 10.112.89.199 with SMTP id bq7csp967966lbb; Fri, 18 Dec 2015 03:42:19 -0800 (PST) X-Received: by 10.140.81.227 with SMTP id f90mr4274975qgd.54.1450438939422; Fri, 18 Dec 2015 03:42:19 -0800 (PST) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id a80si10071588qge.39.2015.12.18.03.42.19; Fri, 18 Dec 2015 03:42:19 -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 ED21B61684; Fri, 18 Dec 2015 11:42:18 +0000 (UTC) Authentication-Results: lists.linaro.org; dkim=fail reason="verification failed; unprotected key" header.d=linaro.org header.i=@linaro.org header.b=ZGgg7NBn; 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 74234616C2; Fri, 18 Dec 2015 11:31:06 +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 D34AF616BB; Fri, 18 Dec 2015 11:30:56 +0000 (UTC) Received: from mail-lb0-f177.google.com (mail-lb0-f177.google.com [209.85.217.177]) by lists.linaro.org (Postfix) with ESMTPS id 3C0566168D for ; Fri, 18 Dec 2015 11:29:30 +0000 (UTC) Received: by mail-lb0-f177.google.com with SMTP id kw15so62010655lbb.0 for ; Fri, 18 Dec 2015 03:29:30 -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=FLEi4BQ8u8fHazauBZ4kVg7kAnxBxD8eu1GbUBhyDyk=; b=ZGgg7NBnKOc2nl0qCFfdQFPtHlpke5RQG7KwmxFaH0xDlzCH1cnH/odqnlu3/LsX2c CoSn/YX2S84hzlQ3fGdDHomVMmwJXzkoXT8i+9X91bP6vWMQovNTlXTajdh1eQ9n0tNC OtDCfjobNB+oZfiNAHXMgwIQXuQTYW7NC29+Y= 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=FLEi4BQ8u8fHazauBZ4kVg7kAnxBxD8eu1GbUBhyDyk=; b=Mw2D0RPnvNF4sSgU4wYOb+AHv+kEk9vEno+7v4suEoywnIwhYr0hX3qR6ivrYaVIRh fcH+MrSqP6K+BIQKskl4AsAMDiHP/SBcXzET2rukVogPWmo/RZgKN4xLCj1UiclAIEGK mINLdu1GQeSacJIrJ1+SQum4M3e0bUwu21kwxhn57EfnlFZXqZnhLLGRRAdaiUufp0WP +7t0GzF+4KN33C9GBwerdslSB/84HOw4wbpWkISqTagOk2nt03aDDaqJg0XaLfQ8H2hI deyTgg03X2SPyn/TT7tEgLIG64f0OXU+KySirZS9EBID7K7qCZFQ8iI3qL7O7nagSWx2 TkRg== X-Gm-Message-State: ALoCoQn1vDVEQHc9TrcAOsd80FSt+KXJXwWUcbllvpW+tTybLSQKtgkrjxOYhpnpucMGSAJrPc6sng59a0g3QNj40YQL4Yzb6w== X-Received: by 10.112.201.101 with SMTP id jz5mr1164141lbc.25.1450438169068; Fri, 18 Dec 2015 03:29:29 -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 pl2sm2694549lbc.8.2015.12.18.03.29.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 18 Dec 2015 03:29:28 -0800 (PST) From: Maxim Uvarov To: lng-odp@lists.linaro.org Date: Fri, 18 Dec 2015 14:29:12 +0300 Message-Id: <1450438154-2062-8-git-send-email-maxim.uvarov@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1450438154-2062-1-git-send-email-maxim.uvarov@linaro.org> References: <1450438154-2062-1-git-send-email-maxim.uvarov@linaro.org> X-Topics: patch Subject: [lng-odp] [PATCHv18 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 1e9d08c..c8b6502 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -725,7 +725,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) { @@ -740,7 +740,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; @@ -749,7 +751,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) { @@ -769,7 +771,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; @@ -778,7 +781,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) { @@ -794,13 +797,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; @@ -825,7 +828,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;