struct mlx5hws_send_engine *send_queue;
        size_t queues;
        struct mutex *bwc_send_queue_locks; /* protect BWC queues */
+       struct lock_class_key *bwc_lock_class_keys;
        struct list_head tbl_list;
        struct mlx5hws_context_debug_info debug_info;
        struct xarray peer_ctx_xa;
 
        if (!mlx5hws_context_bwc_supported(ctx))
                return;
 
-       for (i = 0; i < bwc_queues; i++)
+       for (i = 0; i < bwc_queues; i++) {
                mutex_destroy(&ctx->bwc_send_queue_locks[i]);
+               lockdep_unregister_key(ctx->bwc_lock_class_keys + i);
+       }
+
+       kfree(ctx->bwc_lock_class_keys);
        kfree(ctx->bwc_send_queue_locks);
 }
 
        if (!ctx->bwc_send_queue_locks)
                return -ENOMEM;
 
-       for (i = 0; i < bwc_queues; i++)
+       ctx->bwc_lock_class_keys = kcalloc(bwc_queues,
+                                          sizeof(*ctx->bwc_lock_class_keys),
+                                          GFP_KERNEL);
+       if (!ctx->bwc_lock_class_keys)
+               goto err_lock_class_keys;
+
+       for (i = 0; i < bwc_queues; i++) {
                mutex_init(&ctx->bwc_send_queue_locks[i]);
+               lockdep_register_key(ctx->bwc_lock_class_keys + i);
+       }
 
        return 0;
+
+err_lock_class_keys:
+       kfree(ctx->bwc_send_queue_locks);
+       return -ENOMEM;
 }
 
 int mlx5hws_send_queues_open(struct mlx5hws_context *ctx,