Example: > - if (rmpp_recv->slid == ah_attr.dlid) { > + if (rmpp_recv->slid == (u16)ah_attr.dlid) { > struct ib_ah_attr { > struct ib_global_route grh; > - u16 dlid; > + u32 dlid; There are a bunch of places where the lid is simply cast back to a u16. How is the code supposed to determine if a u16 cast is a safe operation or not? I don’t like the overloading of the term 'lid' to sometimes mean a 16-bit value and other times a 32-bit value, with no way of distinguishing which one we have. Maybe we need to call out a version (lidv2 = 32-bits) or carry the size. I don't have a strong idea here. But when looking at this patch, lid is re-defined to u32, then nearly everywhere cast back to u16, which looks questionable. - Sean -- 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