1#ifndef _QLA_DSD_H_
2#define _QLA_DSD_H_
3
4#include <asm/unaligned.h>
5
6/* 32-bit data segment descriptor (8 bytes) */
7struct dsd32 {
8 __le32 address;
9 __le32 length;
10};
11
12static inline void append_dsd32(struct dsd32 **dsd, struct scatterlist *sg)
13{
14 put_unaligned_le32(sg_dma_address(sg), p: &(*dsd)->address);
15 put_unaligned_le32(sg_dma_len(sg), p: &(*dsd)->length);
16 (*dsd)++;
17}
18
19/* 64-bit data segment descriptor (12 bytes) */
20struct dsd64 {
21 __le64 address;
22 __le32 length;
23} __packed;
24
25static inline void append_dsd64(struct dsd64 **dsd, struct scatterlist *sg)
26{
27 put_unaligned_le64(sg_dma_address(sg), p: &(*dsd)->address);
28 put_unaligned_le32(sg_dma_len(sg), p: &(*dsd)->length);
29 (*dsd)++;
30}
31
32#endif
33

source code of linux/drivers/scsi/qla2xxx/qla_dsd.h