33 lines
		
	
	
		
			702 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			702 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _QLA_DSD_H_
 | |
| #define _QLA_DSD_H_
 | |
| 
 | |
| #include <asm/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
 |