Commit 5e6c7ccd authored by Christophe JAILLET's avatar Christophe JAILLET Committed by David S. Miller

qed: Use the bitmap API to simplify some functions

'cid_map' is a bitmap. So use 'bitmap_zalloc()' to simplify code,
improve the semantic and avoid some open-coded arithmetic in allocator
arguments.

Also change the corresponding 'kfree()' into 'bitmap_free()' to keep
consistency.

Also change some 'memset()' into 'bitmap_zero()' to keep consistency. This
is also much less verbose.
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 08a7abf4
...@@ -1036,12 +1036,12 @@ static void qed_cid_map_free(struct qed_hwfn *p_hwfn) ...@@ -1036,12 +1036,12 @@ static void qed_cid_map_free(struct qed_hwfn *p_hwfn)
u32 type, vf; u32 type, vf;
for (type = 0; type < MAX_CONN_TYPES; type++) { for (type = 0; type < MAX_CONN_TYPES; type++) {
kfree(p_mngr->acquired[type].cid_map); bitmap_free(p_mngr->acquired[type].cid_map);
p_mngr->acquired[type].max_count = 0; p_mngr->acquired[type].max_count = 0;
p_mngr->acquired[type].start_cid = 0; p_mngr->acquired[type].start_cid = 0;
for (vf = 0; vf < MAX_NUM_VFS; vf++) { for (vf = 0; vf < MAX_NUM_VFS; vf++) {
kfree(p_mngr->acquired_vf[type][vf].cid_map); bitmap_free(p_mngr->acquired_vf[type][vf].cid_map);
p_mngr->acquired_vf[type][vf].max_count = 0; p_mngr->acquired_vf[type][vf].max_count = 0;
p_mngr->acquired_vf[type][vf].start_cid = 0; p_mngr->acquired_vf[type][vf].start_cid = 0;
} }
...@@ -1054,15 +1054,10 @@ qed_cid_map_alloc_single(struct qed_hwfn *p_hwfn, ...@@ -1054,15 +1054,10 @@ qed_cid_map_alloc_single(struct qed_hwfn *p_hwfn,
u32 cid_start, u32 cid_start,
u32 cid_count, struct qed_cid_acquired_map *p_map) u32 cid_count, struct qed_cid_acquired_map *p_map)
{ {
u32 size;
if (!cid_count) if (!cid_count)
return 0; return 0;
size = DIV_ROUND_UP(cid_count, p_map->cid_map = bitmap_zalloc(cid_count, GFP_KERNEL);
sizeof(unsigned long) * BITS_PER_BYTE) *
sizeof(unsigned long);
p_map->cid_map = kzalloc(size, GFP_KERNEL);
if (!p_map->cid_map) if (!p_map->cid_map)
return -ENOMEM; return -ENOMEM;
...@@ -1216,7 +1211,6 @@ void qed_cxt_mngr_setup(struct qed_hwfn *p_hwfn) ...@@ -1216,7 +1211,6 @@ void qed_cxt_mngr_setup(struct qed_hwfn *p_hwfn)
struct qed_cid_acquired_map *p_map; struct qed_cid_acquired_map *p_map;
struct qed_conn_type_cfg *p_cfg; struct qed_conn_type_cfg *p_cfg;
int type; int type;
u32 len;
/* Reset acquired cids */ /* Reset acquired cids */
for (type = 0; type < MAX_CONN_TYPES; type++) { for (type = 0; type < MAX_CONN_TYPES; type++) {
...@@ -1225,11 +1219,7 @@ void qed_cxt_mngr_setup(struct qed_hwfn *p_hwfn) ...@@ -1225,11 +1219,7 @@ void qed_cxt_mngr_setup(struct qed_hwfn *p_hwfn)
p_cfg = &p_mngr->conn_cfg[type]; p_cfg = &p_mngr->conn_cfg[type];
if (p_cfg->cid_count) { if (p_cfg->cid_count) {
p_map = &p_mngr->acquired[type]; p_map = &p_mngr->acquired[type];
len = DIV_ROUND_UP(p_map->max_count, bitmap_zero(p_map->cid_map, p_map->max_count);
sizeof(unsigned long) *
BITS_PER_BYTE) *
sizeof(unsigned long);
memset(p_map->cid_map, 0, len);
} }
if (!p_cfg->cids_per_vf) if (!p_cfg->cids_per_vf)
...@@ -1237,11 +1227,7 @@ void qed_cxt_mngr_setup(struct qed_hwfn *p_hwfn) ...@@ -1237,11 +1227,7 @@ void qed_cxt_mngr_setup(struct qed_hwfn *p_hwfn)
for (vf = 0; vf < MAX_NUM_VFS; vf++) { for (vf = 0; vf < MAX_NUM_VFS; vf++) {
p_map = &p_mngr->acquired_vf[type][vf]; p_map = &p_mngr->acquired_vf[type][vf];
len = DIV_ROUND_UP(p_map->max_count, bitmap_zero(p_map->cid_map, p_map->max_count);
sizeof(unsigned long) *
BITS_PER_BYTE) *
sizeof(unsigned long);
memset(p_map->cid_map, 0, len);
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment