From owner-freebsd-net@FreeBSD.ORG Fri Nov 21 22:52:19 2014 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 64BB1CF9 for ; Fri, 21 Nov 2014 22:52:19 +0000 (UTC) Received: from nm37-vm8.bullet.mail.bf1.yahoo.com (nm37-vm8.bullet.mail.bf1.yahoo.com [72.30.238.220]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0CDAD93B for ; Fri, 21 Nov 2014 22:52:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1416610227; bh=axSMCiUPsQIoHYohLC4QSvgW9671bhaPSkKx/Xeuwo8=; h=Date:From:Reply-To:To:Subject:From:Subject; b=TadrW1TcYn888/M8Q/lobZpfex3jFeT7aKAzk1sl0Z5CRITJApGMsiZtXLseERNJmgy8UtUUsUiPsOfuBmbGi58CPg+xf4k0+y4WAeTt1pcQw9wNvKXO0KI6zrWe+NjWrAo1/YFaMMQ7RtX0J5UlRBoGOFJ3nWWc8Tucu+RWsP44wXy7JzAV4FN5sAiDuXmt8271wWT5rhAMna9uSQL5ZVmLX3CG9gRvDDh6zyRnRSQvAUXkBGaymf64eGBUXU4Ivor1AK1G3ItU4k0Folnjla0mBb2of2eq/lKta4Leaxx4owTvCfp8fPYyCctotPP+rK+RZAO4xRKJu4gJuRktHA== DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s2048; d=yahoo.com; b=W/C6Sp2GUGJdw9JAcYbVLacPvsXRnYgHdKVvvDmWh6j5pOsClaG87NPgiU9PrSH4ilCsqLiknZ9JOdyoQ+PMdirW/y7kJ3WLmEj/DMAiwTeFzbg81ggnQ7njy4eKJdI9FS5UdnGUt7mydONa2EnDttcHCU4HiA+K7oPjTyT4etPhI2Tco8WJXBNDckvHltkId16VAK5aH6AuW3KPWuRsmc+ftQnqccsBpXIvsApeRtblYL3dpV5/v/DqoCkUkkcRWI5qEtis6cwIm1twJIuOFjkJDStTJcKtqaQPDGz8oetUUK27UG636Vyct0fVcqRv+yQX+A0fVPmhqnfaZpYS2Q==; Received: from [98.139.215.141] by nm37.bullet.mail.bf1.yahoo.com with NNFMP; 21 Nov 2014 22:50:27 -0000 Received: from [98.139.212.246] by tm12.bullet.mail.bf1.yahoo.com with NNFMP; 21 Nov 2014 22:50:27 -0000 Received: from [127.0.0.1] by omp1055.mail.bf1.yahoo.com with NNFMP; 21 Nov 2014 22:50:27 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 70409.17267.bm@omp1055.mail.bf1.yahoo.com X-YMail-OSG: s_qpe_cVM1lwyyUTfPTTskUUsFkj.xHh.7c6saa9llcsNJ67vY13hzY8QMvpwUz ZPdzJle0HLfEcEGjSV8H_saOjzoDelp5yj6rlVFZRMbylFaZ.Ga.h4dMEGDToEaDSqUuFPtZ_rg4 7CrC.xkzbHpHuSQQtBWSSrcd2QKf5bT4yrP15OpvHR1XxWL160gf9s4iI.hLkwu.XsZ2C8eikU_P tltYmwVCpIVXI2mpmcRdRTJH6RE1..AJBH2cniLGX5lMZsS_8CaEhc_aZPhgBm1Oh77qvRtIySdx p6WswDg0zkzxEIPliD.JySrwnh0f6KwxIPxwHGC0ujtt8.F0qKkYK2a_p8RfhEJukR5_qbhJ0xvu znpgkrpPNVfqF51vyVrRePABSjwtAosx3Orh0lfd2ws8kpHtv1VDj797Tltgv7tGr2mD3UDvfIv. N.EP3oHxRth4AMOWXNQS55kkWW2kawRctr9qT3WQGuZX9ZWP9XbBrKXtSl6EjyKJ.F3RHO9NiEaD 1q6OnRskZfj54pK5j8uZ60mTVqQwyaGi2KvvI_9HrFUhUezbOYQ-- Received: by 66.196.80.148; Fri, 21 Nov 2014 22:50:26 +0000 Date: Fri, 21 Nov 2014 22:50:21 +0000 (UTC) From: eclectic 923 Reply-To: eclectic 923 To: "net@freebsd.org" Message-ID: <1737441065.3841217.1416610221856.JavaMail.yahoo@jws10674.mail.bf1.yahoo.com> Subject: Re: Patches for linux virtio_net driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Nov 2014 22:52:19 -0000 Sorry, having problems sending attachments as plain text. Here's virtio_net_3.10.60.patch: # The netmap 3.10 patch for the virtio_net driver fails to apply. This # patch is the whole netmap virtio driver patch for 3.10.60 (from # kernel.org), and it applies correctly. # Index: linux-3.10.60/drivers/net/virtio_net.c =================================================================== --- linux-3.10.60.orig/drivers/net/virtio_net.c 2014-11-14 11:48:23.000000000 -0500 +++ linux-3.10.60/drivers/net/virtio_net.c 2014-11-21 12:54:29.751760095 -0500 @@ -131,6 +131,10 @@ struct notifier_block nb; }; +#if defined(CONFIG_NETMAP) || defined(CONFIG_NETMAP_MODULE) +#include +#endif + struct skb_vnet_hdr { union { struct virtio_net_hdr hdr; @@ -210,6 +214,10 @@ /* Suppress further interrupts. */ virtqueue_disable_cb(vq); +#ifdef DEV_NETMAP + if (netmap_tx_irq(vi->dev, vq2txq(vq))) + return; +#endif /* We were probably waiting for more output buffers. */ netif_wake_subqueue(vi->dev, vq2txq(vq)); } @@ -646,7 +654,16 @@ struct virtnet_info *vi = rq->vq->vdev->priv; void *buf; unsigned int r, len, received = 0; +#ifdef DEV_NETMAP + int work_done = 0; + + if (netmap_rx_irq(vi->dev, vq2rxq(rq->vq), &work_done)) { + napi_complete(napi); + ND("called netmap_rx_irq"); + return 1; + } +#endif again: while (received < budget && (buf = virtqueue_get_buf(rq->vq, &len)) != NULL) { @@ -679,6 +696,16 @@ { struct virtnet_info *vi = netdev_priv(dev); int i; +#ifdef DEV_NETMAP + int ok = virtio_netmap_init_buffers(vi); + + netmap_enable_all_rings(dev); + if (ok) { + for (i = 0; i < vi->max_queue_pairs; i++) + virtnet_napi_enable(&vi->rq[i]); + return 0; + } +#endif for (i = 0; i < vi->max_queue_pairs; i++) { if (i < vi->curr_queue_pairs) @@ -972,6 +999,9 @@ struct virtnet_info *vi = netdev_priv(dev); int i; +#ifdef DEV_NETMAP + netmap_disable_all_rings(dev); +#endif /* Make sure refill_work doesn't re-enable napi! */ cancel_delayed_work_sync(&vi->refill); @@ -1644,6 +1674,10 @@ goto free_recv_bufs; } +#ifdef DEV_NETMAP + virtio_netmap_attach(vi); +#endif + /* Assume link up if device can't report link status, otherwise get link status from config. */ if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_STATUS)) { @@ -1690,6 +1724,9 @@ { struct virtnet_info *vi = vdev->priv; +#ifdef DEV_NETMAP + netmap_detach(vi->dev); +#endif unregister_hotcpu_notifier(&vi->nb); /* Prevent config work handler from accessing the device. */