* Wireless Extensions v16-3 - clean patches
From: Joshua M. Kwan @ 2003-01-09 4:31 UTC (permalink / raw)
To: jt; +Cc: linux-kernel
[-- Attachment #1.1: Type: text/plain, Size: 837 bytes --]
Hi Jean,
I have attached two patches that allow current 2.5.54 BK and 2.4.20
vanilla to patch cleanly from whatever WE they came with to WE16,
from your site. This is easier since the patches on your website for
2.4.20 require two patches, and the 2.5.x one has a single reject
that was not hard to resolve (just a few line breaks here and there
and editing of the surrounding text confused patch.)
For 2.5, the BK i diffed against was a fresh tree from today, but
since you're the one that makes all the changes to those files
anyway, it really doesn't matter until a new WE is pushed! And then
this patch won't be necessary at all :)
Both patches should be placed in the root of the source tree and
applied with -p0.
Hope this can benefit others who would like to easily upgrade their
WE :)
Regards
Josh
[-- Attachment #1.2: we14_2.4.20-we16.patch.bz2 --]
[-- Type: application/octet-stream, Size: 8908 bytes --]
[-- Attachment #1.3: we15_2.5.54bk-we16.patch.bz2 --]
[-- Type: application/octet-stream, Size: 6108 bytes --]
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* RE: DMZ trouble!
From: John A. Novak @ 2003-01-09 4:22 UTC (permalink / raw)
To: David Collodel, netfilter
Do you have rules that allow traffic to be forwarded from the LAN to the DMZ and back ?
John Novak
-----Original Message-----
From: David Collodel [mailto:dave@crawlspaceradio.com]
Sent: Wednesday, January 08, 2003 7:43 PM
To: netfilter@lists.netfilter.org
Subject: DMZ trouble!
Hi,
I've recently been working on a firewall using IPtables to create a
DMZ/LAN setup.
I have a system with 3 NIC's.
eth0 has the "real" static IP's from my ISP. I'm using NAT to translate
from the IP bound on this NIC to the internal DMZ and LAN hosts.
eth1 is set to 172.16.12.1 and is used as the DMZ interface. Hosts
connected to this interface are all 172.16.12.x
eth2 is set to 172.16.11.1 and is used as the LAN interface.Hosts
connected here are all 172.16.11.x
Most things seem to be working, I can connect from the LAN to the DMZ
and to the Internet. I can connect from the DMZ to the Internet, but not
to the LAN, but already established connections work. Only the ports I
specify are open from the Internet to the DMZ.
The problem I'm having is this:
When I try to connect to a host in the DMZ from the LAN, it does not
work when I use the "real" IP address.
An example of the error in the logs is this:
-----
IPT INPUT packet died: IN=eth1 OUT=
MAC=00:10:5a:1b:48:8a:00:10:5a:00:ff:b8:08:00 SRC=172.16.11.2
DST=66.92.171.152 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=3514 DF PROTO=TCP
SPT=32949 DPT=80 WINDOW=5440 RES=0x00 SYN URGP=0
----
Does anyone have any idea why this might be happening?
Much thanks.
--
David Collodel <dave@crawlspaceradio.com>
^ permalink raw reply
* can't load the script
From: Gary Lee @ 2003-01-09 4:22 UTC (permalink / raw)
To: Netfilter
[-- Attachment #1: Type: text/plain, Size: 11250 bytes --]
Hi all,
I got the problem with my script.......every time I try to run my script,
the system will say command not found.....what's wrong?....How can I check
that I have all components installed for netfilter??....Here is my script:
#!/bin/sh
#
# rc.firewall-2.4-stronger
#
echo -e "\nLoading STRONGER rc.firewall - version $FWVER..\n"
#IPTABLES=/sbin/iptables
#IPTABLES=/usr/local/sbin/iptables
#
LSMOD=/sbin/lsmod
DEPMOD=/sbin/depmod
INSMOD=/sbin/insmod
GREP=/bin/grep
AWK=/bin/awk
SED=/bin/sed
IFCONFIG=/sbin/ifconfig
#
EXTIF="eth0"
INTIF="eth1"
echo " External Interface: $EXTIF"
echo " Internal Interface: $INTIF"
echo " ---"
#
#EXTIP="`$IFCONFIG $EXTIF | $AWK \
#/$EXTIF/'{next}//{split($0,a,":");split(a[2],a," ");print a[1];exit}'`"
# STATIC IP addresses:
#
# # out the EXTIP line above and un-# out the EXTIP line below
#
EXTIP="218.x.x.x"
echo " External IP: $EXTIP"
echo " ---"
# Assign the internal TCP/IP network and IP address
INTNET="10.126.0.0/24"
INTIP="10.126.0.63/24"
echo " Internal Network: $INTNET"
echo " Internal IP: $INTIP"
echo " ---"
# Setting a few other local variables
#
UNIVERSE="0.0.0.0/0"
# Some Servers
MAIL="203.x.x.x"
DNS1="210.x.x.x"
DNS2="210.x.x.x"
DNS3="218.x.x.x"
SERVER1="203.x.x.x"
# ports
UPORTS="1024:65535"
#======================================================================
echo " - Verifying that all kernel modules are ok"
$DEPMOD -a
echo -en " Loading kernel modules: "
# With the new IPTABLES code, the core MASQ functionality is now either
# modular or compiled into the kernel. This HOWTO shows ALL IPTABLES
# options as MODULES. If your kernel is compiled correctly, there is
# NO need to load the kernel modules manually.
#
# - Loaded manually to clean up kernel auto-loading timing issues
#
echo -en "ip_tables, "
#
#Verify the module isn't loaded. If it is, skip it
#
if [ -z "` $LSMOD | $GREP ip_tables | $AWK {'print $1'} `" ]; then
$INSMOD ip_tables
fi
#Load the IPTABLES filtering module - "iptable_filter"
#
# - Loaded automatically when filter policies are activated
# - Loaded manually to clean up kernel auto-loading timing issues
#
echo -en "ip_conntrack, "
#
#
#
if [ -z "` $LSMOD | $GREP ip_conntrack | $AWK {'print $1'} `" ]; then
$INSMOD ip_conntrack
fi
#Load the FTP tracking mechanism for full FTP tracking
#
# Enabled by default -- insert a "#" on the next line to deactivate
#
echo -e "ip_conntrack_ftp, "
#
#Verify the module isn't loaded. If it is, skip it
#
if [ -z "` $LSMOD | $GREP ip_conntrack_ftp | $AWK {'print $1'} `" ]; then
$INSMOD ip_conntrack_ftp
fi
#Load the IRC tracking mechanism for full IRC tracking
#
# Enabled by default -- insert a "#" on the next line to deactivate
#
echo -en " ip_conntrack_irc, "
#
#Verify the module isn't loaded. If it is, skip it
#
if [ -z "` $LSMOD | $GREP ip_conntrack_irc | $AWK {'print $1'} `" ]; then
$INSMOD ip_conntrack_irc
fi
#Load the general IPTABLES NAT code - "iptable_nat"
# - Loaded automatically when MASQ functionality is turned on
#
# - Loaded manually to clean up kernel auto-loading timing issues
#
echo -en "iptable_nat, "
#
#Verify the module isn't loaded. If it is, skip it
#
if [ -z "` $LSMOD | $GREP iptable_nat | $AWK {'print $1'} `" ]; then
$INSMOD iptable_nat
fi
#Loads the FTP NAT functionality into the core IPTABLES code
# Required to support non-PASV FTP.
#
# Enabled by default -- insert a "#" on the next line to deactivate
#
echo -e "ip_nat_ftp"
#
#Verify the module isn't loaded. If it is, skip it
#
if [ -z "` $LSMOD | $GREP ip_nat_ftp | $AWK {'print $1'} `" ]; then
$INSMOD ip_nat_ftp
fi
echo " ---"
# Enable IP forwarding
#
#
echo " Enabling forwarding.."
echo 1 > /proc/sys/net/ipv4/ip_forward
############################################################################
#
#
# Enable Stronger IP forwarding and Masquerading
#
#Clearing any previous configuration
#
echo " Clearing any existing rules and setting default policy to DROP.."
iptables -P INPUT DROP
iptables -F INPUT
iptables -P OUTPUT DROP
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -F -t nat
#Not needed and it will only load the unneeded kernel module
#iptables -F -t mangle
#
# Flush the user chain.. if it exists
if [ -n "`iptables -L | $GREP drop-and-log-it`" ]; then
iptables -F drop-and-log-it
fi
#
# Delete all User-specified chains
iptables -X
#
# Reset all IPTABLES counters
iptables -Z
#Configuring specific CHAINS for later use in the ruleset
#
echo " Creating a DROP chain.."
iptables -N drop-and-log-it
iptables -A drop-and-log-it -j LOG --log-level info
iptables -A drop-and-log-it -j DROP
echo -e "\n - Loading INPUT rulesets"
#######################################################################
# INPUT: Incoming traffic from various interfaces. All rulesets are
# already flushed and set to a default policy of DROP.
#
# loopback interfaces are valid.
#
iptables -A INPUT -i lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT
# local interface, local machines, going anywhere is valid
#
iptables -A INPUT -i $INTIF -s $INTNET -d $UNIVERSE -j ACCEPT
# remote interface, claiming to be local machines, IP spoofing, get lost
#
iptables -A INPUT -i $EXTIF -s $INTNET -d $UNIVERSE -j drop-and-log-it
# external interface, from any source, for ICMP traffic is valid
#
# If you would like your machine to "ping" from the Internet,
# enable this next line
#
#iptables -A INPUT -i $EXTIF -p ICMP -s $UNIVERSE -d $EXTIP -j ACCEPT
# remote interface, any source, going to permanent PPP address is valid
#
#iptables -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -j ACCEPT
# Allow any related traffic coming back to the MASQ server in
#
iptables -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m state --state \
ESTABLISHED,RELATED -j ACCEPT
# HTTPd - Enable the following lines if you run an EXTERNAL WWW server
#
#echo -e " - Allowing EXTERNAL access to the WWW server"
iptables -A INPUT -i $EXTIF -m state --state NEW,ESTABLISHED,RELATED \
-p tcp -s $UNIVERSE -d $EXTIP --dport 80 -j ACCEPT
# SSH - Enable the SSH connection
iptables -A INPUT -i $EXTIF -m state --state NEW,ESTABLISHED,RELATED \
-p tcp -s $UNIVERSE -d $EXTIP --dport 22 -j ACCEPT
# VNC connection
iptables -A INPUT -i $EXTIF -m state --state NEW,ESTABLISHED,RELATED \
-p tcp -s $UNIVERSE -d $EXTIP --dport 5900 -j ACCEPT
# DNS
iptables -A INPUT -i $EXTIF -m state --state NEW -p udp -s $DNS1 --sport 53
\
-d $EXTIP --dport 53 -j ACCEPT
iptables -A INPUT -i $EXTIF -m state --state NEW -p tcp ! --syn -s DNS1 \
--sport 53 -d $EXTIP --dport 53 -j ACCEPT
iptables -A INPUT -i $EXTIF -m state --state NEW -p udp -s $DNS2 --sport 53
\
-d $EXTIP --dport 53 -j ACCEPT
iptables -A INPUT -i $EXTIF -m state --state NEW -p tcp ! --syn -s DNS2 \
--sport 53 -d $EXTIP --dport 53 -j ACCEPT
iptables -A INPUT -i $EXTIF -m state --state NEW -p udp -s $DNS3 --sport 53
\
-d $EXTIP --dport 53 -j ACCEPT
iptables -A INPUT -i $EXTIF -m state --state NEW -p tcp ! --syn -s DNS3 \
--sport 53 -d $EXTIP --dport 53 -j ACCEPT
# SUNRPC
iptables -A INPUT -i $EXTIF -m state --state NEW,ESTABLISHED,RELATED \
-p tcp -s $SERVER1 -d $EXTIP --dport 111 -j ACCEPT
iptables -A INPUT -i $EXTIF -m state --state NEW,ESTABLISHED,RELATED \
-p udp -s $SERVER1 -d $EXTIP --dport 111 -j ACCEPT
#
# ----- End OPTIONAL Section -----
# Catch all rule, all other incoming is denied and logged.
#
iptables -A INPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it
echo -e " - Loading OUTPUT rulesets"
#######################################################################
# OUTPUT: Outgoing traffic from various interfaces. All rulesets are
# already flushed and set to a default policy of DROP.
#
# loopback interface is valid.
#
iptables -A OUTPUT -o lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT
# local interfaces, any source going to local net is valid
#
iptables -A OUTPUT -o $INTIF -s $EXTIP -d $INTNET -j ACCEPT
# local interface, any source going to local net is valid
#
iptables -A OUTPUT -o $INTIF -s $INTIP -d $INTNET -j ACCEPT
# outgoing to local net on remote interface, stuffed routing, deny
#
iptables -A OUTPUT -o $EXTIF -s $UNIVERSE -d $INTNET -j drop-and-log-it
# anything else outgoing on remote interface is valid
#
iptables -A OUTPUT -o $EXTIF -s $EXTIP -d $UNIVERSE -j ACCEPT
# ----- Begin OPTIONAL Section -----
#
# DHCPd - Enable the following lines if you run an INTERNAL DHCPd server
# - Remove BOTH #s all the #s if you need this functionality.
#
#iptables -A OUTPUT -o $INTIF -p tcp -s $INTIP --sport 67 \
# -d 255.255.255.255 --dport 68 -j ACCEPT
#iptables -A OUTPUT -o $INTIF -p udp -s $INTIP --sport 67 \
# -d 255.255.255.255 --dport 68 -j ACCEPT
# HTTP
iptables -A OUTPUT -o $EXTIF -m state --state NEW -p tcp -s $EXTIP \
--sport $UPORTS --dport 80 -j ACCEPT
# DNS
iptables -A OUTPUT -o $EXTIF -p udp -s $EXTIP --sport $UPORTS -d $DNS1 \
--dport 53 -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p udp -s $EXTIP --sport $UPORTS -d $DNS2 \
--dport 53 -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp -s $EXTIP --sport $UPORTS -d $DNS1 \
--dport 53 -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp -s $EXTIP --sport $UPORTS -d $DNS2 \
--dport 53 -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p udp -s $EXTIP --sport $UPORTS -d $DNS3 \
--dport 53 -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp -s $EXTIP --sport $UPORTS -d $DNS3 \
--dport 53 -j ACCEPT
# VNC
iptables -A OUTPUT -o $EXTIF -m state --state NEW -p tcp -s $EXTIP \
--sport $UPORTS --dport 5900 -j ACCEPT
# SUNRPC
iptables -A OUTPUT -o $EXTIF -p tcp -s $EXTIP -d $UNIVERSE --dport 111 -j
ACCEPT
iptables -A OUTPUT -o $EXTIF -p udp -s $EXTIP -d $UNIVERSE --dport 111 -j
ACCEPT
#
# ----- End OPTIONAL Section -----
# Catch all rule, all other outgoing is denied and logged.
#
iptables -A OUTPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it
echo -e " - Loading FORWARD rulesets"
#######################################################################
# FORWARD: Enable Forwarding and thus IPMASQ
#
echo " - FWD: Allow all connections OUT and only existing/related IN"
iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED
\
-j ACCEPT
iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
# Catch all rule, all other forwarding is denied and logged.
#
iptables -A FORWARD -j drop-and-log-it
echo " - NAT: Enabling SNAT (MASQUERADE) functionality on $EXTIF"
#
#More liberal form
#iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
#
#Stricter form
iptables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to $EXTIP
#######################################################################
echo -e "\nDone.\n"
Best regards,
Gary Lee
[-- Attachment #2: Type: text/html, Size: 15739 bytes --]
^ permalink raw reply
* Linux kernel 2.5.55 released
From: Linux Kernel Distribution System @ 2003-01-09 4:12 UTC (permalink / raw)
To: linux-kernel-announce
Linux kernel version 2.5.55 has been released. It is available from:
Patch: ftp://ftp.kernel.org/pub/linux/kernel/v2.5/patch-2.5.55.gz
Full source: ftp://ftp.kernel.org/pub/linux/kernel/v2.5/linux-2.5.55.tar.gz
Sizes in bytes Compressed Uncompressed
------------------------------------------------------------
Patch 688741 3467593
Full source 39284482 176117760
-----------------------------------------------------------------------------
This is an automatically generated message. To unsubscribe from this list,
please send a message to majordomo@vger.kernel.org containing
the line:
unsubscribe linux-kernel-announce <your_email_address>
... where <your_email_address> is the email address you are receiving
this message at.
-----------------------------------------------------------------------------
The following files were changed in this release:
arch/ppc/boot/common/ofcommon.c | 180 --
arch/ppc/boot/prep/of1275.c | 427 -----
arch/ppc/boot/prep/of1275.h | 421 -----
arch/ppc/configs/iSeries_defconfig | 477 ------
arch/ppc/iSeries/HvCall.c | 127 -
arch/ppc/iSeries/HvLpConfig.c | 27
arch/ppc/iSeries/HvLpEvent.c | 87 -
arch/ppc/iSeries/ItLpQueue.c | 178 --
arch/ppc/iSeries/LparData.c | 331 ----
arch/ppc/iSeries/Makefile | 17
arch/ppc/iSeries/XmPciLpEvent.c | 150 -
arch/ppc/iSeries/createReleaseData | 115 -
arch/ppc/iSeries/iSeries_FlightRecorder.c | 89 -
arch/ppc/iSeries/iSeries_IoMmTable.c | 206 --
arch/ppc/iSeries/iSeries_IoMmTable.h | 105 -
arch/ppc/iSeries/iSeries_VpdInfo.c | 339 ----
arch/ppc/iSeries/iSeries_fixup.c | 255 ---
arch/ppc/iSeries/iSeries_irq.c | 256 ---
arch/ppc/iSeries/iSeries_ksyms.c | 82 -
arch/ppc/iSeries/iSeries_pci.c | 587 -------
arch/ppc/iSeries/iSeries_pci.h | 139 -
arch/ppc/iSeries/iSeries_pci_proc.c | 185 --
arch/ppc/iSeries/iSeries_proc.c | 154 -
arch/ppc/iSeries/iSeries_reset_device.c | 196 --
arch/ppc/iSeries/mf.c | 1215 ---------------
arch/ppc/iSeries/mf_proc.c | 309 ---
arch/ppc/iSeries/pmc_proc.c | 647 --------
arch/ppc/iSeries/rtc.c | 265 ---
arch/ppc/kernel/iSeries_asm.h | 59
arch/ppc/kernel/iSeries_head.S | 1512 -------------------
arch/ppc/kernel/iSeries_idle.c | 124 -
arch/ppc/kernel/iSeries_misc.S | 469 -----
arch/ppc/kernel/ppc6xx_idle.c | 79 -
arch/ppc/mm/iSeries_hashtable.c | 223 --
arch/ppc/mm/iSeries_mmu.c | 184 --
arch/ppc/platforms/4xx/ibm_ocp.h | 192 --
arch/ppc/platforms/iSeries_dma.c | 1049 -------------
arch/ppc/platforms/iSeries_pic.c | 77
arch/ppc/platforms/iSeries_setup.c | 816 ----------
arch/ppc/platforms/iSeries_setup.h | 61
arch/ppc/platforms/iSeries_smp.c | 136 -
arch/ppc/platforms/iSeries_time.c | 150 -
arch/ppc/platforms/oak.h | 71
arch/ppc/platforms/oak_setup.c | 282 ---
arch/ppc/platforms/oak_setup.h | 50
arch/ppc/syslib/ppc405_dma.c | 511 ------
arch/ppc64/kernel/xics.h | 22
b/CREDITS | 5
b/Documentation/DocBook/Makefile | 2
b/Documentation/DocBook/journal-api.tmpl | 2
b/Documentation/DocBook/kernel-api.tmpl | 29
b/Documentation/DocBook/scsidrivers.tmpl | 4
b/Documentation/DocBook/videobook.tmpl | 14
b/Documentation/kobject.txt | 400 +++--
b/Documentation/video4linux/bttv/CARDLIST | 2
b/Documentation/video4linux/bttv/Cards | 181 +-
b/MAINTAINERS | 6
b/Makefile | 2
b/arch/alpha/Kconfig | 54
b/arch/alpha/Makefile | 102 -
b/arch/alpha/boot/Makefile | 131 -
b/arch/alpha/kernel/Makefile | 125 -
b/arch/alpha/kernel/alpha_ksyms.c | 2
b/arch/alpha/kernel/irq_i8259.c | 4
b/arch/alpha/kernel/module.c | 305 +++
b/arch/alpha/kernel/sys_alcor.c | 8
b/arch/alpha/kernel/traps.c | 5
b/arch/alpha/lib/Makefile | 71
b/arch/alpha/math-emu/Makefile | 2
b/arch/alpha/mm/extable.c | 43
b/arch/alpha/mm/fault.c | 5
b/arch/arm/Kconfig | 39
b/arch/arm/Makefile | 1
b/arch/arm/boot/compressed/Makefile | 2
b/arch/arm/kernel/armksyms.c | 4
b/arch/arm/kernel/bios32.c | 1
b/arch/arm/kernel/calls.S | 2
b/arch/arm/kernel/irq.c | 25
b/arch/arm/kernel/module.c | 6
b/arch/arm/kernel/signal.c | 41
b/arch/arm/mach-integrator/cpu.c | 8
b/arch/arm/mach-sa1100/Makefile | 3
b/arch/arm/mach-sa1100/cpu-sa1100.c | 8
b/arch/arm/mach-sa1100/cpu-sa1110.c | 8
b/arch/arm/mach-sa1100/irq.c | 22
b/arch/arm/mach-sa1100/jornada720.c | 46
b/arch/arm/mach-sa1100/neponset.c | 11
b/arch/arm/mach-sa1100/pcipool.c | 2
b/arch/arm/mach-sa1100/sa1111-pcibuf.c | 72
b/arch/arm/mach-sa1100/sa1111.c | 30
b/arch/arm/mm/consistent.c | 11
b/arch/arm/tools/mach-types | 19
b/arch/arm/vmlinux-armv.lds.in | 3
b/arch/cris/Kconfig | 41
b/arch/i386/Kconfig | 55
b/arch/i386/kernel/apm.c | 8
b/arch/i386/kernel/cpu/cpufreq/elanfreq.c | 59
b/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c | 90 -
b/arch/i386/kernel/edd.c | 12
b/arch/i386/kernel/entry.S | 12
b/arch/i386/kernel/ioport.c | 2
b/arch/i386/kernel/module.c | 6
b/arch/i386/kernel/pci-dma.c | 2
b/arch/i386/kernel/process.c | 8
b/arch/i386/kernel/signal.c | 50
b/arch/i386/kernel/smp.c | 1
b/arch/i386/kernel/smpboot.c | 175 --
b/arch/i386/kernel/sysenter.c | 14
b/arch/i386/kernel/timers/timer_tsc.c | 54
b/arch/i386/kernel/traps.c | 63
b/arch/i386/mach-voyager/voyager_smp.c | 1
b/arch/i386/mm/extable.c | 48
b/arch/i386/mm/fault.c | 7
b/arch/i386/mm/hugetlbpage.c | 6
b/arch/i386/mm/init.c | 10
b/arch/i386/pci/numa.c | 2
b/arch/ia64/Kconfig | 38
b/arch/ia64/ia32/sys_ia32.c | 36
b/arch/m68k/Kconfig | 490 ------
b/arch/m68k/kernel/traps.c | 36
b/arch/m68knommu/Kconfig | 41
b/arch/mips/Kconfig | 41
b/arch/mips/kernel/pci.c | 2
b/arch/mips64/Kconfig | 41
b/arch/mips64/sgi-ip27/ip27-rtc.c | 10
b/arch/parisc/Kconfig | 40
b/arch/parisc/kernel/perf.c | 10
b/arch/parisc/kernel/traps.c | 25
b/arch/ppc/8xx_io/Kconfig | 16
b/arch/ppc/8xx_io/fec.c | 84 -
b/arch/ppc/Kconfig | 379 ----
b/arch/ppc/Makefile | 14
b/arch/ppc/boot/Makefile | 6
b/arch/ppc/boot/openfirmware/Makefile | 6
b/arch/ppc/boot/prep/misc.c | 28
b/arch/ppc/boot/simple/Makefile | 8
b/arch/ppc/boot/simple/embed_config.c | 4
b/arch/ppc/boot/simple/misc-embedded.c | 28
b/arch/ppc/boot/simple/misc-spruce.c | 29
b/arch/ppc/boot/simple/misc.c | 31
b/arch/ppc/configs/FADS_defconfig | 302 ++-
b/arch/ppc/configs/IVMS8_defconfig | 460 ++---
b/arch/ppc/configs/SM850_defconfig | 397 ++---
b/arch/ppc/configs/SPD823TS_defconfig | 397 ++---
b/arch/ppc/configs/TQM823L_defconfig | 397 ++---
b/arch/ppc/configs/TQM8260_defconfig | 317 ++--
b/arch/ppc/configs/TQM850L_defconfig | 397 ++---
b/arch/ppc/configs/TQM860L_defconfig | 465 ++---
b/arch/ppc/configs/adir_defconfig | 572 ++++---
b/arch/ppc/configs/apus_defconfig | 691 ++++----
b/arch/ppc/configs/ash_defconfig | 426 ++---
b/arch/ppc/configs/beech_defconfig | 625 +++++++
b/arch/ppc/configs/bseip_defconfig | 393 ++--
b/arch/ppc/configs/cedar_defconfig | 464 ++---
b/arch/ppc/configs/common_defconfig | 721 ++++-----
b/arch/ppc/configs/cpci405_defconfig | 549 +++---
b/arch/ppc/configs/ep405_defconfig | 450 ++---
b/arch/ppc/configs/est8260_defconfig | 393 ++--
b/arch/ppc/configs/ev64260_defconfig | 420 ++---
b/arch/ppc/configs/gemini_defconfig | 479 ++----
b/arch/ppc/configs/ibmchrp_defconfig | 654 +++-----
b/arch/ppc/configs/k2_defconfig | 456 ++---
b/arch/ppc/configs/lopec_defconfig | 518 ++----
b/arch/ppc/configs/mbx_defconfig | 396 ++---
b/arch/ppc/configs/mcpn765_defconfig | 328 ++--
b/arch/ppc/configs/menf1_defconfig | 510 ++----
b/arch/ppc/configs/mvme5100_defconfig | 513 +++---
b/arch/ppc/configs/oak_defconfig | 434 +----
b/arch/ppc/configs/pcore_defconfig | 486 +++---
b/arch/ppc/configs/pmac_defconfig | 837 +++++-----
b/arch/ppc/configs/power3_defconfig | 656 +++-----
b/arch/ppc/configs/pplus_defconfig | 604 +++----
b/arch/ppc/configs/prpmc750_defconfig | 409 ++---
b/arch/ppc/configs/prpmc800_defconfig | 358 ++--
b/arch/ppc/configs/rainier_defconfig | 612 +++++++
b/arch/ppc/configs/redwood5_defconfig | 464 ++---
b/arch/ppc/configs/redwood_defconfig | 433 ++---
b/arch/ppc/configs/rpxcllf_defconfig | 393 ++--
b/arch/ppc/configs/rpxlite_defconfig | 393 ++--
b/arch/ppc/configs/sandpoint_defconfig | 485 ++----
b/arch/ppc/configs/spruce_defconfig | 386 ++--
b/arch/ppc/configs/walnut_defconfig | 473 ++----
b/arch/ppc/configs/zx4500_defconfig | 333 ++--
b/arch/ppc/kernel/Makefile | 8
b/arch/ppc/kernel/asm-offsets.c | 36
b/arch/ppc/kernel/cputable.c | 70
b/arch/ppc/kernel/entry.S | 25
b/arch/ppc/kernel/head.S | 165 +-
b/arch/ppc/kernel/head_4xx.S | 142 -
b/arch/ppc/kernel/idle_6xx.S | 242 +++
b/arch/ppc/kernel/irq.c | 2
b/arch/ppc/kernel/l2cr.S | 61
b/arch/ppc/kernel/misc.S | 31
b/arch/ppc/kernel/module.c | 8
b/arch/ppc/kernel/ppc-stub.c | 2
b/arch/ppc/kernel/ppc_ksyms.c | 2
b/arch/ppc/kernel/process.c | 7
b/arch/ppc/kernel/setup.c | 2
b/arch/ppc/kernel/time.c | 32
b/arch/ppc/kernel/traps.c | 5
b/arch/ppc/mm/4xx_mmu.c | 47
b/arch/ppc/mm/Makefile | 1
b/arch/ppc/mm/extable.c | 46
b/arch/ppc/mm/fault.c | 8
b/arch/ppc/mm/init.c | 13
b/arch/ppc/mm/mmu_context.c | 3
b/arch/ppc/mm/mmu_decl.h | 2
b/arch/ppc/mm/pgtable.c | 2
b/arch/ppc/mm/ppc_mmu.c | 3
b/arch/ppc/platforms/4xx/Kconfig | 156 +
b/arch/ppc/platforms/4xx/Makefile | 8
b/arch/ppc/platforms/4xx/ash.c | 220 ++
b/arch/ppc/platforms/4xx/ash.h | 8
b/arch/ppc/platforms/4xx/beech.c | 252 +++
b/arch/ppc/platforms/4xx/beech.h | 202 ++
b/arch/ppc/platforms/4xx/cedar.c | 70
b/arch/ppc/platforms/4xx/cedar.h | 38
b/arch/ppc/platforms/4xx/cpci405.c | 26
b/arch/ppc/platforms/4xx/cpci405.h | 24
b/arch/ppc/platforms/4xx/ep405.c | 40
b/arch/ppc/platforms/4xx/ep405.h | 3
b/arch/ppc/platforms/4xx/ibm405gp.c | 34
b/arch/ppc/platforms/4xx/ibm405gp.h | 60
b/arch/ppc/platforms/4xx/ibm405gpr.c | 47
b/arch/ppc/platforms/4xx/ibm405gpr.h | 187 ++
b/arch/ppc/platforms/4xx/ibm405lp.c | 266 +++
b/arch/ppc/platforms/4xx/ibm405lp.h | 900 +++++++++++
b/arch/ppc/platforms/4xx/ibmnp405h.c | 57
b/arch/ppc/platforms/4xx/ibmnp405h.h | 121 -
b/arch/ppc/platforms/4xx/ibmnp405l.c | 38
b/arch/ppc/platforms/4xx/ibmnp405l.h | 116 -
b/arch/ppc/platforms/4xx/ibmnp4gs.c | 42
b/arch/ppc/platforms/4xx/ibmnp4gs.h | 168 ++
b/arch/ppc/platforms/4xx/ibmstb3.c | 26
b/arch/ppc/platforms/4xx/ibmstb3.h | 126 -
b/arch/ppc/platforms/4xx/ibmstb4.c | 41
b/arch/ppc/platforms/4xx/ibmstb4.h | 148 -
b/arch/ppc/platforms/4xx/ibmstbx25.c | 51
b/arch/ppc/platforms/4xx/ibmstbx25.h | 282 +++
b/arch/ppc/platforms/4xx/oak.h | 71
b/arch/ppc/platforms/4xx/oak_setup.c | 282 +++
b/arch/ppc/platforms/4xx/oak_setup.h | 50
b/arch/ppc/platforms/4xx/redwood.c | 51
b/arch/ppc/platforms/4xx/redwood.h | 7
b/arch/ppc/platforms/4xx/redwood5.c | 22
b/arch/ppc/platforms/4xx/redwood6.c | 172 ++
b/arch/ppc/platforms/4xx/redwood6.h | 76
b/arch/ppc/platforms/4xx/walnut.c | 52
b/arch/ppc/platforms/4xx/walnut.h | 4
b/arch/ppc/platforms/Makefile | 3
b/arch/ppc/platforms/adir_pic.c | 4
b/arch/ppc/platforms/adir_setup.c | 2
b/arch/ppc/platforms/ccm.h | 8
b/arch/ppc/platforms/k2_setup.c | 8
b/arch/ppc/platforms/menf1_setup.c | 7
b/arch/ppc/platforms/powerpmc250.c | 6
b/arch/ppc/platforms/pplus_setup.c | 8
b/arch/ppc/platforms/prep_setup.c | 15
b/arch/ppc/platforms/prpmc750_setup.c | 6
b/arch/ppc/platforms/prpmc800_setup.c | 6
b/arch/ppc/platforms/sandpoint_setup.c | 2
b/arch/ppc/platforms/tqm8xx.h | 38
b/arch/ppc/syslib/Makefile | 14
b/arch/ppc/syslib/ppc405_pci.c | 119 -
b/arch/ppc/syslib/ppc4xx_dma.c | 511 ++++++
b/arch/ppc/syslib/ppc4xx_pic.c | 212 +-
b/arch/ppc/syslib/ppc4xx_setup.c | 114 -
b/arch/ppc/syslib/prom_init.c | 4
b/arch/ppc64/Kconfig | 41
b/arch/ppc64/Makefile | 58
b/arch/ppc64/boot/Makefile | 172 +-
b/arch/ppc64/boot/main.c | 6
b/arch/ppc64/defconfig | 50
b/arch/ppc64/kernel/Makefile | 58
b/arch/ppc64/kernel/chrp_setup.c | 2
b/arch/ppc64/kernel/head.S | 23
b/arch/ppc64/kernel/init_task.c | 2
b/arch/ppc64/kernel/ioctl32.c | 57
b/arch/ppc64/kernel/irq.c | 21
b/arch/ppc64/kernel/misc.S | 48
b/arch/ppc64/kernel/pSeries_pci.c | 7
b/arch/ppc64/kernel/pci_dma.c | 17
b/arch/ppc64/kernel/prom.c | 284 ---
b/arch/ppc64/kernel/rtc.c | 124 -
b/arch/ppc64/kernel/setup.c | 6
b/arch/ppc64/kernel/signal32.c | 2
b/arch/ppc64/kernel/smp.c | 52
b/arch/ppc64/kernel/sys_ppc32.c | 165 --
b/arch/ppc64/kernel/time.c | 8
b/arch/ppc64/kernel/xics.c | 17
b/arch/ppc64/lib/Makefile | 8
b/arch/ppc64/lib/memcpy.S | 2
b/arch/ppc64/mm/Makefile | 4
b/arch/ppc64/oprofile/Makefile | 4
b/arch/ppc64/xmon/Makefile | 4
b/arch/ppc64/xmon/start.c | 119 -
b/arch/s390/kernel/module.c | 6
b/arch/s390/kernel/traps.c | 44
b/arch/s390x/kernel/linux32.c | 41
b/arch/s390x/kernel/linux32.h | 9
b/arch/s390x/kernel/module.c | 6
b/arch/s390x/kernel/traps.c | 44
b/arch/sh/Kconfig | 42
b/arch/sparc/Kconfig | 390 ----
b/arch/sparc/Makefile | 21
b/arch/sparc/boot/Makefile | 53
b/arch/sparc/kernel/Makefile | 6
b/arch/sparc/kernel/module.c | 6
b/arch/sparc/kernel/sparc_ksyms.c | 11
b/arch/sparc/kernel/sun4c_irq.c | 13
b/arch/sparc/kernel/sun4d_irq.c | 10
b/arch/sparc/kernel/sun4m_irq.c | 13
b/arch/sparc64/Kconfig | 43
b/arch/sparc64/Makefile | 5
b/arch/sparc64/kernel/ioctl32.c | 62
b/arch/sparc64/kernel/module.c | 6
b/arch/sparc64/kernel/sunos_ioctl32.c | 5
b/arch/sparc64/kernel/sys_sparc32.c | 189 +-
b/arch/sparc64/kernel/sys_sunos32.c | 24
b/arch/sparc64/kernel/traps.c | 10
b/arch/sparc64/kernel/unaligned.c | 3
b/arch/sparc64/mm/extable.c | 67
b/arch/sparc64/mm/fault.c | 3
b/arch/sparc64/mm/hugetlbpage.c | 9
b/arch/um/kernel/sysrq.c | 43
b/arch/v850/Kconfig | 41
b/arch/x86_64/Kconfig | 43
b/arch/x86_64/Makefile | 17
b/arch/x86_64/ia32/ia32_binfmt.c | 2
b/arch/x86_64/ia32/ia32_ioctl.c | 46
b/arch/x86_64/ia32/ia32entry.S | 17
b/arch/x86_64/ia32/ipc32.c | 46
b/arch/x86_64/ia32/sys_ia32.c | 189 +-
b/arch/x86_64/kernel/head.S | 3
b/arch/x86_64/kernel/module.c | 6
b/arch/x86_64/kernel/msr.c | 2
b/arch/x86_64/kernel/pci-gart.c | 9
b/arch/x86_64/kernel/process.c | 22
b/arch/x86_64/kernel/ptrace.c | 11
b/arch/x86_64/kernel/setup.c | 2
b/arch/x86_64/kernel/smpboot.c | 5
b/arch/x86_64/kernel/sys_x86_64.c | 30
b/arch/x86_64/kernel/traps.c | 55
b/arch/x86_64/kernel/vsyscall.c | 3
b/arch/x86_64/mm/extable.c | 65
b/arch/x86_64/mm/fault.c | 8
b/arch/x86_64/mm/hugetlbpage.c | 6
b/arch/x86_64/mm/init.c | 2
b/drivers/acpi/bus.c | 4
b/drivers/acpi/scan.c | 17
b/drivers/atm/atmtcp.c | 2
b/drivers/base/bus.c | 160 +-
b/drivers/base/class.c | 50
b/drivers/base/core.c | 19
b/drivers/base/firmware.c | 6
b/drivers/base/intf.c | 46
b/drivers/base/power.c | 20
b/drivers/block/genhd.c | 57
b/drivers/cdrom/cdrom.c | 6
b/drivers/char/agp/Kconfig | 10
b/drivers/char/agp/Makefile | 1
b/drivers/char/agp/agp.h | 13
b/drivers/char/agp/ali-agp.c | 1
b/drivers/char/agp/amd-k7-agp.c | 4
b/drivers/char/agp/amd-k8-agp.c | 28
b/drivers/char/agp/backend.c | 15
b/drivers/char/agp/frontend.c | 3
b/drivers/char/agp/generic-3.0.c | 21
b/drivers/char/agp/generic.c | 59
b/drivers/char/agp/hp-agp.c | 1
b/drivers/char/agp/i460-agp.c | 1
b/drivers/char/agp/i7x05-agp.c | 1
b/drivers/char/agp/intel-agp.c | 28
b/drivers/char/agp/sis-agp.c | 1
b/drivers/char/agp/sworks-agp.c | 4
b/drivers/char/agp/via-agp.c | 60
b/drivers/char/agp/via-kt400.c | 198 ++
b/drivers/char/drm/radeon_mem.c | 10
b/drivers/char/ftape/compressor/zftape-compress.c | 49
b/drivers/char/ftape/lowlevel/fdc-io.c | 35
b/drivers/char/ftape/lowlevel/fdc-isr.c | 15
b/drivers/char/ftape/lowlevel/ftape-ctl.c | 4
b/drivers/char/ftape/lowlevel/ftape-init.c | 11
b/drivers/char/ftape/lowlevel/ftape-setup.c | 5
b/drivers/char/ftape/zftape/zftape-buffers.c | 2
b/drivers/char/ftape/zftape/zftape-ctl.c | 36
b/drivers/char/ftape/zftape/zftape-ctl.h | 1
b/drivers/char/ftape/zftape/zftape-init.c | 1
b/drivers/char/ftape/zftape/zftape-read.c | 9
b/drivers/char/ftape/zftape/zftape-write.c | 9
b/drivers/char/genrtc.c | 15
b/drivers/char/ip2.c | 3
b/drivers/char/nwflash.c | 7
b/drivers/char/raw.c | 11
b/drivers/char/sx.c | 12
b/drivers/char/toshiba.c | 15
b/drivers/hotplug/ibmphp_core.c | 10
b/drivers/hotplug/pci_hotplug_core.c | 43
b/drivers/ide/ide.c | 3
b/drivers/input/serio/sa1111ps2.c | 6
b/drivers/isdn/hisax/amd7930.c | 2
b/drivers/isdn/hisax/amd7930_fn.c | 10
b/drivers/isdn/hisax/arcofi.c | 23
b/drivers/isdn/hisax/asuscom.c | 207 +-
b/drivers/isdn/hisax/avm_a1.c | 92 -
b/drivers/isdn/hisax/avm_a1p.c | 155 -
b/drivers/isdn/hisax/avm_pci.c | 105 -
b/drivers/isdn/hisax/avma1_cs.c | 2
b/drivers/isdn/hisax/bkm_a4t.c | 102 -
b/drivers/isdn/hisax/bkm_a8.c | 162 --
b/drivers/isdn/hisax/callc.c | 2
b/drivers/isdn/hisax/config.c | 27
b/drivers/isdn/hisax/diva.c | 283 +--
b/drivers/isdn/hisax/elsa.c | 243 +--
b/drivers/isdn/hisax/elsa_ser.c | 12
b/drivers/isdn/hisax/enternow.h | 9
b/drivers/isdn/hisax/enternow_pci.c | 32
b/drivers/isdn/hisax/gazel.c | 208 +-
b/drivers/isdn/hisax/hfc_2bds0.c | 85 -
b/drivers/isdn/hisax/hfc_2bds0.h | 2
b/drivers/isdn/hisax/hfc_2bs0.c | 98 -
b/drivers/isdn/hisax/hfc_pci.c | 43
b/drivers/isdn/hisax/hfc_pci.h | 36
b/drivers/isdn/hisax/hfc_sx.c | 41
b/drivers/isdn/hisax/hfcscard.c | 46
b/drivers/isdn/hisax/hisax.h | 201 +-
b/drivers/isdn/hisax/hisax_debug.h | 2
b/drivers/isdn/hisax/hisax_fcclassic.c | 6
b/drivers/isdn/hisax/hisax_fcpcipnp.c | 44
b/drivers/isdn/hisax/hisax_fcpcipnp.h | 18
b/drivers/isdn/hisax/hisax_hscx.c | 2
b/drivers/isdn/hisax/hisax_hscx.h | 12
b/drivers/isdn/hisax/hisax_isac.c | 4
b/drivers/isdn/hisax/hisax_isac.h | 14
b/drivers/isdn/hisax/hscx.c | 130 +
b/drivers/isdn/hisax/hscx.h | 2
b/drivers/isdn/hisax/hscx_irq.c | 60
b/drivers/isdn/hisax/icc.c | 154 +
b/drivers/isdn/hisax/icc.h | 2
b/drivers/isdn/hisax/ipacx.c | 214 +-
b/drivers/isdn/hisax/isac.c | 158 +-
b/drivers/isdn/hisax/isac.h | 2
b/drivers/isdn/hisax/isar.c | 192 +-
b/drivers/isdn/hisax/isdnl1.c | 6
b/drivers/isdn/hisax/isdnl1.h | 16
b/drivers/isdn/hisax/isdnl2.c | 52
b/drivers/isdn/hisax/isdnl3.c | 8
b/drivers/isdn/hisax/isdnl3.h | 2
b/drivers/isdn/hisax/isurf.c | 41
b/drivers/isdn/hisax/ix1_micro.c | 131 -
b/drivers/isdn/hisax/jade.c | 114 -
b/drivers/isdn/hisax/jade.h | 3
b/drivers/isdn/hisax/jade_irq.c | 26
b/drivers/isdn/hisax/l3_1tr6.c | 102 -
b/drivers/isdn/hisax/l3dss1.c | 286 +--
b/drivers/isdn/hisax/l3dss1.h | 2
b/drivers/isdn/hisax/l3ni1.c | 296 +--
b/drivers/isdn/hisax/l3ni1.h | 2
b/drivers/isdn/hisax/mic.c | 138 -
b/drivers/isdn/hisax/netjet.c | 81 -
b/drivers/isdn/hisax/netjet.h | 10
b/drivers/isdn/hisax/niccy.c | 118 -
b/drivers/isdn/hisax/nj_s.c | 19
b/drivers/isdn/hisax/nj_u.c | 25
b/drivers/isdn/hisax/q931.c | 62
b/drivers/isdn/hisax/rawhdlc.c | 30
b/drivers/isdn/hisax/rawhdlc.h | 10
b/drivers/isdn/hisax/s0box.c | 124 -
b/drivers/isdn/hisax/saphir.c | 142 -
b/drivers/isdn/hisax/sedlbauer.c | 270 +--
b/drivers/isdn/hisax/sedlbauer_cs.c | 2
b/drivers/isdn/hisax/sportster.c | 83 -
b/drivers/isdn/hisax/st5481.h | 8
b/drivers/isdn/hisax/st5481_b.c | 2
b/drivers/isdn/hisax/st5481_usb.c | 8
b/drivers/isdn/hisax/tei.c | 6
b/drivers/isdn/hisax/teleint.c | 58
b/drivers/isdn/hisax/teles0.c | 162 --
b/drivers/isdn/hisax/teles3.c | 92 -
b/drivers/isdn/hisax/telespci.c | 230 +-
b/drivers/isdn/hisax/w6692.c | 226 +-
b/drivers/macintosh/ans-lcd.c | 8
b/drivers/macintosh/apm_emu.c | 2
b/drivers/macintosh/via-pmu.c | 6
b/drivers/macintosh/via-pmu68k.c | 6
b/drivers/md/dm-ioctl.c | 18
b/drivers/md/dm-table.c | 38
b/drivers/md/dm-target.c | 37
b/drivers/md/dm.c | 31
b/drivers/md/md.c | 102 -
b/drivers/md/raid1.c | 4
b/drivers/md/raid5.c | 2
b/drivers/media/video/Makefile | 8
b/drivers/media/video/audiochip.h | 38
b/drivers/media/video/bt832.c | 289 +++
b/drivers/media/video/bt832.h | 305 +++
b/drivers/media/video/bttv-cards.c | 264 ++-
b/drivers/media/video/bttv-driver.c | 327 ++--
b/drivers/media/video/bttv-if.c | 5
b/drivers/media/video/bttv-risc.c | 10
b/drivers/media/video/bttv-vbi.c | 11
b/drivers/media/video/bttv.h | 12
b/drivers/media/video/bttvp.h | 14
b/drivers/media/video/msp3400.c | 69
b/drivers/media/video/saa7134/saa7134-cards.c | 95 +
b/drivers/media/video/saa7134/saa7134-i2c.c | 1
b/drivers/media/video/saa7134/saa7134-oss.c | 4
b/drivers/media/video/saa7134/saa7134-ts.c | 40
b/drivers/media/video/saa7134/saa7134-tvaudio.c | 12
b/drivers/media/video/saa7134/saa7134-vbi.c | 6
b/drivers/media/video/saa7134/saa7134-video.c | 115 +
b/drivers/media/video/saa7134/saa7134.h | 6
b/drivers/media/video/tda7432.c | 110 -
b/drivers/media/video/tda9875.c | 38
b/drivers/media/video/tda9887.c | 484 ++++++
b/drivers/media/video/tuner.c | 41
b/drivers/media/video/tvaudio.c | 53
b/drivers/media/video/tvmixer.c | 28
b/drivers/media/video/v4l1-compat.c | 1010 ++++++++++++
b/drivers/media/video/video-buf.c | 44
b/drivers/media/video/video-buf.h | 8
b/drivers/media/video/zr36067.c | 6
b/drivers/net/3c59x.c | 4
b/drivers/net/Kconfig | 237 ++-
b/drivers/net/Makefile | 1
b/drivers/net/Makefile.lib | 1
b/drivers/net/aironet4500_proc.c | 15
b/drivers/net/amd8111e.c | 1651 +++++++++++++++++++++
b/drivers/net/amd8111e.h | 786 +++++++++
b/drivers/net/appletalk/Kconfig | 4
b/drivers/net/arcnet/Kconfig | 2
b/drivers/net/atari_bionet.c | 2
b/drivers/net/e100/e100.h | 13
b/drivers/net/e100/e100_config.c | 16
b/drivers/net/e100/e100_main.c | 373 ++--
b/drivers/net/e100/e100_test.c | 26
b/drivers/net/e1000/e1000.h | 1
b/drivers/net/e1000/e1000_ethtool.c | 22
b/drivers/net/e1000/e1000_main.c | 83 -
b/drivers/net/e1000/e1000_osdep.h | 2
b/drivers/net/e1000/e1000_param.c | 25
b/drivers/net/e1000/e1000_proc.c | 24
b/drivers/net/eepro100.c | 1
b/drivers/net/irda/ali-ircc.c | 7
b/drivers/net/irda/donauboe.c | 7
b/drivers/net/irda/irda-usb.c | 6
b/drivers/net/irda/nsc-ircc.c | 7
b/drivers/net/irda/sa1100_ir.c | 5
b/drivers/net/irda/w83977af_ir.c | 7
b/drivers/net/mii.c | 8
b/drivers/net/natsemi.c | 44
b/drivers/net/starfire.c | 8
b/drivers/net/sungem.c | 1
b/drivers/net/sunlance.c | 1
b/drivers/net/tokenring/Kconfig | 2
b/drivers/net/tulip/de4x5.c | 1
b/drivers/net/wan/Kconfig | 20
b/drivers/net/wireless/Kconfig | 6
b/drivers/net/wireless/wavelan_cs.p.h | 2
b/drivers/pci/Kconfig | 30
b/drivers/pci/hotplug.c | 2
b/drivers/pci/pci.ids | 563 +++++--
b/drivers/pci/probe.c | 8
b/drivers/pci/proc.c | 38
b/drivers/pcmcia/sa1100_jornada720.c | 10
b/drivers/pcmcia/sa1111_generic.c | 4
b/drivers/pcmcia/yenta.c | 2
b/drivers/sbus/char/bpp.c | 7
b/drivers/sbus/char/envctrl.c | 4
b/drivers/sbus/sbus.c | 71
b/drivers/scsi/53c700.h | 2
b/drivers/scsi/Kconfig | 24
b/drivers/scsi/Makefile | 2
b/drivers/scsi/aic7xxx/Makefile | 49
b/drivers/scsi/aic7xxx/aic79xx_core.c | 16
b/drivers/scsi/aic7xxx/aic79xx_osm.c | 25
b/drivers/scsi/aic7xxx/aic79xx_osm.h | 13
b/drivers/scsi/aic7xxx/aic79xx_osm_pci.c | 5
b/drivers/scsi/aic7xxx/aic79xx_pci.c | 25
b/drivers/scsi/aic7xxx/aic7xxx.h | 3
b/drivers/scsi/aic7xxx/aic7xxx.reg | 4
b/drivers/scsi/aic7xxx/aic7xxx.seq | 4
b/drivers/scsi/aic7xxx/aic7xxx_core.c | 74
b/drivers/scsi/aic7xxx/aic7xxx_osm.c | 29
b/drivers/scsi/aic7xxx/aic7xxx_osm.h | 14
b/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c | 6
b/drivers/scsi/aic7xxx/aic7xxx_pci.c | 34
b/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped | 5
b/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped | 4
b/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped | 4
b/drivers/scsi/aic7xxx/aicasm/aicasm_gram.y | 15
b/drivers/scsi/gdth.c | 96 -
b/drivers/scsi/gdth.h | 13
b/drivers/scsi/i91uscsi.c | 136 -
b/drivers/scsi/ide-scsi.c | 7
b/drivers/scsi/ips.c | 804 +---------
b/drivers/scsi/ips.h | 64
b/drivers/scsi/lasi700.c | 2
b/drivers/scsi/ncr53c8xx.c | 356 +++-
b/drivers/scsi/pcmcia/Makefile | 20
b/drivers/scsi/pcmcia/aha152x_core.c | 3
b/drivers/scsi/pcmcia/aha152x_stub.c | 10
b/drivers/scsi/pcmcia/fdomain_core.c | 2
b/drivers/scsi/pcmcia/fdomain_stub.c | 7
b/drivers/scsi/pcmcia/nsp_cs.c | 4
b/drivers/scsi/pcmcia/nsp_cs.h | 2
b/drivers/scsi/pcmcia/qlogic_core.c | 2
b/drivers/scsi/pcmcia/qlogic_stub.c | 6
b/drivers/scsi/scsi_scan.c | 164 --
b/drivers/scsi/sr_ioctl.c | 2
b/drivers/scsi/sym53c8xx_comm.h | 71
b/drivers/scsi/sym53c8xx_defs.h | 72
b/drivers/scsi/zalon.c | 163 ++
b/drivers/scsi/zalon.h | 43
b/drivers/serial/68360serial.c | 1
b/drivers/serial/sunsab.c | 99 -
b/drivers/sgi/char/streamable.c | 27
b/drivers/sgi/char/usema.c | 7
b/drivers/telephony/ixj.c | 12
b/drivers/usb/core/hcd.c | 1
b/drivers/usb/host/ohci-dbg.c | 2
b/drivers/usb/input/Kconfig | 2
b/drivers/video/fbmem.c | 5
b/drivers/video/tgafb.c | 603 +++++++
b/fs/aio.c | 1
b/fs/befs/linuxvfs.c | 2
b/fs/bio.c | 108 +
b/fs/block_dev.c | 5
b/fs/compat.c | 31
b/fs/direct-io.c | 260 ++-
b/fs/exec.c | 8
b/fs/ext2/inode.c | 5
b/fs/ext3/inode.c | 7
b/fs/hugetlbfs/inode.c | 1
b/fs/jfs/file.c | 2
b/fs/jfs/inode.c | 5
b/fs/jfs/jfs_logmgr.c | 51
b/fs/jfs/jfs_logmgr.h | 3
b/fs/jfs/jfs_txnmgr.c | 8
b/fs/jfs/jfs_umount.c | 4
b/fs/jfs/resize.c | 2
b/fs/jfs/super.c | 12
b/fs/mpage.c | 3
b/fs/ncpfs/sock.c | 2
b/fs/nfs/direct.c | 2
b/fs/nfs/inode.c | 2
b/fs/nfs/nfs3proc.c | 4
b/fs/nfs/nfs4proc.c | 4
b/fs/nfs/nfs4xdr.c | 2
b/fs/nfs/pagelist.c | 5
b/fs/nfs/proc.c | 4
b/fs/nfs/read.c | 2
b/fs/nfs/write.c | 3
b/fs/nfsctl.c | 17
b/fs/nfsd/export.c | 27
b/fs/nfsd/nfs3xdr.c | 2
b/fs/nfsd/nfs4proc.c | 2
b/fs/nfsd/nfs4xdr.c | 53
b/fs/nfsd/nfsctl.c | 353 ++--
b/fs/nfsd/nfsfh.c | 4
b/fs/nfsd/nfssvc.c | 8
b/fs/partitions/check.c | 17
b/fs/proc/array.c | 3
b/fs/readdir.c | 12
b/fs/romfs/inode.c | 1
b/fs/sysfs/inode.c | 12
b/fs/xfs/linux/xfs_aops.c | 5
b/include/asm-alpha/irq.h | 1
b/include/asm-alpha/module.h | 25
b/include/asm-alpha/uaccess.h | 17
b/include/asm-arm/arch-iop310/memory.h | 1
b/include/asm-arm/current.h | 2
b/include/asm-arm/dma-mapping.h | 304 +++
b/include/asm-arm/io.h | 10
b/include/asm-arm/irq.h | 3
b/include/asm-arm/mach/irq.h | 4
b/include/asm-arm/pci.h | 248 +--
b/include/asm-arm/proc-armv/locks.h | 8
b/include/asm-arm/proc-armv/uaccess.h | 47
b/include/asm-arm/semaphore.h | 20
b/include/asm-arm/thread_info.h | 20
b/include/asm-arm/uaccess.h | 11
b/include/asm-arm/unistd.h | 1
b/include/asm-i386/edd.h | 2
b/include/asm-i386/elf.h | 6
b/include/asm-i386/highmem.h | 2
b/include/asm-i386/io_apic.h | 3
b/include/asm-i386/mach-default/mach_apic.h | 13
b/include/asm-i386/mach-default/mach_wakecpu.h | 41
b/include/asm-i386/mach-numaq/mach_apic.h | 20
b/include/asm-i386/mach-numaq/mach_wakecpu.h | 43
b/include/asm-i386/mach-summit/mach_apic.h | 14
b/include/asm-i386/numaq.h | 2
b/include/asm-i386/smp.h | 29
b/include/asm-i386/system.h | 10
b/include/asm-i386/thread_info.h | 2
b/include/asm-i386/topology.h | 56
b/include/asm-i386/uaccess.h | 4
b/include/asm-ia64/compat.h | 8
b/include/asm-ia64/ia32.h | 9
b/include/asm-ppc/bitops.h | 8
b/include/asm-ppc/cache.h | 3
b/include/asm-ppc/commproc.h | 111 +
b/include/asm-ppc/cputable.h | 9
b/include/asm-ppc/ibm403.h | 9
b/include/asm-ppc/ibm405.h | 21
b/include/asm-ppc/ibm4xx.h | 88 -
b/include/asm-ppc/ibm_ocp_pci.h | 56
b/include/asm-ppc/io.h | 34
b/include/asm-ppc/irq.h | 13
b/include/asm-ppc/module.h | 4
b/include/asm-ppc/nvram.h | 4
b/include/asm-ppc/ocp.h | 205 ++
b/include/asm-ppc/ocp_ids.h | 103 +
b/include/asm-ppc/open_pic.h | 13
b/include/asm-ppc/page.h | 2
b/include/asm-ppc/param.h | 2
b/include/asm-ppc/pci-bridge.h | 9
b/include/asm-ppc/ppc4xx_pic.h | 9
b/include/asm-ppc/ppc_asm.h | 22
b/include/asm-ppc/processor.h | 29
b/include/asm-ppc/prom.h | 11
b/include/asm-ppc/ptrace.h | 2
b/include/asm-ppc/signal.h | 5
b/include/asm-ppc/socket.h | 2
b/include/asm-ppc/spinlock.h | 24
b/include/asm-ppc/termios.h | 2
b/include/asm-ppc/time.h | 22
b/include/asm-ppc/uaccess.h | 2
b/include/asm-ppc64/compat.h | 45
b/include/asm-ppc64/page.h | 2
b/include/asm-ppc64/pgtable.h | 4
b/include/asm-ppc64/ppc32.h | 67
b/include/asm-ppc64/prom.h | 11
b/include/asm-ppc64/smp.h | 2
b/include/asm-ppc64/tlb.h | 4
b/include/asm-ppc64/topology.h | 2
b/include/asm-ppc64/xics.h | 18
b/include/asm-s390x/compat.h | 9
b/include/asm-sparc/bitops.h | 3
b/include/asm-sparc/ide.h | 4
b/include/asm-sparc/sbus.h | 11
b/include/asm-sparc/system.h | 1
b/include/asm-sparc/thread_info.h | 2
b/include/asm-sparc64/compat.h | 64
b/include/asm-sparc64/fcntl.h | 11
b/include/asm-sparc64/ide.h | 4
b/include/asm-sparc64/posix_types.h | 17
b/include/asm-sparc64/siginfo.h | 8
b/include/asm-sparc64/smp.h | 4
b/include/asm-sparc64/statfs.h | 3
b/include/asm-sparc64/uaccess.h | 4
b/include/asm-x86_64/compat.h | 16
b/include/asm-x86_64/ia32.h | 23
b/include/asm-x86_64/segment.h | 3
b/include/asm-x86_64/smp.h | 5
b/include/asm-x86_64/spinlock.h | 2
b/include/asm-x86_64/uaccess.h | 7
b/include/asm-x86_64/xor.h | 2
b/include/linux/agp_backend.h | 2
b/include/linux/bio.h | 2
b/include/linux/compat.h | 9
b/include/linux/crc32.h | 12
b/include/linux/device.h | 24
b/include/linux/dirent.h | 13
b/include/linux/elf.h | 35
b/include/linux/fb.h | 1
b/include/linux/fs.h | 13
b/include/linux/genhd.h | 2
b/include/linux/highmem.h | 9
b/include/linux/if_arp.h | 1
b/include/linux/init.h | 3
b/include/linux/kernel.h | 3
b/include/linux/kobject.h | 122 +
b/include/linux/module.h | 99 +
b/include/linux/moduleloader.h | 6
b/include/linux/netdevice.h | 6
b/include/linux/nfs_page.h | 5
b/include/linux/nfsd/xdr4.h | 1
b/include/linux/pagemap.h | 8
b/include/linux/pci_ids.h | 1
b/include/linux/radix-tree.h | 8
b/include/linux/raid/md_k.h | 5
b/include/linux/raid/md_p.h | 7
b/include/linux/rmap-locking.h | 14
b/include/linux/rtnetlink.h | 1
b/include/linux/signal.h | 59
b/include/linux/smp.h | 1
b/include/linux/sunrpc/auth.h | 8
b/include/linux/sunrpc/cache.h | 7
b/include/linux/sunrpc/svcauth.h | 8
b/include/linux/swap.h | 12
b/include/net/icmp.h | 15
b/include/net/ip.h | 6
b/include/net/ipv6.h | 11
b/include/net/route.h | 6
b/include/net/sctp/sctp.h | 2
b/include/net/snmp.h | 39
b/include/net/tcp.h | 6
b/include/net/udp.h | 3
b/include/video/tgafb.h | 1
b/init/Kconfig | 61
b/init/do_mounts.c | 29
b/init/main.c | 7
b/kernel/Makefile | 4
b/kernel/compat.c | 23
b/kernel/cpufreq.c | 20
b/kernel/extable.c | 39
b/kernel/fork.c | 1
b/kernel/kallsyms.c | 9
b/kernel/ksyms.c | 3
b/kernel/module.c | 228 ++
b/kernel/panic.c | 4
b/kernel/pid.c | 49
b/kernel/printk.c | 11
b/kernel/sched.c | 2
b/lib/crc32.c | 25
b/lib/kobject.c | 179 +-
b/lib/radix-tree.c | 89 -
b/mm/filemap.c | 116 +
b/mm/fremap.c | 8
b/mm/memory.c | 141 +
b/mm/mempool.c | 28
b/mm/mremap.c | 21
b/mm/readahead.c | 5
b/mm/rmap.c | 125 -
b/mm/shmem.c | 2
b/mm/slab.c | 67
b/mm/swap_state.c | 5
b/mm/swapfile.c | 18
b/net/Kconfig | 21
b/net/core/dev.c | 19
b/net/core/dv.c | 6
b/net/core/rtnetlink.c | 66
b/net/core/skbuff.c | 6
b/net/ipv4/af_inet.c | 61
b/net/ipv4/icmp.c | 96 -
b/net/ipv4/ip_input.c | 2
b/net/ipv4/proc.c | 37
b/net/ipv4/route.c | 94 -
b/net/ipv4/tcp.c | 13
b/net/ipv4/tcp_input.c | 4
b/net/ipv4/tcp_minisocks.c | 4
b/net/ipv4/tcp_timer.c | 3
b/net/ipv4/udp.c | 2
b/net/ipv6/af_inet6.c | 83 +
b/net/ipv6/exthdrs.c | 8
b/net/ipv6/icmp.c | 8
b/net/ipv6/ipv6_sockglue.c | 2
b/net/ipv6/proc.c | 38
b/net/ipv6/udp.c | 2
b/net/sctp/protocol.c | 44
b/net/socket.c | 14
b/net/sunrpc/auth.c | 178 --
b/net/sunrpc/cache.c | 248 ++-
b/net/sunrpc/sunrpc_syms.c | 5
b/net/sunrpc/svcauth.c | 21
b/net/sunrpc/svcauth_unix.c | 46
b/net/unix/af_unix.c | 3
b/scripts/kallsyms.c | 2
b/sound/oss/cmpci.c | 5
b/sound/oss/es1370.c | 9
b/sound/oss/es1371.c | 9
b/sound/oss/esssolo1.c | 7
b/sound/oss/sonicvibes.c | 9
b/sound/sound_firmware.c | 1
drivers/char/ftape/lowlevel/ftape_syms.h | 39
drivers/char/ftape/zftape/zftape_syms.h | 39
include/asm-i386/smpboot.h | 48
include/asm-ppc/iSeries/HvCall.h | 209 --
include/asm-ppc/iSeries/HvCallCfg.h | 219 --
include/asm-ppc/iSeries/HvCallEvent.h | 328 ----
include/asm-ppc/iSeries/HvCallHpt.h | 137 -
include/asm-ppc/iSeries/HvCallPci.h | 689 --------
include/asm-ppc/iSeries/HvCallSc.h | 53
include/asm-ppc/iSeries/HvCallSm.h | 58
include/asm-ppc/iSeries/HvCallXm.h | 105 -
include/asm-ppc/iSeries/HvLpConfig.h | 292 ---
include/asm-ppc/iSeries/HvLpEvent.h | 144 -
include/asm-ppc/iSeries/HvReleaseData.h | 71
include/asm-ppc/iSeries/HvTypes.h | 161 --
include/asm-ppc/iSeries/IoHriMainStore.h | 65
include/asm-ppc/iSeries/IoHriProcessorVpd.h | 90 -
include/asm-ppc/iSeries/ItIplParmsReal.h | 78
include/asm-ppc/iSeries/ItLpNaca.h | 87 -
include/asm-ppc/iSeries/ItLpPaca.h | 122 -
include/asm-ppc/iSeries/ItLpQueue.h | 94 -
include/asm-ppc/iSeries/ItLpRegSave.h | 87 -
include/asm-ppc/iSeries/ItSpCommArea.h | 39
include/asm-ppc/iSeries/ItVpdAreas.h | 100 -
include/asm-ppc/iSeries/LparData.h | 75
include/asm-ppc/iSeries/LparMap.h | 76
include/asm-ppc/iSeries/Naca.h | 38
include/asm-ppc/iSeries/Paca.h | 137 -
include/asm-ppc/iSeries/XmPciLpEvent.h | 18
include/asm-ppc/iSeries/iSeries_FlightRecorder.h | 85 -
include/asm-ppc/iSeries/iSeries_VpdInfo.h | 56
include/asm-ppc/iSeries/iSeries_dma.h | 97 -
include/asm-ppc/iSeries/iSeries_fixup.h | 25
include/asm-ppc/iSeries/iSeries_io.h | 42
include/asm-ppc/iSeries/iSeries_irq.h | 26
include/asm-ppc/iSeries/iSeries_pci.h | 123 -
include/asm-ppc/iSeries/iSeries_proc.h | 37
include/asm-ppc/iSeries/mf.h | 83 -
include/asm-ppc/iSeries/mf_proc.h | 33
include/asm-ppc/iSeries/pmc_proc.h | 33
include/asm-ppc/iSeries/veth-proc.h | 32
kernel/platform.c | 72
908 files changed, 34770 insertions(+), 42299 deletions(-)
^ permalink raw reply
* Re: opening a port..
From: Dharmendra.T @ 2003-01-09 4:10 UTC (permalink / raw)
To: mdew; +Cc: netfilter
In-Reply-To: <1042030327.590.10.camel@nirvana>
On Wed, 2003-01-08 at 18:22, mdew wrote:
> On Thu, 2003-01-09 at 01:33, Dharmendra.T wrote:
> >
> >
> > On Wed, 2003-01-08 at 17:42, mdew wrote:
> > >
> > > Hi,
> > > Just *testing* this out..
> > >
> > > iptables -A INPUT -i eth0 -p tcp --dport 4662 -j ACCEPT
> > > iptables -A INPUT -i eth0 -p udp --dport 4662 -j ACCEPT
> > > iptables -A INPUT -i eth1 -p udp --dport 4662 -j ACCEPT
> > > iptables -A INPUT -i eth1 -p tcp --dport 4662 -j ACCEPT
> > > iptables -A INPUT -i eth1 -p tcp --sport 4662 -j ACCEPT
> > > iptables -A INPUT -i eth1 -p udp --sport 4662 -j ACCEPT
> > > iptables -A INPUT -i eth0 -p udp --sport 4662 -j ACCEPT
> > > iptables -A INPUT -i eth0 -p tcp --sport 4662 -j ACCEPT
> > >
> > > iptables -A FORWARD -o eth0 -p tcp --dport 4662 -j ACCEPT
> > > iptables -A FORWARD -o eth1 -p tcp --dport 4662 -j ACCEPT
> > > iptables -A FORWARD -o eth1 -p udp --dport 4662 -j ACCEPT
> > > iptables -A FORWARD -o eth0 -p udp --dport 4662 -j ACCEPT
> > > iptables -A FORWARD -o eth0 -p udp --sport 4662 -j ACCEPT
> > > iptables -A FORWARD -o eth1 -p udp --sport 4662 -j ACCEPT
> > > iptables -A FORWARD -o eth1 -p tcp --sport 4662 -j ACCEPT
> > > iptables -A FORWARD -o eth0 -p tcp --sport 4662 -j ACCEPT
> > >
> > > yet, when i try to telnet to it,
> > >
> > > mdew:~# telnet 127.0.0.1 4662
> > > Trying 127.0.0.1...
> > > telnet: Unable to connect to remote host: Connection refused
> > >
> > > Yeah I know I have lots of unnessary rules, but im only testing 'em...it
> > > just seems a little strange that i cant see 4662 (Edonkey port) on the
> > > router.
> > >
> > > -mdew
> > >
> > >
> > Note:
> > telnet 127.0.0.1 port
> >
> > This will not go through any of the interfaces(eth*). You should allow
> > this through -i lo.
> >
> > Here some how you are getting connected and you are getting the response
> > connection refused. Probably you are not running the service on the
> > router!.
> >
> > --
> > Dharmendra.T
> > Linux Enthu
> >
> ok, telnet from another machine to the router.
>
> telnet 10.0.0.6 4662
> Trying 10.0.0.6...
> telnet: Unable to connect to remote host: Connection refused
>
> what "service" should I be running? I simply want 4662 open both ways.
>
> -mdew
>
Install nc and run
#nc -l -p 4662
And then try to connect. Some service should be running on the port else
you will get the same error message.
--
Dharmendra.T
Linux Enthu
^ permalink raw reply
* fbb, progress and questions
From: mvw @ 2003-01-09 4:08 UTC (permalink / raw)
To: linux-hams
In-Reply-To: <03010806374600.26408@unix.pa3gcu>
Hello all,
Well, a week further and some progress on fbb... but it is rather hard
going - for someone used to the Internet and smtp etc, this is all a tad
counterintuitive, and the documentation is rather obtuse, so bear with
me... I have so many questions I don't know where to start... I will not
bore you but just to give you a flavour of BASIC stuff I just cannot find
documented, and yes, before you ask, I have read the docs (or tried to) on
the f6fbb.org site..:
- How does this "forwarding" work??
- What are messages vs bulletins vs private messages etc?
- when a message is "on hold", how do I get it "off hold"?
- Why does killing a message not remove it? How DO I remove it?
- How does a node I forward to, allow/know/handle this?
- Why do I have one password set with "EU" command and one in passwd.sys,
and never the twain shall meet?
- ehy can I not use the "EU" command when telnetted in, but I can use it
when using the xfbbC app?
- the forward file apprently needs a degree of knowledge that is beyond
me: so, any examples?
- What are white pages (the docs just say this is an interesting
implementation of white pages)?
- How do I get bulletins in? And out?
- Using EU, can I not change someone's home bbs?
- Is there a 'phone book', so I do not have to type SP <call> @
ve3mch.#scon.on.can.noam or some such string each time?
- Many programming techniques that are used in fbb are extremely poor
(sorry! do not mean to be rude, but just wondering WHY). Like using
binary configuration settings (2, 4, 8, 16, 32, etc); or using setup files
that depend on exact numbers of lines, etc. Is this historical accident?
- I guess fbb does its own ax25 thing - why not just use kernel ax25?
As you see, my lack of understanding is so great that I wonder if I will
ever usefully use this. So rather than bore you with too many questions
about the detail, a few meta questions, namely: is this all part of the
normal learning process, or am I overlooking some good basic docs
somewhere? (Or am I too dumb)? Should I bother? And, if yes, what is the
best way to find info (not the docs, apparently).
Many thanks for your advice, all.
73
Michael
VA3MVW
^ permalink raw reply
* Compilation error on the latest mtd code
From: Xiaogeng (Shawn) Jin @ 2003-01-09 4:30 UTC (permalink / raw)
To: linux-mtd
When compiling the latest mtd code with the kernel linuxppc_2_4_devel
checked out from bk://ppc.bkbits.net, I encountered the following error.
This kind of error seems to be caused by some special control character
in a text file. So I used 'dos2unix' to convert all header files. But it
didn't solve the error. Any hints? Thank you very much.
ppc_8xx-gcc -D__KERNEL__
-I/u/xjin/2_4_devel/Software/Linux/MPC855/linuxppc_2_4_
devel/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2
-fno-strict-aliasing
-fno-common -fomit-frame-pointer
-I/u/xjin/2_4_devel/Software/Linux/MPC855/linux
ppc_2_4_devel/arch/ppc -fsigned-char -msoft-float -pipe -ffixed-r2
-Wno-uninitia
lized -mmultiple -mstring -nostdinc -I
/opt/eldk2.0/usr/lib/gcc-lib/ppc-linux/
2.95.4/include -DKBUILD_BASENAME=mtdblock_core -c -o mtdblock-core.o
mtdblock-c
ore.c
In file included from
/u/xjin/2_4_devel/Software/Linux/MPC855/linuxppc_2_4_devel
/include/linux/blk.h:4,
from mtdblock-core.c:18:
/u/xjin/2_4_devel/Software/Linux/MPC855/linuxppc_2_4_devel/include/linux/blkdev.
h:147: parse error before `struct'
- Shawn.
^ permalink raw reply
* Re: Making this list more readable
From: Joel Newkirk @ 2003-01-09 3:59 UTC (permalink / raw)
To: Carol Anne Ogdin; +Cc: netfilter
In-Reply-To: <OFCF211CF9.23DB3D05-ON88256CA9.000AF47D-88256CA9.000B3CB7@deepwoods.com>
On Wednesday 08 January 2003 09:02 pm, Carol Anne Ogdin wrote:
> Thanks, Athan...
>
> I try to get it in digest so I can read it all at once at the end of
> the day. When I was getting it message-by-message, I was finding
> messages getting lost in my voracious spam-killing mode. I'm trying
I get it msg-by-msg, and filter on "kashyyyk" to dump it all in a folder
by itself. (kashyyyk.netfilter.org is originating server, Kashyyyk
being Chewbacca's homeworld in Star Wars) Twenty or so filters, six
mailing lists, 10 email folders, 15 people with special handling (IE
forward to my mobile) and spam filters that catch about 85% of my 300 or
so per month. (All of those, until yesterday, come to the old email
address I've had for about 7 years) My email volume is quite low
compared to a few years ago, but at about 100 msgs a day it would still
be unbearable without automated presorting.
> to learn iptables by watching how you experts help other folks'
> questions.
>
> Question: Would anybody be interested in a more user-friendly
> web-based solution for this list, so people could go back and read old
> threads instead of posing the same questions over 'n' over again?
> I've got a free one available to me, if you'd like to try it.
For anyone interested, I received my first piece of spam yesterday
addressed to netfilter@newkirk.us. (Nigerian 419 Fraud, of all things!
Already forwarded to US Secret Service 419.fcd@usss.treas.gov
subject=NoLoss They like collecting those things :^) Since I only use
that addy on this list and derivative conversations, there's only two
possibly ways it could have happened. Either a subscriber harvested
addy's or forwarded a message to someone who did, or (far more likely)
someone harvested from the list archives. WHY oh WHY aren't email
addresses mangled or obscured on the publicly accessible archives? This
seems a fairly basic precaution given the exponential growth of 'the
spam problem' lately. Yes, Yes, I know all about filtering spam, but
why invite it to begin with? "google netfilter@newkirk.us" finds about
130 hits, divided among securepoint.com, netfilter.org and spinics.net -
all publicly accessible archives of the list. No other hits, just
archives.
Back to your question, the archive at msgs.securepoint.com/netfilter/
offers search capability, but apparently only keeps current and previous
month postings around. I think (at least I hope :^) that the majority
of the "already asked a dozen times" questions come from people who are
either not on the list, or recently joined. Likely the only way search
facility would be useful to them (and reduce repeat questions) is if it
is in their faces _before_ they are in a position to actually post. IE,
if netfilter.org presented a search option right on the same page as the
submission and subscription info. If you set up a search it might help
/us/ out, but I suspect that it wouldn't head off too many repeats.
> --Carol Anne
> Carol Anne Ogdin
> http://www.net-working.com
> 530/295-3657
> Deep Woods Technology, Inc.
> http://www.deepwoods.com
> CAOgdin@deepwoods.com
> Leveraging technology to restore the soul of the organization
j
ps - I really hope that if someone harvests THIS message they extract the
email address in that middle paragraph and start spamming it. Should
set some interesting reactions in motion... :^)
^ permalink raw reply
* Re: [PATCH] /proc/sys/kernel/pointer_size
From: Daniel Jacobowitz @ 2003-01-09 4:00 UTC (permalink / raw)
To: David S. Miller; +Cc: torvalds, levon, linux-kernel
In-Reply-To: <20030108.160352.78071329.davem@redhat.com>
On Wed, Jan 08, 2003 at 04:03:52PM -0800, David S. Miller wrote:
> From: Linus Torvalds <torvalds@transmeta.com>
> Date: Wed, 8 Jan 2003 16:02:24 -0800 (PST)
>
> Or you can use an /etc/systype file that contains information.
>
> That sounds fine to me.
>
> A funny way to initialize this could be by reading System.map
> and seeing how many significant hexidecimal digits are used
> to list the kernel symbol addresses :-)
Don't try it, the perversity of MIPS will break you :)
Just to clarify something that I saw getting lost in this discussion:
Oprofile doesn't need to become built as a 64-bit binary, just
configured to accept 64-bit kernels. So this doesn't rule out using a
32-bit oprofile (i.e. not needing a 64-bit libc) on a 64-bit kernel.
It just means that we need to specify it somehow.
John, speaking of MIPS perversity: MIPS64 kernels can come in ELF32
files. So you may just want to make this a configure-time option.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
^ permalink raw reply
* [linux-lvm] Re: LVM Recovery (urgent)
From: Andre Bonhote @ 2003-01-09 3:49 UTC (permalink / raw)
To: Linux-LVM
In-Reply-To: <EHEDIKGDCNFCNANFPGCDAENOCAAA.andre@bonhote.com>
Hi List Readers
On Wed, Jan 08, 2003 at 03:35:35PM +0100, Andre Bonhote wrote:
> You might ask why I don't write to one of the mailing lists. Well, the
> answer is quite simple: I don't trust them in this case. I don't think I
> have many tries left to save my data, so I need a real expert advice.
I really hope you don't get me wrong on this. You know, I am quite
despaired, and, to be honest, this mail was NEVER intended to be sent to
the lists. I really didn't want to step on anyone's foot with this
statement - sorry if I did. Of course, any hint on helping me to solve
that problem is gladly accepted and appreciated.
CU
Andr�
--
Real programmers do "cp /dev/audio a.out" and whistle into the mike.
(Randal L. Schwartz)
^ permalink raw reply
* DMZ trouble!
From: David Collodel @ 2003-01-09 3:42 UTC (permalink / raw)
To: netfilter
Hi,
I've recently been working on a firewall using IPtables to create a
DMZ/LAN setup.
I have a system with 3 NIC's.
eth0 has the "real" static IP's from my ISP. I'm using NAT to translate
from the IP bound on this NIC to the internal DMZ and LAN hosts.
eth1 is set to 172.16.12.1 and is used as the DMZ interface. Hosts
connected to this interface are all 172.16.12.x
eth2 is set to 172.16.11.1 and is used as the LAN interface.Hosts
connected here are all 172.16.11.x
Most things seem to be working, I can connect from the LAN to the DMZ
and to the Internet. I can connect from the DMZ to the Internet, but not
to the LAN, but already established connections work. Only the ports I
specify are open from the Internet to the DMZ.
The problem I'm having is this:
When I try to connect to a host in the DMZ from the LAN, it does not
work when I use the "real" IP address.
An example of the error in the logs is this:
-----
IPT INPUT packet died: IN=eth1 OUT=
MAC=00:10:5a:1b:48:8a:00:10:5a:00:ff:b8:08:00 SRC=172.16.11.2
DST=66.92.171.152 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=3514 DF PROTO=TCP
SPT=32949 DPT=80 WINDOW=5440 RES=0x00 SYN URGP=0
----
Does anyone have any idea why this might be happening?
Much thanks.
--
David Collodel <dave@crawlspaceradio.com>
^ permalink raw reply
* Re: patching iptables - how?
From: Mladen Meduric @ 2003-01-09 3:42 UTC (permalink / raw)
To: netfilter
In-Reply-To: <200301091034.56326.fabrice@netfilter.org>
Whoa!!!
What a list! Thank you all very much!
I thought on just installing 1.2.7a from scratch, but didn't know what
effect would it have on old (1.2.5) version. Do I need to uninstall that
one first? If yes, is it best to use Sytem->Package->uninstall or rpm -u
...
All the best and cheers
Mladen
BTW, kernel is 2.4.18
__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com
^ permalink raw reply
* shortlog update (BK format)
From: Matthias Andree @ 2003-01-09 3:47 UTC (permalink / raw)
To: Linus Torvalds, Marcelo Tosatti; +Cc: Linux-Kernel mailing list
Hi,
for your convenience, I'm resending the lk-changelog.pl script as BK
ChangeSet. It upgrades shortlog aka lk-changelog.pl from upstream
version 0.54 to 0.64. Please apply.
The three deleted lines are 1 duplicate removed, 1 fix and 1 for the
version tag.
Matthias
--------------------------------------------------------------------
You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.
===================================================================
ChangeSet@1.31, 2003-01-09 04:40:05+01:00, matthias.andree@gmx.de
Update to mainstream version 0.64.
shortlog | 142 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 139 insertions(+), 3 deletions(-)
diff -Nru a/shortlog b/shortlog
--- a/shortlog Thu Jan 9 04:46:09 2003
+++ b/shortlog Thu Jan 9 04:46:09 2003
@@ -6,8 +6,9 @@
# (C) Copyright 2002 by Matthias Andree <matthias.andree@gmx.de>
# Marcus Alanen <maalanen@abo.fi>
# Tomas Szepe <szepe@pinerecords.com>
+# Vitezslav Samel <samel@mail.cz>
#
-# $Id: lk-changelog.pl,v 0.54 2002/11/26 23:27:11 emma Exp $
+# $Id: lk-changelog.pl,v 0.64 2003/01/08 14:48:50 emma Exp $
# ----------------------------------------------------------------------
# Distribution of this script is permitted under the terms of the
# GNU General Public License (GNU GPL) v2.
@@ -69,6 +70,7 @@
# lbdb.
my %addresses = (
'abraham@2d3d.co.za' => 'Abraham van der Merwe',
+'abslucio@terra.com.br' => 'Lucio Maciel',
'ac9410@attbi.com' => 'Albert Cranford',
'acher@in.tum.de' => 'Georg Acher',
'achirica@ttd.net' => 'Javier Achirica',
@@ -78,11 +80,14 @@
'adam@mailhost.nmt.edu' => 'Adam Radford', # google
'adam@nmt.edu' => 'Adam Radford', # google
'adam@yggdrasil.com' => 'Adam J. Richter',
+'adaplas@pol.net' => 'Antonino Daplas',
'adilger@clusterfs.com' => 'Andreas Dilger',
+'aebr@win.tue.nl' => 'Andries E. Brouwer',
'agrover@acpi3.(none)' => 'Andy Grover',
'agrover@acpi3.jf.intel.com' => 'Andy Grover', # guessed
'agrover@dexter.groveronline.com' => 'Andy Grover',
'agrover@groveronline.com' => 'Andy Grover',
+'agruen@suse.de' => 'Andreas Gruenbacher',
'ahaas@airmail.net' => 'Art Haas',
'ahaas@neosoft.com' => 'Art Haas',
'aia21@cam.ac.uk' => 'Anton Altaparmakov',
@@ -112,14 +117,19 @@
'angus.sawyer@dsl.pipex.com' => 'Angus Sawyer',
'ankry@green.mif.pg.gda.pl' => 'Andrzej Krzysztofowicz',
'anton@samba.org' => 'Anton Blanchard',
+'aris@cathedrallabs.org' => 'Aristeu Sergio Rozanski Filho',
'arjan@redhat.com' => 'Arjan van de Ven',
'arjanv@redhat.com' => 'Arjan van de Ven',
+'arnd@bergmann-dalldorf.de' => 'Arnd Bergmann',
'arndb@de.ibm.com' => 'Arnd Bergmann',
+'arun.sharma@intel.com' => 'Arun Sharma',
'asit.k.mallick@intel.com' => 'Asit K. Mallick', # by Kristian Peters
'axboe@burns.home.kernel.dk' => 'Jens Axboe', # guessed
'axboe@hera.kernel.org' => 'Jens Axboe',
'axboe@suse.de' => 'Jens Axboe',
'baccala@vger.freesoft.org' => 'Brent Baccala',
+'baldrick@wanadoo.fr' => 'Duncan Sands',
+'ballabio_dario@emc.com' => 'Dario Ballabio',
'barrow_dj@yahoo.com' => 'D. J. Barrow',
'barryn@pobox.com' => 'Barry K. Nathan', # lbdb
'bart.de.schuymer@pandora.be' => 'Bart De Schuymer',
@@ -127,8 +137,10 @@
'bcrl@bob.home.kvack.org' => 'Benjamin LaHaise',
'bcrl@redhat.com' => 'Benjamin LaHaise',
'bcrl@toomuch.toronto.redhat.com' => 'Benjamin LaHaise', # guessed
+'bdschuym@pandora.be' => 'Bart De Schuymer',
'beattie@beattie-home.net' => 'Brian Beattie', # from david.nelson
'benh@kernel.crashing.org' => 'Benjamin Herrenschmidt',
+'bero@arklinux.org' => 'Bernhard Rosenkraenzer',
'bfennema@falcon.csc.calpoly.edu' => 'Ben Fennema',
'bgerst@didntduck.org' => 'Brian Gerst',
'bhards@bigpond.net.au' => 'Brad Hards',
@@ -139,8 +151,10 @@
'bjorn_helgaas@hp.com' => 'Bjorn Helgaas',
'bmatheny@purdue.edu' => 'Blake Matheny', # google
'borisitk@fortunet.com' => 'Boris Itkis', # by Kristian Peters
+'braam@clusterfs.com' => 'Peter Braam',
'brett@bad-sports.com' => 'Brett Pemberton',
'brihall@pcisys.net' => 'Brian Hall', # google
+'brm@murphy.dk' => 'Brian Murphy',
'brownfld@irridia.com' => 'Ken Brownfield',
'bunk@fs.tum.de' => 'Adrian Bunk',
'buytenh@gnu.org' => 'Lennert Buytenhek',
@@ -154,6 +168,7 @@
'ch@hpl.hp.com' => 'Christopher Hoover', # by Kristian Peters
'charles.white@hp.com' => 'Charles White',
'chessman@tux.org' => 'Samuel S. Chessman',
+'chris@qwirx.com' => 'Chris Wilson',
'chris@wirex.com' => 'Chris Wright',
'christer@weinigel.se' => 'Christer Weinigel', # from shortlog
'christopher.leech@intel.com' => 'Christopher Leech',
@@ -173,10 +188,15 @@
'dalecki@evision.ag' => 'Martin Dalecki',
'dan.zink@hp.com' => 'Dan Zink',
'dan@debian.org' => 'Daniel Jacobowitz',
+'dana.lacoste@peregrine.com' => 'Dana Lacoste',
'danc@mvista.com' => 'Dan Cox', # some CREDITS patch found by google
+'daniel.ritz@gmx.ch' => 'Daniel Ritz',
+'dave@qix.net' => 'Dave Maietta',
'davej@codemonkey.org.uk' => 'Dave Jones',
'davej@suse.de' => 'Dave Jones',
+'davej@tetrachloride.(none)' => 'Dave Jones',
'davem@hera.kernel.org' => 'David S. Miller',
+'davem@kernel.bkbits.net' => 'David S. Miller',
'davem@nuts.ninka.net' => 'David S. Miller',
'davem@pizda.ninka.net' => 'David S. Miller', # guessed
'davem@redhat.com' => 'David S. Miller',
@@ -205,6 +225,8 @@
'dipankar@in.ibm.com' => 'Dipankar Sarma',
'dirk.uffmann@nokia.com' => 'Dirk Uffmann',
'dledford@aladin.rdu.redhat.com' => 'Doug Ledford',
+'dledford@dledford.theledfords.org' => 'Doug Ledford',
+'dledford@flossy.devel.redhat.com' => 'Doug Ledford',
'dledford@redhat.com' => 'Doug Ledford',
'dmccr@us.ibm.com' => 'Dave McCracken',
'dok@directfb.org' => 'Denis Oliver Kropp',
@@ -226,7 +248,9 @@
'eike@bilbo.math.uni-mannheim.de' => 'Rolf Eike Beer',
'elenstev@mesatop.com' => 'Steven Cole',
'engebret@us.ibm.com' => 'Dave Engebretsen',
+'eranian@frankl.hpl.hp.com' => 'Stéphane Eranian',
'eranian@hpl.hp.com' => 'Stéphane Eranian',
+'erik@aarg.net' => 'Erik Arneson',
'erik_habbinga@hp.com' => 'Erik Habbinga',
'eyal@eyal.emu.id.au' => 'Eyal Lebedinsky', # lbdb
'fbl@conectiva.com.br' => 'Flávio Bruno Leitner', # google
@@ -238,18 +262,23 @@
'fletch@aracnet.com' => 'Martin J. Bligh',
'flo@rfc822.org' => 'Florian Lohoff',
'florian.thiel@gmx.net' => 'Florian Thiel', # from shortlog
+'fnm@fusion.ukrsat.com' => 'Nick Fedchik',
'focht@ess.nec.de' => 'Erich Focht',
'fokkensr@fokkensr.vertis.nl' => 'Rolf Fokkens',
'franz.sirl-kernel@lauterbach.com' => 'Franz Sirl',
'franz.sirl@lauterbach.com' => 'Franz Sirl',
+'fscked@netvisao.pt' => 'Paulo André',
'fubar@us.ibm.com' => 'Jay Vosburgh',
'fw@deneb.enyo.de' => 'Florian Weimer', # lbdb
'fzago@austin.rr.com' => 'Frank Zago', # google
+'ganadist@nakyup.mizi.com' => 'Cha Young-Ho',
+'ganesh@tuxtop.vxindia.veritas.com' => 'Ganesh Varadarajan',
'ganesh@veritas.com' => 'Ganesh Varadarajan',
'ganesh@vxindia.veritas.com' => 'Ganesh Varadarajan',
'garloff@suse.de' => 'Kurt Garloff',
'geert@linux-m68k.org' => 'Geert Uytterhoeven',
'george@mvista.com' => 'George Anzinger',
+'gerg@moreton.com.au' => 'Greg Ungerer',
'gerg@snapgear.com' => 'Greg Ungerer',
'ghoz@sympatico.ca' => 'Ghozlane Toumi',
'gibbs@overdrive.btc.adaptec.com' => 'Justin T. Gibbs',
@@ -262,12 +291,16 @@
'gone@us.ibm.com' => 'Patricia Guaghen',
'gotom@debian.or.jp' => 'Goto Masanori', # from shortlog
'gphat@cafes.net' => 'Cory Watson',
+'greearb@candelatech.com' => 'Ben Greear',
'green@angband.namesys.com' => 'Oleg Drokin',
'green@namesys.com' => 'Oleg Drokin',
'greg@kroah.com' => 'Greg Kroah-Hartman',
+'gronkin@nerdvana.com' => 'George Ronkin',
'grundler@cup.hp.com' => 'Grant Grundler',
+'grundym@us.ibm.com' => 'Michael Grundy',
'gsromero@alumnos.euitt.upm.es' => 'Guillermo S. Romero',
'gtoumi@laposte.net' => 'Ghozlane Toumi',
+'hadi@cyberus.ca' => 'Jamal Hadi Salim',
'hannal@us.ibm.com' => 'Hanna Linder',
'haveblue@us.ibm.com' => 'Dave Hansen',
'hch@caldera.de' => 'Christoph Hellwig',
@@ -279,7 +312,9 @@
'hch@pentafluge.infradead.org' => 'Christoph Hellwig',
'hch@sb.bsdonline.org' => 'Christoph Hellwig', # by Kristian Peters
'hch@sgi.com' => 'Christoph Hellwig',
-'helgaas@fc.hp.com' => 'Bjørn Helgås', # lbdb + guessed national characters
+'helgaas@fc.hp.com' => 'Bjorn Helgaas', # doesn't want ø/å
+'henning@meier-geinitz.de' => 'Henning Meier-Geinitz',
+'henrique2.gobbi@cyclades.com' => 'Henrique Gobbi',
'henrique@cyclades.com' => 'Henrique Gobbi',
'hermes@gibson.dropbear.id.au' => 'David Gibson',
'hirofumi@mail.parknet.co.jp' => 'Hirofumi Ogawa', # corrected by himself
@@ -289,7 +324,6 @@
'ica2_ts@csv.ica.uni-stuttgart.de' => 'Thiemo Seufer', # google
'info@usblcd.de' => 'Adams IT Services',
'ink@jurassic.park.msu.ru' => 'Ivan Kokshaysky',
-'ink@jurassic.park.msu.ru[rth]' => 'Ivan Kokshaysky',
'ionut@cs.columbia.edu' => 'Ion Badulescu',
'ioshadij@hotmail.com' => 'Ishan O. Jayawardena',
'irohlfs@irohlfs.de' => 'Ingo Rohlfs',
@@ -301,11 +335,13 @@
'jamagallon@able.es' => 'J. A. Magallon',
'james.bottomley@steeleye.com' => 'James Bottomley',
'james@cobaltmountain.com' => 'James Mayer',
+'james_mcmechan@hotmail.com' => 'James McMechan',
'jamey.hicks@hp.com' => 'Jamey Hicks',
'jamey@crl.dec.com' => 'Jamey Hicks',
'jani@astechnix.ro' => 'Jani Monoses',
'jani@iv.ro' => 'Jani Monoses',
'jb@jblache.org' => 'Julien Blache',
+'jbarnes@sgi.com' => 'Jesse Barnes',
'jbglaw@lug-owl.de' => 'Jan-Benedict Glaw',
'jblack@linuxguru.net' => 'James Blackwell',
'jdavid@farfalle.com' => 'David Ruggiero',
@@ -317,33 +353,45 @@
'jeb.j.cramer@intel.com' => 'Jeb J. Cramer',
'jeffs@accelent.com' => 'Jeff Sutherland', # lbdb
'jejb@mulgrave.(none)' => 'James Bottomley', # from shortlog
+'jejb@raven.il.steeleye.com' => 'James Bottomley',
'jenna.s.hall@intel.com' => 'Jenna S. Hall', # google
'jes@trained-monkey.org' => 'Jes Sorensen',
'jes@wildopensource.com' => 'Jes Sorensen',
'jgarzik@fokker2.devel.redhat.com' => 'Jeff Garzik',
'jgarzik@mandrakesoft.com' => 'Jeff Garzik',
+'jgarzik@pobox.com' => 'Jeff Garzik',
'jgarzik@redhat.com' => 'Jeff Garzik',
'jgarzik@rum.normnet.org' => 'Jeff Garzik',
'jgarzik@tout.normnet.org' => 'Jeff Garzik',
+'jgrimm2@us.ibm.com' => 'Jon Grimm',
'jgrimm@jgrimm.austin.ibm.com' => 'Jon Grimm', # google
'jgrimm@touki.austin.ibm.com' => 'Jon Grimm', # google
'jgrimm@touki.qip.austin.ibm.com' => 'Jon Grimm', # google
'jhammer@us.ibm.com' => 'Jack Hammer',
+'jkt@helius.com' => 'Jack Thomasson',
'jmorris@intercode.com.au' => 'James Morris',
'jo-lkml@suckfuell.net' => 'Jochen Suckfuell',
+'jochen@jochen.org' => 'Jochen Hein',
+'joe@fib011235813.fsnet.co.uk' => 'Joe Thornber',
'joe@wavicle.org' => 'Joe Burks',
+'joergprante@netcologne.de' => 'Jörg Prante',
'johann.deneux@it.uu.se' => 'Johann Deneux',
'johannes@erdfelt.com' => 'Johannes Erdfelt',
'john@deater.net' => 'John Clemens',
+'john@grabjohn.com' => 'John Bradford',
'john@larvalstage.com' => 'John Kim',
'johnpol@2ka.mipt.ru' => 'Evgeniy Polyakov',
'johnstul@us.ibm.com' => 'John Stultz',
'jsiemes@web.de' => 'Josef Siemes',
'jsimmons@heisenberg.transvirtual.com' => 'James Simmons',
+'jsimmons@infradead.org' => 'James Simmons',
+'jsimmons@kozmo.(none)' => 'James Simmons',
'jsimmons@maxwell.earthlink.net' => 'James Simmons',
'jsimmons@transvirtual.com' => 'James Simmons',
+'jsm@udlkern.fc.hp.com' => 'John Marvin',
'jt@bougret.hpl.hp.com' => 'Jean Tourrilhes',
'jt@hpl.hp.com' => 'Jean Tourrilhes',
+'jtyner@cs.ucr.edu' => 'John Tyner',
'jun.nakajima@intel.com' => 'Jun Nakajima',
'jung-ik.lee@intel.com' => 'J.I. Lee',
'jwoithe@physics.adelaide.edu.au' => 'Jonathan Woithe',
@@ -355,13 +403,17 @@
'kai.reichert@udo.edu' => 'Kai Reichert',
'kai@chaos.tp1.ruhr-uni-bochum.de' => 'Kai Germaschewski',
'kai@tp1.ruhr-uni-bochum.de' => 'Kai Germaschewski',
+'kala@pinerecords.com' => 'Tomas Szepe',
'kanoj@vger.kernel.org' => 'Kanoj Sarcar', # sent by Arnaldo Carvalho de Melo
'kanojsarcar@yahoo.com' => 'Kanoj Sarcar',
'kaos@ocs.com.au' => 'Keith Owens',
+'kaos@sgi.com' => 'Keith Owens', # sent by himself
'kasperd@daimi.au.dk' => 'Kasper Dupont',
'keithu@parl.clemson.edu' => 'Keith Underwood',
'kenneth.w.chen@intel.com' => 'Kenneth W. Chen',
+'kernel@steeleye.com' => 'Paul Clements',
'key@austin.ibm.com' => 'Kent Yoder',
+'khaho@koti.soon.fi' => 'Ari Juhani Hämeenaho',
'khalid@fc.hp.com' => 'Khalid Aziz',
'khalid_aziz@hp.com' => 'Khalid Aziz',
'khc@pm.waw.pl' => 'Krzysztof Halasa',
@@ -373,6 +425,9 @@
'komujun@nifty.com' => 'Jun Komuro', # google
'kraxel@bytesex.org' => 'Gerd Knorr',
'kraxel@suse.de' => 'Gerd Knorr',
+'krkumar@us.ibm.com' => 'Krishna Kumar',
+'kronos@kronoz.cjb.net' => 'Luca Tettamanti',
+'kuba@mareimbrium.org' => 'Kuba Ober',
'kuebelr@email.uc.edu' => 'Robert Kuebel',
'kuznet@mops.inr.ac.ru' => 'Alexey Kuznetsov',
'kuznet@ms2.inr.ac.ru' => 'Alexey Kuznetsov',
@@ -386,6 +441,7 @@
'leigh@solinno.co.uk' => 'Leigh Brown', # lbdb
'levon@movementarian.org' => 'John Levon',
'linux@brodo.de' => 'Dominik Brodowski',
+'linux@hazard.jcu.cz' => 'Jan Marek',
'lionel.bouton@inet6.fr' => 'Lionel Bouton',
'lists@mdiehl.de' => 'Martin Diehl',
'liyang@nerv.cx' => 'Liyang Hu',
@@ -394,9 +450,11 @@
'lowekamp@cs.wm.edu' => 'Bruce B. Lowekamp', # lbdb
'luc.vanoostenryck@easynet.be' => 'Luc Van Oostenryck', # lbdb
'lucasvr@terra.com.br' => 'Lucas Correia Villa Real', # google
+'m.c.p@wolk-project.de' => 'Marc-Christian Petersen',
'maalanen@ra.abo.fi' => 'Marcus Alanen',
'mac@melware.de' => 'Armin Schindler',
'macro@ds2.pg.gda.pl' => 'Maciej W. Rozycki',
+'maneesh@in.ibm.com' => 'Maneesh Soni',
'manfred@colorfullife.com' => 'Manfred Spraul',
'manik@cisco.com' => 'Manik Raina',
'mannthey@us.ibm.com' => 'Keith Mannthey',
@@ -405,7 +463,9 @@
'marcelo@conectiva.com.br' => 'Marcelo Tosatti',
'marcelo@freak.distro.conectiva' => 'Marcelo Tosatti', # guessed
'marcelo@plucky.distro.conectiva' => 'Marcelo Tosatti',
+'marekm@amelek.gda.pl' => 'Marek Michalkiewicz',
'mark@alpha.dyndns.org' => 'Mark W. McClelland',
+'mark@hal9000.dyndns.org' => 'Mark W. McClelland',
'markh@osdl.org' => 'Mark Haverkamp',
'martin.bligh@us.ibm.com' => 'Martin J. Bligh',
'martin@bruli.net' => 'Martin Brulisauer',
@@ -416,6 +476,7 @@
'mauelshagen@sistina.com' => 'Heinz J. Mauelshagen',
'maxk@qualcomm.com' => 'Maksim Krasnyanskiy',
'maxk@viper.(none)' => 'Maksim Krasnyanskiy', # from shortlog
+'maxk@viper.qualcomm.com' => 'Maksim Krasnyanskiy',
'mbligh@aracnet.com' => 'Martin J. Bligh',
'mcp@linux-systeme.de' => 'Marc-Christian Petersen',
'mdharm-scsi@one-eyed-alien.net' => 'Matthew Dharm',
@@ -425,11 +486,14 @@
'mgreer@mvista.com' => 'Mark A. Greer', # lbdb
'michaelw@foldr.org' => 'Michael Weber', # google
'michal@harddata.com' => 'Michal Jaegermann',
+'mikal@stillhq.com' => 'Michael Still',
+'mikael.starvik@axis.com' => 'Mikael Starvik',
'mikep@linuxtr.net' => 'Mike Phillips',
'mikpe@csd.uu.se' => 'Mikael Pettersson',
'mikulas@artax.karlin.mff.cuni.cz' => 'Mikulas Patocka',
'miles@lsi.nec.co.jp' => 'Miles Bader',
'miles@megapathdsl.net' => 'Miles Lane',
+'milli@acmeps.com' => 'Michael Milligan',
'miltonm@bga.com' => 'Milton Miller', # by Kristian Peters
'mingo@elte.hu' => 'Ingo Molnar',
'mingo@redhat.com' => 'Ingo Molnar',
@@ -437,6 +501,7 @@
'mkp@mkp.net' => 'Martin K. Petersen', # lbdb
'mlang@delysid.org' => 'Mario Lang', # google
'mlindner@syskonnect.de' => 'Mirko Lindner',
+'mlocke@mvista.com' => 'Montavista Software, Inc.',
'mmcclell@bigfoot.com' => 'Mark McClelland',
'mochel@geena.pdx.osdl.net' => 'Patrick Mochel',
'mochel@osdl.org' => 'Patrick Mochel',
@@ -446,6 +511,7 @@
'mufasa@sis.com.tw' => 'Mufasa Yang', # sent by himself
'mulix@actcom.co.il' => 'Muli Ben-Yehuda', # sent by himself
'mw@microdata-pos.de' => 'Michael Westermann',
+'mzyngier@freesurf.fr' => 'Marc Zyngier',
'n0ano@n0ano.com' => 'Don Dugger',
'nahshon@actcom.co.il' => 'Itai Nahshon',
'nathans@sgi.com' => 'Nathan Scott',
@@ -453,8 +519,10 @@
'nemosoft@smcc.demon.nl' => 'Nemosoft Unv.',
'nico@cam.org' => 'Nicolas Pitre',
'nicolas.aspert@epfl.ch' => 'Nicolas Aspert',
+'nicolas.mailhot@laposte.net' => 'Nicolas Mailhot',
'nkbj@image.dk' => 'Niels Kristian Bech Jensen',
'nmiell@attbi.com' => 'Nicholas Miell',
+'nobita@t-online.de' => 'Andreas Busch',
'okir@suse.de' => 'Olaf Kirch', # lbdb
'olaf.dietsche#list.linux-kernel@t-online.de' => 'Olaf Dietsche',
'olaf.dietsche' => 'Olaf Dietsche',
@@ -464,11 +532,14 @@
'oliver.neukum@lrz.uni-muenchen.de' => 'Oliver Neukum',
'oliver@neukum.name' => 'Oliver Neukum',
'oliver@neukum.org' => 'Oliver Neukum',
+'oliver@oenone.homelinux.org' => 'Oliver Neukum',
'orjan.friberg@axis.com' => 'Orjan Friberg',
'os@emlix.com' => 'Oskar Schirmer', # sent by himself
+'osst@riede.org' => 'Willem Riede',
'otaylor@redhat.com' => 'Owen Taylor',
'p2@ace.ulyssis.sutdent.kuleuven.ac.be' => 'Peter De Shrijver',
'p_gortmaker@yahoo.com' => 'Paul Gortmaker',
+'pasky@ucw.cz' => 'Petr Baudis',
'patmans@us.ibm.com' => 'Patrick Mansfield',
'paul.mundt@timesys.com' => 'Paul Mundt', # google
'paulkf@microgate.com' => 'Paul Fulghum',
@@ -491,12 +562,19 @@
'peter@chubb.wattle.id.au' => 'Peter Chubb',
'peterc@gelato.unsw.edu.au' => 'Peter Chubb',
'petero2@telia.com' => 'Peter Osterlund',
+'petkan@mastika.dce.bg' => 'Petko Manolov',
+'petkan@rakia.dce.bg' => 'Petko Manolov',
+'petkan@rakia.hell.org' => 'Petko Manolov',
+'petkan@tequila.dce.bg' => 'Petko Manolov',
'petkan@users.sourceforge.net' => 'Petko Manolov',
'petr@vandrovec.name' => 'Petr Vandrovec',
'petri.koistinen@iki.fi' => 'Petri Koistinen',
+'phillim2@comcast.net' => 'Mike Phillips',
'pkot@linuxnews.pl' => 'Pawel Kot',
'plars@austin.ibm.com' => 'Paul Larson',
+'plcl@telefonica.net' => 'Pedro Lopez-Cabanillas',
'pmenage@ensim.com' => 'Paul Menage',
+'porter@cox.net' => 'Matt Porter',
'prom@berlin.ccc.de' => 'Ingo Albrecht',
'proski@gnu.org' => 'Pavel Roskin',
'pwaechtler@mac.com' => 'Peter Wächtler',
@@ -505,6 +583,7 @@
'r.e.wolff@bitwizard.nl' => 'Rogier Wolff', # lbdbq
'ralf@dea.linux-mips.net' => 'Ralf Bächle',
'ralf@linux-mips.org' => 'Ralf Bächle',
+'ramune@net-ronin.org' => 'Daniel A. Nobuto',
'randy.dunlap@verizon.net' => 'Randy Dunlap',
'ray-lk@madrabbit.org' => 'Ray Lee',
'rbh00@utsglobal.com' => 'Richard Hitt', # asked him, he prefers Richard
@@ -521,6 +600,7 @@
'rhw@infradead.org' => 'Riley Williams',
'richard.brunner@amd.com' => 'Richard Brunner',
'riel@conectiva.com.br' => 'Rik van Riel',
+'rjweryk@uwo.ca' => 'Rob Weryk',
'rl@hellgate.ch' => 'Roger Luethi',
'rlievin@free.fr' => 'Romain Lievin',
'rmk@arm.linux.org.uk' => 'Russell King',
@@ -531,7 +611,9 @@
'rohit.seth@intel.com' => 'Rohit Seth',
'roland@topspin.com' => 'Roland Dreier',
'romieu@cogenit.fr' => 'François Romieu',
+'romieu@fr.zoreil.com' => 'François Romieu',
'root@viper.(none)' => 'Maxim Krasnyansky',
+'rread@clusterfs.com' => 'Robert Read',
'rscott@attbi.com' => 'Rob Scott',
'rth@are.twiddle.net' => 'Richard Henderson',
'rth@dorothy.sfbay.redhat.com' => 'Richard Henderson',
@@ -562,6 +644,7 @@
'sct@redhat.com' => 'Stephen C. Tweedie',
'sds@tislabs.com' => 'Stephen Smalley',
'sebastian.droege@gmx.de' => 'Sebastian Dröge',
+'sfbest@us.ibm.com' => 'Steve Best',
'sfr@canb.auug.org.au' => 'Stephen Rothwell',
'shaggy@austin.ibm.com' => 'Dave Kleikamp',
'shaggy@kleikamp.austin.ibm.com' => 'Dave Kleikamp',
@@ -577,13 +660,18 @@
'sparker@sun.com' => 'Steven Parker', # by Duncan Laurie
'spse@secret.org.uk' => 'Simon Evans', # by Kristian Peters
'sridhar@dyn9-47-18-140.beaverton.ibm.com' => 'Sridhar Samudrala',
+'sridhar@dyn9-47-18-86.beaverton.ibm.com' => 'Sridhar Samudrala',
+'sridhar@x1-6-00-10-a4-8b-06-f6.attbi.com' => 'Sridhar Samudrala',
+'srompf@isg.de' => 'Stefan Rompf',
'steiner@sgi.com' => 'Jack Steiner',
'stelian.pop@fr.alcove.com' => 'Stelian Pop',
+'stelian@popies.net' => 'Stelian Pop',
'stern@rowland.harvard.edu' => 'Alan Stern',
'stern@rowland.org' => 'Alan Stern', # lbdb
'steve.cameron@hp.com' => 'Stephen Cameron',
'steve@chygwyn.com' => 'Steven Whitehouse',
'steve@gw.chygwyn.com' => 'Steven Whitehouse',
+'steve@kbuxd.necst.nec.co.jp' => 'SL Baur',
'stevef@smfhome1.austin.rr.com' => 'Steve French',
'stevef@steveft21.ltcsamba' => 'Steve French',
'stuartm@connecttech.com' => 'Stuart MacDonald',
@@ -595,6 +683,8 @@
't-kouchi@mvf.biglobe.ne.jp' => 'Takayoshi Kouchi',
'tai@imasy.or.jp' => 'Taisuke Yamada',
'taka@valinux.co.jp' => 'Hirokazu Takahashi',
+'tao@acc.umu.se' => 'David Weinehall', # by himself
+'tao@kernel.org' => 'David Weinehall', # by himself
'tcallawa@redhat.com' => 'Tom Callaway',
'tetapi@utu.fi' => 'Tero Pirkkanen', # by Kristian Peters
'th122948@scl1.sfbay.sun.com' => 'Tim Hockin', # by Duncan Laurie
@@ -604,6 +694,7 @@
'thockin@sun.com' => 'Tim Hockin',
'tigran@aivazian.name' => 'Tigran Aivazian',
'tim@physik3.uni-rostock.de' => 'Tim Schmielau',
+'tmcreynolds@nvidia.com' => 'Tom McReynolds',
'tmolina@cox.net' => 'Thomas Molina',
'tomita@cinet.co.jp' => 'Osamu Tomita',
'tomlins@cam.org' => 'Ed Tomlinson',
@@ -619,13 +710,17 @@
'trini@kernel.crashing.org' => 'Tom Rini',
'trond.myklebust@fys.uio.no' => 'Trond Myklebust',
'tvignaud@mandrakesoft.com' => 'Thierry Vignaud',
+'tvrtko@net4u.hr' => 'Tvrtko A. Ursulin',
'twaugh@redhat.com' => 'Tim Waugh',
'tytso@mit.edu' => "Theodore Ts'o", # web.mit.edu/tytso/www/home.html
'tytso@snap.thunk.org' => "Theodore Ts'o",
'tytso@think.thunk.org' => "Theodore Ts'o", # guessed
'urban@teststation.com' => 'Urban Widmark',
'uzi@uzix.org' => 'Joshua Uziel',
+'valko@linux.karinthy.hu' => 'Laszlo Valko',
'vandrove@vc.cvut.cz' => 'Petr Vandrovec',
+'varenet@parisc-linux.org' => 'Thibaut Varene',
+'vberon@mecano.gme.usherb.ca' => 'Vincent Béron',
'venkatesh.pallipadi@intel.com' => 'Venkatesh Pallipadi',
'viro@math.psu.edu' => 'Alexander Viro',
'vojta@math.berkeley.edu' => 'Paul Vojta',
@@ -633,17 +728,25 @@
'vojtech@twilight.ucw.cz' => 'Vojtech Pavlik',
'vojtech@ucw.cz' => 'Vojtech Pavlik', # added by himself
'wa@almesberger.net' => 'Werner Almesberger',
+'wahrenbruch@kobil.de' => 'Thomas Wahrenbruch',
+'wd@denx.de' => 'Wolfgang Denk',
'wes@infosink.com' => 'Wes Schreiner',
'wg@malloc.de' => 'Wolfram Gloger', # lbdb
+'whitney@math.berkeley.edu' => 'Wayne Whitney',
+'will@sowerbutts.com' => 'William R. Sowerbutts',
'willy@debian.org' => 'Matthew Wilcox',
+'willy@fc.hp.com' => 'Matthew Wilcox',
'willy@w.ods.org' => 'Willy Tarreau',
'wilsonc@abocom.com.tw' => 'Wilson Chen', # google
'wim@iguana.be' => 'Wim Van Sebroeck',
'wli@holomorphy.com' => 'William Lee Irwin III',
'wolfgang.fritz@gmx.net' => 'Wolfgang Fritz', # by Kristian Peters
'wolfgang@iksw-muees.de' => 'Wolfgang Muees',
+'wrlk@riede.org' => 'Willem Riede',
'wstinson@infonie.fr' => 'William Stinson',
+'wstinson@wanadoo.fr' => 'William Stinson',
'xkaspa06@stud.fee.vutbr.cz' => 'Tomas Kasparek',
+'yokota@netlab.is.tsukuba.ac.jp' => 'Yokota Hiroshi',
'yoshfuji@linux-ipv6.org' => 'Hideaki Yoshifuji', # lbdb
'yuri@acronis.com' => 'Yuri Per', # lbdb
'zaitcev@redhat.com' => 'Pete Zaitcev',
@@ -977,6 +1080,7 @@
# resolve the address to a name if possible
append_item(%$log, @cur); @cur = ();
$address = lc($1);
+ $address =~ s/\[[^]]+\]$//;
$name = rmap_address($address);
if ($name ne $address) {
if ($opt{'abbreviate-names'}) {
@@ -1176,6 +1280,38 @@
__END__
# --------------------------------------------------------------------
# $Log: lk-changelog.pl,v $
+# Revision 0.64 2003/01/08 14:48:50 emma
+# New addresses by Vita.
+#
+# Revision 0.63 2003/01/08 14:47:37 emma
+# New addresses by Vita.
+#
+# Revision 0.62 2002/12/27 16:59:28 emma
+# Another ten addresses sent by Vitezslav Samel.
+#
+# Revision 0.61 2002/12/14 14:28:49 emma
+# Bjorn Helgaas only uses the transscribed version of his name himself.
+#
+# Revision 0.60 2002/12/13 14:51:35 emma
+# Next dozen of addresses digged out by Vita.
+#
+# Revision 0.59 2002/12/11 12:11:51 emma
+# Workaround: strip trailing [tag] from mail addresses, reported by Marcel
+# Holtmann.
+# Add some new addresses.
+#
+# Revision 0.58 2002/12/07 15:14:57 emma
+# More addresses figured by Vitezslav Samel.
+#
+# Revision 0.57 2002/12/07 15:08:34 emma
+# 3 more addresses.
+#
+# Revision 0.56 2002/11/28 02:32:11 emma
+# List David Weinehall.
+#
+# Revision 0.55 2002/11/27 04:44:54 emma
+# Add kaos@sgi.com for Keith Owens as per his own request.
+#
# Revision 0.54 2002/11/26 23:27:11 emma
# Merge changes from Linus' version.
#
===================================================================
This BitKeeper patch contains the following changesets:
1.31
## Wrapped with gzip_uu ##
begin 600 bkpatch22760
M'XL(`('P'#X``\59:V_<N!7]G/D5!+)`6FQ&ED;S;K/0.L[&>3@;V$F,[>YV
M04F<$4<2J9#4C&<0]->V*/8/%/W80W)>MO?1;0O4>=@CWGM)WL>YY\H/R7O-
MU/1!38TI.-4!%;EBK/.0G$MMI@_F]4V0VX^74N+CB6XU.RF9$JPZ.7V%OUW_
MH6NDK'0'@F^IR0JR9$I/'T1!O']BU@V;/KA\]OS]ZR\O.YTG3\C3@HHYNV*&
M/'G2,5(M:97KI&%BWG(1&$6%KIFA02;K3WO93[TP[.%/U(O#X6#RJ3<9#@:?
M6(\-!ED_HNEH/&)9[V"ND#7[15M1U!OU>H-^&'WJ#\9AOW-&<.R(A/%)&)V$
M$Q+VI_UP&@X^#Z-I&)([GDJ\A\CG$>F&G5/R/[['TTY&WC<Y-0R6L3<7VBA&
M:^=@+@4)@V$_Z+PB_4&OU^N\/3BUT_V-7YU.2,/.%^277*<+J4PEY_[T@V@<
MCOJC:/PICD:3P:<9F]!9-@HG-&0Y3?.?\=4M*W$8A9,P[H=A_U,X&?<CEQH[
MB5N9\5^?Y]\W=904430>Q"XIHOM)T?^UI(@GI!O_']/">?1KTE6K&_NW>X,4
MV=WT/\B0%V,2=1X^>/#@`S=LHRNZ)%>T9A7YH[;?$IRD"K+-%YVS*(3D"_?_
M0_+9BWQ*JK*;N6MBZZ"I'B_=(8G-`>=4F(93Q]-!2%A=4_+LIB&?=5Z,(IAX
M1%-=M1F7B6%*.9\%J7I$GGQ!'KVVS\D%S3BK'CW&$4.GD-.FHO"WK`+!C!?]
M4A@IN)#DS"TZ:6^>I2I9V;"T+!#53CI7G&GR+""G2K8KIIS"P"G,5<M$8N$0
M@3[(,ZK)<[N4TJSP"E'4=QJ*ZR2CIF"YHE6%"P52S;>:6#.L)5=,S7&72[E!
M<I2<?,6K0GH;0V]#Y$D*H9H*T<UA)I=J=C@`ELGI=MFKC;Q:*P)=4%73A`O#
M*NN_G4HKR)5;<@J]'NEU'J5(5<6S,EE107,I@]G6UV>MR"@4D.;6>U80-^'R
MAQS7DPFKLX/I,_N(G&XEO/6)/4Z:ZZQHUW72P(Q$--/M^4^I,N2,D2NWO/5>
M[`*$2\N$JK+BHKTY.`Z7%3A\#I=I)DI%F=AL]?I>3U%:)UG5PK]JI@^G>\OP
M`''%LA>/O7B=U*UJBG60E]LM%,>-+]Q#)SEPH<@*&\^/*ZYN#D:?VH?DFE=:
M>O^/7++D\&)0T0P=E0$`%)LK+MBQIP0EK_VZ5QO:*$`-*1TH;C8.4+)B+X[G
MY!+/;0QRNF3)1WYS2/,S/$%!<&:,C^IH[(^Q9`L4$*`G*RJI>,Z"WPDIV.^/
MU%[BL_9*DYU2G?@F'Z1ERHV^M1'/R55`+GA5>;_WPI$[>\7RF51YLOLA0.)O
M?SQ*_#/9SLEK_]C=9:<VJZ36"`);6@^PO*#FR%^WM5[T>NY^#)"*6"4S?"^K
MH&CLOX/6E?FQ`?XP\LS+><V)U^1E0JF:'Z[V#(\("HIM0]GK.UB9B3J9M19B
M@[94^OA4;U`PY"N69P4OO8:K^YG.2I8G,+SDFLJ@V6[PEK:5)!8S?O32SF]S
M6W``@T30<MTV0<TW_#B_*/E&MF+>/;<%9:69+A+3WAC9!,L;+G).`_0`;NA1
MKC]W8N0#54!%11?;NP]Z]GQSX$522\4`C0Y7:;O50IZ2]\!KM8WLT-UGCOY&
M50HH$SFKT(&RXK#3*1.`/RO@-49>0XJ2"[A`Y4M;"H>#,60"0_':=:\Q]AJM
MR`$0K0YX6A_D+S@Z"%+_N5MW"B,7E@).2[(U4`(J&?72+VE-*W*.)0!6Q6V=
MG_7&]M(O[+<8:JR:4S2)678K4TX74@ER[A<?/28/22Z9%H\,`1X:\L^3OUE5
M@4X"SS'.5'?.N$`Y[I'XW*^2"[?ZW*_:B$%-\8\MZP5SF:;VS%E%<W84K/.M
M!'EN!=R9)^[,<>@@:H%&JW^HLYK9;@HF8WS3W>F_M.OD(KMPZ]9'<>B<NDBI
M3>=$SX\RZB73F@&DU;;JX\@5Q((MTD2A]$4`VX`EU.Z:W=WD5!HC:ZPXS9Y+
MC\6<J@VJJ9&IO#G>9S8CS]V2%QYY8<7KNG<OS@`AQ!A+3M9W@$5I$L2+M_KX
M&"BY=R!S5&_+-(YC6T8+B>XK$O_M`#<OW6=$UF4;I%@RXVD(MA</QE$<S#3*
M%.91VSL%9NTKD?H:B&-_28FB:0`CP'-H9!*41AR(P,M_J#EYZY:]DK^L+$0R
M5S2U/QS?M1"V#^W1+.Z['KS0N+\4&AT;@)8SFA_=P[G_R@NXF^R$2[FIY2U4
MORL+^_X.&O655Q;9@SOY[XYT0=72%V7<=QUO8=:HX"3309NI@.7MD?`[N^1D
M!^ZN):UHTJ#)*98YQ-_;?F>#1:XVK/&^&89>7MY)S%>,FX)\O6+"5R#:NR'I
MFA2\UJR:64U7#KXS)?=3U.(K>5JQ&HK^WAZ_RH(6$GXR/-`2D#?C>PY&7K8H
M&4[._UHS)JBG7C%Z.*"B5&5;4W4O55^AXQ=HWZ_LJ@U%";3#9=RW39`MTD-/
M`5.EY)WMRB!HACOI-J5@S8KQ.E6\K0\Q?H45\O4N[\:NA!W[20JZ`>4)%ED+
MJKT+L@L8\\4U<?'"(8,F64GP[D;)!<O,/D$AFG4=63&6W#@N!`=[90<`.""S
MK064^#8"^^?D"CS:BO?#D1?'WG5B9P!6!O.<@N#OMV(E<<!=E9RM>+;Q>N.M
M7HG[5),P#(-\+7)Q1`Z@6I)KD(L,802+%*X\^M%6\Z9,EAQL*OC8T@H'O'7*
M$@5!7BFJQ=I1:0=1_9[KL35'>B)CP%F*C_>;RY5=L+&Q<LRBGZT$\(,;KH^E
M2R_L%IWUV/73&MH\H<#G1M\W;HD2GWM<[L?>U94$0TAJT`-SU!LOI##4/8.S
M9V8%/SXF+T06.-6^=\)F+>;H,*`\B$J+46!'U&V$R9_\JE,8."8J.+`*U,"V
M#'2.I**-)9V'%'WC!2Q[M`)>U8582'`_FIBN%!47]Z>>TQ:LWLD/7?K)BH.(
M)))9+`KLP'V'NW_M!,@;UJ*RO**[%(B?23!X@9WN9:\MOZQ!>?'4B?JIL*&Z
M7"=MMMH7`E(9K)ZVX%!.;A*3/N28*=$K@3P&80ORC`7I?*]0VNE1`,.7-NI;
M645+_ELDT9JJPWE_3M:PCRVO?MDN#NT<V!0V5]`=D1(93GX($G*/D;=NN=E>
MTWFNJ;(*6U1LANK,Z$'A+69.25[+AFVZ3VD*C*NVXV_?EWLCE;'8+H^FB`MJ
M#'GK%JSDP%>ZHG4K7-?K*CM+'W%Y/Y9\&9`W,FV-`\]!SX&T6F!X7I=)NY)[
M=G8I4W)MGSJYV,O)FK,6V1QL0$B/6<U7Z*9_EQBN+IV(UW%XKI!]^4]->-B`
M89Z\Q+(3]_"O9RE#?MV%\2N#20.SLW8I/\#L`\S7&)$P728`IDFW/^I&X^YX
MB&D5O$A9MGS;@A>V[T-:.^';R6MOX2;J#KMAV(W"+NUWQVDW''9GPP`>3OFO
MFI!U,TNXGN]+#H>=`;8O[8([KG^)`0=4=OYI9,/9T91VY9\CEHV7'FZE,3>6
M:7N30S1S^66G]V#1;-5>VT+RL9\XX#04,WB6!6W=!IH=CX#78%0,.%ZY7GW4
MIIW.=GH\RI1?U'DQ#-T)39TIMD99Y#H1T.#T%HU`7[C<+MLS#GO."6:I4$XV
M/_MM4&S1\)U[:%/SO=)MY6G-T'/0)?J23#PVE12#N<'P7VS)S6NJ-YC2/E@9
MKS.VCE@"C+%#TMB7.EGW#K"]*WA*6V/G+4C9&"[MZPO@#\/0)(-YS8)6%TRE
M^V+XP$5F"<[IC\KSV&$\L!NM:`$;J6JS`I0E147L<L"S7G)]$+`;K3!P,W&S
ME[J6U0S=9D[.F"B]71?)5<&-8&L@HBF0T*JTY.G`Z:XI^!RY]D+.+@`CT1)5
MC,HV1T5F@9E3('.`+K5;]ALY2+**Z[OSE466@JWLBQ(@CI/VG'2EJO+7H'_8
M=YUL!2@7(/WW7E'M3G3EU[V*RZ>U!.NC-C4JF@9HYD:WEG\%--LG_3=.AIQS
M)77A&,[$O0<A[NLSFJ/9:4V>_(7HD^^^_?;/WW__^7???W9R\@?WLFU,XI[]
M70E#W]Z]A24_^8;3O>*$Z!NX86L4+!U%\`%--N@\O&,EOF=E-$4D?Z.5GK/2
M.XEZ)S;WA]/!9(J$WEGY4DB$11&#$>E@;4>\[[SQO6\].EBW;SS[,#WM3_;6
M;PW5!"1B35IK'UL2]S)<9XJG+-^_PI8S(((F`KOMH.'^IN'1IK'==!!-43H'
MQ]P8#.\;YLP=+I7S^1Q;R=;\K+<&DR/3@);>-(I@?6_Z6BK`A6Q%/B7:*-[8
M6_#*3OW?&CK_GLP`W/;5?'78]S%1S+7:W&YK.1JK8,I^G<O*V->V@0U$GA,-
MPD3$<5SOGW!\.*%MSH.IO?\A*R[00X_N/./S5OF=?RV6ULAMR^%XBG:[LQR3
M^I;M^P:&.P/1"3(L[$UCZ[^]@=?@M>1.&[AO9'!D9.1^Y8+['4YAW70\.!),
MT.1H;B3(,\P'+HOD2L#W'ULT>+O/_K>26<&R4K?UD_XL3#,VFG3^!;KYH5L2
#'0``
`
end
^ permalink raw reply
* Re: [Lustre-devel] Re: fixing redundant network opens on Linux file creation
From: Peter Braam @ 2003-01-09 3:36 UTC (permalink / raw)
To: Bryan Henderson
Cc: Andreas Dilger, Jan Hudec, linux-fsdevel, linux-fsdevel-owner,
Lustre Development Mailing List, Richard Sharpe, samba-technical,
Mike Shaver, Steven French
In-Reply-To: <OF3F23E8A5.5D83F4EF-ON87256CA9.000B13A4-88256CA9.000B8F64@us.ibm.com>
Bryan,
On Wed, Jan 08, 2003 at 06:08:48PM -0800, Bryan Henderson wrote:
>
>
>
>
> >I have no objections to a name change. We are not so religious about
> >"intent" as a name.
>
> How religious are you about the idea of having to have BOTH a lookup2()
> that contains all the information necessary to create a directory if the
> name is available, AND a subsequent "create directory" call? Because once
> you remove the word "intent" from the description, that looks even more
> silly.
Good question. For mkdir your solution is much preferrable. So no
religion here at all. But mkdir is an easy case, possibly the easiest.
For open, rename, setattr and dealing with symbolic links we found
having the separation of the lookup phase with intents and actual
execution to be quite useful, since the symbolic links may bring you
back to another file system.
> It is the relationship between those two (sometimes 3) redundant calls that
> is the real substance in what otherwise appears to be just a naming issue.
Yes, and the answer is "sometimes" - in the mkdir case it (moderately)
easy to give the whole task to the file system (symlinks remain
hairy), in open, rename, setattr we found a lot of useful VFS
functionality between lookup and operation.
- Peter -
^ permalink raw reply
* Re: File perforation.
From: Andreas Dilger @ 2003-01-09 3:23 UTC (permalink / raw)
To: Andrew Morton; +Cc: David Woodhouse, Eli Carter, linux-fsdevel
In-Reply-To: <3E1CCEF3.3409DCED@digeo.com>
On Jan 08, 2003 17:22 -0800, Andrew Morton wrote:
> A full holepunch()/perforate() thing is, as Dave points out, a trickier
> version of truncate. It's quite a hassle for not a lot of gain on
> the block filesystems.
Peter actually had a working version of this, what we called "punch", for
ext2 and I did the ext3 port in the 2.2 and early 2.3 days. The original
motivator was HSM, because some applications (Windows mainly) checked
both the beginning and end of a file for data (icons I think) when you
opened a folder (unlike "file" magic which is just the first 64kB at most),
so it was critical for the HSM system to be able to do hole punching in
the middle of the file.
Similarly, InterMezzo would like to be able to do partial cacheing of
giant files by essentially having a block LRU of a file and punching
out the unused blocks of a file without disturbing the other content.
InterMezzo also has a use for this to have an always-growing modification
log, and the server can punch out the blocks of data at the beginning of
the log when all clients have pulled those updates and/or those updates
have been superceded by later changes.
I think there is pent up demand for this, and applications would take
advantage of this if it where available. A simple syscall like
sys_punch(file, start, end)
(or start, count) is the natural thing to have. If end > file_size
it becomes equal to truncate.
Cheers, Andreas
--
Andreas Dilger
http://sourceforge.net/projects/ext2resize/
http://www-mddsp.enel.ucalgary.ca/People/adilger/
^ permalink raw reply
* Re: [PATCH] OProfile Pentium IV support
From: John Levon @ 2003-01-09 3:25 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel, oprofile-list
In-Reply-To: <3E1CEA70.CE486C4D@digeo.com>
On Wed, Jan 08, 2003 at 07:20:16PM -0800, Andrew Morton wrote:
> Below is a fix to make the kernel build when it is configured for
> something other than a p4.
Thanks.
> > http://www.movement.uklinux.net/oprofile-0.5cvs.tar.gz
>
> $./configure
You need --with-kernel-support as usual. I'll fix it not to be so
stupid
regards
john
^ permalink raw reply
* Re: [PATCH] OProfile Pentium IV support
From: Andrew Morton @ 2003-01-09 3:20 UTC (permalink / raw)
To: John Levon; +Cc: linux-kernel, oprofile-list
In-Reply-To: <20030109000035.GA53798@compsoc.man.ac.uk>
John Levon wrote:
>
> This is a compile-tested-only port of Graydon Hoare's driver. Please
> give it a test and report back.
Below is a fix to make the kernel build when it is configured for
something other than a p4.
> http://www.movement.uklinux.net/oprofile-0.5cvs.tar.gz
$./configure
...
checking for ld... ld
checking for kernel OProfile support... no
checking for kernel version... 2.5.54
configure: error: Unsupported kernel version
arch/i386/oprofile/Makefile | 3 ++-
arch/i386/oprofile/nmi_int.c | 8 ++++----
2 files changed, 6 insertions(+), 5 deletions(-)
--- linux-hype/arch/i386/oprofile/Makefile~op4-fix Wed Jan 8 19:12:38 2003
+++ linux-hype-akpm/arch/i386/oprofile/Makefile Wed Jan 8 19:12:38 2003
@@ -7,4 +7,5 @@ DRIVER_OBJS = $(addprefix ../../../drive
oprofile-y := $(DRIVER_OBJS) init.o timer_int.o
oprofile-$(CONFIG_X86_LOCAL_APIC) += nmi_int.o op_model_athlon.o \
- op_model_ppro.o op_model_p4.o
+ op_model_ppro.o
+oprofile-$(CONFIG_MPENTIUM4) += op_model_p4.o
--- linux-hype/arch/i386/oprofile/nmi_int.c~op4-fix Wed Jan 8 19:12:38 2003
+++ linux-hype-akpm/arch/i386/oprofile/nmi_int.c Wed Jan 8 19:12:38 2003
@@ -215,7 +215,7 @@ struct oprofile_operations nmi_ops = {
};
-#ifndef CONFIG_X86_64
+#if !defined(CONFIG_X86_64) && defined(CONFIG_MPENTIUM4)
static int __init p4_init(enum oprofile_cpu * cpu)
{
@@ -263,7 +263,7 @@ static int __init ppro_init(enum oprofil
return 1;
}
-#endif /* CONFIG_X86_64 */
+#endif
int __init nmi_init(struct oprofile_operations ** ops, enum oprofile_cpu * cpu)
{
@@ -282,7 +282,7 @@ int __init nmi_init(struct oprofile_oper
*cpu = OPROFILE_CPU_ATHLON;
break;
-#ifndef CONFIG_X86_64
+#if !defined(CONFIG_X86_64) && defined(CONFIG_MPENTIUM4)
case X86_VENDOR_INTEL:
switch (family) {
/* Pentium IV */
@@ -301,7 +301,7 @@ int __init nmi_init(struct oprofile_oper
return 0;
}
break;
-#endif /* CONFIG_X86_64 */
+#endif
default:
return 0;
_
^ permalink raw reply
* Re: free software
From: Samuel Flory @ 2003-01-09 3:12 UTC (permalink / raw)
To: Billy Rose; +Cc: rms, lm, linux-kernel
In-Reply-To: <20030109023204.GB7420@louise.pinerecords.com>
Tomas Szepe wrote:
>>[passive_induction@sbcglobal.net]
>>
>>after growing tired of trying to sift through the emails for tidbits of
>>useful code, i have come to the conclusion that this thread should be
>>geared towards something more constructive, otherwise i fear people will
>>begin to find `open source' and `free software' distasteful.
>>
>>
>
>Would you guys *PLEASE* remove your earplugs and get this off lkml?
>You have been hinted->told->flamed->insulted and you still don't get it.
>
>Gear the thread towards whatever topics/issues/problems/points you find
>important, but please do so somewhere else! linux-kernel is NOT the place
>for such discussions.
>
>
>
More importantly quit starting new threads!!! If you really must do
it here stay in the thread.
--
There is no such thing as obsolete hardware.
Merely hardware that other people don't want.
(The Second Rule of Hardware Acquisition)
Sam Flory <sflory@rackable.com>
^ permalink raw reply
* Re: 2.4.20, .text.lock.swap cpu usage? (ibm x440)
From: William Lee Irwin III @ 2003-01-09 2:57 UTC (permalink / raw)
To: Chris Wood; +Cc: linux-kernel
In-Reply-To: <3E1A12B5.4020505@xmission.com>
[-- Attachment #1: brief message --]
[-- Type: text/plain, Size: 760 bytes --]
On Mon, Jan 06, 2003 at 04:35:17PM -0700, Chris Wood wrote:
> With some tips from James Cleverdon (IBM), I turned on some kernel
> debugging and got the following from readprofile when the server was
> having problems (truncated to the first 22 lines):
> 16480 total 0.0138
Here are some monitoring tools that might help detect the cause of
the situation.
bloatmon is the "back end"; there's no reason to run it directly.
bloatmeter shows the "least utilized" slabs.
bloatmost shows the largest slabs.
These sort of make for a top(1) for "lowmem pressure". Not everything
is accounted there, though. The missing pieces are largely
(1) simultaneous temporary poll table allocations
(2) pmd's
(3) kernel stacks
Bill
[-- Attachment #2: bloatmost --]
[-- Type: text/plain, Size: 110 bytes --]
#!/bin/sh
while true
do
bloatmon < /proc/slabinfo \
| sort -rn -k 3,3 \
| head -22
sleep 60
echo
done
[-- Attachment #3: bloatmeter --]
[-- Type: text/plain, Size: 133 bytes --]
#!/bin/sh
while : ; do
grep -v '^slabinfo' /proc/slabinfo \
| bloatmon \
| sort -n -k 4,4 \
| head -22
sleep 5
echo
done
[-- Attachment #4: bloatmon --]
[-- Type: text/plain, Size: 413 bytes --]
#!/usr/bin/awk -f
BEGIN {
printf "%18s %8s %8s %8s\n", "cache", "active", "alloc", "%util";
}
{
if ($3 != 0.0) {
pct = 100.0 * $2 / $3;
frac = (10000.0 * $2 / $3) % 100;
} else {
pct = 100.0;
frac = 0.0;
}
active = ($2 * $4)/1024;
alloc = ($3 * $4)/1024;
if ((alloc - active) < 1.0) {
pct = 100.0;
frac = 0.0;
}
printf "%18s: %8dKB %8dKB %3d.%-2d\n", $1, active, alloc, pct, frac;
}
^ permalink raw reply
* [PATCH 2.5] : IrCOMM status init fixes
From: Jean Tourrilhes @ 2003-01-09 2:55 UTC (permalink / raw)
To: Jeff Garzik, Linux kernel mailing list
ir254_ircomm_dce.diff :
---------------------
<Patch from Jan Kiszka>
o [CORRECT] Properly initialise IrCOMM status line (DCE settings)
diff -u -p linux/net/irda/ircomm/ircomm_param.d5.c linux/net/irda/ircomm/ircomm_param.c
--- linux/net/irda/ircomm/ircomm_param.d5.c Wed Jan 8 17:40:08 2003
+++ linux/net/irda/ircomm/ircomm_param.c Wed Jan 8 17:51:19 2003
@@ -442,7 +442,9 @@ static int ircomm_param_dte(void *instan
param->pv.i = self->settings.dte;
else {
dte = (__u8) param->pv.i;
-
+
+ self->settings.dce = 0;
+
if (dte & IRCOMM_DELTA_DTR)
self->settings.dce |= (IRCOMM_DELTA_DSR|
IRCOMM_DELTA_RI |
diff -u -p linux/net/irda/ircomm/ircomm_tty.d5.c linux/net/irda/ircomm/ircomm_tty.c
--- linux/net/irda/ircomm/ircomm_tty.d5.c Wed Jan 8 17:40:17 2003
+++ linux/net/irda/ircomm/ircomm_tty.c Wed Jan 8 17:53:22 2003
@@ -490,7 +490,8 @@ static int ircomm_tty_open(struct tty_st
if (line < 0x10) {
self->service_type = IRCOMM_3_WIRE | IRCOMM_9_WIRE;
self->settings.service_type = IRCOMM_9_WIRE; /* 9 wire as default */
- self->settings.dce = IRCOMM_CTS | IRCOMM_CD; /* Default line settings */
+ /* Jan Kiszka -> add DSR/RI -> Conform to IrCOMM spec */
+ self->settings.dce = IRCOMM_CTS | IRCOMM_CD | IRCOMM_DSR | IRCOMM_RI; /* Default line settings */
IRDA_DEBUG(2, "%s(), IrCOMM device\n", __FUNCTION__ );
} else {
IRDA_DEBUG(2, "%s(), IrLPT device\n", __FUNCTION__ );
^ permalink raw reply
* [PATCH 2.5] : Secondary nack fixes
From: Jean Tourrilhes @ 2003-01-09 2:54 UTC (permalink / raw)
To: Jeff Garzik, Linux kernel mailing list
ir254_secondary_rr.diff :
-----------------------
o [CORRECT] fix the secondary function to send RR and frames without
the poll bit when it detect packet losses
diff -u -p linux/net/irda/irlap_event.d8.c linux/net/irda/irlap_event.c
--- linux/net/irda/irlap_event.d8.c Fri Nov 8 18:52:27 2002
+++ linux/net/irda/irlap_event.c Fri Nov 8 18:56:31 2002
@@ -1870,7 +1870,7 @@ static int irlap_state_nrm_s(struct irla
irlap_update_nr_received(self, info->nr);
irlap_wait_min_turn_around(self, &self->qos_tx);
- irlap_send_rr_frame(self, CMD_FRAME);
+ irlap_send_rr_frame(self, RSP_FRAME);
irlap_start_wd_timer(self, self->wd_timeout);
}
@@ -2035,18 +2035,18 @@ static int irlap_state_nrm_s(struct irla
irlap_update_nr_received(self, info->nr);
if (self->remote_busy) {
irlap_wait_min_turn_around(self, &self->qos_tx);
- irlap_send_rr_frame(self, CMD_FRAME);
+ irlap_send_rr_frame(self, RSP_FRAME);
} else
- irlap_resend_rejected_frames(self, CMD_FRAME);
+ irlap_resend_rejected_frames(self, RSP_FRAME);
irlap_start_wd_timer(self, self->wd_timeout);
break;
case RECV_SREJ_CMD:
irlap_update_nr_received(self, info->nr);
if (self->remote_busy) {
irlap_wait_min_turn_around(self, &self->qos_tx);
- irlap_send_rr_frame(self, CMD_FRAME);
+ irlap_send_rr_frame(self, RSP_FRAME);
} else
- irlap_resend_rejected_frame(self, CMD_FRAME);
+ irlap_resend_rejected_frame(self, RSP_FRAME);
irlap_start_wd_timer(self, self->wd_timeout);
break;
case WD_TIMER_EXPIRED:
^ permalink raw reply
* [PATCH 2.5] : SIR Wrapper partial rewrite
From: Jean Tourrilhes @ 2003-01-09 2:53 UTC (permalink / raw)
To: Jeff Garzik, Linux kernel mailing list
ir254_new_wrapper-3.diff :
------------------------
o [FEATURE] Properly inline in wrapper Tx path
o [FEATURE] Rewrite/simplify/optimise wrapper Rx path
Lower CPU overhead *and* kernel image size
o [FEATURE] Add ZeroCopy in wrapper Rx path for drivers that support it
I'll update drivers later on...
diff -u -p linux/include/net/irda/wrapper.d7.h linux/include/net/irda/wrapper.h
--- linux/include/net/irda/wrapper.d7.h Fri Nov 8 17:12:16 2002
+++ linux/include/net/irda/wrapper.h Fri Nov 15 11:55:10 2002
@@ -52,8 +52,6 @@ enum {
/* Proto definitions */
int async_wrap_skb(struct sk_buff *skb, __u8 *tx_buff, int buffsize);
-void async_bump(struct net_device *dev, struct net_device_stats *stats,
- __u8 *buf, int len);
void async_unwrap_char(struct net_device *dev, struct net_device_stats *stats,
iobuff_t *buf, __u8 byte);
diff -u -p linux/include/net/irda/irda_device.d7.h linux/include/net/irda/irda_device.h
--- linux/include/net/irda/irda_device.d7.h Fri Nov 15 11:50:45 2002
+++ linux/include/net/irda/irda_device.h Fri Nov 15 15:23:39 2002
@@ -173,12 +173,33 @@ typedef struct {
__u8 *head; /* start of buffer */
__u8 *data; /* start of data in buffer */
- __u8 *tail; /* end of data in buffer */
- int len; /* length of data */
- int truesize; /* total size of buffer */
+ int len; /* current length of data */
+ int truesize; /* total allocated size of buffer */
__u16 fcs;
+
+ struct sk_buff *skb; /* ZeroCopy Rx in async_unwrap_char() */
} iobuff_t;
+
+/* Maximum SIR frame (skb) that we expect to receive *unwrapped*.
+ * Max LAP MTU (I field) is 2048 bytes max (IrLAP 1.1, chapt 6.6.5, p40).
+ * Max LAP header is 2 bytes (for now).
+ * Max CRC is 2 bytes at SIR, 4 bytes at FIR.
+ * Need 1 byte for skb_reserve() to align IP header for IrLAN.
+ * Add a few extra bytes just to be safe (buffer is power of two anyway)
+ * Jean II */
+#define IRDA_SKB_MAX_MTU 2064
+/* Maximum SIR frame that we expect to send, wrapped (i.e. with XBOFS
+ * and escaped characters on top of above). */
+#define IRDA_SIR_MAX_FRAME 4269
+
+/* The SIR unwrapper async_unwrap_char() will use a Rx-copy-break mechanism
+ * when using the optional ZeroCopy Rx, where only small frames are memcpy
+ * to a smaller skb to save memory. This is the thresold under which copy
+ * will happen (and over which it won't happen).
+ * Some FIR drivers may use this #define as well...
+ * This is the same value as various Ethernet drivers. - Jean II */
+#define IRDA_RX_COPY_THRESHOLD 256
/* Function prototypes */
int irda_device_init(void);
diff -u -p linux/net/irda/irsyms.d7.c linux/net/irda/irsyms.c
--- linux/net/irda/irsyms.d7.c Fri Nov 8 17:27:10 2002
+++ linux/net/irda/irsyms.c Fri Nov 8 18:14:52 2002
@@ -165,6 +165,7 @@ EXPORT_SYMBOL(irda_task_delete);
EXPORT_SYMBOL(async_wrap_skb);
EXPORT_SYMBOL(async_unwrap_char);
EXPORT_SYMBOL(irda_calc_crc16);
+EXPORT_SYMBOL(irda_crc16_table);
EXPORT_SYMBOL(irda_start_timer);
EXPORT_SYMBOL(setup_dma);
EXPORT_SYMBOL(infrared_mode);
diff -u -p linux/net/irda/wrapper.d7.c linux/net/irda/wrapper.c
--- linux/net/irda/wrapper.d7.c Fri Nov 8 14:23:15 2002
+++ linux/net/irda/wrapper.c Fri Nov 15 17:24:50 2002
@@ -13,6 +13,7 @@
*
* Copyright (c) 1998-2000 Dag Brattli <dagb@cs.uit.no>,
* All Rights Reserved.
+ * Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -37,29 +38,41 @@
#include <net/irda/irlap_frame.h>
#include <net/irda/irda_device.h>
-static inline int stuff_byte(__u8 byte, __u8 *buf);
-
-static void state_outside_frame(struct net_device *dev,
- struct net_device_stats *stats,
- iobuff_t *rx_buff, __u8 byte);
-static void state_begin_frame(struct net_device *dev,
- struct net_device_stats *stats,
- iobuff_t *rx_buff, __u8 byte);
-static void state_link_escape(struct net_device *dev,
- struct net_device_stats *stats,
- iobuff_t *rx_buff, __u8 byte);
-static void state_inside_frame(struct net_device *dev,
- struct net_device_stats *stats,
- iobuff_t *rx_buff, __u8 byte);
+/************************** FRAME WRAPPING **************************/
+/*
+ * Unwrap and unstuff SIR frames
+ *
+ * Note : at FIR and MIR, HDLC framing is used and usually handled
+ * by the controller, so we come here only for SIR... Jean II
+ */
-static void (*state[])(struct net_device *dev, struct net_device_stats *stats,
- iobuff_t *rx_buff, __u8 byte) =
+/*
+ * Function stuff_byte (byte, buf)
+ *
+ * Byte stuff one single byte and put the result in buffer pointed to by
+ * buf. The buffer must at all times be able to have two bytes inserted.
+ *
+ * This is in a tight loop, better inline it, so need to be prior to callers.
+ * (2000 bytes on P6 200MHz, non-inlined ~370us, inline ~170us) - Jean II
+ */
+static inline int stuff_byte(__u8 byte, __u8 *buf)
{
- state_outside_frame,
- state_begin_frame,
- state_link_escape,
- state_inside_frame,
-};
+ switch (byte) {
+ case BOF: /* FALLTHROUGH */
+ case EOF: /* FALLTHROUGH */
+ case CE:
+ /* Insert transparently coded */
+ buf[0] = CE; /* Send link escape */
+ buf[1] = byte^IRDA_TRANS; /* Complement bit 5 */
+ return 2;
+ /* break; */
+ default:
+ /* Non-special value, no transparency required */
+ buf[0] = byte;
+ return 1;
+ /* break; */
+ }
+}
/*
* Function async_wrap (skb, *tx_buff, buffsize)
@@ -107,7 +120,7 @@ int async_wrap_skb(struct sk_buff *skb,
xbofs = 163;
}
- memset(tx_buff+n, XBOF, xbofs);
+ memset(tx_buff + n, XBOF, xbofs);
n += xbofs;
/* Start of packet character BOF */
@@ -140,31 +153,45 @@ int async_wrap_skb(struct sk_buff *skb,
return n;
}
+/************************* FRAME UNWRAPPING *************************/
/*
- * Function stuff_byte (byte, buf)
+ * Unwrap and unstuff SIR frames
*
- * Byte stuff one single byte and put the result in buffer pointed to by
- * buf. The buffer must at all times be able to have two bytes inserted.
+ * Complete rewrite by Jean II :
+ * More inline, faster, more compact, more logical. Jean II
+ * (16 bytes on P6 200MHz, old 5 to 7 us, new 4 to 6 us)
+ * (24 bytes on P6 200MHz, old 9 to 10 us, new 7 to 8 us)
+ * (for reference, 115200 b/s is 1 byte every 69 us)
+ * And reduce wrapper.o by ~900B in the process ;-)
+ *
+ * Then, we have the addition of ZeroCopy, which is optional
+ * (i.e. the driver must initiate it) and improve final processing.
+ * (2005 B frame + EOF on P6 200MHz, without 30 to 50 us, with 10 to 25 us)
*
+ * Note : at FIR and MIR, HDLC framing is used and usually handled
+ * by the controller, so we come here only for SIR... Jean II
*/
-static inline int stuff_byte(__u8 byte, __u8 *buf)
-{
- switch (byte) {
- case BOF: /* FALLTHROUGH */
- case EOF: /* FALLTHROUGH */
- case CE:
- /* Insert transparently coded */
- buf[0] = CE; /* Send link escape */
- buf[1] = byte^IRDA_TRANS; /* Complement bit 5 */
- return 2;
- /* break; */
- default:
- /* Non-special value, no transparency required */
- buf[0] = byte;
- return 1;
- /* break; */
- }
-}
+
+/*
+ * We can also choose where we want to do the CRC calculation. We can
+ * do it "inline", as we receive the bytes, or "postponed", when
+ * receiving the End-Of-Frame.
+ * (16 bytes on P6 200MHz, inlined 4 to 6 us, postponed 4 to 5 us)
+ * (24 bytes on P6 200MHz, inlined 7 to 8 us, postponed 5 to 7 us)
+ * With ZeroCopy :
+ * (2005 B frame on P6 200MHz, inlined 10 to 25 us, postponed 140 to 180 us)
+ * Without ZeroCopy :
+ * (2005 B frame on P6 200MHz, inlined 30 to 50 us, postponed 150 to 180 us)
+ * (Note : numbers taken with irq disabled)
+ *
+ * From those numbers, it's not clear which is the best strategy, because
+ * we end up running through a lot of data one way or another (i.e. cache
+ * misses). I personally prefer to avoid the huge latency spike of the
+ * "postponed" solution, because it come just at the time when we have
+ * lot's of protocol processing to do and it will hurt our ability to
+ * reach low link turnaround times... Jean II
+ */
+//#define POSTPONE_RX_CRC
/*
* Function async_bump (buf, len, stats)
@@ -172,136 +199,228 @@ static inline int stuff_byte(__u8 byte,
* Got a frame, make a copy of it, and pass it up the stack! We can try
* to inline it since it's only called from state_inside_frame
*/
-inline void async_bump(struct net_device *dev, struct net_device_stats *stats,
- __u8 *buf, int len)
+static inline void
+async_bump(struct net_device *dev,
+ struct net_device_stats *stats,
+ iobuff_t *rx_buff)
{
- struct sk_buff *skb;
-
- skb = dev_alloc_skb(len+1);
- if (!skb) {
+ struct sk_buff *newskb;
+ struct sk_buff *dataskb;
+ int docopy;
+
+ /* Check if we need to copy the data to a new skb or not.
+ * If the driver doesn't use ZeroCopy Rx, we have to do it.
+ * With ZeroCopy Rx, the rx_buff already point to a valid
+ * skb. But, if the frame is small, it is more efficient to
+ * copy it to save memory (copy will be fast anyway - that's
+ * called Rx-copy-break). Jean II */
+ docopy = ((rx_buff->skb == NULL) ||
+ (rx_buff->len < IRDA_RX_COPY_THRESHOLD));
+
+ /* Allocate a new skb */
+ newskb = dev_alloc_skb(docopy ? rx_buff->len + 1 : rx_buff->truesize);
+ if (!newskb) {
stats->rx_dropped++;
+ /* We could deliver the current skb if doing ZeroCopy Rx,
+ * but this would stall the Rx path. Better drop the
+ * packet... Jean II */
return;
}
- /* Align IP header to 20 bytes */
- skb_reserve(skb, 1);
+ /* Align IP header to 20 bytes (i.e. increase skb->data)
+ * Note this is only useful with IrLAN, as PPP has a variable
+ * header size (2 or 1 bytes) - Jean II */
+ skb_reserve(newskb, 1);
+
+ if(docopy) {
+ /* Copy data without CRC (lenght already checked) */
+ memcpy(newskb->data, rx_buff->data, rx_buff->len - 2);
+ /* Deliver this skb */
+ dataskb = newskb;
+ } else {
+ /* We are using ZeroCopy. Deliver old skb */
+ dataskb = rx_buff->skb;
+ /* And hook the new skb to the rx_buff */
+ rx_buff->skb = newskb;
+ rx_buff->head = newskb->data; /* NOT newskb->head */
+ //printk(KERN_DEBUG "ZeroCopy : len = %d, dataskb = %p, newskb = %p\n", rx_buff->len, dataskb, newskb);
+ }
- /* Copy data without CRC */
- memcpy(skb_put(skb, len-2), buf, len-2);
+ /* Set proper length on skb (without CRC) */
+ skb_put(dataskb, rx_buff->len - 2);
/* Feed it to IrLAP layer */
- skb->dev = dev;
- skb->mac.raw = skb->data;
- skb->protocol = htons(ETH_P_IRDA);
+ dataskb->dev = dev;
+ dataskb->mac.raw = dataskb->data;
+ dataskb->protocol = htons(ETH_P_IRDA);
- netif_rx(skb);
+ netif_rx(dataskb);
stats->rx_packets++;
- stats->rx_bytes += len;
+ stats->rx_bytes += rx_buff->len;
+
+ /* Clean up rx_buff (redundant with async_unwrap_bof() ???) */
+ rx_buff->data = rx_buff->head;
+ rx_buff->len = 0;
}
/*
- * Function async_unwrap_char (dev, rx_buff, byte)
+ * Function async_unwrap_bof(dev, byte)
*
- * Parse and de-stuff frame received from the IrDA-port
+ * Handle Beggining Of Frame character received within a frame
*
*/
-inline void async_unwrap_char(struct net_device *dev,
- struct net_device_stats *stats,
- iobuff_t *rx_buff, __u8 byte)
+static inline void
+async_unwrap_bof(struct net_device *dev,
+ struct net_device_stats *stats,
+ iobuff_t *rx_buff, __u8 byte)
{
- (*state[rx_buff->state])(dev, stats, rx_buff, byte);
+ switch(rx_buff->state) {
+ case LINK_ESCAPE:
+ case INSIDE_FRAME:
+ /* Not supposed to happen, the previous frame is not
+ * finished - Jean II */
+ IRDA_DEBUG(1, "%s(), Discarding incomplete frame\n",
+ __FUNCTION__);
+ stats->rx_errors++;
+ stats->rx_missed_errors++;
+ irda_device_set_media_busy(dev, TRUE);
+ break;
+
+ case OUTSIDE_FRAME:
+ case BEGIN_FRAME:
+ default:
+ /* We may receive multiple BOF at the start of frame */
+ break;
+ }
+
+ /* Now receiving frame */
+ rx_buff->state = BEGIN_FRAME;
+ rx_buff->in_frame = TRUE;
+
+ /* Time to initialize receive buffer */
+ rx_buff->data = rx_buff->head;
+ rx_buff->len = 0;
+ rx_buff->fcs = INIT_FCS;
}
/*
- * Function state_outside_frame (dev, rx_buff, byte)
+ * Function async_unwrap_eof(dev, byte)
*
- * Not receiving any frame (or just bogus data)
+ * Handle End Of Frame character received within a frame
*
*/
-static void state_outside_frame(struct net_device *dev,
- struct net_device_stats *stats,
- iobuff_t *rx_buff, __u8 byte)
+static inline void
+async_unwrap_eof(struct net_device *dev,
+ struct net_device_stats *stats,
+ iobuff_t *rx_buff, __u8 byte)
{
- switch (byte) {
- case BOF:
- rx_buff->state = BEGIN_FRAME;
- rx_buff->in_frame = TRUE;
- break;
- case XBOF:
- /* idev->xbofs++; */
- break;
- case EOF:
+#ifdef POSTPONE_RX_CRC
+ int i;
+#endif
+
+ switch(rx_buff->state) {
+ case OUTSIDE_FRAME:
+ /* Probably missed the BOF */
+ stats->rx_errors++;
+ stats->rx_missed_errors++;
irda_device_set_media_busy(dev, TRUE);
break;
+
+ case BEGIN_FRAME:
+ case LINK_ESCAPE:
+ case INSIDE_FRAME:
default:
- irda_device_set_media_busy(dev, TRUE);
+ /* Note : in the case of BEGIN_FRAME and LINK_ESCAPE,
+ * the fcs will most likely not match and generate an
+ * error, as expected - Jean II */
+ rx_buff->state = OUTSIDE_FRAME;
+ rx_buff->in_frame = FALSE;
+
+#ifdef POSTPONE_RX_CRC
+ /* If we haven't done the CRC as we receive bytes, we
+ * must do it now... Jean II */
+ for(i = 0; i < rx_buff->len; i++)
+ rx_buff->fcs = irda_fcs(rx_buff->fcs,
+ rx_buff->data[i]);
+#endif
+
+ /* Test FCS and signal success if the frame is good */
+ if (rx_buff->fcs == GOOD_FCS) {
+ /* Deliver frame */
+ async_bump(dev, stats, rx_buff);
+ break;
+ } else {
+ /* Wrong CRC, discard frame! */
+ irda_device_set_media_busy(dev, TRUE);
+
+ IRDA_DEBUG(1, "%s(), crc error\n", __FUNCTION__);
+ stats->rx_errors++;
+ stats->rx_crc_errors++;
+ }
break;
}
}
/*
- * Function state_begin_frame (idev, byte)
+ * Function async_unwrap_ce(dev, byte)
*
- * Begin of frame detected
+ * Handle Character Escape character received within a frame
*
*/
-static void state_begin_frame(struct net_device *dev,
- struct net_device_stats *stats,
- iobuff_t *rx_buff, __u8 byte)
+static inline void
+async_unwrap_ce(struct net_device *dev,
+ struct net_device_stats *stats,
+ iobuff_t *rx_buff, __u8 byte)
{
- /* Time to initialize receive buffer */
- rx_buff->data = rx_buff->head;
- rx_buff->len = 0;
- rx_buff->fcs = INIT_FCS;
-
- switch (byte) {
- case BOF:
- /* Continue */
- break;
- case CE:
- /* Stuffed byte */
- rx_buff->state = LINK_ESCAPE;
+ switch(rx_buff->state) {
+ case OUTSIDE_FRAME:
+ /* Activate carrier sense */
+ irda_device_set_media_busy(dev, TRUE);
break;
- case EOF:
- /* Abort frame */
- rx_buff->state = OUTSIDE_FRAME;
- IRDA_DEBUG(1, "%s(), abort frame\n", __FUNCTION__);
- stats->rx_errors++;
- stats->rx_frame_errors++;
+
+ case LINK_ESCAPE:
+ WARNING("%s: state not defined\n", __FUNCTION__);
break;
+
+ case BEGIN_FRAME:
+ case INSIDE_FRAME:
default:
- rx_buff->data[rx_buff->len++] = byte;
- rx_buff->fcs = irda_fcs(rx_buff->fcs, byte);
- rx_buff->state = INSIDE_FRAME;
+ /* Stuffed byte comming */
+ rx_buff->state = LINK_ESCAPE;
break;
}
}
/*
- * Function state_link_escape (dev, byte)
+ * Function async_unwrap_other(dev, byte)
*
- * Found link escape character
+ * Handle other characters received within a frame
*
*/
-static void state_link_escape(struct net_device *dev,
- struct net_device_stats *stats,
- iobuff_t *rx_buff, __u8 byte)
+static inline void
+async_unwrap_other(struct net_device *dev,
+ struct net_device_stats *stats,
+ iobuff_t *rx_buff, __u8 byte)
{
- switch (byte) {
- case BOF: /* New frame? */
- IRDA_DEBUG(1, "%s(), Discarding incomplete frame\n",
- __FUNCTION__);
- rx_buff->state = BEGIN_FRAME;
- irda_device_set_media_busy(dev, TRUE);
- break;
- case CE:
- WARNING("%s: state not defined\n", __FUNCTION__);
- break;
- case EOF: /* Abort frame */
- rx_buff->state = OUTSIDE_FRAME;
+ switch(rx_buff->state) {
+ /* This is on the critical path, case are ordered by
+ * probability (most frequent first) - Jean II */
+ case INSIDE_FRAME:
+ /* Must be the next byte of the frame */
+ if (rx_buff->len < rx_buff->truesize) {
+ rx_buff->data[rx_buff->len++] = byte;
+#ifndef POSTPONE_RX_CRC
+ rx_buff->fcs = irda_fcs(rx_buff->fcs, byte);
+#endif
+ } else {
+ IRDA_DEBUG(1, "%s(), Rx buffer overflow, aborting\n",
+ __FUNCTION__);
+ rx_buff->state = OUTSIDE_FRAME;
+ }
break;
- default:
+
+ case LINK_ESCAPE:
/*
* Stuffed char, complement bit 5 of byte
* following CE, IrLAP p.114
@@ -309,67 +428,58 @@ static void state_link_escape(struct net
byte ^= IRDA_TRANS;
if (rx_buff->len < rx_buff->truesize) {
rx_buff->data[rx_buff->len++] = byte;
+#ifndef POSTPONE_RX_CRC
rx_buff->fcs = irda_fcs(rx_buff->fcs, byte);
+#endif
rx_buff->state = INSIDE_FRAME;
} else {
- IRDA_DEBUG(1, "%s(), rx buffer overflow\n",
+ IRDA_DEBUG(1, "%s(), Rx buffer overflow, aborting\n",
__FUNCTION__);
rx_buff->state = OUTSIDE_FRAME;
}
break;
+
+ case OUTSIDE_FRAME:
+ /* Activate carrier sense */
+ if(byte != XBOF)
+ irda_device_set_media_busy(dev, TRUE);
+ break;
+
+ case BEGIN_FRAME:
+ default:
+ rx_buff->data[rx_buff->len++] = byte;
+#ifndef POSTPONE_RX_CRC
+ rx_buff->fcs = irda_fcs(rx_buff->fcs, byte);
+#endif
+ rx_buff->state = INSIDE_FRAME;
+ break;
}
}
/*
- * Function state_inside_frame (dev, byte)
+ * Function async_unwrap_char (dev, rx_buff, byte)
*
- * Handle bytes received within a frame
+ * Parse and de-stuff frame received from the IrDA-port
*
+ * This is the main entry point for SIR drivers.
*/
-static void state_inside_frame(struct net_device *dev,
- struct net_device_stats *stats,
- iobuff_t *rx_buff, __u8 byte)
+void async_unwrap_char(struct net_device *dev,
+ struct net_device_stats *stats,
+ iobuff_t *rx_buff, __u8 byte)
{
- int ret = 0;
-
- switch (byte) {
- case BOF: /* New frame? */
- IRDA_DEBUG(1, "%s(), Discarding incomplete frame\n",
- __FUNCTION__);
- rx_buff->state = BEGIN_FRAME;
- irda_device_set_media_busy(dev, TRUE);
+ switch(byte) {
+ case CE:
+ async_unwrap_ce(dev, stats, rx_buff, byte);
break;
- case CE: /* Stuffed char */
- rx_buff->state = LINK_ESCAPE;
+ case BOF:
+ async_unwrap_bof(dev, stats, rx_buff, byte);
break;
- case EOF: /* End of frame */
- rx_buff->state = OUTSIDE_FRAME;
- rx_buff->in_frame = FALSE;
-
- /* Test FCS and signal success if the frame is good */
- if (rx_buff->fcs == GOOD_FCS) {
- /* Deliver frame */
- async_bump(dev, stats, rx_buff->data, rx_buff->len);
- ret = TRUE;
- break;
- } else {
- /* Wrong CRC, discard frame! */
- irda_device_set_media_busy(dev, TRUE);
-
- IRDA_DEBUG(1, "%s(), crc error\n", __FUNCTION__);
- stats->rx_errors++;
- stats->rx_crc_errors++;
- }
+ case EOF:
+ async_unwrap_eof(dev, stats, rx_buff, byte);
break;
- default: /* Must be the next byte of the frame */
- if (rx_buff->len < rx_buff->truesize) {
- rx_buff->data[rx_buff->len++] = byte;
- rx_buff->fcs = irda_fcs(rx_buff->fcs, byte);
- } else {
- IRDA_DEBUG(1, "%s(), Rx buffer overflow, aborting\n",
- __FUNCTION__);
- rx_buff->state = OUTSIDE_FRAME;
- }
+ default:
+ async_unwrap_other(dev, stats, rx_buff, byte);
break;
}
}
+
^ permalink raw reply
* Re: kernel compile error
From: Joshua Kwan @ 2003-01-09 2:48 UTC (permalink / raw)
To: rodrigobaroni; +Cc: linux-kernel
In-Reply-To: <20030109021540.80049.qmail@web11105.mail.yahoo.com>
[-- Attachment #1: Type: text/plain, Size: 1094 bytes --]
Have you considered grabbing an official 2.4.18 source tree from
kernel.org and see if that works?
BTW, 2.4.20 is current, if you're going to get something might as well
get that...
Regards
Josh
Rabid cheeseburgers forced"Rodrigo F. Baroni"
<rodrigobaroni@yahoo.com.br> to write this on Wed, 8 Jan 2003
23:15:40-0300 (ART):
> Hello all,
>
>
> There is a good time that I have trying to compile
> a kernel in a pc 233 mhz (motherboard lmr 591 -
> chipset sis, all-on-board), and so the follow error
> below happen.
>
>
> Does anybody knows what is going on please ?!
> (it's a 2.4.18 kernel in a debian 3)
>
>
>
>
> Rodrigo F Baroni
> Computer Science Grad Student
>
> _____________________________________________________________________
> __ Busca Yahoo!
> O melhor lugar para encontrar tudo o que você procura na Internet
> http://br.busca.yahoo.com/
--
Joshua Kwan
joshk@mspencer.net
pgp public key at http://joshk.mspencer.net/pubkey_gpg.asc
It's hard to keep your shirt on when you're getting something off your
chest.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* [PATCH 2.5] : IrDA driver module fixes
From: Jean Tourrilhes @ 2003-01-09 2:53 UTC (permalink / raw)
To: Jeff Garzik, Linux kernel mailing list
ir254_driver_module_fixes-2.diff :
--------------------------------
o [CORRECT] Use SET_MODULE_OWNER() in various IrDA drivers
diff -u -p -r linux/drivers/net/irda-d5/ali-ircc.c linux/drivers/net/irda/ali-ircc.c
--- linux/drivers/net/irda-d5/ali-ircc.c Wed Jan 8 16:59:49 2003
+++ linux/drivers/net/irda/ali-ircc.c Wed Jan 8 17:27:03 2003
@@ -248,7 +248,6 @@ static int ali_ircc_open(int i, chipio_t
struct ali_ircc_cb *self;
struct pm_dev *pmdev;
int dongle_id;
- int ret;
int err;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
@@ -1303,6 +1302,9 @@ static int ali_ircc_net_init(struct net_
{
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ );
+ /* Keep track of module usage */
+ SET_MODULE_OWNER(dev);
+
/* Setup to be a normal IrDA network device driver */
irda_device_setup(dev);
@@ -1369,8 +1371,6 @@ static int ali_ircc_net_open(struct net_
*/
self->irlap = irlap_open(dev, &self->qos, hwname);
- MOD_INC_USE_COUNT;
-
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
return 0;
@@ -1410,8 +1410,6 @@ static int ali_ircc_net_close(struct net
free_irq(self->io.irq, dev);
free_dma(self->io.dma);
-
- MOD_DEC_USE_COUNT;
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
diff -u -p -r linux/drivers/net/irda-d5/donauboe.c linux/drivers/net/irda/donauboe.c
--- linux/drivers/net/irda-d5/donauboe.c Wed Jan 8 16:59:49 2003
+++ linux/drivers/net/irda/donauboe.c Wed Jan 8 17:20:06 2003
@@ -1388,6 +1388,9 @@ toshoboe_net_init (struct net_device *de
{
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
+ /* Keep track of module usage */
+ SET_MODULE_OWNER(dev);
+
/* Setup to be a normal IrDA network device driver */
irda_device_setup (dev);
@@ -1435,8 +1438,6 @@ toshoboe_net_open (struct net_device *de
self->irdad = 1;
- MOD_INC_USE_COUNT;
-
return 0;
}
@@ -1466,8 +1467,6 @@ toshoboe_net_close (struct net_device *d
{
toshoboe_stopchip (self);
}
-
- MOD_DEC_USE_COUNT;
return 0;
}
diff -u -p -r linux/drivers/net/irda-d5/irda-usb.c linux/drivers/net/irda/irda-usb.c
--- linux/drivers/net/irda-d5/irda-usb.c Wed Jan 8 16:59:49 2003
+++ linux/drivers/net/irda/irda-usb.c Wed Jan 8 17:20:06 2003
@@ -904,6 +904,9 @@ static int irda_usb_net_init(struct net_
{
IRDA_DEBUG(1, "%s()\n", __FUNCTION__);
+ /* Keep track of module usage */
+ SET_MODULE_OWNER(dev);
+
/* Set up to be a normal IrDA network device driver */
irda_device_setup(dev);
@@ -974,7 +977,6 @@ static int irda_usb_net_open(struct net_
irda_usb_submit(self, NULL, self->rx_urb[i]);
/* Ready to play !!! */
- MOD_INC_USE_COUNT;
return 0;
}
@@ -1025,8 +1027,6 @@ static int irda_usb_net_close(struct net
if (self->irlap)
irlap_close(self->irlap);
self->irlap = NULL;
-
- MOD_DEC_USE_COUNT;
return 0;
}
diff -u -p -r linux/drivers/net/irda-d5/nsc-ircc.c linux/drivers/net/irda/nsc-ircc.c
--- linux/drivers/net/irda-d5/nsc-ircc.c Wed Jan 8 16:59:49 2003
+++ linux/drivers/net/irda/nsc-ircc.c Wed Jan 8 17:20:06 2003
@@ -1866,6 +1866,9 @@ static int nsc_ircc_net_init(struct net_
{
IRDA_DEBUG(4, "%s()\n", __FUNCTION__);
+ /* Keep track of module usage */
+ SET_MODULE_OWNER(dev);
+
/* Setup to be a normal IrDA network device driver */
irda_device_setup(dev);
@@ -1934,8 +1937,6 @@ static int nsc_ircc_net_open(struct net_
*/
self->irlap = irlap_open(dev, &self->qos, hwname);
- MOD_INC_USE_COUNT;
-
return 0;
}
@@ -1982,8 +1983,6 @@ static int nsc_ircc_net_close(struct net
/* Restore bank register */
outb(bank, iobase+BSR);
-
- MOD_DEC_USE_COUNT;
return 0;
}
diff -u -p -r linux/drivers/net/irda-d5/w83977af_ir.c linux/drivers/net/irda/w83977af_ir.c
--- linux/drivers/net/irda-d5/w83977af_ir.c Wed Jan 8 16:59:49 2003
+++ linux/drivers/net/irda/w83977af_ir.c Wed Jan 8 17:20:06 2003
@@ -1197,6 +1197,9 @@ static int w83977af_net_init(struct net_
{
IRDA_DEBUG(0, "%s()\n", __FUNCTION__ );
+ /* Keep track of module usage */
+ SET_MODULE_OWNER(dev);
+
/* Set up to be a normal IrDA network device driver */
irda_device_setup(dev);
@@ -1267,8 +1270,6 @@ static int w83977af_net_open(struct net_
*/
self->irlap = irlap_open(dev, &self->qos, hwname);
- MOD_INC_USE_COUNT;
-
return 0;
}
@@ -1316,8 +1317,6 @@ static int w83977af_net_close(struct net
/* Restore bank register */
outb(set, iobase+SSR);
-
- MOD_DEC_USE_COUNT;
return 0;
}
^ permalink raw reply
* [PATCH 2.4] : Discovery locking fixes
From: Jean Tourrilhes @ 2003-01-09 2:51 UTC (permalink / raw)
To: Jeff Garzik, Linux kernel mailing list
ir254_discovery_locking-2.diff :
------------------------------
o [CRITICA] Fix remaining locking problem with discovery log
o [CRITICA] Don't call expiry callback under spinlock
o [FEATURE] Simplify/cleanup/optimise discovery/expiry code
diff -u -p -r linux/include/net/irda-d4/af_irda.h linux/include/net/irda/af_irda.h
--- linux/include/net/irda-d4/af_irda.h Mon Nov 4 14:30:49 2002
+++ linux/include/net/irda/af_irda.h Wed Jan 8 17:00:47 2003
@@ -52,8 +52,8 @@ struct irda_sock {
__u8 max_header_size;
struct qos_info qos_tx;
- __u16 mask; /* Hint bits mask */
- __u16 hints; /* Hint bits */
+ __u16_host_order mask; /* Hint bits mask */
+ __u16_host_order hints; /* Hint bits */
void *ckey; /* IrLMP client handle */
void *skey; /* IrLMP service handle */
@@ -63,7 +63,7 @@ struct irda_sock {
struct ias_value *ias_result; /* Result of remote IAS query */
hashbin_t *cachelog; /* Result of discovery query */
- struct discovery_t *cachediscovery; /* Result of selective discovery query */
+ __u32 cachedaddr; /* Result of selective discovery query */
int nslots; /* Number of slots to use for discovery */
diff -u -p -r linux/include/net/irda-d4/discovery.h linux/include/net/irda/discovery.h
--- linux/include/net/irda-d4/discovery.h Mon Nov 4 14:30:36 2002
+++ linux/include/net/irda/discovery.h Wed Jan 8 17:00:47 2003
@@ -46,12 +46,20 @@
* little endian format. A little endian machine stores MSB of word in
* byte[1] and LSB in byte[0]. A big endian machine stores MSB in byte[0]
* and LSB in byte[1].
+ *
+ * This structure is used in the code for things that are endian neutral
+ * but that fit in a word so that we can manipulate them efficiently.
+ * By endian neutral, I mean things that are really an array of bytes,
+ * and always used as such, for example the hint bits. Jean II
*/
typedef union {
__u16 word;
__u8 byte[2];
} __u16_host_order;
+/* Same purpose, different application */
+#define u16ho(array) (* ((__u16 *) array))
+
/* Types of discovery */
typedef enum {
DISCOVERY_LOG, /* What's in our discovery log */
@@ -62,30 +70,31 @@ typedef enum {
#define NICKNAME_MAX_LEN 21
+/* Basic discovery information about a peer */
+typedef struct irda_device_info discinfo_t; /* linux/irda.h */
+
/*
* The DISCOVERY structure is used for both discovery requests and responses
*/
typedef struct discovery_t {
- irda_queue_t q; /* Must be first! */
+ irda_queue_t q; /* Must be first! */
+
+ discinfo_t data; /* Basic discovery information */
+ int name_len; /* Lenght of nickname */
- __u32 saddr; /* Which link the device was discovered */
- __u32 daddr; /* Remote device address */
- LAP_REASON condition; /* More info about the discovery */
-
- __u16_host_order hints; /* Discovery hint bits */
- __u8 charset; /* Encoding of nickname */
- char nickname[22]; /* The name of the device (21 bytes + \0) */
- int name_len; /* Lenght of nickname */
-
- int gen_addr_bit; /* Need to generate a new device address? */
- int nslots; /* Number of slots to use when discovering */
- unsigned long timestamp; /* Time discovered */
- unsigned long first_timestamp; /* First time discovered */
+ LAP_REASON condition; /* More info about the discovery */
+ int gen_addr_bit; /* Need to generate a new device
+ * address? */
+ int nslots; /* Number of slots to use when
+ * discovering */
+ unsigned long timestamp; /* Last time discovered */
+ unsigned long firststamp; /* First time discovered */
} discovery_t;
void irlmp_add_discovery(hashbin_t *cachelog, discovery_t *discovery);
void irlmp_add_discovery_log(hashbin_t *cachelog, hashbin_t *log);
void irlmp_expire_discoveries(hashbin_t *log, __u32 saddr, int force);
-struct irda_device_info *irlmp_copy_discoveries(hashbin_t *log, int *pn, __u16 mask);
+struct irda_device_info *irlmp_copy_discoveries(hashbin_t *log, int *pn,
+ __u16 mask, int old_entries);
#endif
diff -u -p -r linux/include/net/irda-d4/irlan_client.h linux/include/net/irda/irlan_client.h
--- linux/include/net/irda-d4/irlan_client.h Mon Nov 4 14:30:47 2002
+++ linux/include/net/irda/irlan_client.h Wed Jan 8 17:00:47 2003
@@ -34,7 +34,7 @@
#include <net/irda/irlan_event.h>
void irlan_client_start_kick_timer(struct irlan_cb *self, int timeout);
-void irlan_client_discovery_indication(discovery_t *, DISCOVERY_MODE, void *);
+void irlan_client_discovery_indication(discinfo_t *, DISCOVERY_MODE, void *);
void irlan_client_wakeup(struct irlan_cb *self, __u32 saddr, __u32 daddr);
void irlan_client_open_ctrl_tsap( struct irlan_cb *self);
diff -u -p -r linux/include/net/irda-d4/irlmp.h linux/include/net/irda/irlmp.h
--- linux/include/net/irda-d4/irlmp.h Mon Nov 4 14:30:04 2002
+++ linux/include/net/irda/irlmp.h Wed Jan 8 17:00:47 2003
@@ -58,7 +58,7 @@
#define LM_IDLE_TIMEOUT 2*HZ /* 2 seconds for now */
typedef enum {
- S_PNP,
+ S_PNP = 0,
S_PDA,
S_COMPUTER,
S_PRINTER,
@@ -72,22 +72,24 @@ typedef enum {
S_END,
} SERVICE;
-typedef void (*DISCOVERY_CALLBACK1) (discovery_t *, DISCOVERY_MODE, void *);
-typedef void (*DISCOVERY_CALLBACK2) (hashbin_t *, void *);
+/* For selective discovery */
+typedef void (*DISCOVERY_CALLBACK1) (discinfo_t *, DISCOVERY_MODE, void *);
+/* For expiry (the same) */
+typedef void (*DISCOVERY_CALLBACK2) (discinfo_t *, DISCOVERY_MODE, void *);
typedef struct {
irda_queue_t queue; /* Must be first */
- __u16 hints; /* Hint bits */
+ __u16_host_order hints; /* Hint bits */
} irlmp_service_t;
typedef struct {
irda_queue_t queue; /* Must be first */
- __u16 hint_mask;
+ __u16_host_order hint_mask;
DISCOVERY_CALLBACK1 disco_callback; /* Selective discovery */
- DISCOVERY_CALLBACK1 expir_callback; /* Selective expiration */
+ DISCOVERY_CALLBACK2 expir_callback; /* Selective expiration */
void *priv; /* Used to identify client */
} irlmp_client_t;
@@ -199,11 +201,11 @@ __u16 irlmp_service_to_hint(int service)
void *irlmp_register_service(__u16 hints);
int irlmp_unregister_service(void *handle);
void *irlmp_register_client(__u16 hint_mask, DISCOVERY_CALLBACK1 disco_clb,
- DISCOVERY_CALLBACK1 expir_clb, void *priv);
+ DISCOVERY_CALLBACK2 expir_clb, void *priv);
int irlmp_unregister_client(void *handle);
int irlmp_update_client(void *handle, __u16 hint_mask,
DISCOVERY_CALLBACK1 disco_clb,
- DISCOVERY_CALLBACK1 expir_clb, void *priv);
+ DISCOVERY_CALLBACK2 expir_clb, void *priv);
void irlmp_register_link(struct irlap_cb *, __u32 saddr, notify_t *);
void irlmp_unregister_link(__u32 saddr);
@@ -222,11 +224,11 @@ int irlmp_disconnect_request(struct lsa
void irlmp_discovery_confirm(hashbin_t *discovery_log, DISCOVERY_MODE mode);
void irlmp_discovery_request(int nslots);
-struct irda_device_info *irlmp_get_discoveries(int *pn, __u16 mask, int nslots);
+discinfo_t *irlmp_get_discoveries(int *pn, __u16 mask, int nslots);
void irlmp_do_expiry(void);
void irlmp_do_discovery(int nslots);
discovery_t *irlmp_get_discovery_response(void);
-void irlmp_discovery_expiry(discovery_t *expiry);
+void irlmp_discovery_expiry(discinfo_t *expiry, int number);
int irlmp_data_request(struct lsap_cb *, struct sk_buff *);
void irlmp_data_indication(struct lsap_cb *, struct sk_buff *);
diff -u -p -r linux/net/irda-d4/af_irda.c linux/net/irda/af_irda.c
--- linux/net/irda-d4/af_irda.c Tue Jan 7 17:59:03 2003
+++ linux/net/irda/af_irda.c Wed Jan 8 17:00:47 2003
@@ -401,11 +401,10 @@ static void irda_getvalue_confirm(int re
*
* Got a selective discovery indication from IrLMP.
*
- * IrLMP is telling us that this node is matching our hint bit
- * filter. Check if it's a newly discovered node (or if node changed its
- * hint bits), and then wake up any process waiting for answer...
+ * IrLMP is telling us that this node is new and matching our hint bit
+ * filter. Wake up any process waiting for answer...
*/
-static void irda_selective_discovery_indication(discovery_t *discovery,
+static void irda_selective_discovery_indication(discinfo_t *discovery,
DISCOVERY_MODE mode,
void *priv)
{
@@ -419,18 +418,8 @@ static void irda_selective_discovery_ind
return;
}
- /* Check if node is discovered is a new one or an old one.
- * We check when how long ago this node was discovered, with a
- * coarse timeout (we may miss some discovery events or be delayed).
- * Note : by doing this test here, we avoid waking up a process ;-)
- */
- if((jiffies - discovery->first_timestamp) >
- (sysctl_discovery_timeout * HZ)) {
- return; /* Too old, not interesting -> goodbye */
- }
-
/* Pass parameter to the caller */
- self->cachediscovery = discovery;
+ self->cachedaddr = discovery->daddr;
/* Wake up process if its waiting for device to be discovered */
wake_up_interruptible(&self->query_wait);
@@ -455,7 +444,7 @@ static void irda_discovery_timeout(u_lon
/* Nothing for the caller */
self->cachelog = NULL;
- self->cachediscovery = NULL;
+ self->cachedaddr = 0;
self->errno = -ETIME;
/* Wake up process if its still waiting... */
@@ -627,7 +616,7 @@ static int irda_find_lsap_sel(struct ird
*/
static int irda_discover_daddr_and_lsap_sel(struct irda_sock *self, char *name)
{
- struct irda_device_info *discoveries; /* Copy of the discovery log */
+ discinfo_t *discoveries; /* Copy of the discovery log */
int number; /* Number of nodes in the log */
int i;
int err = -ENETUNREACH;
@@ -642,7 +631,8 @@ static int irda_discover_daddr_and_lsap_
* Note : we have to use irlmp_get_discoveries(), as opposed
* to play with the cachelog directly, because while we are
* making our ias query, le log might change... */
- discoveries = irlmp_get_discoveries(&number, self->mask, self->nslots);
+ discoveries = irlmp_get_discoveries(&number, self->mask.word,
+ self->nslots);
/* Check if the we got some results */
if (discoveries == NULL)
return -ENETUNREACH; /* No nodes discovered */
@@ -1137,7 +1127,7 @@ static int irda_create(struct socket *so
/* Register as a client with IrLMP */
self->ckey = irlmp_register_client(0, NULL, NULL, NULL);
- self->mask = 0xffff;
+ self->mask.word = 0xffff;
self->rx_flow = self->tx_flow = FLOW_START;
self->nslots = DISCOVERY_DEFAULT_SLOTS;
self->daddr = DEV_ADDR_ANY; /* Until we get connected */
@@ -1999,6 +1989,7 @@ static int irda_setsockopt(struct socket
if (optlen < sizeof(int))
return -EINVAL;
+ /* The input is really a (__u8 hints[2]), easier as an int */
if (get_user(opt, (int *)optval))
return -EFAULT;
@@ -2017,16 +2008,17 @@ static int irda_setsockopt(struct socket
if (optlen < sizeof(int))
return -EINVAL;
+ /* The input is really a (__u8 hints[2]), easier as an int */
if (get_user(opt, (int *)optval))
return -EFAULT;
/* Set the new hint mask */
- self->mask = (__u16) opt;
+ self->mask.word = (__u16) opt;
/* Mask out extension bits */
- self->mask &= 0x7f7f;
+ self->mask.word &= 0x7f7f;
/* Check if no bits */
- if(!self->mask)
- self->mask = 0xFFFF;
+ if(!self->mask.word)
+ self->mask.word = 0xFFFF;
break;
default:
@@ -2117,7 +2109,7 @@ static int irda_getsockopt(struct socket
switch (optname) {
case IRLMP_ENUMDEVICES:
/* Ask lmp for the current discovery log */
- discoveries = irlmp_get_discoveries(&list.len, self->mask,
+ discoveries = irlmp_get_discoveries(&list.len, self->mask.word,
self->nslots);
/* Check if the we got some results */
if (discoveries == NULL)
@@ -2349,7 +2341,7 @@ bed:
return -EFAULT;
/* Tell IrLMP we want to be notified */
- irlmp_update_client(self->ckey, self->mask,
+ irlmp_update_client(self->ckey, self->mask.word,
irda_selective_discovery_indication,
NULL, (void *) self);
@@ -2357,7 +2349,7 @@ bed:
irlmp_discovery_request(self->nslots);
/* Wait until a node is discovered */
- if (!self->cachediscovery) {
+ if (!self->cachedaddr) {
int ret = 0;
IRDA_DEBUG(1, "%s(), nothing discovered yet, going to sleep...\n", __FUNCTION__);
@@ -2372,7 +2364,7 @@ bed:
/* Wait for IR-LMP to call us back */
__wait_event_interruptible(self->query_wait,
- (self->cachediscovery!=NULL || self->errno==-ETIME),
+ (self->cachedaddr != 0 || self->errno == -ETIME),
ret);
/* If watchdog is still activated, kill it! */
@@ -2389,19 +2381,25 @@ bed:
__FUNCTION__);
/* Tell IrLMP that we have been notified */
- irlmp_update_client(self->ckey, self->mask, NULL, NULL, NULL);
+ irlmp_update_client(self->ckey, self->mask.word,
+ NULL, NULL, NULL);
/* Check if the we got some results */
- if (!self->cachediscovery)
+ if (!self->cachedaddr)
return -EAGAIN; /* Didn't find any devices */
+ daddr = self->cachedaddr;
/* Cleanup */
- self->cachediscovery = NULL;
+ self->cachedaddr = 0;
- /* Note : We don't return anything to the user.
- * We could return the device that triggered the wake up,
- * but it's probably better to force the user to query
- * the whole discovery log and let him pick one device...
+ /* We return the daddr of the device that trigger the
+ * wakeup. As irlmp pass us only the new devices, we
+ * are sure that it's not an old device.
+ * If the user want more details, he should query
+ * the whole discovery log and pick one device...
*/
+ if (put_user(daddr, (int *)optval))
+ return -EFAULT;
+
break;
default:
return -ENOPROTOOPT;
diff -u -p -r linux/net/irda-d4/discovery.c linux/net/irda/discovery.c
--- linux/net/irda-d4/discovery.c Mon Nov 4 14:30:15 2002
+++ linux/net/irda/discovery.c Wed Jan 8 17:00:47 2003
@@ -59,7 +59,7 @@ void irlmp_add_discovery(hashbin_t *cach
unsigned long flags;
/* Set time of first discovery if node is new (see below) */
- new->first_timestamp = new->timestamp;
+ new->firststamp = new->timestamp;
spin_lock_irqsave(&cachelog->hb_spinlock, flags);
@@ -76,24 +76,24 @@ void irlmp_add_discovery(hashbin_t *cach
/* Be sure to stay one item ahead */
discovery = (discovery_t *) hashbin_get_next(cachelog);
- if ((node->saddr == new->saddr) &&
- ((node->daddr == new->daddr) ||
- (strcmp(node->nickname, new->nickname) == 0)))
+ if ((node->data.saddr == new->data.saddr) &&
+ ((node->data.daddr == new->data.daddr) ||
+ (strcmp(node->data.info, new->data.info) == 0)))
{
/* This discovery is a previous discovery
* from the same device, so just remove it
*/
hashbin_remove_this(cachelog, (irda_queue_t *) node);
- /* Check if hints bits have changed */
- if(node->hints.word == new->hints.word)
+ /* Check if hints bits are unchanged */
+ if(u16ho(node->data.hints) == u16ho(new->data.hints))
/* Set time of first discovery for this node */
- new->first_timestamp = node->first_timestamp;
+ new->firststamp = node->firststamp;
kfree(node);
}
}
/* Insert the new and updated version */
- hashbin_insert(cachelog, (irda_queue_t *) new, new->daddr, NULL);
+ hashbin_insert(cachelog, (irda_queue_t *) new, new->data.daddr, NULL);
spin_unlock_irqrestore(&cachelog->hb_spinlock, flags);
}
@@ -147,27 +147,50 @@ void irlmp_add_discovery_log(hashbin_t *
*/
void irlmp_expire_discoveries(hashbin_t *log, __u32 saddr, int force)
{
- discovery_t *discovery, *curr;
- unsigned long flags;
+ discovery_t * discovery;
+ discovery_t * curr;
+ unsigned long flags;
+ discinfo_t * buffer = NULL;
+ int n; /* Size of the full log */
+ int i = 0; /* How many we expired */
+ ASSERT(log != NULL, return;);
IRDA_DEBUG(4, "%s()\n", __FUNCTION__);
spin_lock_irqsave(&log->hb_spinlock, flags);
discovery = (discovery_t *) hashbin_get_first(log);
while (discovery != NULL) {
- curr = discovery;
-
/* Be sure to be one item ahead */
+ curr = discovery;
discovery = (discovery_t *) hashbin_get_next(log);
/* Test if it's time to expire this discovery */
- if ((curr->saddr == saddr) &&
+ if ((curr->data.saddr == saddr) &&
(force ||
((jiffies - curr->timestamp) > DISCOVERY_EXPIRE_TIMEOUT)))
{
- /* Tell IrLMP and registered clients about it */
- irlmp_discovery_expiry(curr);
+ /* Create buffer as needed.
+ * As this function get called a lot and most time
+ * we don't have anything to put in the log (we are
+ * quite picky), we can save a lot of overhead
+ * by not calling kmalloc. Jean II */
+ if(buffer == NULL) {
+ /* Create the client specific buffer */
+ n = HASHBIN_GET_SIZE(log);
+ buffer = kmalloc(n * sizeof(struct irda_device_info), GFP_ATOMIC);
+ if (buffer == NULL) {
+ spin_unlock_irqrestore(&log->hb_spinlock, flags);
+ return;
+ }
+
+ }
+
+ /* Copy discovery information */
+ memcpy(&(buffer[i]), &(curr->data),
+ sizeof(discinfo_t));
+ i++;
+
/* Remove it from the log */
curr = hashbin_remove_this(log, (irda_queue_t *) curr);
if (curr)
@@ -175,9 +198,23 @@ void irlmp_expire_discoveries(hashbin_t
}
}
+ /* Drop the spinlock before calling the higher layers, as
+ * we can't guarantee they won't call us back and create a
+ * deadlock. We will work on our own private data, so we
+ * don't care to be interupted. - Jean II */
spin_unlock_irqrestore(&log->hb_spinlock, flags);
+
+ if(buffer == NULL)
+ return;
+
+ /* Tell IrLMP and registered clients about it */
+ irlmp_discovery_expiry(buffer, i);
+
+ /* Free up our buffer */
+ kfree(buffer);
}
+#if 0
/*
* Function irlmp_dump_discoveries (log)
*
@@ -193,13 +230,14 @@ void irlmp_dump_discoveries(hashbin_t *l
discovery = (discovery_t *) hashbin_get_first(log);
while (discovery != NULL) {
IRDA_DEBUG(0, "Discovery:\n");
- IRDA_DEBUG(0, " daddr=%08x\n", discovery->daddr);
- IRDA_DEBUG(0, " saddr=%08x\n", discovery->saddr);
- IRDA_DEBUG(0, " nickname=%s\n", discovery->nickname);
+ IRDA_DEBUG(0, " daddr=%08x\n", discovery->data.daddr);
+ IRDA_DEBUG(0, " saddr=%08x\n", discovery->data.saddr);
+ IRDA_DEBUG(0, " nickname=%s\n", discovery->data.info);
discovery = (discovery_t *) hashbin_get_next(log);
}
}
+#endif
/*
* Function irlmp_copy_discoveries (log, pn, mask)
@@ -221,43 +259,49 @@ void irlmp_dump_discoveries(hashbin_t *l
* Note : the client must kfree himself() the log...
* Jean II
*/
-struct irda_device_info *irlmp_copy_discoveries(hashbin_t *log, int *pn, __u16 mask)
+struct irda_device_info *irlmp_copy_discoveries(hashbin_t *log, int *pn,
+ __u16 mask, int old_entries)
{
- discovery_t * discovery;
- unsigned long flags;
- struct irda_device_info * buffer;
- int i = 0;
- int n;
+ discovery_t * discovery;
+ unsigned long flags;
+ discinfo_t * buffer = NULL;
+ int j_timeout = (sysctl_discovery_timeout * HZ);
+ int n; /* Size of the full log */
+ int i = 0; /* How many we picked */
ASSERT(pn != NULL, return NULL;);
+ ASSERT(log != NULL, return NULL;);
- /* Check if log is empty */
- if(log == NULL)
- return NULL;
-
- /* Save spin lock - spinlock should be discovery specific */
+ /* Save spin lock */
spin_lock_irqsave(&log->hb_spinlock, flags);
- /* Create the client specific buffer */
- n = HASHBIN_GET_SIZE(log);
- buffer = kmalloc(n * sizeof(struct irda_device_info), GFP_ATOMIC);
- if (buffer == NULL) {
- spin_unlock_irqrestore(&log->hb_spinlock, flags);
- return NULL;
- }
-
discovery = (discovery_t *) hashbin_get_first(log);
- while ((discovery != NULL) && (i < n)) {
- /* Mask out the ones we don't want */
- if (discovery->hints.word & mask) {
+ while (discovery != NULL) {
+ /* Mask out the ones we don't want :
+ * We want to match the discovery mask, and to get only
+ * the most recent one (unless we want old ones) */
+ if ((u16ho(discovery->data.hints) & mask) &&
+ ((old_entries) ||
+ ((jiffies - discovery->firststamp) < j_timeout)) ) {
+ /* Create buffer as needed.
+ * As this function get called a lot and most time
+ * we don't have anything to put in the log (we are
+ * quite picky), we can save a lot of overhead
+ * by not calling kmalloc. Jean II */
+ if(buffer == NULL) {
+ /* Create the client specific buffer */
+ n = HASHBIN_GET_SIZE(log);
+ buffer = kmalloc(n * sizeof(struct irda_device_info), GFP_ATOMIC);
+ if (buffer == NULL) {
+ spin_unlock_irqrestore(&log->hb_spinlock, flags);
+ return NULL;
+ }
+
+ }
+
/* Copy discovery information */
- buffer[i].saddr = discovery->saddr;
- buffer[i].daddr = discovery->daddr;
- buffer[i].charset = discovery->charset;
- buffer[i].hints[0] = discovery->hints.byte[0];
- buffer[i].hints[1] = discovery->hints.byte[1];
- strncpy(buffer[i].info, discovery->nickname,
- NICKNAME_MAX_LEN);
+ memcpy(&(buffer[i]), &(discovery->data),
+ sizeof(discinfo_t));
i++;
}
discovery = (discovery_t *) hashbin_get_next(log);
@@ -288,14 +332,14 @@ __u32 irlmp_find_device(hashbin_t *cache
d = (discovery_t *) hashbin_get_first(cachelog);
while (d != NULL) {
IRDA_DEBUG(1, "Discovery:\n");
- IRDA_DEBUG(1, " daddr=%08x\n", d->daddr);
- IRDA_DEBUG(1, " nickname=%s\n", d->nickname);
-
- if (strcmp(name, d->nickname) == 0) {
- *saddr = d->saddr;
+ IRDA_DEBUG(1, " daddr=%08x\n", d->data.daddr);
+ IRDA_DEBUG(1, " nickname=%s\n", d->data.info);
+
+ if (strcmp(name, d->data.info) == 0) {
+ *saddr = d->data.saddr;
spin_unlock_irqrestore(&cachelog->hb_spinlock, flags);
- return d->daddr;
+ return d->data.daddr;
}
d = (discovery_t *) hashbin_get_next(cachelog);
}
@@ -328,41 +372,41 @@ int discovery_proc_read(char *buf, char
discovery = (discovery_t *) hashbin_get_first(cachelog);
while (( discovery != NULL) && (len < length)) {
- len += sprintf(buf+len, "nickname: %s,", discovery->nickname);
+ len += sprintf(buf+len, "nickname: %s,", discovery->data.info);
len += sprintf(buf+len, " hint: 0x%02x%02x",
- discovery->hints.byte[0],
- discovery->hints.byte[1]);
+ discovery->data.hints[0],
+ discovery->data.hints[1]);
#if 0
- if ( discovery->hints.byte[0] & HINT_PNP)
+ if ( discovery->data.hints[0] & HINT_PNP)
len += sprintf( buf+len, "PnP Compatible ");
- if ( discovery->hints.byte[0] & HINT_PDA)
+ if ( discovery->data.hints[0] & HINT_PDA)
len += sprintf( buf+len, "PDA/Palmtop ");
- if ( discovery->hints.byte[0] & HINT_COMPUTER)
+ if ( discovery->data.hints[0] & HINT_COMPUTER)
len += sprintf( buf+len, "Computer ");
- if ( discovery->hints.byte[0] & HINT_PRINTER)
+ if ( discovery->data.hints[0] & HINT_PRINTER)
len += sprintf( buf+len, "Printer ");
- if ( discovery->hints.byte[0] & HINT_MODEM)
+ if ( discovery->data.hints[0] & HINT_MODEM)
len += sprintf( buf+len, "Modem ");
- if ( discovery->hints.byte[0] & HINT_FAX)
+ if ( discovery->data.hints[0] & HINT_FAX)
len += sprintf( buf+len, "Fax ");
- if ( discovery->hints.byte[0] & HINT_LAN)
+ if ( discovery->data.hints[0] & HINT_LAN)
len += sprintf( buf+len, "LAN Access ");
- if ( discovery->hints.byte[1] & HINT_TELEPHONY)
+ if ( discovery->data.hints[1] & HINT_TELEPHONY)
len += sprintf( buf+len, "Telephony ");
- if ( discovery->hints.byte[1] & HINT_FILE_SERVER)
+ if ( discovery->data.hints[1] & HINT_FILE_SERVER)
len += sprintf( buf+len, "File Server ");
- if ( discovery->hints.byte[1] & HINT_COMM)
+ if ( discovery->data.hints[1] & HINT_COMM)
len += sprintf( buf+len, "IrCOMM ");
- if ( discovery->hints.byte[1] & HINT_OBEX)
+ if ( discovery->data.hints[1] & HINT_OBEX)
len += sprintf( buf+len, "IrOBEX ");
#endif
len += sprintf(buf+len, ", saddr: 0x%08x",
- discovery->saddr);
+ discovery->data.saddr);
len += sprintf(buf+len, ", daddr: 0x%08x\n",
- discovery->daddr);
+ discovery->data.daddr);
len += sprintf(buf+len, "\n");
diff -u -p -r linux/net/irda-d4/ircomm/ircomm_tty_attach.c linux/net/irda/ircomm/ircomm_tty_attach.c
--- linux/net/irda-d4/ircomm/ircomm_tty_attach.c Mon Nov 4 14:30:50 2002
+++ linux/net/irda/ircomm/ircomm_tty_attach.c Wed Jan 8 17:00:47 2003
@@ -46,7 +46,7 @@
#include <net/irda/ircomm_tty_attach.h>
static void ircomm_tty_ias_register(struct ircomm_tty_cb *self);
-static void ircomm_tty_discovery_indication(discovery_t *discovery,
+static void ircomm_tty_discovery_indication(discinfo_t *discovery,
DISCOVERY_MODE mode,
void *priv);
static void ircomm_tty_getvalue_confirm(int result, __u16 obj_id,
@@ -305,7 +305,7 @@ int ircomm_tty_send_initial_parameters(s
* device it is, and which services it has.
*
*/
-static void ircomm_tty_discovery_indication(discovery_t *discovery,
+static void ircomm_tty_discovery_indication(discinfo_t *discovery,
DISCOVERY_MODE mode,
void *priv)
{
diff -u -p -r linux/net/irda-d4/irlan/irlan_client.c linux/net/irda/irlan/irlan_client.c
--- linux/net/irda-d4/irlan/irlan_client.c Mon Nov 4 14:30:31 2002
+++ linux/net/irda/irlan/irlan_client.c Wed Jan 8 17:00:47 2003
@@ -145,7 +145,7 @@ void irlan_client_wakeup(struct irlan_cb
* Remote device with IrLAN server support discovered
*
*/
-void irlan_client_discovery_indication(discovery_t *discovery,
+void irlan_client_discovery_indication(discinfo_t *discovery,
DISCOVERY_MODE mode,
void *priv)
{
diff -u -p -r linux/net/irda-d4/irlap_event.c linux/net/irda/irlap_event.c
--- linux/net/irda-d4/irlap_event.c Mon Nov 4 14:30:33 2002
+++ linux/net/irda/irlap_event.c Wed Jan 8 17:00:47 2003
@@ -419,7 +419,7 @@ static int irlap_state_ndm(struct irlap_
info->s);
if (self->slot == info->s) {
discovery_rsp = irlmp_get_discovery_response();
- discovery_rsp->daddr = info->daddr;
+ discovery_rsp->data.daddr = info->daddr;
irlap_send_discovery_xid_frame(self, info->S,
self->slot,
@@ -576,7 +576,7 @@ static int irlap_state_query(struct irla
ASSERT(info->discovery != NULL, return -1;);
IRDA_DEBUG(4, "%s(), daddr=%08x\n", __FUNCTION__,
- info->discovery->daddr);
+ info->discovery->data.daddr);
if (!self->discovery_log) {
WARNING("%s: discovery log is gone! "
@@ -586,7 +586,7 @@ static int irlap_state_query(struct irla
}
hashbin_insert(self->discovery_log,
(irda_queue_t *) info->discovery,
- info->discovery->daddr, NULL);
+ info->discovery->data.daddr, NULL);
/* Keep state */
/* irlap_next_state(self, LAP_QUERY); */
@@ -704,7 +704,7 @@ static int irlap_state_reply(struct irla
irlap_discovery_indication(self, info->discovery);
} else if ((info->s >= self->slot) && (!self->frame_sent)) {
discovery_rsp = irlmp_get_discovery_response();
- discovery_rsp->daddr = info->daddr;
+ discovery_rsp->data.daddr = info->daddr;
irlap_send_discovery_xid_frame(self, info->S,
self->slot, FALSE,
diff -u -p -r linux/net/irda-d4/irlap_frame.c linux/net/irda/irlap_frame.c
--- linux/net/irda-d4/irlap_frame.c Tue Jan 7 17:58:39 2003
+++ linux/net/irda/irlap_frame.c Wed Jan 8 17:00:47 2003
@@ -335,7 +335,7 @@ void irlap_send_discovery_xid_frame(stru
if (command)
frame->daddr = cpu_to_le32(bcast);
else
- frame->daddr = cpu_to_le32(discovery->daddr);
+ frame->daddr = cpu_to_le32(discovery->data.daddr);
switch (S) {
case 1:
@@ -366,20 +366,20 @@ void irlap_send_discovery_xid_frame(stru
if (!command || (frame->slotnr == 0xff)) {
int len;
- if (discovery->hints.byte[0] & HINT_EXTENSION) {
+ if (discovery->data.hints[0] & HINT_EXTENSION) {
info = skb_put(skb, 2);
- info[0] = discovery->hints.byte[0];
- info[1] = discovery->hints.byte[1];
+ info[0] = discovery->data.hints[0];
+ info[1] = discovery->data.hints[1];
} else {
info = skb_put(skb, 1);
- info[0] = discovery->hints.byte[0];
+ info[0] = discovery->data.hints[0];
}
info = skb_put(skb, 1);
- info[0] = discovery->charset;
+ info[0] = discovery->data.charset;
len = IRDA_MIN(discovery->name_len, skb_tailroom(skb));
info = skb_put(skb, len);
- memcpy(info, discovery->nickname, len);
+ memcpy(info, discovery->data.info, len);
}
irlap_queue_xmit(self, skb);
}
@@ -422,24 +422,25 @@ static void irlap_recv_discovery_xid_rsp
}
memset(discovery, 0, sizeof(discovery_t));
- discovery->daddr = info->daddr;
- discovery->saddr = self->saddr;
+ discovery->data.daddr = info->daddr;
+ discovery->data.saddr = self->saddr;
discovery->timestamp = jiffies;
- IRDA_DEBUG(4, "%s(), daddr=%08x\n", __FUNCTION__, discovery->daddr);
+ IRDA_DEBUG(4, "%s(), daddr=%08x\n", __FUNCTION__,
+ discovery->data.daddr);
discovery_info = skb_pull(skb, sizeof(struct xid_frame));
/* Get info returned from peer */
- discovery->hints.byte[0] = discovery_info[0];
+ discovery->data.hints[0] = discovery_info[0];
if (discovery_info[0] & HINT_EXTENSION) {
IRDA_DEBUG(4, "EXTENSION\n");
- discovery->hints.byte[1] = discovery_info[1];
- discovery->charset = discovery_info[2];
+ discovery->data.hints[1] = discovery_info[1];
+ discovery->data.charset = discovery_info[2];
text = (char *) &discovery_info[3];
} else {
- discovery->hints.byte[1] = 0;
- discovery->charset = discovery_info[1];
+ discovery->data.hints[1] = 0;
+ discovery->data.charset = discovery_info[1];
text = (char *) &discovery_info[2];
}
/*
@@ -447,8 +448,8 @@ static void irlap_recv_discovery_xid_rsp
* FCS bytes resides.
*/
skb->data[skb->len] = '\0';
- strncpy(discovery->nickname, text, NICKNAME_MAX_LEN);
- discovery->name_len = strlen(discovery->nickname);
+ strncpy(discovery->data.info, text, NICKNAME_MAX_LEN);
+ discovery->name_len = strlen(discovery->data.info);
info->discovery = discovery;
@@ -523,18 +524,18 @@ static void irlap_recv_discovery_xid_cmd
return;
}
- discovery->daddr = info->daddr;
- discovery->saddr = self->saddr;
+ discovery->data.daddr = info->daddr;
+ discovery->data.saddr = self->saddr;
discovery->timestamp = jiffies;
- discovery->hints.byte[0] = discovery_info[0];
+ discovery->data.hints[0] = discovery_info[0];
if (discovery_info[0] & HINT_EXTENSION) {
- discovery->hints.byte[1] = discovery_info[1];
- discovery->charset = discovery_info[2];
+ discovery->data.hints[1] = discovery_info[1];
+ discovery->data.charset = discovery_info[2];
text = (char *) &discovery_info[3];
} else {
- discovery->hints.byte[1] = 0;
- discovery->charset = discovery_info[1];
+ discovery->data.hints[1] = 0;
+ discovery->data.charset = discovery_info[1];
text = (char *) &discovery_info[2];
}
/*
@@ -542,8 +543,8 @@ static void irlap_recv_discovery_xid_cmd
* FCS bytes resides.
*/
skb->data[skb->len] = '\0';
- strncpy(discovery->nickname, text, NICKNAME_MAX_LEN);
- discovery->name_len = strlen(discovery->nickname);
+ strncpy(discovery->data.info, text, NICKNAME_MAX_LEN);
+ discovery->name_len = strlen(discovery->data.info);
info->discovery = discovery;
} else
diff -u -p -r linux/net/irda-d4/irlmp.c linux/net/irda/irlmp.c
--- linux/net/irda-d4/irlmp.c Mon Nov 4 14:30:50 2002
+++ linux/net/irda/irlmp.c Wed Jan 8 17:00:47 2003
@@ -401,8 +401,8 @@ int irlmp_connect_request(struct lsap_cb
}
if (discovery) {
- saddr = discovery->saddr;
- daddr = discovery->daddr;
+ saddr = discovery->data.saddr;
+ daddr = discovery->data.daddr;
}
spin_unlock_irqrestore(&irlmp->cachelog->hb_spinlock, flags);
}
@@ -793,17 +793,17 @@ void irlmp_do_discovery(int nslots)
}
/* Construct new discovery info to be used by IrLAP, */
- irlmp->discovery_cmd.hints.word = irlmp->hints.word;
+ u16ho(irlmp->discovery_cmd.data.hints) = irlmp->hints.word;
/*
* Set character set for device name (we use ASCII), and
* copy device name. Remember to make room for a \0 at the
* end
*/
- irlmp->discovery_cmd.charset = CS_ASCII;
- strncpy(irlmp->discovery_cmd.nickname, sysctl_devname,
+ irlmp->discovery_cmd.data.charset = CS_ASCII;
+ strncpy(irlmp->discovery_cmd.data.info, sysctl_devname,
NICKNAME_MAX_LEN);
- irlmp->discovery_cmd.name_len = strlen(irlmp->discovery_cmd.nickname);
+ irlmp->discovery_cmd.name_len = strlen(irlmp->discovery_cmd.data.info);
irlmp->discovery_cmd.nslots = nslots;
/*
@@ -827,10 +827,13 @@ void irlmp_do_discovery(int nslots)
*
* Do a discovery of devices in front of the computer
*
+ * If the caller has registered a client discovery callback, this
+ * allow him to receive the full content of the discovery log through
+ * this callback (as normally he will receive only new discoveries).
*/
void irlmp_discovery_request(int nslots)
{
- /* Return current cached discovery log */
+ /* Return current cached discovery log (in full) */
irlmp_discovery_confirm(irlmp->cachelog, DISCOVERY_LOG);
/*
@@ -854,6 +857,8 @@ void irlmp_discovery_request(int nslots)
*
* Return the current discovery log
*
+ * If discovery is not enabled, you should call this function again
+ * after 1 or 2 seconds (i.e. after discovery has been done).
*/
struct irda_device_info *irlmp_get_discoveries(int *pn, __u16 mask, int nslots)
{
@@ -875,50 +880,9 @@ struct irda_device_info *irlmp_get_disco
}
/* Return current cached discovery log */
- return(irlmp_copy_discoveries(irlmp->cachelog, pn, mask));
+ return(irlmp_copy_discoveries(irlmp->cachelog, pn, mask, TRUE));
}
-#if 0
-/*
- * Function irlmp_check_services (discovery)
- */
-void irlmp_check_services(discovery_t *discovery)
-{
- struct irlmp_client *client;
- __u8 *service_log;
- __u8 service;
- int i = 0;
-
- IRDA_DEBUG(1, "IrDA Discovered: %s\n", discovery->info);
- IRDA_DEBUG(1, " Services: ");
-
- service_log = irlmp_hint_to_service(discovery->hints.byte);
- if (!service_log)
- return;
-
- /*
- * Check all services on the device
- */
- while ((service = service_log[i++]) != S_END) {
- IRDA_DEBUG( 4, "service=%02x\n", service);
- client = hashbin_lock_find(irlmp->registry, service, NULL);
- if (entry && entry->discovery_callback) {
- IRDA_DEBUG( 4, "discovery_callback!\n");
-
- entry->discovery_callback(discovery);
- } else {
- /* Don't notify about the ANY service */
- if (service == S_ANY)
- continue;
- /*
- * Found no clients for dealing with this service,
- */
- }
- }
- kfree(service_log);
-}
-#endif
-
/*
* Function irlmp_notify_client (log)
*
@@ -935,7 +899,9 @@ static inline void
irlmp_notify_client(irlmp_client_t *client,
hashbin_t *log, DISCOVERY_MODE mode)
{
- discovery_t *discovery;
+ discinfo_t *discoveries; /* Copy of the discovery log */
+ int number; /* Number of nodes in the log */
+ int i;
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
@@ -944,28 +910,36 @@ irlmp_notify_client(irlmp_client_t *clie
return;
/*
+ * Locking notes :
+ * the old code was manipulating the log directly, which was
+ * very racy. Now, we use copy_discoveries, that protects
+ * itself while dumping the log for us.
+ * The overhead of the copy is compensated by the fact that
+ * we only pass new discoveries in normal mode and don't
+ * pass the same old entry every 3s to the caller as we used
+ * to do (virtual function calling is expensive).
+ * Jean II
+ */
+
+ /*
* Now, check all discovered devices (if any), and notify client
* only about the services that the client is interested in
- * Note : most often, we will get called immediately following
- * a discovery, so the log is not going to expire.
- * On the other hand, comming here through irlmp_discovery_request()
- * is *very* problematic - Jean II
- * Can't use hashbin_find_next(), key is not unique. I'm running
- * out of options :-( - Jean II
+ * We also notify only about the new devices unless the caller
+ * explicity request a dump of the log. Jean II
*/
- discovery = (discovery_t *) hashbin_get_first(log);
- while (discovery != NULL) {
- IRDA_DEBUG(3, "discovery->daddr = 0x%08x\n", discovery->daddr);
-
- /*
- * Any common hint bits? Remember to mask away the extension
- * bits ;-)
- */
- if (client->hint_mask & discovery->hints.word & 0x7f7f)
- client->disco_callback(discovery, mode, client->priv);
+ discoveries = irlmp_copy_discoveries(log, &number,
+ client->hint_mask.word,
+ (mode == DISCOVERY_LOG));
+ /* Check if the we got some results */
+ if (discoveries == NULL)
+ return; /* No nodes discovered */
+
+ /* Pass all entries to the listener */
+ for(i = 0; i < number; i++)
+ client->disco_callback(&(discoveries[i]), mode, client->priv);
- discovery = (discovery_t *) hashbin_get_next(log);
- }
+ /* Free up our buffer */
+ kfree(discoveries);
}
/*
@@ -987,6 +961,7 @@ void irlmp_discovery_confirm(hashbin_t *
if (!(HASHBIN_GET_SIZE(log)))
return;
+ /* For each client - notify callback may touch client list */
client = (irlmp_client_t *) hashbin_get_first(irlmp->clients);
while (NULL != hashbin_find_next(irlmp->clients, (long) client, NULL,
(void *) &client_next) ) {
@@ -1005,26 +980,34 @@ void irlmp_discovery_confirm(hashbin_t *
* registered for this event...
*
* Note : called exclusively from discovery.c
- * Note : as we are currently processing the log, the clients callback
- * should *NOT* attempt to touch the log now.
+ * Note : this is no longer called under discovery spinlock, so the
+ * client can do whatever he wants in the callback.
*/
-void irlmp_discovery_expiry(discovery_t *expiry)
+void irlmp_discovery_expiry(discinfo_t *expiries, int number)
{
irlmp_client_t *client;
irlmp_client_t *client_next;
+ int i;
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
- ASSERT(expiry != NULL, return;);
+ ASSERT(expiries != NULL, return;);
+ /* For each client - notify callback may touch client list */
client = (irlmp_client_t *) hashbin_get_first(irlmp->clients);
while (NULL != hashbin_find_next(irlmp->clients, (long) client, NULL,
(void *) &client_next) ) {
- /* Check if we should notify client */
- if ((client->expir_callback) &&
- (client->hint_mask & expiry->hints.word & 0x7f7f))
- client->expir_callback(expiry, EXPIRY_TIMEOUT,
- client->priv);
+
+ /* Pass all entries to the listener */
+ for(i = 0; i < number; i++) {
+ /* Check if we should notify client */
+ if ((client->expir_callback) &&
+ (client->hint_mask.word & u16ho(expiries[i].hints)
+ & 0x7f7f) )
+ client->expir_callback(&(expiries[i]),
+ EXPIRY_TIMEOUT,
+ client->priv);
+ }
/* Next client */
client = client_next;
@@ -1043,18 +1026,18 @@ discovery_t *irlmp_get_discovery_respons
ASSERT(irlmp != NULL, return NULL;);
- irlmp->discovery_rsp.hints.word = irlmp->hints.word;
+ u16ho(irlmp->discovery_rsp.data.hints) = irlmp->hints.word;
/*
* Set character set for device name (we use ASCII), and
* copy device name. Remember to make room for a \0 at the
* end
*/
- irlmp->discovery_rsp.charset = CS_ASCII;
+ irlmp->discovery_rsp.data.charset = CS_ASCII;
- strncpy(irlmp->discovery_rsp.nickname, sysctl_devname,
+ strncpy(irlmp->discovery_rsp.data.info, sysctl_devname,
NICKNAME_MAX_LEN);
- irlmp->discovery_rsp.name_len = strlen(irlmp->discovery_rsp.nickname);
+ irlmp->discovery_rsp.name_len = strlen(irlmp->discovery_rsp.data.info);
return &irlmp->discovery_rsp;
}
@@ -1291,6 +1274,7 @@ void irlmp_flow_indication(struct lap_cb
}
}
+#if 0
/*
* Function irlmp_hint_to_service (hint)
*
@@ -1365,6 +1349,21 @@ __u8 *irlmp_hint_to_service(__u8 *hint)
return service;
}
+#endif
+
+const __u16 service_hint_mapping[S_END][2] = {
+ { HINT_PNP, 0 }, /* S_PNP */
+ { HINT_PDA, 0 }, /* S_PDA */
+ { HINT_COMPUTER, 0 }, /* S_COMPUTER */
+ { HINT_PRINTER, 0 }, /* S_PRINTER */
+ { HINT_MODEM, 0 }, /* S_MODEM */
+ { HINT_FAX, 0 }, /* S_FAX */
+ { HINT_LAN, 0 }, /* S_LAN */
+ { HINT_EXTENSION, HINT_TELEPHONY }, /* S_TELEPHONY */
+ { HINT_EXTENSION, HINT_COMM }, /* S_COMM */
+ { HINT_EXTENSION, HINT_OBEX }, /* S_OBEX */
+ { 0xFF, 0xFF }, /* S_ANY */
+};
/*
* Function irlmp_service_to_hint (service)
@@ -1377,46 +1376,9 @@ __u16 irlmp_service_to_hint(int service)
{
__u16_host_order hint;
- hint.word = 0;
+ hint.byte[0] = service_hint_mapping[service][0];
+ hint.byte[1] = service_hint_mapping[service][1];
- switch (service) {
- case S_PNP:
- hint.byte[0] |= HINT_PNP;
- break;
- case S_PDA:
- hint.byte[0] |= HINT_PDA;
- break;
- case S_COMPUTER:
- hint.byte[0] |= HINT_COMPUTER;
- break;
- case S_PRINTER:
- hint.byte[0] |= HINT_PRINTER;
- break;
- case S_MODEM:
- hint.byte[0] |= HINT_PRINTER;
- break;
- case S_LAN:
- hint.byte[0] |= HINT_LAN;
- break;
- case S_COMM:
- hint.byte[0] |= HINT_EXTENSION;
- hint.byte[1] |= HINT_COMM;
- break;
- case S_OBEX:
- hint.byte[0] |= HINT_EXTENSION;
- hint.byte[1] |= HINT_OBEX;
- break;
- case S_TELEPHONY:
- hint.byte[0] |= HINT_EXTENSION;
- hint.byte[1] |= HINT_TELEPHONY;
- break;
- case S_ANY:
- hint.word = 0xffff;
- break;
- default:
- IRDA_DEBUG( 1, "%s(), Unknown service!\n", __FUNCTION__);
- break;
- }
return hint.word;
}
@@ -1438,7 +1400,7 @@ void *irlmp_register_service(__u16 hints
IRDA_DEBUG(1, "%s(), Unable to kmalloc!\n", __FUNCTION__);
return 0;
}
- service->hints = hints;
+ service->hints.word = hints;
hashbin_insert(irlmp->services, (irda_queue_t *) service,
(long) service, NULL);
@@ -1481,7 +1443,7 @@ int irlmp_unregister_service(void *handl
spin_lock_irqsave(&irlmp->services->hb_spinlock, flags);
service = (irlmp_service_t *) hashbin_get_first(irlmp->services);
while (service) {
- irlmp->hints.word |= service->hints;
+ irlmp->hints.word |= service->hints.word;
service = (irlmp_service_t *)hashbin_get_next(irlmp->services);
}
@@ -1499,7 +1461,7 @@ int irlmp_unregister_service(void *handl
* Returns: handle > 0 on success, 0 on error
*/
void *irlmp_register_client(__u16 hint_mask, DISCOVERY_CALLBACK1 disco_clb,
- DISCOVERY_CALLBACK1 expir_clb, void *priv)
+ DISCOVERY_CALLBACK2 expir_clb, void *priv)
{
irlmp_client_t *client;
@@ -1514,7 +1476,7 @@ void *irlmp_register_client(__u16 hint_m
}
/* Register the details */
- client->hint_mask = hint_mask;
+ client->hint_mask.word = hint_mask;
client->disco_callback = disco_clb;
client->expir_callback = expir_clb;
client->priv = priv;
@@ -1535,7 +1497,7 @@ void *irlmp_register_client(__u16 hint_m
*/
int irlmp_update_client(void *handle, __u16 hint_mask,
DISCOVERY_CALLBACK1 disco_clb,
- DISCOVERY_CALLBACK1 expir_clb, void *priv)
+ DISCOVERY_CALLBACK2 expir_clb, void *priv)
{
irlmp_client_t *client;
@@ -1548,7 +1510,7 @@ int irlmp_update_client(void *handle, __
return -1;
}
- client->hint_mask = hint_mask;
+ client->hint_mask.word = hint_mask;
client->disco_callback = disco_clb;
client->expir_callback = expir_clb;
client->priv = priv;
diff -u -p -r linux/net/irda-d4/irnet/irnet_irda.c linux/net/irda/irnet/irnet_irda.c
--- linux/net/irda-d4/irnet/irnet_irda.c Mon Nov 4 14:30:05 2002
+++ linux/net/irda/irnet/irnet_irda.c Wed Jan 8 17:00:47 2003
@@ -1616,8 +1616,8 @@ irnet_discovervalue_confirm(int result,
*
* Got a discovery indication from IrLMP, post an event
*
- * Note : IrLMP take care of matching the hint mask for us, we only
- * check if it is a "new" node...
+ * Note : IrLMP take care of matching the hint mask for us, and also
+ * check if it is a "new" node for us...
*
* As IrLMP filter on the IrLAN hint bit, we get both IrLAN and IrNET
* nodes, so it's only at connection time that we will know if the
@@ -1633,7 +1633,7 @@ irnet_discovervalue_confirm(int result,
* is to messy, so we leave that to user space...
*/
static void
-irnet_discovery_indication(discovery_t * discovery,
+irnet_discovery_indication(discinfo_t * discovery,
DISCOVERY_MODE mode,
void * priv)
{
@@ -1643,21 +1643,12 @@ irnet_discovery_indication(discovery_t *
DASSERT(priv == &irnet_server, , IRDA_OCB_ERROR,
"Invalid instance (0x%X) !!!\n", (unsigned int) priv);
- /* Check if node is discovered is a new one or an old one.
- * We check when how long ago this node was discovered, with a
- * coarse timeout (we may miss some discovery events or be delayed).
- */
- if((jiffies - discovery->first_timestamp) >= (sysctl_discovery_timeout * HZ))
- {
- return; /* Too old, not interesting -> goodbye */
- }
-
DEBUG(IRDA_OCB_INFO, "Discovered new IrNET/IrLAN node %s...\n",
- discovery->nickname);
+ discovery->info);
/* Notify the control channel */
irnet_post_event(NULL, IRNET_DISCOVER,
- discovery->saddr, discovery->daddr, discovery->nickname);
+ discovery->saddr, discovery->daddr, discovery->info);
DEXIT(IRDA_OCB_TRACE, "\n");
}
@@ -1672,7 +1663,7 @@ irnet_discovery_indication(discovery_t *
* check if it is a "new" node...
*/
static void
-irnet_expiry_indication(discovery_t * expiry,
+irnet_expiry_indication(discinfo_t * expiry,
DISCOVERY_MODE mode,
void * priv)
{
@@ -1683,11 +1674,11 @@ irnet_expiry_indication(discovery_t * ex
"Invalid instance (0x%X) !!!\n", (unsigned int) priv);
DEBUG(IRDA_OCB_INFO, "IrNET/IrLAN node %s expired...\n",
- expiry->nickname);
+ expiry->info);
/* Notify the control channel */
irnet_post_event(NULL, IRNET_EXPIRE,
- expiry->saddr, expiry->daddr, expiry->nickname);
+ expiry->saddr, expiry->daddr, expiry->info);
DEXIT(IRDA_OCB_TRACE, "\n");
}
diff -u -p -r linux/net/irda-d4/irnet/irnet_irda.h linux/net/irda/irnet/irnet_irda.h
--- linux/net/irda-d4/irnet/irnet_irda.h Mon Nov 4 14:30:07 2002
+++ linux/net/irda/irnet/irnet_irda.h Wed Jan 8 17:00:47 2003
@@ -150,11 +150,11 @@ static void
void *);
#ifdef DISCOVERY_EVENTS
static void
- irnet_discovery_indication(discovery_t *,
+ irnet_discovery_indication(discinfo_t *,
DISCOVERY_MODE,
void *);
static void
- irnet_expiry_indication(discovery_t *,
+ irnet_expiry_indication(discinfo_t *,
DISCOVERY_MODE,
void *);
#endif
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.