From patchwork Fri Nov 20 18:41:02 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Uvarov X-Patchwork-Id: 57082 Delivered-To: patch@linaro.org Received: by 10.112.155.196 with SMTP id vy4csp40340lbb; Fri, 20 Nov 2015 10:45:16 -0800 (PST) X-Received: by 10.140.81.71 with SMTP id e65mr1791745qgd.27.1448045116645; Fri, 20 Nov 2015 10:45:16 -0800 (PST) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id u133si773237qka.104.2015.11.20.10.45.15; Fri, 20 Nov 2015 10:45:16 -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 9F39161A38; Fri, 20 Nov 2015 18:45:15 +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 A03E861FEF; Fri, 20 Nov 2015 18:42: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 6C8D261FEA; Fri, 20 Nov 2015 18:42:02 +0000 (UTC) Received: from mail-lb0-f175.google.com (mail-lb0-f175.google.com [209.85.217.175]) by lists.linaro.org (Postfix) with ESMTPS id 5993D61FEF for ; Fri, 20 Nov 2015 18:41:15 +0000 (UTC) Received: by lbbcs9 with SMTP id cs9so66862983lbb.1 for ; Fri, 20 Nov 2015 10:41:14 -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=qZv9Hv2I7GLXTs4inF+7Qj856m7q0J/sexeKvl/YSvGxa/FzUEnFu8bGGZGd1/Kn07 2+HfKLxLkKuzH8a4AcXVOZEobA5NcZ98sP2j5YpM0ceU8FLqYEKntMVBT89VxaOBAW9M jfooH2wtbofNz/eXVhE91ADFODQSxmblpOA8sdC6vvP4z/KkQuMPGTutjFWDyL0E/3aA zNjblg8xGmqlpz+SrUTRgs8BZt+9U5pfljAjMSjk05rdFmy0vlYJJprmPC2ZwVTb2pjK zNKxIzpiTZPxe7NiHn7jOjTdnW0ZJKM7CterfS/U1MbE7FzExG0tyrx0tXlcFD9QRpKw +fmg== 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=ZBfOeJzHtfQh66BGBqTYubBXjnofUkQT4PnQ2jjIJBASKemNofRxrDzZa/HldhrMqd tbFygVPLhkOgPI4U0g8OL+Cgbe+18Z2lfrm4qhucRQrrHI1JFIcPwaBCiBSYmyX23tmt I7qAl3uqHwv/6zDLi351Bq4uND4WO/XnDFcRMUznmkP/CwDrCLPUM3vSpuRbzM684rQe hhjKAEVn+rRwaqyU5KNKc1cF3wkBsGlNKiTPPpgb+2+8IaxkzWrvnsE9kxe52crLKSwE EnIJwSDAhhphLuO+0kalw9JiRA9zAQbAr97ekN4diM7pUHY+YDYxS7IMyYVoIDGxXCjG +s5A== X-Gm-Message-State: ALoCoQnoWPmd0G5WsKc+cnMoNb9X3wEzruHaFWTHVinDcVEGN8bMAlHbOBSgKIbCY8gfnsiZqBvX X-Received: by 10.112.190.99 with SMTP id gp3mr6430385lbc.117.1448044874271; Fri, 20 Nov 2015 10:41:14 -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 70sm105460lfw.2.2015.11.20.10.41.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 20 Nov 2015 10:41:13 -0800 (PST) From: Maxim Uvarov To: lng-odp@lists.linaro.org Date: Fri, 20 Nov 2015 21:41:02 +0300 Message-Id: <1448044865-8229-7-git-send-email-maxim.uvarov@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1448044865-8229-1-git-send-email-maxim.uvarov@linaro.org> References: <1448044865-8229-1-git-send-email-maxim.uvarov@linaro.org> X-Topics: patch Subject: [lng-odp] [PATCHv15 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..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;