Saul Wold 6096f1e3aa lldpd: Move meta-stx-integ
The integration layer is the place to put StarlingX changes

Signed-off-by: Saul Wold <sgw@linux.intel.com>
2020-05-17 16:00:29 -07:00

142 lines
2.8 KiB
Bash

#!/bin/bash
################################################################################
# Copyright (c) 2016 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
################################################################################
# Certain i40e network devices (XL710 Fortville) have an internal firmware LLDP
# agent enabled by default. This can prevent LLDP PDUs from being processed by
# the driver and any upper layer agents.
#
# This script allows a user to enable and disable the internal LLDP agent.
#
# Note: debugfs must be enabled in the kernel
#
# To enable:
# ./i40e-lldp-configure.sh start
#
# To disable:
# ./i40e-lldp-configure.sh stop
PROGNAME=$(basename $0)
DEBUGFS_PATH=/sys/kernel/debug
DEBUGFS_I40_DEVICES_PATH=$DEBUGFS_PATH/i40e
LLDP_COMMAND=lldp
function log {
local MSG="${PROGNAME}: $1"
logger -p notice "${MSG}"
}
function err {
local MSG="${PROGNAME}: $1"
logger -p error "${MSG}"
}
function configure_device {
local DEVICE=$1
local ACTION=$2
local DEVICE_PATH=${DEBUGFS_I40_DEVICES}/${DEVICE}
if [ ! -d ${DEVICE_PATH} ]; then
return 1
fi
echo "${LLDP_COMMAND} ${ACTION}" > ${DEVICE_PATH}/command
RET=$?
if [ ${RET} -ne 0 ]; then
err "Failed to ${ACTION} internal LLDP agent for device ${DEVICE}"
return ${RET}
fi
log "${ACTION} internal LLDP agent for device ${DEVICE}"
return ${RET}
}
function is_debugfs_mounted {
if grep -qs "${DEBUGFS_PATH}" /proc/mounts; then
return 0
fi
return 1
}
function mount_debugfs {
mount -t debugfs none ${DEBUGFS_PATH}
}
function unmount_debugfs {
umount ${DEBUGFS_PATH}
}
function scan_devices {
local ACTION=$1
local DEBUGFS_MOUNTED="false"
local DEVICES=${DEBUGFS_I40_DEVICES_PATH}/*
if is_debugfs_mounted; then
DEBUGFS_MOUNTED="true"
fi
if [ ${DEBUGFS_MOUNTED} = "false" ]; then
mount_debugfs
RET=$?
if [ ${RET} -ne 0 ]; then
err "Failed to mount debugfs"
return ${RET}
fi
log "Mounted debugfs"
fi
for DEVICE in $DEVICES; do
configure_device ${DEVICE} ${ACTION}
done
if [ ${DEBUGFS_MOUNTED} = "false" ]; then
unmount_debugfs
RET=$?
if [ ${RET} -ne 0 ]; then
err "Failed to unmount debugfs"
return ${RET}
fi
log "Unmounted debugfs"
fi
return 0
}
function start {
scan_devices start
return $?
}
function stop {
scan_devices stop
return $?
}
function status {
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac