Hi,

All comments are accepted :)


Regards,
-Gonglei


> -----Original Message-----
> From: Daniel P. Berrange [mailto:berra...@redhat.com]
> Sent: Tuesday, September 13, 2016 5:21 PM
> To: Gonglei (Arei)
> Cc: qemu-devel@nongnu.org; virtio-...@lists.oasis-open.org; Huangpeng
> (Peter); Luonengjun; m...@redhat.com; stefa...@redhat.com;
> pbonz...@redhat.com; Huangweidong (C); mike.cara...@nxp.com;
> ag...@suse.de; xin.z...@intel.com; Claudio Fontana; nmo...@kalray.eu;
> vincent.jar...@6wind.com
> Subject: Re: [PATCH v2 02/15] crypto: introduce crypto queue handler
> 
> On Tue, Sep 13, 2016 at 11:52:08AM +0800, Gonglei wrote:
> > crypto queue is a gallery used for executing crypto
> > operation, which supports both synchronization and
> > asynchronization. The thoughts stolen from net/queue.c
> >
> > Signed-off-by: Gonglei <arei.gong...@huawei.com>
> > ---
> >  crypto/Makefile.objs          |   1 +
> >  crypto/crypto-queue.c         | 206
> ++++++++++++++++++++++++++++++++++++++++++
> >  crypto/crypto.c               |  28 ++++++
> >  include/crypto/crypto-queue.h |  69 ++++++++++++++
> >  include/crypto/crypto.h       |  12 +++
> >  5 files changed, 316 insertions(+)
> >  create mode 100644 crypto/crypto-queue.c
> >  create mode 100644 include/crypto/crypto-queue.h
> >
> 
> > diff --git a/include/crypto/crypto-queue.h b/include/crypto/crypto-queue.h
> > new file mode 100644
> > index 0000000..6fba64d
> > --- /dev/null
> > +++ b/include/crypto/crypto-queue.h
> > @@ -0,0 +1,69 @@
> > +/*
> > + * Copyright (c) 2003-2008 Fabrice Bellard
> > + * Copyright (c) 2016 HUAWEI TECHNOLOGIES CO., LTD.
> > + *
> > + * Authors:
> > + *    Gonglei <arei.gong...@huawei.com>
> > + *
> > + * Permission is hereby granted, free of charge, to any person obtaining a
> copy
> > + * of this software and associated documentation files (the "Software"), to
> deal
> > + * in the Software without restriction, including without limitation the 
> > rights
> > + * to use, copy, modify, merge, publish, distribute, sublicense, and/or 
> > sell
> > + * copies of the Software, and to permit persons to whom the Software is
> > + * furnished to do so, subject to the following conditions:
> > + *
> > + * The above copyright notice and this permission notice shall be included 
> > in
> > + * all copies or substantial portions of the Software.
> > + *
> > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR
> > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY,
> > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
> EVENT SHALL
> > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
> DAMAGES OR OTHER
> > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> ARISING FROM,
> > + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> OTHER DEALINGS IN
> > + * THE SOFTWARE.
> > + */
> 
> Again, wrong license header.
> 
> > +#ifndef QEMU_CRYPTO_QUEUE_H
> > +#define QEMU_CRYPTO_QUEUE_H
> > +
> > +#include "qemu-common.h"
> > +
> > +typedef struct CryptoPacket CryptoPacket;
> > +typedef struct CryptoQueue CryptoQueue;
> > +typedef struct CryptoPacketBuf CryptoPacketBuf;
> > +
> > +typedef void (CryptoPacketSent) (CryptoClientState *, int);
> 
> As previously, I'd expect naming of
> 
>  QCryptoCryptodevPacket
>  QCryptoCryptodevPacketBuf
>  QCryptoCryptodevQueue
> 
> > +
> > +
> > +/* Returns:
> > + *   >0 - success
> > + *    0 - queue packet for future redelivery
> > + *   <0 - failure (discard packet)
> > + */
> > +typedef int (CryptoQueueDeliverFunc)(CryptoClientState *sender,
> > +                                     unsigned flags,
> > +                                     void *header_opaque,
> > +                                     void *opaque);
> > +
> > +CryptoQueue *
> > +qemu_new_crypto_queue(CryptoQueueDeliverFunc *deliver, void *opaque);
> > +
> > +void qemu_crypto_queue_cache(CryptoQueue *queue,
> > +                               unsigned flags,
> > +                               CryptoClientState *sender,
> > +                               void *opaque,
> > +                               CryptoPacketSent *sent_cb);
> > +
> > +void qemu_del_crypto_queue(CryptoQueue *queue);
> > +
> > +int qemu_crypto_queue_send(CryptoQueue *queue,
> > +                                unsigned flags,
> > +                                CryptoClientState *sender,
> > +                                void *opaque,
> > +                                CryptoPacketSent *sent_cb);
> > +
> > +void qemu_crypto_queue_purge(CryptoQueue *queue, CryptoClientState
> *from);
> > +bool qemu_crypto_queue_flush(CryptoQueue *queue);
> 
> And naming of
> 
>   qcrypto_cryptodev_queue_purge
>   qcrypto_cryptodev_queue_flush
>   etc.
> 
> Also missing docs for this file
> 
> > +#endif /* QEMU_CRYPTO_QUEUE_H */
> > diff --git a/include/crypto/crypto.h b/include/crypto/crypto.h
> > index f93f6f9..46b3b9e 100644
> > --- a/include/crypto/crypto.h
> > +++ b/include/crypto/crypto.h
> > @@ -29,6 +29,8 @@
> >
> >  #include "qemu/queue.h"
> >  #include "qapi-types.h"
> > +#include "crypto/crypto-queue.h"
> > +
> >
> >  typedef void (CryptoPoll)(CryptoClientState *, bool);
> >  typedef void (CryptoCleanup) (CryptoClientState *);
> > @@ -52,6 +54,8 @@ struct CryptoClientState {
> >      char *model;
> >      char *name;
> >      char info_str[256];
> > +    CryptoQueue *incoming_queue;
> > +    unsigned int queue_index;
> >      CryptoClientDestructor *destructor;
> >  };
> >
> > @@ -62,5 +66,13 @@ CryptoClientState
> *new_crypto_client(CryptoClientInfo *info,
> >                                      CryptoClientState *peer,
> >                                      const char *model,
> >                                      const char *name);
> > +int qemu_deliver_crypto_packet(CryptoClientState *sender,
> > +                              unsigned flags,
> > +                              void *header_opqaue,
> > +                              void *opaque);
> > +int qemu_send_crypto_packet_async(CryptoClientState *sender,
> > +                                unsigned flags,
> > +                                void *opaque,
> > +                                CryptoPacketSent *sent_cb);
> 
> Missing docs for these API additions.
> 
> 
> Regards,
> Daniel
> --
> |: http://berrange.com      -o-
> http://www.flickr.com/photos/dberrange/ :|
> |: http://libvirt.org              -o-
> http://virt-manager.org :|
> |: http://autobuild.org       -o-
> http://search.cpan.org/~danberr/ :|
> |: http://entangle-photo.org       -o-
> http://live.gnome.org/gtk-vnc :|

Reply via email to