33 lines · c
1#ifndef _QLA_DSD_H_2#define _QLA_DSD_H_3 4#include <linux/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), &(*dsd)->address);15 put_unaligned_le32(sg_dma_len(sg), &(*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), &(*dsd)->address);28 put_unaligned_le32(sg_dma_len(sg), &(*dsd)->length);29 (*dsd)++;30}31 32#endif33