On Thu, Jan 12, 2012 at 12:41 PM, Dan Carpenter <[email protected]> wrote: > Sparse complains because len in struct srp_direct_buf is declared as > big endian but it's used throughout as CPU endian. struct > srp_indirect_buf has the same thing. It's declared one way but used the > other way. > > $ grep -w len drivers/scsi -R | grep -w md > drivers/scsi/ibmvscsi/ibmvfc.c: md[i].len = sg_dma_len(sg); > drivers/scsi/ibmvscsi/ibmvstgt.c: mlen = min(rest, md[i].len); > drivers/scsi/libsrp.c: md->len, scsi_sg_count(sc)); > drivers/scsi/libsrp.c: len = min(scsi_bufflen(sc), md->len); > drivers/scsi/libsrp.c: len = md->len; > drivers/scsi/libsrp.c: err = rdma_io(sc, sg, nsg, md, 1, dir, len); > drivers/scsi/libsrp.c: md = dma_alloc_coherent(iue->target->dev, > id->table_desc.len, > drivers/scsi/libsrp.c: sg_init_one(&dummy, md, id->table_desc.len); > drivers/scsi/libsrp.c: err = rdma_io(sc, sg, nsg, md, nmd, dir, len); > drivers/scsi/libsrp.c: dma_free_coherent(iue->target->dev, > id->table_desc.len, md, token); > drivers/scsi/libsrp.c: len = md->len; > > Probably we should just change the declaration to u32?
(resending as plain text) No. The SRP spec says that that field is big endian and the ib_srp driver uses that field as a big endian field. The output above (libsrp + ibmvstgt) is code that is used by the ibmvstgt driver only, and the reason that driver works fine without endianness conversion is because it is only used on PowerPC systems. Bart. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
