Apply bugfixes from upstream, bail out if incompatible ieee80211.h found in kernel...
authorHenrik Brix Andersen <brix@gentoo.org>
Tue, 6 Sep 2005 14:53:17 +0000 (14:53 +0000)
committerHenrik Brix Andersen <brix@gentoo.org>
Tue, 6 Sep 2005 14:53:17 +0000 (14:53 +0000)
Package-Manager: portage-2.0.51.22-r2

net-wireless/ieee80211/ChangeLog
net-wireless/ieee80211/Manifest
net-wireless/ieee80211/files/digest-ieee80211-1.0.3-r2 [new file with mode: 0644]
net-wireless/ieee80211/files/ieee80211-1.0.3-keep_restricted_bit.patch [new file with mode: 0644]
net-wireless/ieee80211/files/ieee80211-1.0.3-open_frag.patch [new file with mode: 0644]
net-wireless/ieee80211/ieee80211-1.0.3-r2.ebuild [new file with mode: 0644]

index 21f9756c08ba8a00847233ae57b8bb5fcf3c9769..3c0d00b2a772795464d3af0c511e939a518321d7 100644 (file)
@@ -1,6 +1,14 @@
 # ChangeLog for net-wireless/ieee80211
 # Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-wireless/ieee80211/ChangeLog,v 1.7 2005/09/02 17:43:38 brix Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/ieee80211/ChangeLog,v 1.8 2005/09/06 14:53:17 brix Exp $
