#!/bin/bash
#
# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. ALL RIGHTS RESERVED.
#
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES.
# SPDX-License-Identifier: LicenseRef-NVIDIA-Proprietary
#
source "$(dirname "$0")/_lib.sh"
trace "$@"
BDF=$(bdf_from_target "$1"); VALUE="$2"
RDMA=$(ls "/sys/bus/pci/devices/${BDF}/infiniband/" 2>/dev/null | head -1)

if [[ -z "$RDMA" ]]; then
    echo "Error: no RDMA device for $BDF" >&2
    exit 1
fi

ERR_FILE=$(mktemp /tmp/dms-cma-roce-tos-set.XXXXXX) || exit 1
trap 'rm -f "$ERR_FILE"' EXIT

try_set() {
    local dev="$1"
    [[ -n "$dev" ]] || return 1
    cma_roce_tos -d "$dev" -t "$VALUE" 2>"$ERR_FILE"
}

USED_RDMA="$RDMA"
if ! try_set "$USED_RDMA"; then
    USED_RDMA=""
    for ib in /sys/class/infiniband/*; do
        [[ -e "$ib" ]] || continue
        candidate="$(basename "$ib")"
        if try_set "$candidate"; then
            USED_RDMA="$candidate"
            break
        fi
    done
fi

if [[ -z "$USED_RDMA" ]]; then
    ERR=$(cat "$ERR_FILE" 2>/dev/null)
    echo "Error: cma_roce_tos failed: ${ERR:-unknown}" >&2
    exit 1
fi

ACTUAL=$(cma_roce_tos -d "$USED_RDMA" 2>/dev/null | grep -oP '^\d+$' | head -1)
echo "value=${ACTUAL:-$VALUE}"
