mlx5dr_ste_get_icm_addr(new_last_ste));
        list_add_tail(&new_last_ste->miss_list_node, miss_list);
 
-       mlx5dr_send_fill_and_append_ste_send_info(last_ste, DR_STE_SIZE_REDUCED,
+       mlx5dr_send_fill_and_append_ste_send_info(last_ste, DR_STE_SIZE_CTRL,
                                                  0, last_ste->hw_ste,
                                                  ste_info_last, send_list, true);
 
                                       ste_info->size, ste_info->offset);
        if (ret)
                goto out;
-       /* Copy data to ste, only reduced size, the last 16B (mask)
+
+       /* Copy data to ste, only reduced size or control, the last 16B (mask)
         * is already written to the hw.
         */
-       memcpy(ste_info->ste->hw_ste, ste_info->data, DR_STE_SIZE_REDUCED);
+       if (ste_info->size == DR_STE_SIZE_CTRL)
+               memcpy(ste_info->ste->hw_ste, ste_info->data, DR_STE_SIZE_CTRL);
+       else
+               memcpy(ste_info->ste->hw_ste, ste_info->data, DR_STE_SIZE_REDUCED);
 
 out:
        kfree(ste_info);
                ste_to_update = cur_htbl->pointing_ste;
        }
 
-       mlx5dr_send_fill_and_append_ste_send_info(ste_to_update, DR_STE_SIZE_REDUCED,
+       mlx5dr_send_fill_and_append_ste_send_info(ste_to_update, DR_STE_SIZE_CTRL,
                                                  0, ste_to_update->hw_ste, ste_info,
                                                  update_list, false);
 
 
        miss_addr = ste_ctx->get_miss_addr(ste->hw_ste);
        ste_ctx->set_miss_addr(prev_ste->hw_ste, miss_addr);
 
-       mlx5dr_send_fill_and_append_ste_send_info(prev_ste, DR_STE_SIZE_REDUCED, 0,
+       mlx5dr_send_fill_and_append_ste_send_info(prev_ste, DR_STE_SIZE_CTRL, 0,
                                                  prev_ste->hw_ste, ste_info,
                                                  send_ste_list, true /* Copy data*/);