All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yang Hongyang <yanghy@cn.fujitsu.com>
To: Jason Wang <jasowang@redhat.com>, qemu-devel@nongnu.org
Cc: thuth@redhat.com, stefanha@redhat.com, armbru@redhat.com,
	lizhijian@cn.fujitsu.com, zhang.zhanghailiang@huawei.com
Subject: Re: [Qemu-devel] [PATCH v11 04/12] net: merge qemu_deliver_packet and qemu_deliver_packet_iov
Date: Tue, 22 Sep 2015 15:44:02 +0800	[thread overview]
Message-ID: <560106C2.5080607@cn.fujitsu.com> (raw)
In-Reply-To: <56010391.4070806@redhat.com>

Hi Jason,

   Thanks for the review,

On 09/22/2015 03:30 PM, Jason Wang wrote:
>
>
> On 09/16/2015 08:16 PM, Yang Hongyang wrote:
>> qemu_deliver_packet_iov already have the compat delivery, we
>> can drop qemu_deliver_packet.
>>
>> Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com>
>> ---
>>   include/net/net.h |  5 -----
>>   net/net.c         | 40 +++++++---------------------------------
>>   net/queue.c       |  6 +++++-
>>   3 files changed, 12 insertions(+), 39 deletions(-)
>>
>> diff --git a/include/net/net.h b/include/net/net.h
>> index 36e5fab..7af3e15 100644
>> --- a/include/net/net.h
>> +++ b/include/net/net.h
>> @@ -152,11 +152,6 @@ void qemu_check_nic_model(NICInfo *nd, const char *model);
>>   int qemu_find_nic_model(NICInfo *nd, const char * const *models,
>>                           const char *default_model);
>>
>> -ssize_t qemu_deliver_packet(NetClientState *sender,
>> -                            unsigned flags,
>> -                            const uint8_t *data,
>> -                            size_t size,
>> -                            void *opaque);
>>   ssize_t qemu_deliver_packet_iov(NetClientState *sender,
>>                               unsigned flags,
>>                               const struct iovec *iov,
>> diff --git a/net/net.c b/net/net.c
>> index ad37419..ca35b27 100644
>> --- a/net/net.c
>> +++ b/net/net.c
>> @@ -597,36 +597,6 @@ static ssize_t filter_receive(NetClientState *nc, NetFilterChain chain,
>>       return filter_receive_iov(nc, chain, sender, flags, &iov, 1, sent_cb);
>>   }
>>
>> -ssize_t qemu_deliver_packet(NetClientState *sender,
>> -                            unsigned flags,
>> -                            const uint8_t *data,
>> -                            size_t size,
>> -                            void *opaque)
>> -{
>> -    NetClientState *nc = opaque;
>> -    ssize_t ret;
>> -
>> -    if (nc->link_down) {
>> -        return size;
>> -    }
>> -
>> -    if (nc->receive_disabled) {
>> -        return 0;
>> -    }
>> -
>> -    if (flags & QEMU_NET_PACKET_FLAG_RAW && nc->info->receive_raw) {
>> -        ret = nc->info->receive_raw(nc, data, size);
>> -    } else {
>> -        ret = nc->info->receive(nc, data, size);
>> -    }
>> -
>> -    if (ret == 0) {
>> -        nc->receive_disabled = 1;
>> -    }
>> -
>> -    return ret;
>> -}
>> -
>>   void qemu_purge_queued_packets(NetClientState *nc)
>>   {
>>       if (!nc->peer) {
>> @@ -717,14 +687,18 @@ ssize_t qemu_send_packet_raw(NetClientState *nc, const uint8_t *buf, int size)
>>   }
>>
>>   static ssize_t nc_sendv_compat(NetClientState *nc, const struct iovec *iov,
>> -                               int iovcnt)
>> +                               int iovcnt, unsigned flags)
>>   {
>>       uint8_t buffer[NET_BUFSIZE];
>>       size_t offset;
>>
>>       offset = iov_to_buf(iov, iovcnt, 0, buffer, sizeof(buffer));
>>
>> -    return nc->info->receive(nc, buffer, offset);
>> +    if (flags & QEMU_NET_PACKET_FLAG_RAW && nc->info->receive_raw) {
>> +        return nc->info->receive_raw(nc, buffer, offset);
>> +    } else {
>> +        return nc->info->receive(nc, buffer, offset);
>> +    }
>
> Then for net clients that doesn't support receive_iov, an extra memcpy
> is introduced. This seems unnecessary. And this patch looks independent,
> so please drop this patch from the series (This can also help to reduce
> the iteration). I think we may need this after all net clients support
> receive_iov().

This patch is required by the next patch which introduce a
+/* Returns:
+ *   >0 - success
+ *    0 - queue packet for future redelivery
+ *   <0 - failure (discard packet)
+ */
+typedef ssize_t (NetQueueDeliverFunc)(NetClientState *sender,
+                                      unsigned flags,
+                                      const struct iovec *iov,
+                                      int iovcnt,
+                                      void *opaque);

If we drop this patch, we will need to introduce 2 deliver func, which
seems not clean and simple.

>
>
>>   }
>>
>>   ssize_t qemu_deliver_packet_iov(NetClientState *sender,
>> @@ -747,7 +721,7 @@ ssize_t qemu_deliver_packet_iov(NetClientState *sender,
>>       if (nc->info->receive_iov) {
>>           ret = nc->info->receive_iov(nc, iov, iovcnt);
>>       } else {
>> -        ret = nc_sendv_compat(nc, iov, iovcnt);
>> +        ret = nc_sendv_compat(nc, iov, iovcnt, flags);
>>       }
>>
>>       if (ret == 0) {
>> diff --git a/net/queue.c b/net/queue.c
>> index ebbe2bb..cf8db3a 100644
>> --- a/net/queue.c
>> +++ b/net/queue.c
>> @@ -152,9 +152,13 @@ static ssize_t qemu_net_queue_deliver(NetQueue *queue,
>>                                         size_t size)
>>   {
>>       ssize_t ret = -1;
>> +    struct iovec iov = {
>> +        .iov_base = (void *)data,
>> +        .iov_len = size
>> +    };
>>
>>       queue->delivering = 1;
>> -    ret = qemu_deliver_packet(sender, flags, data, size, queue->opaque);
>> +    ret = qemu_deliver_packet_iov(sender, flags, &iov, 1, queue->opaque);
>>       queue->delivering = 0;
>>
>>       return ret;
>
>
> .
>

-- 
Thanks,
Yang.

  reply	other threads:[~2015-09-22  7:44 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-16 12:15 [Qemu-devel] [PATCH v11 00/12] Add a netfilter object and netbuffer filter Yang Hongyang
2015-09-16 12:15 ` [Qemu-devel] [PATCH v11 01/12] qmp: delete qemu opts when delete an object Yang Hongyang
2015-09-24  7:43   ` Markus Armbruster
2015-09-24  8:35     ` Yang Hongyang
2015-09-24  9:42       ` Markus Armbruster
2015-09-24  9:59         ` Yang Hongyang
2015-09-24 11:35           ` Markus Armbruster
2015-09-25  1:11             ` Yang Hongyang
2015-09-24 10:06         ` Yang Hongyang
2015-09-24 11:36           ` Markus Armbruster
2015-09-25  1:12             ` Yang Hongyang
2015-09-25  6:40       ` Jason Wang
2015-09-16 12:15 ` [Qemu-devel] [PATCH v11 02/12] init/cleanup of netfilter object Yang Hongyang
2015-09-16 21:09   ` Eric Blake
2015-09-17  1:23     ` Yang Hongyang
2015-09-17 16:09       ` Eric Blake
2015-09-18  1:14         ` Yang Hongyang
2015-09-24  8:41   ` Markus Armbruster
2015-09-24  8:47     ` Yang Hongyang
2015-09-24 11:40       ` Markus Armbruster
2015-09-25  1:13         ` Yang Hongyang
2015-09-24  8:57     ` Yang Hongyang
2015-09-24 11:52       ` Markus Armbruster
2015-09-25  6:45         ` Jason Wang
2015-09-25 14:10           ` Markus Armbruster
2015-09-28  5:47             ` Jason Wang
2015-09-28  5:53               ` Yang Hongyang
2015-09-16 12:15 ` [Qemu-devel] [PATCH v11 03/12] netfilter: hook packets before net queue send Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 04/12] net: merge qemu_deliver_packet and qemu_deliver_packet_iov Yang Hongyang
2015-09-22  7:30   ` Jason Wang
2015-09-22  7:44     ` Yang Hongyang [this message]
2015-09-22  8:14       ` Jason Wang
2015-09-22  8:21         ` Yang Hongyang
2015-09-22  9:19           ` Jason Wang
2015-09-22  9:26             ` Yang Hongyang
2015-09-22  9:42               ` Jason Wang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 05/12] net/queue: introduce NetQueueDeliverFunc Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 06/12] netfilter: add an API to pass the packet to next filter Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 07/12] netfilter: print filter info associate with the netdev Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 08/12] net/queue: export qemu_net_queue_append_iov Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 09/12] netfilter: add a netbuffer filter Yang Hongyang
2015-09-24  9:12   ` Markus Armbruster
2015-09-25  7:18     ` Yang Hongyang
2015-09-25  8:18       ` Jason Wang
2015-09-25 15:13         ` Markus Armbruster
2015-09-25 15:07       ` Markus Armbruster
2015-09-28  6:12         ` Jason Wang
2015-09-28  7:38           ` Markus Armbruster
2015-09-28  6:42         ` Yang Hongyang
2015-09-25  8:03     ` Yang Hongyang
2015-09-25  8:18       ` Thomas Huth
2015-09-25  8:22         ` Yang Hongyang
2015-09-25 15:26         ` Markus Armbruster
2015-09-28  6:40           ` Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 10/12] tests: add test cases for netfilter object Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 11/12] netfilter/multiqueue: introduce netfilter name Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 12/12] netfilter: add multiqueue support Yang Hongyang
2015-09-22  7:36   ` Jason Wang
2015-09-22  7:49     ` Yang Hongyang
2015-09-22  8:31       ` Jason Wang
2015-09-22  8:35         ` Yang Hongyang
2015-09-22  9:19           ` Jason Wang
2015-09-22  8:07     ` Yang Hongyang
2015-09-22  8:32       ` Jason Wang
2015-09-22  8:43         ` Yang Hongyang
2015-09-22  9:30           ` Jason Wang
2015-09-22  9:47             ` Yang Hongyang
2015-09-22  7:39 ` [Qemu-devel] [PATCH v11 00/12] Add a netfilter object and netbuffer filter Jason Wang
2015-09-22  7:59   ` Yang Hongyang
2015-09-24  4:22 ` Jason Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=560106C2.5080607@cn.fujitsu.com \
    --to=yanghy@cn.fujitsu.com \
    --cc=armbru@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=lizhijian@cn.fujitsu.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=thuth@redhat.com \
    --cc=zhang.zhanghailiang@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.