This is the good one.
>From 19a61adb4ce04889c1fe772b16bbdc32abfb8c22 Mon Sep 17 00:00:00 2001
From: dev <[email protected]>
Date: Wed, 2 Oct 2019 11:56:00 +0200
Subject: [PATCH] Allow RTNet to be builtin kernel
---
kernel/drivers/net/Kconfig | 1 -
kernel/drivers/net/addons/Kconfig | 4 +-
kernel/drivers/net/stack/Makefile | 16 ++---
utils/net/rtnet.in | 148 +++++++++++++++++++++++---------------
4 files changed, 101 insertions(+), 68 deletions(-)
diff --git a/kernel/drivers/net/Kconfig b/kernel/drivers/net/Kconfig
index ac3bced..49d2402 100644
--- a/kernel/drivers/net/Kconfig
+++ b/kernel/drivers/net/Kconfig
@@ -1,7 +1,6 @@
menu "RTnet"
config XENO_DRIVERS_NET
- depends on m
select NET
tristate "RTnet, TCP/IP socket interface"
diff --git a/kernel/drivers/net/addons/Kconfig
b/kernel/drivers/net/addons/Kconfig
index baa6cbc..616ed40 100644
--- a/kernel/drivers/net/addons/Kconfig
+++ b/kernel/drivers/net/addons/Kconfig
@@ -2,7 +2,7 @@ menu "Add-Ons"
depends on XENO_DRIVERS_NET
config XENO_DRIVERS_NET_ADDON_RTCAP
- depends on XENO_DRIVERS_NET && m
+ depends on XENO_DRIVERS_NET
select ETHERNET
tristate "Real-Time Capturing Support"
default n
@@ -18,7 +18,7 @@ config XENO_DRIVERS_NET_ADDON_RTCAP
For further information see Documentation/README.rtcap.
config XENO_DRIVERS_NET_ADDON_PROXY
- depends on XENO_DRIVERS_NET_RTIPV4 && m
+ depends on XENO_DRIVERS_NET_RTIPV4
select ETHERNET
tristate "IP protocol proxy for Linux"
default n
diff --git a/kernel/drivers/net/stack/Makefile
b/kernel/drivers/net/stack/Makefile
index d055dc2..f8db6fa 100644
--- a/kernel/drivers/net/stack/Makefile
+++ b/kernel/drivers/net/stack/Makefile
@@ -1,13 +1,5 @@
ccflags-y += -Idrivers/xenomai/net/stack/include -Ikernel/
-obj-$(CONFIG_XENO_DRIVERS_NET_RTIPV4) += ipv4/
-
-obj-$(CONFIG_XENO_DRIVERS_NET_RTPACKET) += packet/
-
-obj-$(CONFIG_XENO_DRIVERS_NET_RTMAC) += rtmac/
-
-obj-$(CONFIG_XENO_DRIVERS_NET_RTCFG) += rtcfg/
-
obj-$(CONFIG_XENO_DRIVERS_NET) += rtnet.o
rtnet-y := \
@@ -23,4 +15,12 @@ rtnet-y := \
stack_mgr.o \
eth.o
+obj-$(CONFIG_XENO_DRIVERS_NET_RTIPV4) += ipv4/
+
+obj-$(CONFIG_XENO_DRIVERS_NET_RTPACKET) += packet/
+
+obj-$(CONFIG_XENO_DRIVERS_NET_RTMAC) += rtmac/
+
+obj-$(CONFIG_XENO_DRIVERS_NET_RTCFG) += rtcfg/
+
rtnet-$(CONFIG_XENO_DRIVERS_NET_RTWLAN) += rtwlan.o
diff --git a/utils/net/rtnet.in b/utils/net/rtnet.in
index f81a7bb..3c3cab9 100644
--- a/utils/net/rtnet.in
+++ b/utils/net/rtnet.in
@@ -31,44 +31,62 @@ EOF
}
init_rtnet() {
- modprobe rtnet >/dev/null || exit 1
- modprobe rtipv4 >/dev/null || exit 1
- modprobe $RT_DRIVER $RT_DRIVER_OPTIONS >/dev/null || exit 1
+ if [ ! -d /proc/rtnet ]; then
+ modprobe rtnet >/dev/null || exit 1
+ fi
- for dev in $REBIND_RT_NICS; do
- if [ -d /sys/bus/pci/devices/$dev/driver ]; then
- echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
- fi
- echo $dev > /sys/bus/pci/drivers/$RT_DRIVER/bind
- done
+ if [ ! -d /proc/rtnet/ipv4 ]; then
+ modprobe rtipv4 >/dev/null || exit 1
+ for PROTOCOL in $RT_PROTOCOLS; do
+ modprobe rt$PROTOCOL >/dev/null || exit 1
+ done
+ fi
- for PROTOCOL in $RT_PROTOCOLS; do
- modprobe rt$PROTOCOL >/dev/null || exit 1
- done
+ $(cat /proc/rtnet/devices | grep -q rteth0)
+ if [ $? -eq 1 ]; then
+ modprobe $RT_DRIVER $RT_DRIVER_OPTIONS >/dev/null || exit 1
+
+ for dev in $REBIND_RT_NICS; do
+ if [ -d /sys/bus/pci/devices/$dev/driver ]; then
+ echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
+ fi
+ echo $dev > /sys/bus/pci/drivers/$RT_DRIVER/bind
+ done
+ fi
if [ $RT_LOOPBACK = "yes" ]; then
- modprobe rt_loopback >/dev/null || exit 1
+ $(cat /proc/rtnet/devices | grep -q rtlo)
+ if [ $? -eq 1 ]; then
+
+ modprobe rt_loopback >/dev/null || exit 1
+ fi
fi
- if [ $RTCAP = "yes" ]; then
- modprobe rtcap >/dev/null || exit 1
+ if [ $RTCAP = "yes" -a ! -d /sys/modules/rtcap ]; then
+ modprobe rtcap >/dev/null || exit 1
fi
if [ $RT_LOOPBACK = "yes" ]; then
- $RTIFCONFIG rtlo up 127.0.0.1
+ $RTIFCONFIG rtlo up 127.0.0.1
fi
if [ $RTCAP = "yes" ]; then
- ifconfig rteth0 up
- ifconfig rteth0-mac up
- if [ $RT_LOOPBACK = "yes" ]; then
- ifconfig rtlo up
- fi
+ ifconfig rteth0 up
+ ifconfig rteth0-mac up
+ if [ $RT_LOOPBACK = "yes" ]; then
+ ifconfig rtlo up
+ fi
fi
- modprobe rtcfg >/dev/null
- modprobe rtmac >/dev/null
- modprobe tdma >/dev/null
+ if [ ! -d /proc/rtnet/rtcfg ]; then
+ modprobe rtcfg >/dev/null
+ fi
+ if [ ! -d /proc/rtnet/rtmac ]; then
+ modprobe rtmac >/dev/null
+ fi
+ if [ ! -f /proc/tdma ]; then
+ modprobe tdma >/dev/null
+ fi
}
submit_cfg() {
@@ -329,43 +347,59 @@ case "$1" in
;;
master)
- shift
- init_rtnet
- TDMA_SLAVES=$*
- start_master
- ;;
+ shift
+ init_rtnet
+ TDMA_SLAVES=$*
+ start_master
+ ;;
capture)
- modprobe rtnet >/dev/null || exit 1
- modprobe $RT_DRIVER $RT_DRIVER_OPTIONS >/dev/null || exit 1
- modprobe rtcap >/dev/null || exit 1
- $RTIFCONFIG rteth0 up promisc
- ifconfig rteth0 up
- ifconfig rteth0-mac up
- ;;
+ if [ ! -d /proc/rtnet ]; then
+ modprobe rtnet >/dev/null || exit 1
+ fi
+ $(cat /proc/rtnet/devices | grep -q rteth0)
+ if [ $? -eq 1 ]; then
+ modprobe $RT_DRIVER $RT_DRIVER_OPTIONS >/dev/null || exit 1
+ fi
+ if [ ! -d /sys/modules/rtcap ]; then
+ modprobe rtcap >/dev/null || exit 1
+ fi
+ $RTIFCONFIG rteth0 up promisc
+ ifconfig rteth0 up
+ ifconfig rteth0-mac up
+ ;;
loopback)
- modprobe rtnet >/dev/null || exit 1
- modprobe rtipv4 >/dev/null || exit 1
-
- for PROTOCOL in $RT_PROTOCOLS; do
- modprobe rt$PROTOCOL >/dev/null || exit 1
- done
-
- modprobe rt_loopback >/dev/null || exit 1
-
- if [ $RTCAP = "yes" ]; then
- modprobe rtcap >/dev/null || exit 1
- fi
-
- $RTIFCONFIG rtlo up 127.0.0.1
-
- if [ $RTCAP = "yes" ]; then
- ifconfig rtlo up
- fi
- ;;
+ if [ ! -d /proc/rtnet ]; then
+ modprobe rtnet >/dev/null || exit 1
+ fi
+ if [ ! -d /proc/rtnet/ipv4 ]; then
+ modprobe rtipv4 >/dev/null || exit 1
+ for PROTOCOL in $RT_PROTOCOLS; do
+ modprobe rt$PROTOCOL >/dev/null || exit 1
+ done
+ fi
+
+ if [ $RT_LOOPBACK = "yes" ]; then
+ $(cat /proc/rtnet/devices | grep -q rtlo)
+ if [ $? -eq 1 ]; then
+
+ modprobe rt_loopback >/dev/null || exit 1
+ fi
+ fi
+
+ if [ $RTCAP = "yes" -a ! -d /sys/modules/rtcap ]; then
+ modprobe rtcap >/dev/null || exit 1
+ fi
+
+ $RTIFCONFIG rtlo up 127.0.0.1
+
+ if [ $RTCAP = "yes" ]; then
+ ifconfig rtlo up
+ fi
+ ;;
*)
- usage
- exit 1
+ usage
+ exit 1
esac
--
2.1.4