#include "mp_precomp.h"
 #include "phydm_precomp.h"
+#include <linux/kernel.h>
 
 bool phydm_api_set_txagc(struct phy_dm_struct *, u32, enum odm_rf_radio_path,
                         u8, bool);
 
        /* Parsing Cmd ID */
        if (input_num) {
-               phydm_ary_size =
-                       sizeof(phy_dm_ary) / sizeof(struct phydm_command);
+               phydm_ary_size = ARRAY_SIZE(phy_dm_ary);
                for (i = 0; i < phydm_ary_size; i++) {
                        if (strcmp(phy_dm_ary[i].name, input[0]) == 0) {
                                id = phy_dm_ary[i].id;
 
 /*Image2HeaderVersion: 3.2*/
 #include "../mp_precomp.h"
 #include "../phydm_precomp.h"
+#include <linux/kernel.h>
 
 static bool check_positive(struct phy_dm_struct *dm, const u32 condition1,
                           const u32 condition2, const u32 condition3,
        u32 i = 0;
        u8 c_cond;
        bool is_matched = true, is_skipped = false;
-       u32 array_len = sizeof(array_mp_8822b_agc_tab) / sizeof(u32);
        u32 *array = array_mp_8822b_agc_tab;
 
        u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;
        ODM_RT_TRACE(dm, ODM_COMP_INIT,
                     "===> %s\n", __func__);
 
-       for (; (i + 1) < array_len; i = i + 2) {
+       for (; (i + 1) < ARRAY_SIZE(array_mp_8822b_agc_tab); i = i + 2) {
                v1 = array[i];
                v2 = array[i + 1];
 
        u32 i = 0;
        u8 c_cond;
        bool is_matched = true, is_skipped = false;
-       u32 array_len = sizeof(array_mp_8822b_phy_reg) / sizeof(u32);
        u32 *array = array_mp_8822b_phy_reg;
 
        u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;
        ODM_RT_TRACE(dm, ODM_COMP_INIT,
                     "===> %s\n", __func__);
 
-       for (; (i + 1) < array_len; i = i + 2) {
+       for (; (i + 1) < ARRAY_SIZE(array_mp_8822b_phy_reg); i = i + 2) {
                v1 = array[i];
                v2 = array[i + 1];
 
 void odm_read_and_config_mp_8822b_phy_reg_pg(struct phy_dm_struct *dm)
 {
        u32 i = 0;
-       u32 array_len = sizeof(array_mp_8822b_phy_reg_pg) / sizeof(u32);
        u32 *array = array_mp_8822b_phy_reg_pg;
 
        ODM_RT_TRACE(dm, ODM_COMP_INIT,
        dm->phy_reg_pg_version = 1;
        dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE;
 
-       for (i = 0; i < array_len; i += 6) {
+       for (i = 0; i < ARRAY_SIZE(array_mp_8822b_phy_reg_pg); i += 6) {
                u32 v1 = array[i];
                u32 v2 = array[i + 1];
                u32 v3 = array[i + 2];
 
 /*Image2HeaderVersion: 3.2*/
 #include "../mp_precomp.h"
 #include "../phydm_precomp.h"
+#include <linux/kernel.h>
 
 static bool check_positive(struct phy_dm_struct *dm, const u32 condition1,
                           const u32 condition2, const u32 condition3,
        u32 i = 0;
        u8 c_cond;
        bool is_matched = true, is_skipped = false;
-       u32 array_len = sizeof(array_mp_8822b_mac_reg) / sizeof(u32);
        u32 *array = array_mp_8822b_mac_reg;
 
        u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;
        ODM_RT_TRACE(dm, ODM_COMP_INIT,
                     "===> %s\n", __func__);
 
-       for (; (i + 1) < array_len; i = i + 2) {
+       for (; (i + 1) < ARRAY_SIZE(array_mp_8822b_mac_reg); i = i + 2) {
                v1 = array[i];
                v2 = array[i + 1];
 
 
 /*Image2HeaderVersion: 3.2*/
 #include "../mp_precomp.h"
 #include "../phydm_precomp.h"
+#include <linux/kernel.h>
 
 static bool check_positive(struct phy_dm_struct *dm, const u32 condition1,
                           const u32 condition2, const u32 condition3,
        u32 i = 0;
        u8 c_cond;
        bool is_matched = true, is_skipped = false;
-       u32 array_len = sizeof(array_mp_8822b_radioa) / sizeof(u32);
        u32 *array = array_mp_8822b_radioa;
 
        u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;
        ODM_RT_TRACE(dm, ODM_COMP_INIT,
                     "===> %s\n", __func__);
 
-       for (; (i + 1) < array_len; i = i + 2) {
+       for (; (i + 1) < ARRAY_SIZE(array_mp_8822b_radioa); i = i + 2) {
                v1 = array[i];
                v2 = array[i + 1];
 
        u32 i = 0;
        u8 c_cond;
        bool is_matched = true, is_skipped = false;
-       u32 array_len = sizeof(array_mp_8822b_radiob) / sizeof(u32);
        u32 *array = array_mp_8822b_radiob;
 
        u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;
        ODM_RT_TRACE(dm, ODM_COMP_INIT,
                     "===> %s\n", __func__);
 
-       for (; (i + 1) < array_len; i = i + 2) {
+       for (; (i + 1) < ARRAY_SIZE(array_mp_8822b_radiob); i = i + 2) {
                v1 = array[i];
                v2 = array[i + 1];
 
 void odm_read_and_config_mp_8822b_txpwr_lmt(struct phy_dm_struct *dm)
 {
        u32 i = 0;
-       u32 array_len = sizeof(array_mp_8822b_txpwr_lmt) / sizeof(u8 *);
        u8 **array = (u8 **)array_mp_8822b_txpwr_lmt;
 
        ODM_RT_TRACE(dm, ODM_COMP_INIT,
                     "===> %s\n", __func__);
 
-       for (i = 0; i < array_len; i += 7) {
+       for (i = 0; i < ARRAY_SIZE(array_mp_8822b_txpwr_lmt); i += 7) {
                u8 *regulation = array[i];
                u8 *band = array[i + 1];
                u8 *bandwidth = array[i + 2];
 void odm_read_and_config_mp_8822b_txpwr_lmt_type5(struct phy_dm_struct *dm)
 {
        u32 i = 0;
-       u32 array_len = sizeof(array_mp_8822b_txpwr_lmt_type5) / sizeof(u8 *);
        u8 **array = (u8 **)array_mp_8822b_txpwr_lmt_type5;
 
        ODM_RT_TRACE(dm, ODM_COMP_INIT,
                     "===> odm_read_and_config_mp_8822b_txpwr_lmt_type5\n");
 
-       for (i = 0; i < array_len; i += 7) {
+       for (i = 0; i < ARRAY_SIZE(array_mp_8822b_txpwr_lmt_type5); i += 7) {
                u8 *regulation = array[i];
                u8 *band = array[i + 1];
                u8 *bandwidth = array[i + 2];