diff options
Diffstat (limited to 'net-wireless/ipw2200/files')
-rw-r--r-- | net-wireless/ipw2200/files/digest-ipw2200-1.2.0 | 3 | ||||
-rw-r--r-- | net-wireless/ipw2200/files/ipw2200-1.2.0-inject.patch | 98 | ||||
-rw-r--r-- | net-wireless/ipw2200/files/ipw2200-1.2.0-modverdir.patch | 20 |
3 files changed, 121 insertions, 0 deletions
diff --git a/net-wireless/ipw2200/files/digest-ipw2200-1.2.0 b/net-wireless/ipw2200/files/digest-ipw2200-1.2.0 new file mode 100644 index 00000000..7e92a718 --- /dev/null +++ b/net-wireless/ipw2200/files/digest-ipw2200-1.2.0 @@ -0,0 +1,3 @@ +MD5 cfd26b4526186d61a4feeaee217493b9 ipw2200-1.2.0.tgz 139374 +RMD160 5b2e6836a552b82b0320f84b088addec21863b21 ipw2200-1.2.0.tgz 139374 +SHA256 69c7089e5ec40c2f89f841e02703e6db4c96e045131f06bafa6d5ec4a969f074 ipw2200-1.2.0.tgz 139374 diff --git a/net-wireless/ipw2200/files/ipw2200-1.2.0-inject.patch b/net-wireless/ipw2200/files/ipw2200-1.2.0-inject.patch new file mode 100644 index 00000000..2ce56d84 --- /dev/null +++ b/net-wireless/ipw2200/files/ipw2200-1.2.0-inject.patch @@ -0,0 +1,98 @@ +diff -ur ipw2200-1.1.4/ipw2200.c ipw2200-1.1.4-inject/ipw2200.c +--- ipw2200-1.1.4/ipw2200.c 2006-08-21 04:38:32.000000000 +0200 ++++ ipw2200-1.1.4-inject/ipw2200.c 2006-08-23 14:20:31.000000000 +0200 +@@ -1945,6 +1945,66 @@ + static DEVICE_ATTR(net_stats, S_IWUSR | S_IRUGO, + show_net_stats, store_net_stats); + ++static int ipw_tx_skb(struct ipw_priv *priv, struct ieee80211_txb *txb, int pri); ++ ++/* SYSFS INJECT */ ++static ssize_t store_inject(struct device *d, ++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12) ++ struct device_attribute *attr, ++#endif ++ const char *buf, size_t count) ++{ ++ struct ipw_priv *priv = (struct ipw_priv *)d->driver_data; ++ struct ieee80211_device *ieee = priv->ieee; ++ struct ieee80211_txb * txb; ++ struct sk_buff *skb_frag; ++ unsigned char * newbuf; ++ unsigned long flags; ++ ++ // should test (ieee->is_queue_full) ++ ++ // Fw only accepts data, so avoid accidental fw errors. ++ if ( (buf[0]&0x0c) != '\x08') { ++ //printk("ipw2200: inject: discarding non-data frame (type=%02X)\n",(int)(unsigned char)buf[0]); ++ return count; ++ } ++ ++ if (count>1500) { ++ count=1500; ++ printk("ipw2200: inject: cutting down frame to 1500 bytes\n"); ++ } ++ ++ spin_lock_irqsave(&priv->lock, flags); ++ ++ // Create a txb with one skb ++ txb = kmalloc(sizeof(struct ieee80211_txb) + sizeof(u8 *), GFP_ATOMIC); ++ if (!txb) ++ goto nosepuede; ++ txb->nr_frags=1; ++ txb->frag_size = ieee->tx_headroom; ++ txb->fragments[0]=__dev_alloc_skb(count + ieee->tx_headroom, GFP_ATOMIC); ++ if (!txb->fragments[0]) { ++ kfree(txb); ++ goto nosepuede; ++ } ++ skb_reserve(txb->fragments[0], ieee->tx_headroom); ++ txb->encrypted=0; ++ txb->payload_size=count; ++ skb_frag = txb->fragments[0]; ++ newbuf=skb_put(skb_frag, count); ++ ++ // copy data into txb->skb and send it ++ memcpy(newbuf, buf, count); ++ ++ ipw_tx_skb(priv, txb, 0); ++ ++nosepuede: ++ spin_unlock_irqrestore(&priv->lock, flags); ++ return count; ++} ++ ++static DEVICE_ATTR(inject, S_IWUSR, NULL, store_inject); ++ + static void notify_wx_assoc_event(struct ipw_priv *priv) + { + union iwreq_data wrqu; +@@ -11478,6 +11538,7 @@ + #ifdef CONFIG_IPW2200_PROMISCUOUS + &dev_attr_rtap_iface.attr, + &dev_attr_rtap_filter.attr, ++ &dev_attr_inject.attr, + #endif + NULL + }; +diff -ur ipw2200-1.1.4/Makefile ipw2200-1.1.4-inject/Makefile +--- ipw2200-1.1.4/Makefile 2006-08-21 04:38:29.000000000 +0200 ++++ ipw2200-1.1.4-inject/Makefile 2006-08-23 14:22:06.000000000 +0200 +@@ -30,14 +30,14 @@ + # simply uncomment: + # + # NOTE: To use RADIOTAP you must also enable MONITOR above. +-#CONFIG_IPW2200_RADIOTAP=y ++CONFIG_IPW2200_RADIOTAP=y + + # The above monitor mode provides standard monitor mode. The following + # will create a new interface (named rtap%d) which will be sent all + # 802.11 frames received on the interface + # + # NOTE: To use PROMISCUOUS you must also enable MONITOR above. +-#CONFIG_IPW2200_PROMISCUOUS=y ++CONFIG_IPW2200_PROMISCUOUS=y + + endif + diff --git a/net-wireless/ipw2200/files/ipw2200-1.2.0-modverdir.patch b/net-wireless/ipw2200/files/ipw2200-1.2.0-modverdir.patch new file mode 100644 index 00000000..12d70206 --- /dev/null +++ b/net-wireless/ipw2200/files/ipw2200-1.2.0-modverdir.patch @@ -0,0 +1,20 @@ +Index: ipw2200-1.2.0/Makefile +=================================================================== +--- ipw2200-1.2.0.orig/Makefile ++++ ipw2200-1.2.0/Makefile +@@ -153,14 +153,8 @@ clean: + distclean: clean + rm -f tags TAGS + +-TMP=$(PWD)/tmp +-MODVERDIR=$(TMP)/.tmp_versions +- + modules: +- mkdir -p $(MODVERDIR) +- -cp $(IEEE80211_MODVERDIR)/*.mod $(MODVERDIR) +- -cp $(IEEE80211_MODVERDIR)/../Modules.symvers $(PWD) +- $(MAKE) -C $(KSRC) M=$(PWD) MODVERDIR=$(MODVERDIR) modules ++ $(MAKE) -C $(KSRC) M=$(PWD) modules + + + patch_kernel: |