net/ice/base: fix copying bitmap
Fix ice_cp_bitmap to copy the entire storage. Fixes: c9e37832c95f ("net/ice/base: rework on bit ops") Cc: stable@dpdk.org Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com> Signed-off-by: Leyi Rong <leyi.rong@intel.com> Acked-by: Qi Zhang <qi.z.zhang@intel.com>
This commit is contained in:
parent
6567f9d59a
commit
2c3d02ca80
@ -306,21 +306,14 @@ static inline bool ice_is_any_bit_set(ice_bitmap_t *bitmap, u16 size)
|
||||
* @src: bitmap to copy from
|
||||
* @size: Size of the bitmaps in bits
|
||||
*
|
||||
* This function copy bitmap from src to dst.
|
||||
* This function copy bitmap from src to dst. Note that this function assumes
|
||||
* it is operating on a bitmap declared using ice_declare_bitmap. It will copy
|
||||
* the entire last chunk even if this contains bits beyond the size.
|
||||
*/
|
||||
static inline void ice_cp_bitmap(ice_bitmap_t *dst, ice_bitmap_t *src, u16 size)
|
||||
{
|
||||
ice_bitmap_t mask;
|
||||
u16 i;
|
||||
|
||||
/* Handle all but last chunk*/
|
||||
for (i = 0; i < BITS_TO_CHUNKS(size) - 1; i++)
|
||||
dst[i] = src[i];
|
||||
|
||||
/* We want to only copy bits within the size.*/
|
||||
mask = LAST_CHUNK_MASK(size);
|
||||
dst[i] &= ~mask;
|
||||
dst[i] |= src[i] & mask;
|
||||
ice_memcpy(dst, src, BITS_TO_CHUNKS(size) * sizeof(ice_bitmap_t),
|
||||
ICE_NONDMA_TO_NONDMA);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user