diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/scatterlist.h | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index d5e1876daf3f..259735044148 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h | |||
| @@ -188,21 +188,23 @@ static inline void sg_chain(struct scatterlist *prv, unsigned int prv_nents, | |||
| 188 | 188 | ||
| 189 | /** | 189 | /** |
| 190 | * sg_mark_end - Mark the end of the scatterlist | 190 | * sg_mark_end - Mark the end of the scatterlist |
| 191 | * @sgl: Scatterlist | 191 | * @sg: SG entryScatterlist |
| 192 | * @nents: Number of entries in sgl | ||
| 193 | * | 192 | * |
| 194 | * Description: | 193 | * Description: |
| 195 | * Marks the last entry as the termination point for sg_next() | 194 | * Marks the passed in sg entry as the termination point for the sg |
| 195 | * table. A call to sg_next() on this entry will return NULL. | ||
| 196 | * | 196 | * |
| 197 | **/ | 197 | **/ |
| 198 | static inline void sg_mark_end(struct scatterlist *sgl, unsigned int nents) | 198 | static inline void sg_mark_end(struct scatterlist *sg) |
| 199 | { | ||
| 200 | sgl[nents - 1].page_link = 0x02; | ||
| 201 | } | ||
| 202 | |||
| 203 | static inline void __sg_mark_end(struct scatterlist *sg) | ||
| 204 | { | 199 | { |
| 200 | #ifdef CONFIG_DEBUG_SG | ||
| 201 | BUG_ON(sg->sg_magic != SG_MAGIC); | ||
| 202 | #endif | ||
| 203 | /* | ||
| 204 | * Set termination bit, clear potential chain bit | ||
| 205 | */ | ||
| 205 | sg->page_link |= 0x02; | 206 | sg->page_link |= 0x02; |
| 207 | sg->page_link &= ~0x01; | ||
| 206 | } | 208 | } |
| 207 | 209 | ||
| 208 | /** | 210 | /** |
| @@ -218,7 +220,6 @@ static inline void __sg_mark_end(struct scatterlist *sg) | |||
| 218 | static inline void sg_init_table(struct scatterlist *sgl, unsigned int nents) | 220 | static inline void sg_init_table(struct scatterlist *sgl, unsigned int nents) |
| 219 | { | 221 | { |
| 220 | memset(sgl, 0, sizeof(*sgl) * nents); | 222 | memset(sgl, 0, sizeof(*sgl) * nents); |
| 221 | sg_mark_end(sgl, nents); | ||
| 222 | #ifdef CONFIG_DEBUG_SG | 223 | #ifdef CONFIG_DEBUG_SG |
| 223 | { | 224 | { |
| 224 | unsigned int i; | 225 | unsigned int i; |
| @@ -226,6 +227,7 @@ static inline void sg_init_table(struct scatterlist *sgl, unsigned int nents) | |||
| 226 | sgl[i].sg_magic = SG_MAGIC; | 227 | sgl[i].sg_magic = SG_MAGIC; |
| 227 | } | 228 | } |
| 228 | #endif | 229 | #endif |
| 230 | sg_mark_end(&sgl[nents - 1]); | ||
| 229 | } | 231 | } |
| 230 | 232 | ||
| 231 | /** | 233 | /** |
