summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrik Brix Andersen <brix@gentoo.org>2005-10-20 13:22:24 +0000
committerHenrik Brix Andersen <brix@gentoo.org>2005-10-20 13:22:24 +0000
commit3dd16207f59a20461129c2564f2d916ba784e370 (patch)
tree9e1cda1de491d6f6bb39c0b26e7519b977a6a4aa /net-wireless/ieee80211/files
parentCommit a slightly modified patch from -r1 from bug #107663 (diff)
downloadgentoo-2-3dd16207f59a20461129c2564f2d916ba784e370.tar.gz
gentoo-2-3dd16207f59a20461129c2564f2d916ba784e370.tar.bz2
gentoo-2-3dd16207f59a20461129c2564f2d916ba784e370.zip
Patch from upstream to fix broadcast issues.
(Portage version: 2.0.51.22-r3)
Diffstat (limited to 'net-wireless/ieee80211/files')
-rw-r--r--net-wireless/ieee80211/files/digest-ieee80211-1.1.5-r11
-rw-r--r--net-wireless/ieee80211/files/ieee80211-1.1.5-broadcast.patch44
2 files changed, 45 insertions, 0 deletions
diff --git a/net-wireless/ieee80211/files/digest-ieee80211-1.1.5-r1 b/net-wireless/ieee80211/files/digest-ieee80211-1.1.5-r1
new file mode 100644
index 000000000000..5f10503e90c7
--- /dev/null
+++ b/net-wireless/ieee80211/files/digest-ieee80211-1.1.5-r1
@@ -0,0 +1 @@
+MD5 e05fb14fab25462710955f464e1a7c5d ieee80211-1.1.5.tgz 70185
diff --git a/net-wireless/ieee80211/files/ieee80211-1.1.5-broadcast.patch b/net-wireless/ieee80211/files/ieee80211-1.1.5-broadcast.patch
new file mode 100644
index 000000000000..83f6e7de5879
--- /dev/null
+++ b/net-wireless/ieee80211/files/ieee80211-1.1.5-broadcast.patch
@@ -0,0 +1,44 @@
+diff -urp ieee80211-1.1.5/ieee80211_rx.c ieee80211-1.1.5-broadcast/ieee80211_rx.c
+--- ieee80211-1.1.5/ieee80211_rx.c 2005-10-14 02:12:12.000000000 +0800
++++ ieee80211-1.1.5-broadcast/ieee80211_rx.c 2005-10-19 15:52:46.000000000 +0800
+@@ -409,8 +409,9 @@ int ieee80211_rx(struct ieee80211_device
+ return 1;
+ }
+
+- if (is_multicast_ether_addr(hdr->addr1) ? ieee->host_mc_decrypt :
+- ieee->host_decrypt) {
++ if ((is_multicast_ether_addr(hdr->addr1) ||
++ ieee80211_is_broadcast_ether_addr(hdr->addr1)) ? ieee->host_mc_decrypt :
++ ieee->host_decrypt) {
+ int idx = 0;
+ if (skb->len >= hdrlen + 3)
+ idx = skb->data[hdrlen + 3] >> 6;
+diff -urp ieee80211-1.1.5/ieee80211_tx.c ieee80211-1.1.5-broadcast/ieee80211_tx.c
+--- ieee80211-1.1.5/ieee80211_tx.c 2005-10-14 02:12:12.000000000 +0800
++++ ieee80211-1.1.5-broadcast/ieee80211_tx.c 2005-10-19 15:55:38.000000000 +0800
+@@ -338,7 +338,8 @@ int ieee80211_xmit(struct sk_buff *skb,
+ 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))
++ if (is_multicast_ether_addr(dest) ||
++ ieee80211_is_broadcast_ether_addr(dest))
+ frag_size = MAX_FRAG_THRESHOLD;
+ else
+ frag_size = ieee->fts;
+diff -urp ieee80211-1.1.5/net/ieee80211.h ieee80211-1.1.5-broadcast/net/ieee80211.h
+--- ieee80211-1.1.5/net/ieee80211.h 2005-10-14 02:12:12.000000000 +0800
++++ ieee80211-1.1.5-broadcast/net/ieee80211.h 2005-10-19 15:51:31.000000000 +0800
+@@ -962,6 +962,12 @@ static inline int is_multicast_ether_add
+ }
+ #endif
+
++static inline int ieee80211_is_broadcast_ether_addr(const u8 *addr)
++{
++ return (addr[0] == 0xff && addr[1] == 0xff && addr[2] == 0xff &&
++ addr[3] == 0xff && addr[4] == 0xff && addr[5] == 0xff);
++}
++
+ static inline void *ieee80211_priv(struct net_device *dev)
+ {
+ return ((struct ieee80211_device *)netdev_priv(dev))->priv;