All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jes Sorensen <Jes.Sorensen@redhat.com>
To: Alon Levy <alevy@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 1/7] usb-ccid: add CCID bus
Date: Wed, 16 Mar 2011 10:26:30 +0100	[thread overview]
Message-ID: <4D808246.8030704@redhat.com> (raw)
In-Reply-To: <20110316091551.GC7413@playa.tlv.redhat.com>

On 03/16/11 10:15, Alon Levy wrote:
> On Mon, Mar 14, 2011 at 02:54:59PM +0100, Jes Sorensen wrote:
>>> +typedef struct __attribute__ ((__packed__)) CCID_Header {
>>> +    uint8_t     bMessageType;
>>> +    uint32_t    dwLength;
>>> +    uint8_t     bSlot;
>>> +    uint8_t     bSeq;
>>> +} CCID_Header;
>>
>> Is this header decided upon by the CCID spec or the code? It seems
>> suboptimal to have a uint8 in front of a uint32 like that. Inefficient
>> structure alignment :(
>>
> 
> In the spec.

I was afraid of that, clearly a spec written by the people doing the
wire protocol, without considering the software aspects.

>>> +/**
>>> + * powered - defaults to true, changed by PowerOn/PowerOff messages
>>> + */
>>> +struct USBCCIDState {
>>> +    USBDevice dev;
>>> +    CCIDBus *bus;
>>> +    CCIDCardState *card;
>>> +    CCIDCardInfo *cardinfo; /* caching the info pointer */
>>> +    uint8_t  debug;
>>> +    BulkIn bulk_in_pending[BULK_IN_PENDING_NUM]; /* circular */
>>> +    uint32_t bulk_in_pending_start;
>>> +    uint32_t bulk_in_pending_end; /* first free */
>>> +    uint32_t bulk_in_pending_num;
>>> +    BulkIn *current_bulk_in;
>>> +    uint8_t  bulk_out_data[BULK_OUT_DATA_SIZE];
>>> +    uint32_t bulk_out_pos;
>>> +    uint8_t  bmSlotICCState;
>>> +    uint8_t  powered;
>>> +    uint8_t  notify_slot_change;
>>> +    uint64_t last_answer_error;
>>> +    Answer pending_answers[PENDING_ANSWERS_NUM];
>>> +    uint32_t pending_answers_start;
>>> +    uint32_t pending_answers_end;
>>> +    uint32_t pending_answers_num;
>>> +    uint8_t  bError;
>>> +    uint8_t  bmCommandStatus;
>>> +    uint8_t  bProtocolNum;
>>> +    uint8_t  abProtocolDataStructure[MAX_PROTOCOL_SIZE];
>>> +    uint32_t ulProtocolDataStructureSize;
>>> +    uint32_t state_vmstate;
>>> +    uint8_t  migration_state;
>>> +    uint32_t migration_target_ip;
>>> +    uint16_t migration_target_port;
>>> +};
>>
>> Try to place  the struct elements a little better so you don't end up
>> with a lot of space wasted due to natural alignment by the compiler.
>>
> 
> ok, this one's me. I'm really not sure except for stuff that goes on the wire
> or get's allocated a bazillion times that this is worth the change in general,
> but since I'm respinning anyway I'll do it. (unless you're saying it should be
> a habit).

If it is a one-off allocation, it's really not a big deal, but it is a
good thing to keep in mind. In particular on non-x86 64 bit entities are
normally 64 bit aligned.

>>> +static void ccid_bulk_in_get(USBCCIDState *s)
>>> +{
>>> +    if (s->current_bulk_in != NULL || s->bulk_in_pending_num == 0) {
>>> +        return;
>>> +    }
>>> +    assert(s->bulk_in_pending_num > 0);
>>> +    s->bulk_in_pending_num--;
>>> +    s->current_bulk_in = &s->bulk_in_pending[
>>> +        (s->bulk_in_pending_start++) % BULK_IN_PENDING_NUM];
>>
>> That line break is really not good :( Either break it after the '=' or
>> calculate the index outside the assignment statement.
> 
> ok, after the =, but then I think the rest is >80, so it will neccessitate another
> break.

If it was my code, I would calculate the index on the previous line in a
tmp variable. It is a matter of personal preference of course.

>>> +static void ccid_write_data_block(
>>> +    USBCCIDState *s, uint8_t slot, uint8_t seq,
>>> +    const uint8_t *data, uint32_t len)
>>
>> Please fix this - keep some arguments on the first line, and align the
>> following ones to match.
> 
> Is that a coding style thing I missed or personal preferance? my personal preferance
> here is the way it is, since it looks shorter/more readable, but I don't care that
> much.

It is not written down :(, but it is common practice. I raise the issue
exactly because it is much more readable the other way :)

>>
>>> +/* handle a single USB_TOKEN_OUT, return value returned to guest.
>>> + * 0 - all ok
>>> + * USB_RET_STALL - failed to handle packet */
>>
>> another badly formatted comment
>>
> fixing them all.

Excellent!

>>> +void ccid_card_card_error(CCIDCardState *card, uint64_t error)
>>> +{
>>> +    USBCCIDState *s =
>>> +        DO_UPCAST(USBCCIDState, dev.qdev, card->qdev.parent_bus->parent);
>>> +
>>> +    s->bmCommandStatus = COMMAND_STATUS_FAILED;
>>> +    s->last_answer_error = error;
>>> +    DPRINTF(s, 1, "VSC_Error: %lX\n", s->last_answer_error);
>>> +    /* TODO: these error's should be more verbose and propogated to the guest.
>>> +     * */
>>> +    /* we flush all pending answers on CardRemove message in ccid-card-passthru,
>>> +     * so check that first to not trigger abort */
>>
>> !!! there's more below.
> ? more badly formated comments? more todos? more flushing?

Comments yeah. It doesn't affect the code, but for a new patch it really
is better to get it straightened before it goes upstream.

Cheers,
Jes

  reply	other threads:[~2011-03-16  9:27 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-23 11:20 [Qemu-devel] [PATCH v20 0/7] usb-ccid Alon Levy
2011-02-23 11:20 ` [Qemu-devel] [PATCH 1/7] usb-ccid: add CCID bus Alon Levy
2011-03-14 13:54   ` Jes Sorensen
2011-03-14 14:07     ` Daniel P. Berrange
2011-03-14 14:12       ` Anthony Liguori
2011-03-16  9:15     ` Alon Levy
2011-03-16  9:26       ` Jes Sorensen [this message]
2011-02-23 11:20 ` [Qemu-devel] [PATCH 2/7] introduce libcacard/vscard_common.h Alon Levy
2011-03-14 14:01   ` Jes Sorensen
2011-03-14 14:51     ` Alon Levy
2011-03-14 14:52     ` Alon Levy
2011-03-14 15:50       ` Jes Sorensen
2011-03-14 16:31         ` Alon Levy
2011-02-23 11:20 ` [Qemu-devel] [PATCH 3/7] ccid: add passthru card device Alon Levy
2011-03-14 14:04   ` Jes Sorensen
2011-03-14 14:53     ` Alon Levy
2011-03-14 15:51       ` Jes Sorensen
2011-02-23 11:20 ` [Qemu-devel] [PATCH 4/7] libcacard: initial commit Alon Levy
2011-03-14 15:20   ` Jes Sorensen
2011-03-14 16:40     ` Alon Levy
2011-03-15 12:42       ` Jes Sorensen
2011-03-15 13:14         ` Alon Levy
2011-03-15 13:40           ` Jes Sorensen
2011-03-15 14:09             ` Alon Levy
2011-03-15 13:45           ` Anthony Liguori
2011-03-15 14:23             ` Alon Levy
2011-03-16  8:23               ` Jes Sorensen
2011-03-16  8:40                 ` Alon Levy
2011-03-16  8:42                   ` Jes Sorensen
2011-03-15 13:44         ` Anthony Liguori
2011-03-15 14:25           ` Alon Levy
2011-03-15 14:51             ` Jes Sorensen
2011-03-15 14:56               ` Anthony Liguori
2011-03-15 14:59                 ` Jes Sorensen
2011-03-15 15:14                   ` Alon Levy
2011-03-16  8:26                     ` Jes Sorensen
2011-03-15 14:55             ` Anthony Liguori
2011-03-17 13:36     ` Alon Levy
2011-02-23 11:20 ` [Qemu-devel] [PATCH 5/7] ccid: add ccid-card-emulated device Alon Levy
2011-03-14 15:41   ` Jes Sorensen
2011-03-14 16:44     ` Alon Levy
2011-03-14 17:11       ` Jes Sorensen
2011-03-17 10:54     ` Alon Levy
2011-03-17 10:59       ` Alon Levy
2011-03-17 14:25       ` Jes Sorensen
2011-02-23 11:20 ` [Qemu-devel] [PATCH 6/7] ccid: add docs Alon Levy
2011-03-14 15:41   ` Jes Sorensen
2011-02-23 11:20 ` [Qemu-devel] [PATCH 7/7] ccid: configure: improve --enable-smartcard flags Alon Levy
2011-03-14 15:44   ` Jes Sorensen
2011-03-06 10:50 ` [Qemu-devel] [PATCH v20 0/7] usb-ccid Alon Levy
  -- strict thread matches above, loose matches on Subject: below --
2011-02-07 16:34 [Qemu-devel] [PATCH 0/7] usb-ccid (v19) Alon Levy
2011-02-07 16:34 ` [Qemu-devel] [PATCH 1/7] usb-ccid: add CCID bus Alon Levy
2011-02-22 16:03   ` Anthony Liguori
2011-02-23 15:10     ` Alon Levy
2011-01-11  8:42 [Qemu-devel] [PATCH 0/7] usb-ccid (v15) Alon Levy
2011-01-11  8:42 ` [Qemu-devel] [PATCH 1/7] usb-ccid: add CCID bus Alon Levy
2011-01-11  8:38 [Qemu-devel] [PATCH 0/7] usb-ccid (v14) Alon Levy
2011-01-11  8:38 ` [Qemu-devel] [PATCH 1/7] usb-ccid: add CCID bus Alon Levy
2011-01-25 14:10   ` Anthony Liguori
2011-01-25 16:10     ` Alon Levy

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=4D808246.8030704@redhat.com \
    --to=jes.sorensen@redhat.com \
    --cc=alevy@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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.