#!/usr/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

SYSFS="/sys/class/infiniband/${RDMA}/tc/1/traffic_class"
if [[ ! -f "$SYSFS" ]]; then
    echo "Error: traffic_class sysfs not available at $SYSFS" >&2
    exit 1
fi

ERR_FILE=$(mktemp /tmp/dms-sysfs-traffic-class-set.XXXXXX) || exit 1
trap 'rm -f "$ERR_FILE"' EXIT

if ! { echo "$VALUE" > "$SYSFS"; } 2>"$ERR_FILE"; then
    ERR=$(cat "$ERR_FILE" 2>/dev/null)
    echo "Error: traffic_class SET failed: ${ERR:-unknown}" >&2
    exit 1
fi

RAW=$(cat "$SYSFS" 2>/dev/null)
ACTUAL=$(echo "$RAW" | grep -oP 'tclass=\K\d+' || echo "$RAW" | grep -oP '^\d+$' | head -1)
echo "traffic-class=${ACTUAL:-$VALUE}"
