From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Wang Subject: Re: [RFC PATCH net-next v2 2/2] virtio_net: Extend virtio to use VF datapath when available Date: Tue, 23 Jan 2018 18:33:59 +0800 Message-ID: References: <1515736720-39368-1-git-send-email-sridhar.samudrala@intel.com> <1515736720-39368-3-git-send-email-sridhar.samudrala@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 To: Sridhar Samudrala , mst@redhat.com, stephen@networkplumber.org, davem@davemloft.net, netdev@vger.kernel.org, virtualization@lists.linux-foundation.org, virtio-dev@lists.oasis-open.org, jesse.brandeburg@intel.com, alexander.h.duyck@intel.com, kubakici@wp.pl Return-path: In-Reply-To: <1515736720-39368-3-git-send-email-sridhar.samudrala@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org List-Id: netdev.vger.kernel.org CgpPbiAyMDE45bm0MDHmnIgxMuaXpSAxMzo1OCwgU3JpZGhhciBTYW11ZHJhbGEgd3JvdGU6Cj4g ICBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1 Y3QgbmV0X2RldmljZSAqZGV2KQo+ICAgewo+ICAgCXN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpID0g bmV0ZGV2X3ByaXYoZGV2KTsKPiAgIAlpbnQgcW51bSA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhz a2IpOwo+ICAgCXN0cnVjdCBzZW5kX3F1ZXVlICpzcSA9ICZ2aS0+c3FbcW51bV07Cj4gKwlzdHJ1 Y3QgbmV0X2RldmljZSAqdmZfbmV0ZGV2Owo+ICAgCWludCBlcnI7Cj4gICAJc3RydWN0IG5ldGRl dl9xdWV1ZSAqdHhxID0gbmV0ZGV2X2dldF90eF9xdWV1ZShkZXYsIHFudW0pOwo+ICAgCWJvb2wg a2ljayA9ICFza2ItPnhtaXRfbW9yZTsKPiAgIAlib29sIHVzZV9uYXBpID0gc3EtPm5hcGkud2Vp Z2h0Owo+ICAgCj4gKwkvKiBJZiBWRiBpcyBwcmVzZW50IGFuZCB1cCB0aGVuIHJlZGlyZWN0IHBh Y2tldHMKPiArCSAqIGNhbGxlZCB3aXRoIHJjdV9yZWFkX2xvY2tfYmgKPiArCSAqLwo+ICsJdmZf bmV0ZGV2ID0gcmN1X2RlcmVmZXJlbmNlX2JoKHZpLT52Zl9uZXRkZXYpOwo+ICsJaWYgKHZmX25l dGRldiAmJiBuZXRpZl9ydW5uaW5nKHZmX25ldGRldikgJiYKPiArCSAgICAhbmV0cG9sbF90eF9y dW5uaW5nKGRldikgJiYKPiArCSAgICBpc191bmljYXN0X2V0aGVyX2FkZHIoZXRoX2hkcihza2Ip LT5oX2Rlc3QpKQo+ICsJCXJldHVybiB2aXJ0bmV0X3ZmX3htaXQoZGV2LCB2Zl9uZXRkZXYsIHNr Yik7Cj4gKwoKQSBxdWVzdGlvbiBoZXJlLgoKSWYgSSByZWFkIHRoZSBjb2RlIGNvcnJlY3RseSwg YWxsIGZlYXR1cmVzIHdlcmUgdmFsaWRhdGVkIGFnYWluc3QgdmlydGlvIAppbnN0ZWFkIFZGIGJl Zm9yZSB0cmFuc21pdHRpbmcuIFRoaXMgYXNzdW1lcyBWRidzIGZlYXR1cmUgaXMgYSBzdXBlcnNl dCAKb2YgdmlydGlvLCBkb2VzIHRoaXMgcmVhbGx5IHdvcms/IERvIHdlIG5lZWQgdG8gc2FuaXRp emUgdGhlIGZlYXR1cmUgCmJlZm9yZSBqb2luaW5nPyAoZS5nIGF0IGxhc3QgTkVUSUZfUl9HU09f Uk9CVVNUIG5lZWRzIHRvIGJlIHJlbW92ZWQpLgoKVGhhbmtzCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApW aXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxp bnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: virtio-dev-return-3029-cohuck=redhat.com@lists.oasis-open.org Sender: List-Post: List-Help: List-Unsubscribe: List-Subscribe: Received: from lists.oasis-open.org (oasis-open.org [66.179.20.138]) by lists.oasis-open.org (Postfix) with ESMTP id 2233358191C6 for ; Tue, 23 Jan 2018 02:34:23 -0800 (PST) References: <1515736720-39368-1-git-send-email-sridhar.samudrala@intel.com> <1515736720-39368-3-git-send-email-sridhar.samudrala@intel.com> From: Jason Wang Message-ID: Date: Tue, 23 Jan 2018 18:33:59 +0800 MIME-Version: 1.0 In-Reply-To: <1515736720-39368-3-git-send-email-sridhar.samudrala@intel.com> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: 8bit Content-Language: en-US Subject: [virtio-dev] Re: [RFC PATCH net-next v2 2/2] virtio_net: Extend virtio to use VF datapath when available To: Sridhar Samudrala , mst@redhat.com, stephen@networkplumber.org, davem@davemloft.net, netdev@vger.kernel.org, virtualization@lists.linux-foundation.org, virtio-dev@lists.oasis-open.org, jesse.brandeburg@intel.com, alexander.h.duyck@intel.com, kubakici@wp.pl List-ID: On 2018年01月12日 13:58, Sridhar Samudrala wrote: > static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev) > { > struct virtnet_info *vi = netdev_priv(dev); > int qnum = skb_get_queue_mapping(skb); > struct send_queue *sq = &vi->sq[qnum]; > + struct net_device *vf_netdev; > int err; > struct netdev_queue *txq = netdev_get_tx_queue(dev, qnum); > bool kick = !skb->xmit_more; > bool use_napi = sq->napi.weight; > > + /* If VF is present and up then redirect packets > + * called with rcu_read_lock_bh > + */ > + vf_netdev = rcu_dereference_bh(vi->vf_netdev); > + if (vf_netdev && netif_running(vf_netdev) && > + !netpoll_tx_running(dev) && > + is_unicast_ether_addr(eth_hdr(skb)->h_dest)) > + return virtnet_vf_xmit(dev, vf_netdev, skb); > + A question here. If I read the code correctly, all features were validated against virtio instead VF before transmitting. This assumes VF's feature is a superset of virtio, does this really work? Do we need to sanitize the feature before joining? (e.g at last NETIF_R_GSO_ROBUST needs to be removed). Thanks --------------------------------------------------------------------- To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org