summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-wireless/ieee80211/files/ieee80211-1.1.5-broadcast.patch')
-rw-r--r--net-wireless/ieee80211/files/ieee80211-1.1.5-broadcast.patch44
1 files changed, 44 insertions, 0 deletions
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;