From ba5188dbbe65c9473f312a4d5e46f7d203d5af04 Mon Sep 17 00:00:00 2001 From: Dan HorĂ¡k Date: Mon, 29 Mar 2010 15:43:50 +0200 Subject: add ccw udev stuff --- Makefile | 4 ++-- ccw.udev | 9 ++++++++ ccw_init | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 ccw.udev create mode 100644 ccw_init diff --git a/Makefile b/Makefile index c815781..689b457 100644 --- a/Makefile +++ b/Makefile @@ -14,8 +14,8 @@ UDEVDIR=$(DESTDIR)/lib/udev SYSCONFIGDIR=$(DESTDIR)/etc -UDEV_RULES=dasd.udev zfcp.udev -UDEV_HELPERS=dasdconf.sh zfcpconf.sh +UDEV_RULES=dasd.udev zfcp.udev ccw.udev +UDEV_HELPERS=dasdconf.sh zfcpconf.sh ccw_init SERVICES=cpi.initd SYSCONFIGS=cpi.sysconfig diff --git a/ccw.udev b/ccw.udev new file mode 100644 index 0000000..dc0db66 --- /dev/null +++ b/ccw.udev @@ -0,0 +1,9 @@ +ACTION=="add", SUBSYSTEM=="ccw", SYSFS{cutype}=="1731/01", RUN+="/lib/udev/ccw_init" +ACTION=="add", SUBSYSTEM=="ccw", SYSFS{cutype}=="1731/05", RUN+="/lib/udev/ccw_init" +ACTION=="add", SUBSYSTEM=="ccw", SYSFS{cutype}=="1731/06", RUN+="/lib/udev/ccw_init" +ACTION=="add", SUBSYSTEM=="ccw", SYSFS{cutype}=="3088/01", RUN+="/lib/udev/ccw_init" +ACTION=="add", SUBSYSTEM=="ccw", SYSFS{cutype}=="3088/08", RUN+="/lib/udev/ccw_init" +ACTION=="add", SUBSYSTEM=="ccw", SYSFS{cutype}=="3088/60", RUN+="/lib/udev/ccw_init" +ACTION=="add", SUBSYSTEM=="ccw", SYSFS{cutype}=="3088/61", RUN+="/lib/udev/ccw_init" +ACTION=="add", SUBSYSTEM=="ccw", SYSFS{cutype}=="3088/1E", RUN+="/lib/udev/ccw_init" +ACTION=="add", SUBSYSTEM=="ccw", SYSFS{cutype}=="3088/1F", RUN+="/lib/udev/ccw_init" diff --git a/ccw_init b/ccw_init new file mode 100644 index 0000000..67beb58 --- /dev/null +++ b/ccw_init @@ -0,0 +1,76 @@ +#!/bin/bash + +[ -z "$DEVPATH" ] && exit 0 +[ "$SUBSYSTEM" != "ccw" ] && exit 0 + +NOLOCALE="yes" + +. /etc/sysconfig/network-scripts/network-functions + +# First, determine our channel + +CHANNEL=${DEVPATH##*/} + +CONFIG=$(get_config_by_subchannel $CHANNEL) + +if [ -n "$CONFIG" ]; then + cd /etc/sysconfig/network-scripts + source_config +fi + +# put LAYER2 option into its own variable +set $OPTIONS +OPTIONS="" +while [ $# -gt 0 ]; do + case $1 in + layer2=*) LAYER2=${1##layer2=};; + *=*) OPTIONS="$OPTIONS $1";; + esac + shift +done + +# SUBCHANNELS is only set on mainframe ccwgroup devices +[ -z "$SUBCHANNELS" -o -z "$NETTYPE" ] && exit 0 +DIR="/sys/bus/ccwgroup/drivers/$NETTYPE" + +i=0 +while [ $i -lt 20 ]; do + [ -e $DIR ] && break + sleep 0.1 + i=$(($i+1)) +done + +# driver missing or not loaded +[ ! -e $DIR ] && exit 0 + +SYSDIR="$DIR/${SUBCHANNELS//,*/}" +[ -e $SYSDIR ] && exit 0 +echo "$SUBCHANNELS" > $DIR/group + +i=0 +while [ $i -lt 20 ]; do + [ -e $SYSDIR ] && break + sleep 0.1 + i=$(($i+1)) +done + +# first set layer2, other options may depend on it +[ -n "$LAYER2" ] && echo $LAYER2 > $SYSDIR/layer2 + +if [ -n "$PORTNAME" ]; then + if [ "$NETTYPE" = "lcs" ]; then + [ -e $SYSDIR/portno ] && echo "$PORTNAME" > $SYSDIR/portno + else + [ -e $SYSDIR/portname ] && echo "$PORTNAME" > $SYSDIR/portname + fi +fi +if [ "$NETTYPE" = "ctc" -a -n "$CTCPROT" ]; then + echo "$CTCPROT" > $SYSDIR/protocol +fi +if [ -n "$OPTIONS" ]; then + + for i in $OPTIONS; do + echo "${i//*=/}" > "$SYSDIR/${i//=*/}" + done +fi +[ -e $SYSDIR/online ] && echo 1 > $SYSDIR/online -- cgit