From patchwork Mon Jun 24 16:47:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55257 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E75BB1BD0F; Mon, 24 Jun 2019 18:47:26 +0200 (CEST) Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by dpdk.org (Postfix) with ESMTP id 271631BCDA for ; Mon, 24 Jun 2019 18:47:23 +0200 (CEST) Received: by mail-pf1-f196.google.com with SMTP id j2so7843271pfe.6 for ; Mon, 24 Jun 2019 09:47:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lx7mNNtKZOJfi54i/SUlINrC4myA0zQHh+IpidBgz5c=; b=YuETSDNmqsXwJ78AWFj/nbWXA1JHeCsQQtOl5jPg64F7xAY18k0dMkyX2zd58FhzYa xnzUUlQ52TpR5SBi4WP0BTBxpmZOLlXYU4exghlhnAqiQ6MAELvID+IqQdf+GPEfDKN+ D6+Ddep7zi/FiDPC9KcEgvf4XYmSdzGmIv4p8NR9/tLP7TllWx3XtFVS5TvkP7ZuX3zf LbytDwgCozQSSsByxi5Ep+p08bgPlXSuH2jh0wTpchjzdSf4T76UDNkyhtSPNXg3JiEz /ZUE1PWMyhuSnX9b2/+JEIQerpjQxCkWox8G7Ob0Zqu4N9pwwQKhWMa7OZvUi2/nUXrj l/3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lx7mNNtKZOJfi54i/SUlINrC4myA0zQHh+IpidBgz5c=; b=F5/QnyZ2ogVwFcqU/KfZZYBDAjSClyujvln+oOklSfTTrwUF20F3jSBg+eLmuDE7C4 lCx1F4L1IqtKSB5sdGZ3N0iD9fj5q++W66ryIxPaRwvuY4C0GaCnHFZb507bJTjPJkAD e0DgVTzHUvyj4h29GNyaWnVeamner/BpZBDsMdSFSTz64xvCjm0Kw4+5I1/XZpSO2mi5 QxnpNBxRHe25LeWJeQM7mOM0QOqUeKfMeKVDCbmZCo51Z3XU4QC6+cPcFlh564ktKofv u9ttU4N7v+6T59797uLyPk71wV6oOaMrq0p0iteIt2Uvp/NiuHAimk7/jQx5Oker7mGs NUig== X-Gm-Message-State: APjAAAV5rBFwPWJGdUjsyD6mHY1oi8NNvyjmjmKwmFbtb5XAijMoYBBQ 9U3UUB1TO7LnAg7aCVPtzatAHMd79Ds= X-Google-Smtp-Source: APXvYqyRhqwG5GQDIfm/7xUJT91jfRHm3oOcGI+OMMJgyZn6aW3moQOqqeLY9bWbCKpe0xPfBDmeig== X-Received: by 2002:a63:6004:: with SMTP id u4mr12644088pgb.453.1561394842104; Mon, 24 Jun 2019 09:47:22 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id f7sm12814023pfd.43.2019.06.24.09.47.21 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 24 Jun 2019 09:47:21 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 24 Jun 2019 09:47:06 -0700 Message-Id: <20190624164714.6560-2-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190624164714.6560-1-stephen@networkplumber.org> References: <20190610175155.21374-1-stephen@networkplumber.org> <20190624164714.6560-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 1/9] kni: don't need stubs for rx_mode or ioctl X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The netdev subsystem already handles case where network sevice does not support ioctl. If device has no rx_mode hook it is not called. Signed-off-by: Stephen Hemminger --- kernel/linux/kni/kni_net.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c index ad8365877cda..c86337d099ab 100644 --- a/kernel/linux/kni/kni_net.c +++ b/kernel/linux/kni/kni_net.c @@ -593,23 +593,6 @@ kni_net_tx_timeout(struct net_device *dev) netif_wake_queue(dev); } -/* - * Ioctl commands - */ -static int -kni_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) -{ - pr_debug("kni_net_ioctl group:%d cmd:%d\n", - ((struct kni_dev *)netdev_priv(dev))->group_id, cmd); - - return -EOPNOTSUPP; -} - -static void -kni_net_set_rx_mode(struct net_device *dev) -{ -} - static int kni_net_change_mtu(struct net_device *dev, int new_mtu) { @@ -758,8 +741,6 @@ static const struct net_device_ops kni_net_netdev_ops = { .ndo_change_rx_flags = kni_net_set_promiscusity, .ndo_start_xmit = kni_net_tx, .ndo_change_mtu = kni_net_change_mtu, - .ndo_do_ioctl = kni_net_ioctl, - .ndo_set_rx_mode = kni_net_set_rx_mode, .ndo_get_stats = kni_net_stats, .ndo_tx_timeout = kni_net_tx_timeout, .ndo_set_mac_address = kni_net_set_mac, From patchwork Mon Jun 24 16:47:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55258 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0037C1BD20; Mon, 24 Jun 2019 18:47:31 +0200 (CEST) Received: from mail-pf1-f194.google.com (mail-pf1-f194.google.com [209.85.210.194]) by dpdk.org (Postfix) with ESMTP id 756561BCEA for ; Mon, 24 Jun 2019 18:47:24 +0200 (CEST) Received: by mail-pf1-f194.google.com with SMTP id i189so7828412pfg.10 for ; Mon, 24 Jun 2019 09:47:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oe0geve82kPbeuTLEhiKxz5m43I4cyFj8lTlsw5/DJo=; b=ZvAXs+NaadqfMp+txId9DNOcxjlGmhuWxpQru14fcBvoRfVS/6iWv2Bm0QASICNk8i 4sf1KcF6waMoq//AU90i6IW1RJuGGIExJGsaNF8LnCZR6vKy4Q70rAqclZl/GILKme62 dBxasuXIndMNUPCkqOpCtDrj9p25i/JlwCXCx50Xppne2LW+BkLvTedan7WRS4w1OwID axOG2ikHicasmX3I6KPtNCB/yegpYhVpShQDdQ4Px0FexQe/lRBS/nQemqb4Ou2AkzEY dRxxjnAuLAm7Sndr5Kda5VTt8x2ryDzfa5JVbQr2mPMRuUU3o0dJiSBThlsJyYqHdjuu QLoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oe0geve82kPbeuTLEhiKxz5m43I4cyFj8lTlsw5/DJo=; b=Gx2BNlR0cTZycvZd0ytWacYEqFt7U0/su5AoTGxtuxvOAoVtqHJ6GG8iIVDTUm5D4p XdID/IS2OgTHAjka9paKWZaNDyNb+kWxv7XnWKlVhHmDlt16q5kN+XWtN9lWPBmu+YRC 0IZwQMGtCksAHx6i3FWHkOFu0t2xUHuetNFAMAPhWcW5fC2+3hGcYtMqPbQX0VS+JVHv eeFm1k711gbTpxltcMp5WpeYjsUXHiYJq69mSWKXx8Y63dFkQtqOnwqB0IibZWrexrOD 3y4suUaIwpys3hMRkl2hedpbyaimebHIqqlx+4WcwlbAb87jcNKGjk/X8kcCWc9m5mC8 BUAg== X-Gm-Message-State: APjAAAWvxgHRbHoigtE8k0ArTHez6EBUYZHDMY7QWlrGEgXz+XP2OXQE ieK+vnjtigZmpcpx5PHWLC7ycFL/Nhs= X-Google-Smtp-Source: APXvYqxTAaqv1itYmnVXFndABZsB57ZSh6DREI09Rg8pb6zs4WeaEu8QbmC4jlFR4r7QzbbtHjwtzA== X-Received: by 2002:a63:d84e:: with SMTP id k14mr34016898pgj.234.1561394843288; Mon, 24 Jun 2019 09:47:23 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id f7sm12814023pfd.43.2019.06.24.09.47.22 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 24 Jun 2019 09:47:22 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 24 Jun 2019 09:47:07 -0700 Message-Id: <20190624164714.6560-3-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190624164714.6560-1-stephen@networkplumber.org> References: <20190610175155.21374-1-stephen@networkplumber.org> <20190624164714.6560-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 2/9] kni: use netdev_alloc_skb X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" netdev_alloc_skb is optimized to any alignment or setup of skb->dev that is required. The kernel has chosen to not pad packets on x86 (for many years), because it is faster. Signed-off-by: Stephen Hemminger --- kernel/linux/kni/kni_net.c | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c index c86337d099ab..cce5e7eb991f 100644 --- a/kernel/linux/kni/kni_net.c +++ b/kernel/linux/kni/kni_net.c @@ -340,16 +340,13 @@ kni_net_rx_normal(struct kni_dev *kni) data_kva = kva2data_kva(kva); kni->va[i] = pa2va(kni->pa[i], kva); - skb = dev_alloc_skb(len + 2); + skb = netdev_alloc_skb(dev, len); if (!skb) { /* Update statistics */ kni->stats.rx_dropped++; continue; } - /* Align IP on 16B boundary */ - skb_reserve(skb, 2); - if (kva->nb_segs == 1) { memcpy(skb_put(skb, len), data_kva, len); } else { @@ -368,7 +365,6 @@ kni_net_rx_normal(struct kni_dev *kni) } } - skb->dev = dev; skb->protocol = eth_type_trans(skb, dev); skb->ip_summed = CHECKSUM_UNNECESSARY; @@ -512,26 +508,20 @@ kni_net_rx_lo_fifo_skb(struct kni_dev *kni) data_kva = kva2data_kva(kva); kni->va[i] = pa2va(kni->pa[i], kva); - skb = dev_alloc_skb(len + 2); + skb = netdev_alloc_skb(dev, len); if (skb) { - /* Align IP on 16B boundary */ - skb_reserve(skb, 2); memcpy(skb_put(skb, len), data_kva, len); - skb->dev = dev; skb->ip_summed = CHECKSUM_UNNECESSARY; dev_kfree_skb(skb); } /* Simulate real usage, allocate/copy skb twice */ - skb = dev_alloc_skb(len + 2); + skb = netdev_alloc_skb(dev, len); if (skb == NULL) { kni->stats.rx_dropped++; continue; } - /* Align IP on 16B boundary */ - skb_reserve(skb, 2); - if (kva->nb_segs == 1) { memcpy(skb_put(skb, len), data_kva, len); } else { @@ -550,7 +540,6 @@ kni_net_rx_lo_fifo_skb(struct kni_dev *kni) } } - skb->dev = dev; skb->ip_summed = CHECKSUM_UNNECESSARY; kni->stats.rx_bytes += len; From patchwork Mon Jun 24 16:47:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55259 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8287D1BD25; Mon, 24 Jun 2019 18:47:32 +0200 (CEST) Received: from mail-pl1-f193.google.com (mail-pl1-f193.google.com [209.85.214.193]) by dpdk.org (Postfix) with ESMTP id 9DC231BCEA for ; Mon, 24 Jun 2019 18:47:25 +0200 (CEST) Received: by mail-pl1-f193.google.com with SMTP id t7so7204793plr.11 for ; Mon, 24 Jun 2019 09:47:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CZA5zLe4tbSwvOo2ZG+jag13FB9U46jQ6ezncJjNY/o=; b=n7MC/7e5AIqsRCDpCg3AdrvzHwMyc8H6f0clNs9KsY8Jn17PQODiZ2VMWSOz997Ytj aIn0NNQ3a/gHw82u35+u9W1Hi5YCX7NkOSvz9aF3pzz0a16AaEp5gCAADe5qNmeRUNk0 +iz4mgv3GaIPsKiR8We9KmwyHW0AQOpntv45H/IIl5WckAUHcsoeUkFIOhUt2JFsiYMY XsKHvvt5TZqMrSePkbQ/WvPnbDyjnsm8p95fPJpAmqjQZThBJj0MfhW5JW9Nr+s/l5+5 nPChtdXWzb0FR8ATRcOTe5D1HK0PuyBfizi730DiPU8GZQfQxQxONx81lNOsoUR2WlT2 z2Mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CZA5zLe4tbSwvOo2ZG+jag13FB9U46jQ6ezncJjNY/o=; b=h8yBblyWBmzmQwpQTYIGWtSw8bGnq07jvYfZ4N/xhg1V7Mp8wbR1tNwMqFFUkjVmrD iLIwT/7s/9YFZ0t2GbCWrkWGAkIhino7uue2QSqizyyuUPR0PmGjQeWUCLx8+WNzmsyT kI84ys0Q1+we4CxNAQRlx3KGW9t/q7E7nJfzezAklqFnhMrxNGU6j4nGqn8Rpi1B6BkS Dvzx8GMHXp49/q1LX3jy76jaEAfJ8KThXDCymJq+r4EalsSOY20V7MYbHKlwNGiNudYF KXTh8W9htQzD17SiiB6hxBi2qGdAzFFVNe8HfCC7r7NmcecirQtUHZgokKP3lmZtYxtr zRIw== X-Gm-Message-State: APjAAAW/NozdZoWHB0eEmEv/hl5V/UcsYexkh++l+qSIa6gBOpuWdkbZ 9UIrvw5PBandOR0lKysGvrWxCiUDCDo= X-Google-Smtp-Source: APXvYqzgTJMzlOHEhLDUGNBBOPIWsVU0ksDZ/4wYlFy6IRohZgKlIF/fH4QlXMtQZkoID+kUeuXerQ== X-Received: by 2002:a17:902:86:: with SMTP id a6mr83731453pla.244.1561394844515; Mon, 24 Jun 2019 09:47:24 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id f7sm12814023pfd.43.2019.06.24.09.47.23 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 24 Jun 2019 09:47:23 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 24 Jun 2019 09:47:08 -0700 Message-Id: <20190624164714.6560-4-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190624164714.6560-1-stephen@networkplumber.org> References: <20190610175155.21374-1-stephen@networkplumber.org> <20190624164714.6560-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 3/9] kni: don't keep stats in kni_net X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Since kernel 2.6.28 the network subsystem has provided dev->stats for devices to use statistics handling and is the default if no ndo_get_stats is provided. This allow allows for 64 bit (rather than just 32 bit) statistics with KNI. Signed-off-by: Stephen Hemminger --- kernel/linux/kni/kni_dev.h | 1 - kernel/linux/kni/kni_net.c | 43 +++++++++++++------------------------- 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/kernel/linux/kni/kni_dev.h b/kernel/linux/kni/kni_dev.h index d57bce647e4a..21e4b0d92368 100644 --- a/kernel/linux/kni/kni_dev.h +++ b/kernel/linux/kni/kni_dev.h @@ -39,7 +39,6 @@ struct kni_dev { /* kni list */ struct list_head list; - struct net_device_stats stats; int status; uint16_t group_id; /* Group ID of a group of KNI devices */ uint32_t core_id; /* Core ID to bind */ diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c index cce5e7eb991f..06310fec57bb 100644 --- a/kernel/linux/kni/kni_net.c +++ b/kernel/linux/kni/kni_net.c @@ -291,15 +291,15 @@ kni_net_tx(struct sk_buff *skb, struct net_device *dev) /* Free skb and update statistics */ dev_kfree_skb(skb); - kni->stats.tx_bytes += len; - kni->stats.tx_packets++; + dev->stats.tx_bytes += len; + dev->stats.tx_packets++; return NETDEV_TX_OK; drop: /* Free skb and update statistics */ dev_kfree_skb(skb); - kni->stats.tx_dropped++; + dev->stats.tx_dropped++; return NETDEV_TX_OK; } @@ -343,7 +343,7 @@ kni_net_rx_normal(struct kni_dev *kni) skb = netdev_alloc_skb(dev, len); if (!skb) { /* Update statistics */ - kni->stats.rx_dropped++; + dev->stats.rx_dropped++; continue; } @@ -372,8 +372,8 @@ kni_net_rx_normal(struct kni_dev *kni) netif_rx_ni(skb); /* Update statistics */ - kni->stats.rx_bytes += len; - kni->stats.rx_packets++; + dev->stats.rx_bytes += len; + dev->stats.rx_packets++; } /* Burst enqueue mbufs into free_q */ @@ -396,6 +396,7 @@ kni_net_rx_lo_fifo(struct kni_dev *kni) void *data_kva; struct rte_kni_mbuf *alloc_kva; void *alloc_data_kva; + struct net_device *dev = kni->net_dev; /* Get the number of entries in rx_q */ num_rq = kni_fifo_count(kni->rx_q); @@ -443,8 +444,8 @@ kni_net_rx_lo_fifo(struct kni_dev *kni) alloc_kva->pkt_len = len; alloc_kva->data_len = len; - kni->stats.tx_bytes += len; - kni->stats.rx_bytes += len; + dev->stats.tx_bytes += len; + dev->stats.rx_bytes += len; } /* Burst enqueue mbufs into tx_q */ @@ -464,8 +465,8 @@ kni_net_rx_lo_fifo(struct kni_dev *kni) * Update statistic, and enqueue/dequeue failure is impossible, * as all queues are checked at first. */ - kni->stats.tx_packets += num; - kni->stats.rx_packets += num; + dev->stats.tx_packets += num; + dev->stats.rx_packets += num; } /* @@ -518,7 +519,7 @@ kni_net_rx_lo_fifo_skb(struct kni_dev *kni) /* Simulate real usage, allocate/copy skb twice */ skb = netdev_alloc_skb(dev, len); if (skb == NULL) { - kni->stats.rx_dropped++; + dev->stats.rx_dropped++; continue; } @@ -542,8 +543,8 @@ kni_net_rx_lo_fifo_skb(struct kni_dev *kni) skb->ip_summed = CHECKSUM_UNNECESSARY; - kni->stats.rx_bytes += len; - kni->stats.rx_packets++; + dev->stats.rx_bytes += len; + dev->stats.rx_packets++; /* call tx interface */ kni_net_tx(skb, dev); @@ -573,12 +574,10 @@ kni_net_rx(struct kni_dev *kni) static void kni_net_tx_timeout(struct net_device *dev) { - struct kni_dev *kni = netdev_priv(dev); - pr_debug("Transmit timeout at %ld, latency %ld\n", jiffies, jiffies - dev_trans_start(dev)); - kni->stats.tx_errors++; + dev->stats.tx_errors++; netif_wake_queue(dev); } @@ -627,17 +626,6 @@ kni_net_poll_resp(struct kni_dev *kni) wake_up_interruptible(&kni->wq); } -/* - * Return statistics to the caller - */ -static struct net_device_stats * -kni_net_stats(struct net_device *dev) -{ - struct kni_dev *kni = netdev_priv(dev); - - return &kni->stats; -} - /* * Fill the eth header */ @@ -730,7 +718,6 @@ static const struct net_device_ops kni_net_netdev_ops = { .ndo_change_rx_flags = kni_net_set_promiscusity, .ndo_start_xmit = kni_net_tx, .ndo_change_mtu = kni_net_change_mtu, - .ndo_get_stats = kni_net_stats, .ndo_tx_timeout = kni_net_tx_timeout, .ndo_set_mac_address = kni_net_set_mac, #ifdef HAVE_CHANGE_CARRIER_CB From patchwork Mon Jun 24 16:47:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55260 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 317C21BD32; Mon, 24 Jun 2019 18:47:35 +0200 (CEST) Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by dpdk.org (Postfix) with ESMTP id A97281BCEA for ; Mon, 24 Jun 2019 18:47:26 +0200 (CEST) Received: by mail-pg1-f195.google.com with SMTP id 196so7421391pgc.6 for ; Mon, 24 Jun 2019 09:47:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BwV/bLfNBEHbbWxYej1CZA4dAMgB1xEzqt3/qXzzhdI=; b=ADVLDlBqJn9ZDTQINzcbWsrdQD6fQtDXWeQNLT2kiRM4hrc07rPh+Ry6KeaQiqVLhr 05MIoZsSb3d3ExAFuwPWsk96cmVtBHtY2wlzi1i4alF2ewObwXkshPsmy9rZZUfP+O1I XRQ18lWTuqwm7Zo4iJ0w0KDJmIhfi9p4X04vSX83bA8PzAbxicxXZcSGHK/jUVqqVHas m8kFtHt3no1kowgqcSbHfzlngOFDKtNwO+fVzoaMRpPrtsc5rDRwEiOq9gU11akmNg5u RdPfUOoK/IIy/BjW2pmEEvx76gzHl5lkein5xdH4cyhCfAMh1G0NtEqlatpOJwNcHlGt kP6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BwV/bLfNBEHbbWxYej1CZA4dAMgB1xEzqt3/qXzzhdI=; b=eR+BAR1uaQ+QoTwemFr+++5rfyP66/1RykZxKfHcN7weqM7Sy813xkkRjP8aK35ZNI b8K5PThvpBqmEg2rXVFGdGFOlZVcdSLeJv7x2y3DDNcQFmoHuunFlvg+expKY/l8f7Ej GqrE/ZCjMFnxTIynFO6HW2EWBZ+80fsgAvE3miLXGkbSeuLshzyODx1x3dqjb0j4ZjBn hXaW+gTN5omPJhSG7WQT4/fI+C5d048Wx5YobsYh9PxZXN02bYarW1kFZwrUk6IaXf3x JG0dQArnCo0HPAQXopHGEYD59gKfGEOJNSCJ33XABkuvAG1zuw20AXPX7Q4QbYvyKXKJ boEg== X-Gm-Message-State: APjAAAWI0S74AbpOJglD2+AFrZNR8GAI3/YlNu+MpRIC292uOs0ZsyhH NX/d2uOXL9m/yMnmbbGUvlwigtwFgdM= X-Google-Smtp-Source: APXvYqweB4nhVSN5TUPapsEZR7a6mVlWNrPhuUTF042G2qsKsbaNUFNcLdYVoRirtwjCknAUAbMInQ== X-Received: by 2002:a63:78c3:: with SMTP id t186mr34905209pgc.340.1561394845556; Mon, 24 Jun 2019 09:47:25 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id f7sm12814023pfd.43.2019.06.24.09.47.24 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 24 Jun 2019 09:47:24 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 24 Jun 2019 09:47:09 -0700 Message-Id: <20190624164714.6560-5-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190624164714.6560-1-stephen@networkplumber.org> References: <20190610175155.21374-1-stephen@networkplumber.org> <20190624164714.6560-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 4/9] kni: drop unused fields X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Several fields were either totally unused or set and never used. Signed-off-by: Stephen Hemminger --- kernel/linux/kni/kni_dev.h | 5 ----- kernel/linux/kni/kni_misc.c | 1 - 2 files changed, 6 deletions(-) diff --git a/kernel/linux/kni/kni_dev.h b/kernel/linux/kni/kni_dev.h index 21e4b0d92368..f3e6c3ca4efa 100644 --- a/kernel/linux/kni/kni_dev.h +++ b/kernel/linux/kni/kni_dev.h @@ -39,8 +39,6 @@ struct kni_dev { /* kni list */ struct list_head list; - int status; - uint16_t group_id; /* Group ID of a group of KNI devices */ uint32_t core_id; /* Core ID to bind */ char name[RTE_KNI_NAMESIZE]; /* Network device name */ struct task_struct *pthread; @@ -79,9 +77,6 @@ struct kni_dev { /* mbuf size */ uint32_t mbuf_size; - /* synchro for request processing */ - unsigned long synchro; - /* buffers */ void *pa[MBUF_BURST_SZ]; void *va[MBUF_BURST_SZ]; diff --git a/kernel/linux/kni/kni_misc.c b/kernel/linux/kni/kni_misc.c index 1fc5eeb9c8ca..b59cf24c2184 100644 --- a/kernel/linux/kni/kni_misc.c +++ b/kernel/linux/kni/kni_misc.c @@ -346,7 +346,6 @@ kni_ioctl_create(struct net *net, uint32_t ioctl_num, kni = netdev_priv(net_dev); kni->net_dev = net_dev; - kni->group_id = dev_info.group_id; kni->core_id = dev_info.core_id; strncpy(kni->name, dev_info.name, RTE_KNI_NAMESIZE); From patchwork Mon Jun 24 16:47:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55261 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 212721BD0E; Mon, 24 Jun 2019 18:47:40 +0200 (CEST) Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by dpdk.org (Postfix) with ESMTP id CBA4C1BCEA for ; Mon, 24 Jun 2019 18:47:27 +0200 (CEST) Received: by mail-pg1-f194.google.com with SMTP id y72so7413922pgd.8 for ; Mon, 24 Jun 2019 09:47:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MaX/9U1VKQDRlwJP1eh9LKqP+HAkhTNljy8r1/SknpU=; b=VlybDhCa2IZgaQo+N5xEysg/i4y/7+by64zpSYiLmMmbFBFz2CTwyRvbPktQUUc5Rt 81iEG601qwLReKAN2fVYVB1K4vqXb1TykQssVghSZiXDvrqPkWTBZD4uC94Gds9ojbPh pwlrplieAd+/P9qiJNSALsvj8+OHU+jXw/Him8DmGQeZ2VUIRJHytUt5lpeABtBfmH5F KNB6ysWgoypMEo83geNlr8KEQOBIYh3Mz/VOntY2OtYOimtv0HzF0hX/5wgOKFsocceg mtVYHEk2gcm4etLMR4+WLcBewDW940zRxncBTmBWiLtKjCGX3HecetyiXvc1qd/JW55+ ivyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MaX/9U1VKQDRlwJP1eh9LKqP+HAkhTNljy8r1/SknpU=; b=R8kii7ZKvQDX2W/Ho9Y8Fgx8ufOToL44ckNWDts9jp6i19MmSjdmiwgY7jtOjWUSeF BVktZGVnVU/ychAfPA0hgq0Vp470GED7W5Dd4wiL1665EVxaVbourkRnumE3f8qg867L vd5ktfsNwoEu+PhssI9zv32hNyFI/HOLW1/bPhJSyf0JMD6hRj6Vf+I5p7YyVWesZu2Y bBp1s1Q6rE5e4a6N2JGO8aUn09rV9cWD8P4SWkR8SYWKtAB1KHdOJcTVeYrsFAQIkUcv hn8L+Z4dSJzxLOwQWWV+N6WFMzTogV0zUoYNWBmriV4KYm2PlggYkwgGomY4D/6peZgB OeNQ== X-Gm-Message-State: APjAAAVbTmxKuGcfjzlWpjgcLXFV0jaUXb5R+KI6RS2CyJtfLkw6TB9N rw4lOiTf7yySYl7y+RrHsgbR4/1gZXU= X-Google-Smtp-Source: APXvYqxl3D4D5pGrNfkpXYZk1Aj+DBEfGD8Tk/n39gOG1pJGBVxPUdtNiXzaSVOhcvEzJvMiXM73ig== X-Received: by 2002:a63:231c:: with SMTP id j28mr33375206pgj.430.1561394846638; Mon, 24 Jun 2019 09:47:26 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id f7sm12814023pfd.43.2019.06.24.09.47.25 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 24 Jun 2019 09:47:25 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 24 Jun 2019 09:47:10 -0700 Message-Id: <20190624164714.6560-6-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190624164714.6560-1-stephen@networkplumber.org> References: <20190610175155.21374-1-stephen@networkplumber.org> <20190624164714.6560-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 5/9] kni: use proper type for kni fifo's X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Using void * instead of proper type is unsafe practice. Signed-off-by: Stephen Hemminger --- kernel/linux/kni/kni_dev.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/kernel/linux/kni/kni_dev.h b/kernel/linux/kni/kni_dev.h index f3e6c3ca4efa..ceba5f73c1d9 100644 --- a/kernel/linux/kni/kni_dev.h +++ b/kernel/linux/kni/kni_dev.h @@ -51,22 +51,22 @@ struct kni_dev { struct net_device *net_dev; /* queue for packets to be sent out */ - void *tx_q; + struct rte_kni_fifo *tx_q; /* queue for the packets received */ - void *rx_q; + struct rte_kni_fifo *rx_q; /* queue for the allocated mbufs those can be used to save sk buffs */ - void *alloc_q; + struct rte_kni_fifo *alloc_q; /* free queue for the mbufs to be freed */ - void *free_q; + struct rte_kni_fifo *free_q; /* request queue */ - void *req_q; + struct rte_kni_fifo *req_q; /* response queue */ - void *resp_q; + struct rte_kni_fifo *resp_q; void *sync_kva; void *sync_va; From patchwork Mon Jun 24 16:47:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55262 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BAE091BD40; Mon, 24 Jun 2019 18:47:43 +0200 (CEST) Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by dpdk.org (Postfix) with ESMTP id 2CFE71BCEA for ; Mon, 24 Jun 2019 18:47:29 +0200 (CEST) Received: by mail-pg1-f193.google.com with SMTP id f25so7416354pgv.10 for ; Mon, 24 Jun 2019 09:47:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9ZfM4adtNVrF7wT1Mjc0z707Ax+G9osFiWtI1ekyG9E=; b=jQL7qF7ZN2Zfuv/c+mhKGQXC+rda0uj3KB3CwU29dr5t+5FM+ZmwTLATBhwwSOfQCX MbugYk3le1Zcqn5cQ5sLZ4aSo2J4f7HkVW17Fiu/Qtt4zl7NVIL2j84/c1kjJAQzyI1D wjbm1mpbcm0JA9v1nu2G54pJIWKmNOLQ0XJV5z8saaBgzV0J0ppdUmCTFiVOQyguOKBU tIlnwYo6/RpL3dWREd6qaUO1CQvxUj60OYWCa+cHoacRLKgibK4XyPOqBO4Srgz+sloF NJ0axfCCkB5AxZ32ywsnYf0rU5HmjTb6Se48N2Aqd3ptqHvGlsxCTouMn9yFEKGRAiZn F/cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9ZfM4adtNVrF7wT1Mjc0z707Ax+G9osFiWtI1ekyG9E=; b=AfNEMrsCZnjihX0A82TZuWC2AVLVOO6QyngxkrL4cOcBGx2lMAGo7IcT6vI7zrwRgm y2KO9cWPcBpu/QNls073zriC6zTglpFHAm9NBD6z9njgQntzv+6HClMePuVHFq4bIAcz WSl8YcGUu2EqfAjoxzjZNaq+deJ4bGIG0vDkhePy1jdftycx4HswdiqG5C74y1QYFxuu AfY9U8qDrjGcTNSe21X7NiVZzkI1xhPwvTlKsN/r3iXQADN/nFLz1ZByo/z2nSfV9Q6M NE1XSivb/xdsvnHDDKz3mZwpk8BVDjYm/ISLKXIl0dF85EUiJwGgLI5j1wpUO+sCqFH7 qQNA== X-Gm-Message-State: APjAAAUaZZUeZmB73oGQFMWtVH8Zuu4fYc25pNbWfsE8IvhZT4yF2wCF qlDKz2xQ88pYQGXYevXS8v0C+6lm3EY= X-Google-Smtp-Source: APXvYqwTJqqhduEO1CES7r7GcTpoWkoVa1/N6Kgszp/EvnpoP351orzirH/jGXKHISyCfdz8q3W35w== X-Received: by 2002:a63:80c7:: with SMTP id j190mr16371330pgd.410.1561394848053; Mon, 24 Jun 2019 09:47:28 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id f7sm12814023pfd.43.2019.06.24.09.47.26 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 24 Jun 2019 09:47:26 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 24 Jun 2019 09:47:11 -0700 Message-Id: <20190624164714.6560-7-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190624164714.6560-1-stephen@networkplumber.org> References: <20190610175155.21374-1-stephen@networkplumber.org> <20190624164714.6560-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 6/9] kni: return -EFAULT if copy_from_user fails X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The correct thing to return if user gives a bad data is to return -EFAULT. Logging is also discouraged because it could be used as a DoS attack. Signed-off-by: Stephen Hemminger --- kernel/linux/kni/kni_misc.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/kernel/linux/kni/kni_misc.c b/kernel/linux/kni/kni_misc.c index b59cf24c2184..be45f823408f 100644 --- a/kernel/linux/kni/kni_misc.c +++ b/kernel/linux/kni/kni_misc.c @@ -301,11 +301,8 @@ kni_ioctl_create(struct net *net, uint32_t ioctl_num, return -EINVAL; /* Copy kni info from user space */ - ret = copy_from_user(&dev_info, (void *)ioctl_param, sizeof(dev_info)); - if (ret) { - pr_err("copy_from_user in kni_ioctl_create"); - return -EIO; - } + if (copy_from_user(&dev_info, (void *)ioctl_param, sizeof(dev_info))) + return -EFAULT; /* Check if name is zero-ended */ if (strnlen(dev_info.name, sizeof(dev_info.name)) == sizeof(dev_info.name)) { @@ -427,15 +424,12 @@ kni_ioctl_release(struct net *net, uint32_t ioctl_num, if (_IOC_SIZE(ioctl_num) > sizeof(dev_info)) return -EINVAL; - ret = copy_from_user(&dev_info, (void *)ioctl_param, sizeof(dev_info)); - if (ret) { - pr_err("copy_from_user in kni_ioctl_release"); - return -EIO; - } + if (copy_from_user(&dev_info, (void *)ioctl_param, sizeof(dev_info))) + return -EFAULT; /* Release the network device according to its name */ if (strlen(dev_info.name) == 0) - return ret; + return -EINVAL; down_write(&knet->kni_list_lock); list_for_each_entry_safe(dev, n, &knet->kni_list_head, list) { From patchwork Mon Jun 24 16:47:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55263 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D3D141BD47; Mon, 24 Jun 2019 18:47:46 +0200 (CEST) Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by dpdk.org (Postfix) with ESMTP id 57E291BD1E for ; Mon, 24 Jun 2019 18:47:30 +0200 (CEST) Received: by mail-pg1-f195.google.com with SMTP id n2so7407546pgp.11 for ; Mon, 24 Jun 2019 09:47:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yQGVqm3LrM7rzZPEwpU4sXdV9MaF0Mw7W9U4PD+EN1Y=; b=xTww106ARgzSWHZyagyJsdw394EhZ8TGGYDJiSOV6nKt5m3guh83XQeHvjcdUY5D66 zobFw73U92YEwBugwv/G9KK4hJ4kEbUeX1ifP5fKNeQgk6SkPobfMZHDrifYdk9QjVGB w62NDekgQJKdATQ06fnLAM/ptjD+WbivGzSmlV5wHQeYR2wfGGpJC3D9ZbCV1i0Aggcm ZEP4rJA+5FvaKaxGjBw9i7KbjGUNjQ0Pv1ji1pPJUGxYfO33vH95UT+puhJ5dwIq+hv1 dE4UpekuXIpto+k5FXFyYjfRTBIgT2p98mk8q/gY3IuMrh+SRXYIe3wKvXL+qwnsB6mu Me8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yQGVqm3LrM7rzZPEwpU4sXdV9MaF0Mw7W9U4PD+EN1Y=; b=YqfU26cB2RiwlE6iJig/n30nk0grQ/vVwXfBiwc+3al4gPMScDpEoqFxE/zFu2kDFG s12CjfG6D3EODBGVgw15JUadaSofyM96ti+FtyQNApnwy0CAM6FAMUW9+8UMbHvUsD6m 6FIyMX0zih7XdLXgNJVF0uHR+VGX37JmAVlQa+rS7HTDI5N68dIySMKCNFABuPhVxK1z Kxb6CAd+6QUfhKk5EF2Ql3SXItojAnd6FXf3rlko8qkc0qFQJiA0YiIMsbznrU8VARgh u7AP35fL1+vcWCIdZ7QIGLQ455u+lNNVGDVlrHSAomaMMCL2suwSchHeg1jCyLXq6bc7 KtTQ== X-Gm-Message-State: APjAAAWfzoTFBWJFhseBIkbr8EDqLoyycIfLLOi76v5xLawHKZBwpb4w djhTtQ9amMDTG135Qxdx0ZUBHE+v/R4= X-Google-Smtp-Source: APXvYqzZTOOYB5Juf4hyRaPwoUgkViCB8dMhdoTcQLxx9DtM2/JVVzUo78VEvPE059gGsWvjYGSDSA== X-Received: by 2002:a63:1d53:: with SMTP id d19mr33916954pgm.152.1561394849249; Mon, 24 Jun 2019 09:47:29 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id f7sm12814023pfd.43.2019.06.24.09.47.28 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 24 Jun 2019 09:47:28 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 24 Jun 2019 09:47:12 -0700 Message-Id: <20190624164714.6560-8-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190624164714.6560-1-stephen@networkplumber.org> References: <20190610175155.21374-1-stephen@networkplumber.org> <20190624164714.6560-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 7/9] kni: fix style issues X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" rte_kni does not follow standard style rules. Noticed some extra \ line continuation etc. Signed-off-by: Stephen Hemminger --- kernel/linux/kni/kni_net.c | 7 ++++--- lib/librte_kni/rte_kni.c | 38 +++++++++++++++++++------------------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c index 06310fec57bb..320d51d7fc83 100644 --- a/kernel/linux/kni/kni_net.c +++ b/kernel/linux/kni/kni_net.c @@ -401,7 +401,7 @@ kni_net_rx_lo_fifo(struct kni_dev *kni) /* Get the number of entries in rx_q */ num_rq = kni_fifo_count(kni->rx_q); - /* Get the number of free entrie in tx_q */ + /* Get the number of free entries in tx_q */ num_tq = kni_fifo_free_count(kni->tx_q); /* Get the number of entries in alloc_q */ @@ -755,6 +755,7 @@ kni_net_config_lo_mode(char *lo_str) } else if (!strcmp(lo_str, "lo_mode_fifo_skb")) { pr_debug("loopback mode=lo_mode_fifo_skb enabled"); kni_net_rx_func = kni_net_rx_lo_fifo_skb; - } else - pr_debug("Incognizant parameter, loopback disabled"); + } else { + pr_debug("Unknown loopback parameter, disabled"); + } } diff --git a/lib/librte_kni/rte_kni.c b/lib/librte_kni/rte_kni.c index e29d0cc7df3c..9b6acc382fc3 100644 --- a/lib/librte_kni/rte_kni.c +++ b/lib/librte_kni/rte_kni.c @@ -59,7 +59,7 @@ struct rte_kni { uint16_t group_id; /**< Group ID of KNI devices */ uint32_t slot_id; /**< KNI pool slot ID */ struct rte_mempool *pktmbuf_pool; /**< pkt mbuf mempool */ - unsigned mbuf_size; /**< mbuf size */ + unsigned int mbuf_size; /**< mbuf size */ const struct rte_memzone *m_tx_q; /**< TX queue memzone */ const struct rte_memzone *m_rx_q; /**< RX queue memzone */ @@ -78,7 +78,7 @@ struct rte_kni { /* For request & response */ struct rte_kni_fifo *req_q; /**< Request queue */ struct rte_kni_fifo *resp_q; /**< Response queue */ - void * sync_addr; /**< Req/Resp Mem address */ + void *sync_addr; /**< Req/Resp Mem address */ struct rte_kni_ops ops; /**< operations for request */ }; @@ -473,7 +473,7 @@ kni_config_promiscusity(uint16_t port_id, uint8_t to_on) int rte_kni_handle_request(struct rte_kni *kni) { - unsigned ret; + unsigned int ret; struct rte_kni_request *req = NULL; if (kni == NULL) @@ -498,8 +498,8 @@ rte_kni_handle_request(struct rte_kni *kni) break; case RTE_KNI_REQ_CFG_NETWORK_IF: /* Set network interface up/down */ if (kni->ops.config_network_if) - req->result = kni->ops.config_network_if(\ - kni->ops.port_id, req->if_up); + req->result = kni->ops.config_network_if(kni->ops.port_id, + req->if_up); break; case RTE_KNI_REQ_CHANGE_MAC_ADDR: /* Change MAC Address */ if (kni->ops.config_mac_address) @@ -534,7 +534,7 @@ rte_kni_handle_request(struct rte_kni *kni) } unsigned -rte_kni_tx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs, unsigned num) +rte_kni_tx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs, unsigned int num) { void *phy_mbufs[num]; unsigned int ret; @@ -552,9 +552,9 @@ rte_kni_tx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs, unsigned num) } unsigned -rte_kni_rx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs, unsigned num) +rte_kni_rx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs, unsigned int num) { - unsigned ret = kni_fifo_get(kni->tx_q, (void **)mbufs, num); + unsigned int ret = kni_fifo_get(kni->tx_q, (void **)mbufs, num); /* If buffers removed, allocate mbufs and then put them into alloc_q */ if (ret) @@ -605,7 +605,7 @@ kni_allocate_mbufs(struct rte_kni *kni) return; } - allocq_free = (kni->alloc_q->read - kni->alloc_q->write - 1) \ + allocq_free = (kni->alloc_q->read - kni->alloc_q->write - 1) & (MAX_MBUF_BURST_NUM - 1); for (i = 0; i < allocq_free; i++) { pkts[i] = rte_pktmbuf_alloc(kni->pktmbuf_pool); @@ -659,35 +659,35 @@ static enum kni_ops_status kni_check_request_register(struct rte_kni_ops *ops) { /* check if KNI request ops has been registered*/ - if( NULL == ops ) + if (ops == NULL) return KNI_REQ_NO_REGISTER; - if ((ops->change_mtu == NULL) - && (ops->config_network_if == NULL) - && (ops->config_mac_address == NULL) - && (ops->config_promiscusity == NULL)) + if (ops->change_mtu == NULL + && ops->config_network_if == NULL + && ops->config_mac_address == NULL + && ops->config_promiscusity == NULL) return KNI_REQ_NO_REGISTER; return KNI_REQ_REGISTERED; } int -rte_kni_register_handlers(struct rte_kni *kni,struct rte_kni_ops *ops) +rte_kni_register_handlers(struct rte_kni *kni, struct rte_kni_ops *ops) { enum kni_ops_status req_status; - if (NULL == ops) { + if (ops == NULL) { RTE_LOG(ERR, KNI, "Invalid KNI request operation.\n"); return -1; } - if (NULL == kni) { + if (kni == NULL) { RTE_LOG(ERR, KNI, "Invalid kni info.\n"); return -1; } req_status = kni_check_request_register(&kni->ops); - if ( KNI_REQ_REGISTERED == req_status) { + if (req_status == KNI_REQ_REGISTERED) { RTE_LOG(ERR, KNI, "The KNI request operation has already registered.\n"); return -1; } @@ -699,7 +699,7 @@ rte_kni_register_handlers(struct rte_kni *kni,struct rte_kni_ops *ops) int rte_kni_unregister_handlers(struct rte_kni *kni) { - if (NULL == kni) { + if (kni == NULL) { RTE_LOG(ERR, KNI, "Invalid kni info.\n"); return -1; } From patchwork Mon Jun 24 16:47:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55264 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 03BD21BD6C; Mon, 24 Jun 2019 18:47:51 +0200 (CEST) Received: from mail-pf1-f194.google.com (mail-pf1-f194.google.com [209.85.210.194]) by dpdk.org (Postfix) with ESMTP id A3AF81BD23 for ; Mon, 24 Jun 2019 18:47:31 +0200 (CEST) Received: by mail-pf1-f194.google.com with SMTP id m30so7835661pff.8 for ; Mon, 24 Jun 2019 09:47:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=VHA65NftE/bw5p/GVwIeWgkJKcWI3PGvUBPGSt32qbc=; b=fPhniSRUf6Anabigzq+g/BzAVXFwhkiwU8OTBvwmsGLZ9UPCnmaSyGNksrQGNbguKB Zr86Kbcdv3tYJ5pXf6GipvHWNbbyF2mv8weZfIEg2EWEsmZVknm/RcRKajnZO1UtxPuz murDXt/HzqIuDwmVCDSSwWKn+6Y9COIwS52s8/kXzXRB2VTk8J/hQmzDBtlfCV3JTQ8o FMfF+hTJZe2HkrK8KXmQbuOwCZQzIP8vv29HyN2dUdPitEAzqsMokZPV0c5PrAy2asD1 gX/BalHlcdnY1k0oZm0Rhd2WaupRV7tyhzFdBxK3unL+R+jMGKwJiShBW/cplrkek/IY RaYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=VHA65NftE/bw5p/GVwIeWgkJKcWI3PGvUBPGSt32qbc=; b=D3wNN7hajzDthG+/QutiVvgSpzxR2rQGS1xdfhq9xUpXQSp2sjtG3YbcJRjMNFwiLb UwcOY1vrqLNTeQD61SbR+V1vlI2P28FGkiDrgtOttgwGkICLdq3wCXsx68uLZ7OZSJCc NQ8/sfe5G8JFCE3c7roqnT9gem9ekaJfy/R5rddEMh5OxVQK40VQ+Oan+NCTzwMxKJ+3 VxMfZ86/yXHLptSVY7V6rQIg4dwCPHAftm8je3ElNrYnPzSlHOHLlrgbCNaflQogsy30 P37mXRDhfJCxTrGDyVQ+E965AdeTXaBhfkcHZVmcf7qojWSivtcZp8Sfo5mBLoCLhZeK lonQ== X-Gm-Message-State: APjAAAVJ3+xcnFvYUwhlWLNPTCZxML/74Hxx3LtEK2AKnEkqn3vPBlwG osgiFwXOIWG8OV85t9tk6tMTqvBeWWI= X-Google-Smtp-Source: APXvYqxwBJ+oFKcpFd5nodOcz/azcBTUn8jWHd+b7a3EVUtvoPjrn6B7L8wwiYJ8i9mT364akOsrow== X-Received: by 2002:a17:90a:aa0a:: with SMTP id k10mr26537013pjq.43.1561394850639; Mon, 24 Jun 2019 09:47:30 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id f7sm12814023pfd.43.2019.06.24.09.47.29 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 24 Jun 2019 09:47:29 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 24 Jun 2019 09:47:13 -0700 Message-Id: <20190624164714.6560-9-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190624164714.6560-1-stephen@networkplumber.org> References: <20190610175155.21374-1-stephen@networkplumber.org> <20190624164714.6560-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 8/9] kni: add minimal ethtool X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Some applications use ethtool so add the minimum ethtool ops. Signed-off-by: Stephen Hemminger --- kernel/linux/kni/kni_dev.h | 2 ++ kernel/linux/kni/kni_misc.c | 1 + kernel/linux/kni/kni_net.c | 14 ++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/kernel/linux/kni/kni_dev.h b/kernel/linux/kni/kni_dev.h index ceba5f73c1d9..c1ca6789ce12 100644 --- a/kernel/linux/kni/kni_dev.h +++ b/kernel/linux/kni/kni_dev.h @@ -11,6 +11,8 @@ #endif #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +#define KNI_VERSION "1.0" + #include "compat.h" #include diff --git a/kernel/linux/kni/kni_misc.c b/kernel/linux/kni/kni_misc.c index be45f823408f..2b75502a8b0e 100644 --- a/kernel/linux/kni/kni_misc.c +++ b/kernel/linux/kni/kni_misc.c @@ -21,6 +21,7 @@ #include "compat.h" #include "kni_dev.h" +MODULE_VERSION(KNI_VERSION); MODULE_LICENSE("Dual BSD/GPL"); MODULE_AUTHOR("Intel Corporation"); MODULE_DESCRIPTION("Kernel Module for managing kni devices"); diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c index 320d51d7fc83..319ee2dcb19a 100644 --- a/kernel/linux/kni/kni_net.c +++ b/kernel/linux/kni/kni_net.c @@ -13,6 +13,7 @@ #include #include #include /* eth_type_trans */ +#include #include #include #include @@ -725,6 +726,18 @@ static const struct net_device_ops kni_net_netdev_ops = { #endif }; +static void kni_get_drvinfo(struct net_device *dev, + struct ethtool_drvinfo *info) +{ + strlcpy(info->version, KNI_VERSION, sizeof(info->version)); + strlcpy(info->driver, "kni", sizeof(info->driver)); +} + +static const struct ethtool_ops kni_net_ethtool_ops = { + .get_drvinfo = kni_get_drvinfo, + .get_link = ethtool_op_get_link, +}; + void kni_net_init(struct net_device *dev) { @@ -736,6 +749,7 @@ kni_net_init(struct net_device *dev) ether_setup(dev); /* assign some of the fields */ dev->netdev_ops = &kni_net_netdev_ops; dev->header_ops = &kni_net_header_ops; + dev->ethtool_ops = &kni_net_ethtool_ops; dev->watchdog_timeo = WD_TIMEOUT; } From patchwork Mon Jun 24 16:47:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55265 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EACA41BD72; Mon, 24 Jun 2019 18:47:52 +0200 (CEST) Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by dpdk.org (Postfix) with ESMTP id DB0111BD29 for ; Mon, 24 Jun 2019 18:47:32 +0200 (CEST) Received: by mail-pf1-f193.google.com with SMTP id p184so7839455pfp.7 for ; Mon, 24 Jun 2019 09:47:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0khlawSNIgDeYLk2xnYr3hkFbn+imFT3yJqOIe71Vj8=; b=fAAsQ5zPkkdY/rOG940YE7JrFsW4KVojZC6bahHpsa6qbX1kz1dAKGyydwSbvPGxiB 0WH2ibqgSORym0yUe7caYm1ZRn6hwTxFLy5P5JM3dvtZwJBsvfsu1PfGELcIdR1xGXJ2 YGCgqpCrTNbQpE0WtJErEGnvXJBOEbqJOuI2vR2xR1nqgErHD/lnJdmCbPdR7Xp16qJB JydrT68Am/X7Ph+pJ/ifY6ih+nsShXs+AltQy6XMbJiRREZQID5a1944rU7r49ew/Aau dD9ngRono0W4Aw1gslh4uRe+HFj7NYn2syR4JRf3BAwEjadH7mzXEFGJPxbykmB81uuJ Aisw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0khlawSNIgDeYLk2xnYr3hkFbn+imFT3yJqOIe71Vj8=; b=h1lI/2xTcpycqQQIaNwNW3nJlo01LIEoVQ/QP/rM5wJHpBIeXfLi+ETKiki6ksIu6F PinCHyOLlGFoO8y7RKjRX0AX3GJsElid9cHpRT7AURiasmj4Eey9kes4qiYA64R9CYhd NuukZLhUuQs7MdSNwWHuEtll2jGb/06qDbvw4lnELBsv28YKfzbcHRYeh8potpbJE0YT 2RpQYLq+fhDkg7e/2MYONFNSkeOQpYpMKsBprwIjQYAxBm5VAIgdeYIWaIL7Hg/Zq+53 rCtgZ6me9wRaaB+Uk7dtX0rgzJhSfelxUtD+SUXUtrTHn8wPBeR7UL9wrw6qK8G7pVp8 4vVQ== X-Gm-Message-State: APjAAAUgWO1iyDsE/fry+KYxPZcZkX0Mb0vNP0tlUqWgp3MySkzMl7tn SMXwOw7i4NvoSJTzZF1DW0GqTk55zWA= X-Google-Smtp-Source: APXvYqz2Md4OIYioWZYrYFg0IsY3nmydTaOb4yoFt+DQrTCJsgW9nIzL2zvUl3OUxzspweXtjy9YRw== X-Received: by 2002:a17:90a:778c:: with SMTP id v12mr24526774pjk.141.1561394851706; Mon, 24 Jun 2019 09:47:31 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id f7sm12814023pfd.43.2019.06.24.09.47.30 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 24 Jun 2019 09:47:30 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 24 Jun 2019 09:47:14 -0700 Message-Id: <20190624164714.6560-10-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190624164714.6560-1-stephen@networkplumber.org> References: <20190610175155.21374-1-stephen@networkplumber.org> <20190624164714.6560-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 9/9] doc: update KNI documentation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Update KNI documentation to reflect current ethtool support. Replace references to out dated tools (ifconfig) with modern iproute2. Tshark is a better replacement for tcpdump. Signed-off-by: Stephen Hemminger --- .../prog_guide/kernel_nic_interface.rst | 9 +++---- .../sample_app_ug/kernel_nic_interface.rst | 24 ++++++++++++------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/doc/guides/prog_guide/kernel_nic_interface.rst b/doc/guides/prog_guide/kernel_nic_interface.rst index daf87f4a8edf..5afd05c0a745 100644 --- a/doc/guides/prog_guide/kernel_nic_interface.rst +++ b/doc/guides/prog_guide/kernel_nic_interface.rst @@ -290,7 +290,8 @@ It then puts the mbuf back in the cache. Ethtool ------- -Ethtool is a Linux-specific tool with corresponding support in the kernel -where each net device must register its own callbacks for the supported operations. -The current implementation uses the igb/ixgbe modified Linux drivers for ethtool support. -Ethtool is not supported in i40e and VMs (VF or EM devices). +Ethtool is a Linux-specific tool with corresponding support in the kernel. +The current version of kni provides minimal ethtool functionality +including querying version and link state. It does not support link +control, statistics, or dumping device registers. + diff --git a/doc/guides/sample_app_ug/kernel_nic_interface.rst b/doc/guides/sample_app_ug/kernel_nic_interface.rst index a7e549d5213a..aac4ebd8d4ff 100644 --- a/doc/guides/sample_app_ug/kernel_nic_interface.rst +++ b/doc/guides/sample_app_ug/kernel_nic_interface.rst @@ -21,14 +21,14 @@ The FIFO queues contain pointers to data packets in the DPDK. This: * Provides a faster mechanism to interface with the kernel net stack and eliminates system calls -* Facilitates the DPDK using standard Linux* userspace net tools (tcpdump, ftp, and so on) +* Facilitates the DPDK using standard Linux* userspace net tools (tshark, rsync, and so on) * Eliminate the copy_to_user and copy_from_user operations on packets. The Kernel NIC Interface sample application is a simple example that demonstrates the use of the DPDK to create a path for packets to go through the Linux* kernel. This is done by creating one or more kernel net devices for each of the DPDK ports. -The application allows the use of standard Linux tools (ethtool, ifconfig, tcpdump) with the DPDK ports and +The application allows the use of standard Linux tools (ethtool, iproute, tshark) with the DPDK ports and also the exchange of packets between the DPDK application and the Linux* kernel. The Kernel NIC Interface sample application requires that the @@ -220,13 +220,13 @@ Enable KNI interface and assign an IP address: .. code-block:: console - # ifconfig vEth0_0 192.168.0.1 + # ip addr add dev vEth0_0 192.168.0.1 Show KNI interface configuration and statistics: .. code-block:: console - # ifconfig vEth0_0 + # ip -s -d addr show vEth0_0 The user can also check and reset the packet statistics inside the ``kni`` application by sending the app the USR1 and USR2 signals: @@ -234,16 +234,16 @@ application by sending the app the USR1 and USR2 signals: .. code-block:: console # Print statistics - # kill -SIGUSR1 `pidof kni` + # pkill -USR1 kni # Zero statistics - # kill -SIGUSR2 `pidof kni` + # pkill -USR2 kni Dump network traffic: .. code-block:: console - # tcpdump -i vEth0_0 + # tshark -n -i vEth0_0 The normal Linux commands can also be used to change the MAC address and MTU size used by the physical NIC which corresponds to the KNI interface. @@ -254,13 +254,19 @@ Change the MAC address: .. code-block:: console - # ifconfig vEth0_0 hw ether 0C:01:02:03:04:08 + # ip link set dev vEth0_0 lladdr 0C:01:02:03:04:08 Change the MTU size: .. code-block:: console - # ifconfig vEth0_0 mtu 1450 + # ip link set dev vEth0_0 mtu 1450 + +Limited ethtool support: + +.. code-block:: console + + # ethtool -i vEth0_0 When the ``kni`` application is closed, all the KNI interfaces are deleted from the Linux kernel.