summaryrefslogtreecommitdiff
blob: 4253bfad1f893436d6eb4792fd437436cf622a2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-misc/nforce-net/nforce-net-1.0.0261-r2.ebuild,v 1.7 2004/08/26 09:44:47 lanius Exp $

inherit gcc kernel-mod eutils

NV_V="${PV/1.0./1.0-}"
NV_PACKAGE="NVIDIA_nforce-${NV_V}"
S="${WORKDIR}/nforce/nvnet"
DESCRIPTION="Linux kernel module for the NVIDIA's nForce network chip"
HOMEPAGE="http://www.nvidia.com/"
SRC_URI="http://download.nvidia.com/XFree86/nforce/${NV_V}/${NV_PACKAGE}.tar.gz"

# The SLOT needs to be set to $KV to prevent unmerges of modules for other kernels
LICENSE="NVIDIA"
SLOT="${KV}"
KEYWORDS="-* x86"
IUSE=""
RESTRICT="nostrip"

DEPEND="virtual/linux-sources"

src_compile() {
	check_KV
	if kernel-mod_is_2_5_kernel || kernel-mod_is_2_6_kernel
	then
		EPATCH_SINGLE_MSG="Applying 2.5/6 patch ..." \
		epatch ${FILESDIR}/nforce-net-1.0.0261-kernel-2.6.patch.gz
		if [ "$KV_PATCH" -ge 8 ]; then
			sed -i -e "s:modpost:mod/modpost:" Makefile
		fi
	fi

	make KERNSRC="/usr/src/linux" || die
}

src_install() {
	# The driver goes into the standard modules location
	insinto /lib/modules/${KV}/kernel/drivers/net

	if kernel-mod_is_2_5_kernel || kernel-mod_is_2_6_kernel
	then
		doins nvnet.ko
	else
		doins nvnet.o
	fi

	# Docs
	dodoc ${S}/ReleaseNotes.html

	dodir /etc/modules.d
	cat > ${D}/etc/modules.d/nvnet << EOF
#  The nForce network driver supports two optimization modes:
#   optimization=0 ; Throughput optimization
#   optimization=1 ; CPU optimization
#  CPU optimization mode ruduces the CPU utilization by using
#  interrupt moderation. Throughput optimization mode maximizes
#  the throughput.  This mode has higher CPU consumption.
#  By default, the driver runs in throughput optimization mode.

#  The "speed" module parameter can be used set the interface
#  speed of the ethernet controller.  By default the controller
#  will autosense the interface speed, but also supports the
#  following values:
#     speed=0 ; auto
#     speed=1 ; 10Mbps
#     speed=2 ; 100Mpbs

#  The "duplex" module parameter can be used to specify the
#  interface duplex.  By default the controller will autoselect
#  duplex, but also supports the following values:
#     duplex=0 ; auto
#     duplex=1 ; half duplex
#     duplex=2 ; full duplex

options nvnet optimization="1" speed="0" duplex="0"
EOF
}

pkg_postinst() {
	if [ "${ROOT}" = "/" ]
	then
		# Update module dependency
		[ -x /usr/sbin/update-modules ] && /usr/sbin/update-modules
	fi

	echo
	einfo "You need to add \"nvnet\" to your /etc/modules.autoload to load"
	einfo "this module when the system is started. Alternatively, you can"
	einfo "use the 'hotplug' package ('emerge hotplug' then 'rc-update add"
	einfo "hotplug default') to auto-detect and load \"nvnet\" on startup."
	echo
	einfo "Edit /etc/modules.d/nvnet and run \"update-modules\" to configure"
	einfo "the \"nvnet\" driver for throughput optimization the next time it"
	einfo "is loaded."
}