>> + >> +#define XX(a) case (a): return #a > > please no macros with retun in them and XX isn't quite too descriptive as > well. > > [...] > >> +static inline const char *ib_wc_opcode_str(enum ib_wc_opcode opcode) >> +{ >> + switch (opcode) { >> + XX(IB_WC_SEND); >> + XX(IB_WC_RDMA_WRITE); >> + XX(IB_WC_RDMA_READ); >> + XX(IB_WC_COMP_SWAP); >> + XX(IB_WC_FETCH_ADD); >> + /* recv-side); inbound completion */ >> + XX(IB_WC_RECV); >> + XX(IB_WC_RECV_RDMA_WITH_IMM); >> + default: return "IB_WC_OPCODE_UNKNOWN"; >> + } >> +} > > How about: > > struct { > char *name; > enum ib_wc_opcode opcode; > } ib_wc_opcode_table[] = { > { stringyfy(IB_WC_SEND), IB_WC_SEND }, > { stringyfy(IB_WC_RDMA_WRITE), IB_WC_RDMA_WRITE }, > { stringyfy(IB_WC_RDMA_READ ), IB_WC_RDMA_READ } > { stringyfy(IB_WC_COMP_SWAP), IB_WC_COMP_SWAP }, > { stringyfy(IB_WC_FETCH_ADD), IB_WC_FETCH_ADD }, > { stringyfy(IB_WC_RECV), IB_WC_RECV }, > { stringyfy(IB_WC_RECV_RDMA_WITH_IMM), IB_WC_RECV_RDMA_WITH_IMM }, > { NULL, 0 }, > }; > > static inline const char *ib_wc_opcode_str(enum ib_wc_opcode opcode) > { > int i; > > for (i = 0; i < ARRAY_SIZE(ib_wc_opcode_table); i++) > if (ib_wc_opcode_table[i].opcode == opcode) > return ib_wc_opcode_table[i].name; > > return "IB_WC_OPCODE_UNKNOWN"; > } > Looks nice, might be better to put it into ib_verbs.h? > > [...] > >> +/** >> + * struct ibtrs_msg_hdr - Common header of all IBTRS messages >> + * @type: Message type, valid values see: enum ibtrs_msg_types >> + * @tsize: Total size of transferred data >> + * >> + * Don't move the first 8 padding bytes! It's a workaround for a kernel bug. >> + * See IBNBD-610 for details > > What about resolving the kernel bug instead of making workarounds? I tried to send a patch upsteam, but was rejected by Sean. http://www.spinics.net/lists/linux-rdma/msg22381.html > >> + * >> + * DO NOT CHANGE! >> + */ >> +struct ibtrs_msg_hdr { >> + u8 __padding1; >> + u8 type; >> + u16 __padding2; >> + u32 tsize; >> +}; > > [...] > > -- > Johannes Thumshirn Storage > jthumshirn@xxxxxxx +49 911 74053 689 > SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg > GF: Felix Imendörffer, Jane Smithard, Graham Norton > HRB 21284 (AG Nürnberg) > Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850 Thanks Johannes for review. -- Jack Wang Linux Kernel Developer ProfitBricks GmbH Greifswalder Str. 207 D - 10405 Berlin Tel: +49 30 577 008 042 Fax: +49 30 577 008 299 Email: jinpu.wang@xxxxxxxxxxxxxxxx URL: https://www.profitbricks.de Sitz der Gesellschaft: Berlin Registergericht: Amtsgericht Charlottenburg, HRB 125506 B Geschäftsführer: Achim Weiss -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html