I think the endianness conversions are necessary, otherwise, the hash function return value will be host endianness dependent.
For example, what should rte_hash_xor32(/*data*/ &{0x00, 0x01, 0x02, 0x03}, /*data_len*/ 4, /*init_val*/ 0x0) return? With the current implementation, it returns 0x00010203 consistently. If we remove the endianness conversions, it will return 0x00010203 on big-endian hosts and 0x03020100 on little-endian hosts. Please correct me but I don't think that's the expected behavior.