net/ice/base: add NVM pkg flag
[dpdk.git] / drivers / net / ice / base / ice_bitops.h
index f527130..a3a67eb 100644 (file)
@@ -147,22 +147,15 @@ ice_test_and_set_bit(u16 nr, ice_bitmap_t *bitmap)
  * @bmp: bitmap to set zeros
  * @size: Size of the bitmaps in bits
  *
- * This function sets bits of a bitmap to zero.
+ * Set all of the bits in a bitmap to zero. Note that this function assumes it
+ * operates on an ice_bitmap_t which was declared using ice_declare_bitmap. It
+ * will zero every bit in the last chunk, even if those bits are beyond the
+ * size.
  */
 static inline void ice_zero_bitmap(ice_bitmap_t *bmp, u16 size)
 {
-       ice_bitmap_t mask;
-       u16 i;
-
-       /* Handle all but last chunk*/
-       for (i = 0; i < BITS_TO_CHUNKS(size) - 1; i++)
-               bmp[i] = 0;
-       /* For the last chunk, we want to take care of not to modify bits
-        * outside the size boundary. ~mask take care of all the bits outside
-        * the boundary.
-        */
-       mask = LAST_CHUNK_MASK(size);
-       bmp[i] &= ~mask;
+       ice_memset(bmp, 0, BITS_TO_CHUNKS(size) * sizeof(ice_bitmap_t),
+                  ICE_NONDMA_MEM);
 }
 
 /**
@@ -198,8 +191,7 @@ ice_and_bitmap(ice_bitmap_t *dst, const ice_bitmap_t *bmp1,
         * size value alone.
         */
        mask = LAST_CHUNK_MASK(size);
-       dst[i] &= ~mask;
-       dst[i] |= (bmp1[i] & bmp2[i]) & mask;
+       dst[i] = (dst[i] & ~mask) | ((bmp1[i] & bmp2[i]) & mask);
        res |= dst[i] & mask;
 
        return res != 0;
@@ -233,8 +225,7 @@ ice_or_bitmap(ice_bitmap_t *dst, const ice_bitmap_t *bmp1,
         * within the specified size.
         */
        mask = LAST_CHUNK_MASK(size);
-       dst[i] &= ~mask;
-       dst[i] |= (bmp1[i] | bmp2[i]) & mask;
+       dst[i] = (dst[i] & ~mask) | ((bmp1[i] | bmp2[i]) & mask);
 }
 
 /**
@@ -313,21 +304,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);
 }
 
 /**