#!/bin/bash # This script load/unload opennsl kernel modules ### BEGIN INIT INFO # Provides: load-opennsl-modules # Required-Start: # Required-Stop: # Should-Start: # Should-Stop: # Default-Start: S # Default-Stop: 0 6 # Short-Description: Load OpenNSL kernel modules ### END INIT INFO function create_devices() { if [[ $is_ltsw_chip -eq 1 ]]; then rm -f /dev/linux_ngbde rm -f /dev/linux_ngknet rm -f /dev/linux_ngknetcb mknod /dev/linux_ngbde c 120 0 mknod /dev/linux_ngknet c 121 0 mknod /dev/linux_ngknetcb c 122 0 else rm -f /dev/linux-knet-cb rm -f /dev/linux-bcm-knet rm -f /dev/linux-bcm-bde rm -f /dev/linux-kernel-bde rm -f /dev/linux_ngbde mknod /dev/linux_ngbde c 120 0 mknod /dev/linux-knet-cb c 121 0 mknod /dev/linux-bcm-knet c 122 0 mknod /dev/linux-bcm-bde c 126 0 mknod /dev/linux-kernel-bde c 127 0 fi } # linux-kernel-bde debug=4 ==> Verbose level debug # dma_debug=1 ==> Enable DMA debug # linux-bcm-knet debug=0x5020 ==> Enable KNET Warning(0x1000), # Events(0x20) and Instance(0x4000) # level logs function load_kernel_modules() { if [[ $is_ltsw_chip -eq 1 ]]; then insmod /lib/modules/$(uname -r)/extra/psample.ko modprobe linux_ngbde modprobe linux_ngknet modprobe linux_ngknetcb else modprobe linux-kernel-bde dmasize=$dmasize maxpayload=128 debug=4 dma_debug=1 usemsi=$usemsi modprobe linux-user-bde # Using insmod with absolute path for psample to make sure bcm psample is loaded. # There is a different psample.ko module getting created at net/psample/psample.ko insmod /lib/modules/$(uname -r)/extra/psample.ko modprobe linux-bcm-knet use_rx_skb=1 rx_buffer_size=9238 debug=0x5020 default_mtu=9100 modprobe linux-knet-cb modprobe linux_ngbde fi } function remove_kernel_modules() { if [[ $is_ltsw_chip -eq 1 ]]; then rmmod linux_ngknetcb rmmod linux_ngknet rmmod linux_ngbde rmmod psample.ko else rmmod psample.ko rmmod linux-knet-cb rmmod linux-bcm-knet rmmod linux-user-bde rmmod linux-kernel-bde rmmod linux_ngbde fi } function load_platform_env() { . /host/machine.conf if [ -n "$aboot_platform" ]; then platform=$aboot_platform elif [ -n "$onie_platform" ]; then platform=$onie_platform else platform="unknown" fi # Set the default configuration for dmasize and usemsi parameters dmasize=32M usemsi=0 is_ltsw_chip=0 # Source the platform env file env_file="/usr/share/sonic/device/$platform/platform_env.conf" source $env_file } case "$1" in start) echo -n "Load OpenNSL kernel modules... " load_platform_env create_devices load_kernel_modules echo "done." ;; stop) echo -n "Unload OpenNSL kernel modules... " load_platform_env remove_kernel_modules echo "done." ;; force-reload|restart) echo "Not supported" ;; *) echo "Usage: /etc/init.d/opennsl-modules.init {start|stop}" exit 1 ;; esac exit 0