+
+*ieee80211-1.0.3-r2 (06 Sep 2005)
+
+  06 Sep 2005; Henrik Brix Andersen <brix@gentoo.org>
+  +files/ieee80211-1.0.3-keep_restricted_bit.patch,
+  +files/ieee80211-1.0.3-open_frag.patch, +ieee80211-1.0.3-r2.ebuild:
+  Apply bugfixes from upstream, bail out if incompatible ieee80211.h found in
+  kernel sources (bug #97397).
 
   02 Sep 2005; Henrik Brix Andersen <brix@gentoo.org>
   files/ieee80211-1.0.3-broadcast.patch:
index 5f141e16091dd1adb7767efdb380c515a4e1dfe4..6169bbfa5d81a2c83a797834058e9e41c81469f4 100644 (file)
@@ -1,7 +1,8 @@
 MD5 205ad9adc36c1538667c08b26290874b ieee80211-1.0.3.ebuild 2073
 MD5 0b37106be6c69fa6ce87d5925f2a31dc ieee80211-1.0.3-r1.ebuild 2093
 MD5 d94f6f0e594496b23768753d8f2fbccc ieee80211-1.0.2.ebuild 2067
-MD5 68c1f32a77c2b37197cdd81b189dc940 ChangeLog 1136
+MD5 baacb1af3889d654f643ceb0e2d427e1 ieee80211-1.0.3-r2.ebuild 2744
+MD5 4f65bd285907aafc9da1cd5616e15c7b ChangeLog 1457
 MD5 b280eebc74d70d85e664debf1adce2c3 metadata.xml 255
 MD5 54836c698b04ed62f6d7a3f6f8fa6232 ieee80211-1.0.1.ebuild 2067
 MD5 03afa38292ff5bbcc62500c4b6163888 files/ieee80211-1.0.3-broadcast.patch 622
@@ -9,3 +10,6 @@ MD5 cc0dea5fff30f8ea5fe5e62a749115d3 files/digest-ieee80211-1.0.1 63
 MD5 affd67ec6900c1e7f9c123969f709181 files/digest-ieee80211-1.0.2 63
 MD5 777627671d6848e14270d9f65d9d0be6 files/digest-ieee80211-1.0.3 63
 MD5 777627671d6848e14270d9f65d9d0be6 files/digest-ieee80211-1.0.3-r1 63
+MD5 777627671d6848e14270d9f65d9d0be6 files/digest-ieee80211-1.0.3-r2 63
+MD5 f6533e7149d244dd72eb444853266a8f files/ieee80211-1.0.3-keep_restricted_bit.patch 1220
+MD5 d2bada5c8bb423cb02a88cc4f0011d39 files/ieee80211-1.0.3-open_frag.patch 2638
diff --git a/net-wireless/ieee80211/files/digest-ieee80211-1.0.3-r2 b/net-wireless/ieee80211/files/digest-ieee80211-1.0.3-r2
new file mode 100644 (file)
index 0000000..bb51c85
--- /dev/null
@@ -0,0 +1 @@
+MD5 49870c030278e3716194ff5b64f9cbaa ieee80211-1.0.3.tgz 63355
diff --git a/net-wireless/ieee80211/files/ieee80211-1.0.3-keep_restricted_bit.patch b/net-wireless/ieee80211/files/ieee80211-1.0.3-keep_restricted_bit.patch
new file mode 100644 (file)
index 0000000..7173adb
--- /dev/null
@@ -0,0 +1,28 @@
+[Bug 768] Keep auth mode unchanged after iwconfig key off/on.
+
+Signed-off-by: Zhu Yi <yi.zhu@intel.com>
+--
+diff -urp ieee80211-1.0.3/ieee80211_wx.c ieee80211-1.0.3-keep_restricted_bit/ieee80211_wx.c
+--- ieee80211-1.0.3/ieee80211_wx.c     2005-07-15 07:53:35.000000000 +0800
++++ ieee80211-1.0.3-keep_restricted_bit/ieee80211_wx.c 2005-09-01 13:03:16.000000000 +0800
+@@ -413,11 +413,15 @@ int ieee80211_wx_set_encode(struct ieee8
+                       sec.flags |= SEC_ACTIVE_KEY;
+               }
+       }
+-      ieee->open_wep = !(erq->flags & IW_ENCODE_RESTRICTED);
+-      sec.auth_mode = ieee->open_wep ? WLAN_AUTH_OPEN : WLAN_AUTH_SHARED_KEY;
+-      sec.flags |= SEC_AUTH_MODE;
+-      IEEE80211_DEBUG_WX("Auth: %s\n", sec.auth_mode == WLAN_AUTH_OPEN ?
+-                         "OPEN" : "SHARED KEY");
++      if (erq->flags & (IW_ENCODE_OPEN | IW_ENCODE_RESTRICTED)) {
++              ieee->open_wep = !(erq->flags & IW_ENCODE_RESTRICTED);
++              sec.auth_mode = ieee->open_wep ? WLAN_AUTH_OPEN :
++                                               WLAN_AUTH_SHARED_KEY;
++              sec.flags |= SEC_AUTH_MODE;
++              IEEE80211_DEBUG_WX("Auth: %s\n",
++                                 sec.auth_mode == WLAN_AUTH_OPEN ?
++                                 "OPEN" : "SHARED KEY");
++      }
+ 
+       /* For now we just support WEP, so only set that security level...
+        * TODO: When WPA is added this is one place that needs to change */
diff --git a/net-wireless/ieee80211/files/ieee80211-1.0.3-open_frag.patch b/net-wireless/ieee80211/files/ieee80211-1.0.3-open_frag.patch
new file mode 100644 (file)
index 0000000..11dfa4c
--- /dev/null
@@ -0,0 +1,63 @@
+Add host_open_frag to indicate if fragmentation is need to be done by host.
+
+Signed-off-by: Hong Liu <hong.liu@intel.com>
+Signed-off-by: Zhu Yi <yi.zhu@intel.com>
+--
+diff -urp ieee80211-1.0.3/ieee80211_module.c ieee80211-1.0.3-open-frag/ieee80211_module.c
+--- ieee80211-1.0.3/ieee80211_module.c 2005-07-15 07:53:35.000000000 +0800
++++ ieee80211-1.0.3-open-frag/ieee80211_module.c       2005-08-03 16:12:25.000000000 +0800
+@@ -137,6 +137,11 @@ struct net_device *alloc_ieee80211(int s
+       /* Default to enabling full open WEP with host based encrypt/decrypt */
+       ieee->host_encrypt = 1;
+       ieee->host_decrypt = 1;
++      /* Host fragementation in Open mode. Default is enabled. Note host
++       * fragmentation is always enabled if host encryption is enabled.
++       * For cards can do hardware encryption, they can do hardware
++       * fragmentation as well. So we don't need a variable host_enc_frag. */
++      ieee->host_open_frag = 1;
+       ieee->ieee802_1x = 1; /* Default to supporting 802.1x */
+ 
+       INIT_LIST_HEAD(&ieee->crypt_deinit_list);
+@@ -151,7 +156,6 @@ struct net_device *alloc_ieee80211(int s
+       ieee->tkip_countermeasures = 0;
+       ieee->drop_unencrypted = 0;
+       ieee->privacy_invoked = 0;
+-      ieee->ieee802_1x = 1;
+ 
+       return dev;
+ 
+diff -urp ieee80211-1.0.3/ieee80211_tx.c ieee80211-1.0.3-open-frag/ieee80211_tx.c
+--- ieee80211-1.0.3/ieee80211_tx.c     2005-07-15 07:53:35.000000000 +0800
++++ ieee80211-1.0.3-open-frag/ieee80211_tx.c   2005-08-03 16:12:25.000000000 +0800
+@@ -363,7 +363,7 @@ int ieee80211_xmit(struct sk_buff *skb,
+               skb_pull(skb, hdr_len);
+       }
+ 
+-      if (host_encrypt) {
++      if (host_encrypt || ieee->host_open_frag) {
+               /* Determine fragmentation size based on destination (multicast
+                * and broadcast are not fragmented) */
+               if (is_multicast_ether_addr(dest))
+@@ -382,8 +382,9 @@ int ieee80211_xmit(struct sk_buff *skb,
+ 
+               /* Each fragment may need to have room for encryptiong
+                * pre/postfix */
+-              bytes_per_frag -= crypt->ops->extra_mpdu_prefix_len +
+-                      crypt->ops->extra_mpdu_postfix_len;
++              if (host_encrypt)
++                      bytes_per_frag -= crypt->ops->extra_mpdu_prefix_len +
++                                        crypt->ops->extra_mpdu_postfix_len;
+ 
+               /* Number of fragments is the total
+                * bytes_per_frag / payload_per_fragment */
+diff -urp ieee80211-1.0.3/net/ieee80211.h ieee80211-1.0.3-open-frag/net/ieee80211.h
+--- ieee80211-1.0.3/net/ieee80211.h    2005-07-15 07:53:35.000000000 +0800
++++ ieee80211-1.0.3-open-frag/net/ieee80211.h  2005-08-03 16:12:25.000000000 +0800
+@@ -798,6 +798,7 @@ struct ieee80211_device {
+       int host_encrypt;
+       int host_encrypt_msdu;
+       int host_decrypt;
++      int host_open_frag;
+       int ieee802_1x; /* is IEEE 802.1X used */
+ 
+       /* WPA data */
diff --git a/net-wireless/ieee80211/ieee80211-1.0.3-r2.ebuild b/net-wireless/ieee80211/ieee80211-1.0.3-r2.ebuild
new file mode 100644 (file)
index 0000000..811876b
--- /dev/null
@@ -0,0 +1,90 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/ieee80211/ieee80211-1.0.3-r2.ebuild,v 1.1 2005/09/06 14:53:17 brix Exp $
+
+inherit eutils linux-mod
+
+# The following works with both pre-releases and releases
+MY_P=${P/_/-}
+S=${WORKDIR}/${MY_P}
+
+DESCRIPTION="Generic IEEE 802.11 network subsystem for Linux"
+HOMEPAGE="http://ieee80211.sourceforge.net"
+SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tgz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="!<=net-wireless/ipw2100-1.1.0
+               !<=net-wireless/ipw2200-1.0.4"
+RDEPEND="${DEPEND}"
+
+IUSE="debug"
+BUILD_TARGETS="all"
+MODULE_NAMES="ieee80211(net/ieee80211:)
+                       ieee80211_crypt(net/ieee80211:)
+                       ieee80211_crypt_wep(net/ieee80211:)
+                       ieee80211_crypt_ccmp(net/ieee80211:)
+                       ieee80211_crypt_tkip(net/ieee80211:)"
+
+CONFIG_CHECK="NET_RADIO CRYPTO_ARC4 CRYPTO_MICHAEL_MIC CRC32"
+ERROR_NET_RADIO="${P} requires support for Wireless LAN drivers (non-hamradio) & Wireless Extensions (CONFIG_NET_RADIO)."
+ERROR_CRYPTO_ARC4="${P} requires support for ARC4 cipher algorithm (CONFIG_CRYPTO_ARC4)."
+ERROR_CRYPTO_MICHAEL_MIC="${P} requires support for Michael MIC keyed digest algorithm (CONFIG_CRYPTO_MICHAEL_MIC)."
+ERROR_CRC32="${P} requires support for CRC32 functions (CONFIG_CRC32)."
+
+pkg_setup() {
+       linux-mod_pkg_setup
+
+       if kernel_is 2 4; then
+               die "${P} does not support building against kernel 2.4.x"
+       fi
+
+       if [[ -f ${KV_DIR}/include/net/ieee80211.h ]]; then
+               eerror
+               eerror "You kernel source contains an incomptible version of the"
+               eerror "ieee80211 subsystem, which needs to be removed before"
+               eerror "${P} can be installed. This can be accomplished by running:"
+               eerror
+               eerror "  # rm -i ${KV_DIR}/include/net/ieee80211.h"
+               eerror
+               eerror "Please note that this will make it impossible to use some of the"
+               eerror "in-kernel IEEE 802.11 wireless LAN drivers (eg. orinoco)."
+               eerror
+               die "Incompatible in-kernel ieee80211 subsystem detected"
+       fi
+
+       if ! (linux_chkconfig_present CRYPTO_AES_586 || \
+                 linux_chkconfig_present CRYPTO_AES_X86_64 || \
+                 linux_chkconfig_present CRYPTO_AES); then
+               eerror "${P} requires support for AES cipher algorithms."
+               die "CONFIG_CRYPTO_AES{_586,_X86_64} support not detected"
+       fi
+
+       BUILD_PARAMS="KSRC=${KV_DIR} KSRC_OUTPUT=${KV_OUT_DIR}"
+}
+
+src_unpack() {
+       local debug="n"
+
+       unpack ${A}
+
+       cd ${S}
+       epatch ${FILESDIR}/${P}-keep_restricted_bit.patch
+       epatch ${FILESDIR}/${P}-open_frag.patch
+
+       epatch ${FILESDIR}/${P}-broadcast.patch
+
+       use debug && debug="y"
+       sed -i -e "s:^\(CONFIG_IEEE80211_DEBUG\)=.*:\1=${debug}:" ${S}/Makefile
+}
+
+src_install() {
+       linux-mod_src_install
+
+       insinto /usr/include/net
+       doins net/*
+
+       dodoc CHANGES
+}