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
next prev parent 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).