All pastes #618355 Raw Edit

Stuff

public text v1 · immutable
·published 2007-07-13 22:29 UTC
rendered paste body
#!/bin/sh
# Copyright (C) 2004-2005 Intel Corporation
module="iwl3945 iwl4965"
function check_root()
{
        [ `whoami` != "root" ] &&
                echo "You must be root to run this script." &&
                return 1
}

function unload()
{ 
        ./unload $module || return 1
}

function load_pre
{
    mod_dir=/lib/modules/$(uname -r)/kernel/crypto

        prereq="blkcipher aes arc4 ecb cryptomgr crypto_algapi"
        for i in ${prereq}; do
                [ -e $mod_dir/$i.ko ] && {
                        grep -q $i /proc/modules || modprobe $i
                }
        done

    for i in cfg80211 mac80211 firmware_class; do
        if ! (lsmod | grep -q $i) && \
            ! (modprobe $i > /dev/null 2>&1 && LOADED="${LOADED}${i} ") && \
            ! (grep -q request_firmware /proc/kallsyms); then
            if [ ! -e /proc/kallsyms ]; then
                echo "Could not be determine if ${i} is already loaded."
                echo "Attempting to load driver anyway..."
            else
                echo "${i} capabilities not found.  See INSTALL."
                return 1
            fi
        fi
    done
}


function load_module
{
    I_DEBUG=""
    [ -d compatible ] && dir=compatible || dir=origin
    for i in ${module}; do 
        [ ! -e $dir/${i}.ko ] && continue
        insmod $dir/${i}.ko $@ && LOADED="${LOADED}${i} " ||
                return 1
    done
}

function load()
{
        load_pre && load_module $@ && {
                if [ -z "${LOADED}" ]; then
                        echo "No modules loaded."
                else
                        echo "Loaded: ${LOADED}"
                fi

                return 0
        } 

        echo "Load failed."

        return 1
}

function parse_args()
{
        driver_args=
        while [ "$1" ]; do
                case $1 in
                --module*)
                        module=$1
                        module=${module/#*=}
                        if [ "$module" = "$1" ]; then
                                shift
                                module=$1
                        fi
                        shift
                        ;;

                --)
                        shift
                        break
                        ;;

                *)
                        driver_args="$driver_args $1"
                        shift
                        ;;
                esac
        done
}

unset LOADED

parse_args $@ &&
unload && 
load $driver_args