| #ifndef _QLA_DSD_H_ | 
 | #define _QLA_DSD_H_ | 
 |  | 
 | #include <linux/unaligned.h> | 
 |  | 
 | /* 32-bit data segment descriptor (8 bytes) */ | 
 | struct dsd32 { | 
 | 	__le32 address; | 
 | 	__le32 length; | 
 | }; | 
 |  | 
 | static inline void append_dsd32(struct dsd32 **dsd, struct scatterlist *sg) | 
 | { | 
 | 	put_unaligned_le32(sg_dma_address(sg), &(*dsd)->address); | 
 | 	put_unaligned_le32(sg_dma_len(sg),     &(*dsd)->length); | 
 | 	(*dsd)++; | 
 | } | 
 |  | 
 | /* 64-bit data segment descriptor (12 bytes) */ | 
 | struct dsd64 { | 
 | 	__le64 address; | 
 | 	__le32 length; | 
 | } __packed; | 
 |  | 
 | static inline void append_dsd64(struct dsd64 **dsd, struct scatterlist *sg) | 
 | { | 
 | 	put_unaligned_le64(sg_dma_address(sg), &(*dsd)->address); | 
 | 	put_unaligned_le32(sg_dma_len(sg),     &(*dsd)->length); | 
 | 	(*dsd)++; | 
 | } | 
 |  | 
 | #endif |