Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 61936 Details for
Bug 77780
linux-wlan-ng-0.2.2 (Bump)
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
files/linux-wlan-ng-0.2.1_pre26-aireplay.patch
linux-wlan-ng-0.2.1_pre26-aireplay.patch (text/plain), 10.58 KB, created by
Octavio Ruiz (Ta^3)
on 2005-06-26 02:56:32 UTC
(
hide
)
Description:
files/linux-wlan-ng-0.2.1_pre26-aireplay.patch
Filename:
MIME Type:
Creator:
Octavio Ruiz (Ta^3)
Created:
2005-06-26 02:56:32 UTC
Size:
10.58 KB
patch
obsolete
>diff -aur linux-wlan-ng-0.2.1-pre26-orig/src/p80211/p80211netdev.c linux-wlan-ng-0.2.1-pre26/src/p80211/p80211netdev.c >--- linux-wlan-ng-0.2.1-pre26-orig/src/p80211/p80211netdev.c 2005-01-11 18:43:54.000000000 +0100 >+++ linux-wlan-ng-0.2.1-pre26/src/p80211/p80211netdev.c 2005-03-14 13:58:11.000000000 +0100 >@@ -525,7 +525,7 @@ > * and return success . > * TODO: we need a saner way to handle this > */ >- if(skb->protocol != ETH_P_80211_RAW) { >+ if(skb->protocol != htons(ETH_P_80211_RAW)) { > p80211netdev_start_queue(wlandev); > WLAN_LOG_NOTICE( > "Tx attempt prior to association, frame dropped.\n"); >@@ -537,7 +537,7 @@ > } > > /* Check for raw transmits */ >- if(skb->protocol == ETH_P_80211_RAW) { >+ if(skb->protocol == htons(ETH_P_80211_RAW)) { > if (!capable(CAP_NET_ADMIN)) { > return(-EPERM); > } >@@ -965,8 +965,9 @@ > dev->set_mac_address = p80211knetdev_set_mac_address; > #endif > #ifdef HAVE_TX_TIMEOUT >- dev->tx_timeout = &p80211knetdev_tx_timeout; >- dev->watchdog_timeo = (wlan_watchdog * HZ) / 1000; >+// KoreK: still not implemented >+// dev->tx_timeout = &p80211knetdev_tx_timeout; >+// dev->watchdog_timeo = (wlan_watchdog * HZ) / 1000; > #endif > > } >diff -aur linux-wlan-ng-0.2.1-pre26-orig/src/prism2/driver/Makefile linux-wlan-ng-0.2.1-pre26/src/prism2/driver/Makefile >--- linux-wlan-ng-0.2.1-pre26-orig/src/prism2/driver/Makefile 2005-01-25 02:41:44.000000000 +0100 >+++ linux-wlan-ng-0.2.1-pre26/src/prism2/driver/Makefile 2005-03-14 13:58:11.000000000 +0100 >@@ -88,7 +88,7 @@ > MODVERDIR=$(WLAN_SRC)/.tmp_versions modules > else # kbuild 2.4 > >- $(MAKE) -C $(LINUX_SRC) SUBDIRS=$(PWD) WLAN_SRC=$(PWD) \ >+ $(MAKE) -C $(LINUX_SRC) SUBDIRS=$(PWD) WLAN_SRC=$(WLAN_SRC) \ > modules > > endif # kbuild switch >diff -aur linux-wlan-ng-0.2.1-pre26-orig/src/prism2/driver/hfa384x.c linux-wlan-ng-0.2.1-pre26/src/prism2/driver/hfa384x.c >--- linux-wlan-ng-0.2.1-pre26-orig/src/prism2/driver/hfa384x.c 2005-01-25 01:38:50.000000000 +0100 >+++ linux-wlan-ng-0.2.1-pre26/src/prism2/driver/hfa384x.c 2005-03-14 15:21:02.000000000 +0100 >@@ -1941,8 +1941,14 @@ > > DBFENTER; > >- cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_MONITOR) | >- HFA384x_CMD_AINFO_SET(enable); >+ if (enable == HFA384x_MONITOR_ENABLE) { >+ // KoreK: get into test mode 0x0a >+ cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_MONITOR) | >+ HFA384x_CMD_AINFO_SET(0x0a); >+ } else { >+ cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_MONITOR) | >+ HFA384x_CMD_AINFO_SET(enable); >+ } > cmd.parm0 = 0; > cmd.parm1 = 0; > cmd.parm2 = 0; >@@ -3178,13 +3184,26 @@ > HFA384x_TX_TXEX_SET(0) | HFA384x_TX_TXOK_SET(0); > #endif > >- /* if we're using host WEP, increase size by IV+ICV */ >- if (p80211_wep->data) { >- txdesc.data_len = host2hfa384x_16(skb->len+8); >- // txdesc.tx_control |= HFA384x_TX_NOENCRYPT_SET(1); >- } else { >- txdesc.data_len = host2hfa384x_16(skb->len); >- } >+ if (skb->protocol != htons(ETH_P_80211_RAW)) { >+ /* if we're using host WEP, increase size by IV+ICV */ >+ if (p80211_wep->data) { >+ txdesc.data_len = host2hfa384x_16(skb->len+8); >+ // txdesc.tx_control |= HFA384x_TX_NOENCRYPT_SET(1); >+ } else { >+ txdesc.data_len = host2hfa384x_16(skb->len); >+ } >+ } else { >+ /* KoreK: raw injection (monitor mode): pull the rest of >+ the header and ssanity check on txdesc.data_len */ >+ memcpy(&(txdesc.data_len), skb->data, 16); >+ skb_pull(skb,16); >+ if (txdesc.data_len != host2hfa384x_16(skb->len)) { >+ printk(KERN_DEBUG "mismatch frame_len, drop frame\n"); >+ return 0; >+ } >+ >+ txdesc.tx_control |= HFA384x_TX_RETRYSTRAT_SET(1); >+ } > > txdesc.tx_control = host2hfa384x_16(txdesc.tx_control); > /* copy the header over to the txdesc */ >@@ -3207,7 +3226,7 @@ > spin_lock(&hw->cmdlock); > > /* Copy descriptor+payload to FID */ >- if (p80211_wep->data) { >+ if (p80211_wep->data && (skb->protocol != htons(ETH_P_80211_RAW))) { > result = hfa384x_copy_to_bap4(hw, HFA384x_BAP_PROC, fid, 0, > &txdesc, sizeof(txdesc), > p80211_wep->iv, sizeof(p80211_wep->iv), >@@ -3657,6 +3676,16 @@ > switch( HFA384x_RXSTATUS_MACPORT_GET(rxdesc.status) ) > { > case 0: >+ /* KoreK: this testmode uses macport 0 */ >+ if ((wlandev->netdev->type == ARPHRD_IEEE80211) || >+ (wlandev->netdev->type == ARPHRD_IEEE80211_PRISM)) { >+ if ( ! HFA384x_RXSTATUS_ISFCSERR(rxdesc.status) ) { >+ hfa384x_int_rxmonitor( wlandev, rxfid, &rxdesc); >+ } else { >+ WLAN_LOG_DEBUG(3,"Received monitor frame: FCSerr set\n"); >+ } >+ goto done; >+ } > > fc = ieee2host16(rxdesc.frame_control); > >diff -aur linux-wlan-ng-0.2.1-pre26-orig/src/prism2/driver/hfa384x_usb.c linux-wlan-ng-0.2.1-pre26/src/prism2/driver/hfa384x_usb.c >--- linux-wlan-ng-0.2.1-pre26-orig/src/prism2/driver/hfa384x_usb.c 2005-01-17 17:24:40.000000000 +0100 >+++ linux-wlan-ng-0.2.1-pre26/src/prism2/driver/hfa384x_usb.c 2005-03-14 15:27:57.000000000 +0100 >@@ -1143,8 +1143,14 @@ > > DBFENTER; > >- cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_MONITOR) | >- HFA384x_CMD_AINFO_SET(enable); >+ if (enable == HFA384x_MONITOR_ENABLE) { >+ // KoreK: get into test mode 0x0a >+ cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_MONITOR) | >+ HFA384x_CMD_AINFO_SET(0x0a); >+ } else { >+ cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_MONITOR) | >+ HFA384x_CMD_AINFO_SET(enable); >+ } > cmd.parm0 = 0; > cmd.parm1 = 0; > cmd.parm2 = 0; >@@ -3258,37 +3264,59 @@ > HFA384x_TX_MACPORT_SET(0) | HFA384x_TX_STRUCTYPE_SET(1) | > HFA384x_TX_TXEX_SET(0) | HFA384x_TX_TXOK_SET(0); > #endif >- hw->txbuff.txfrm.desc.tx_control = >- host2hfa384x_16(hw->txbuff.txfrm.desc.tx_control); > >- /* copy the header over to the txdesc */ >- memcpy(&(hw->txbuff.txfrm.desc.frame_control), p80211_hdr, sizeof(p80211_hdr_t)); >+ if (skb->protocol != htons(ETH_P_80211_RAW)) { >+ hw->txbuff.txfrm.desc.tx_control = >+ host2hfa384x_16(hw->txbuff.txfrm.desc.tx_control); >+ >+ /* copy the header over to the txdesc */ >+ memcpy(&(hw->txbuff.txfrm.desc.frame_control), p80211_hdr, >+ sizeof(p80211_hdr_t)); >+ >+ /* if we're using host WEP, increase size by IV+ICV */ >+ if (p80211_wep->data) { >+ hw->txbuff.txfrm.desc.data_len = host2hfa384x_16(skb->len+8); >+ // hw->txbuff.txfrm.desc.tx_control |= HFA384x_TX_NOENCRYPT_SET(1); >+ usbpktlen+=8; >+ } else { >+ hw->txbuff.txfrm.desc.data_len = host2hfa384x_16(skb->len); >+ } >+ } else { >+ /* KoreK: raw injection (monitor mode): pull the rest of >+ the header and ssanity check on txdesc.data_len */ >+ memcpy(&(hw->txbuff.txfrm.desc.data_len), skb->data, 16); >+ skb_pull(skb,16); >+ if (hw->txbuff.txfrm.desc.data_len != host2hfa384x_16(skb->len)) { >+ printk(KERN_DEBUG "mismatch frame_len, drop frame\n"); >+ return 0; >+ } > >- /* if we're using host WEP, increase size by IV+ICV */ >- if (p80211_wep->data) { >- hw->txbuff.txfrm.desc.data_len = host2hfa384x_16(skb->len+8); >- // hw->txbuff.txfrm.desc.tx_control |= HFA384x_TX_NOENCRYPT_SET(1); >- usbpktlen+=8; >- } else { >- hw->txbuff.txfrm.desc.data_len = host2hfa384x_16(skb->len); >+ hw->txbuff.txfrm.desc.tx_control |= HFA384x_TX_RETRYSTRAT_SET(1); >+ hw->txbuff.txfrm.desc.tx_control = >+ host2hfa384x_16(hw->txbuff.txfrm.desc.tx_control); >+ >+ /* copy the header over to the txdesc */ >+ memcpy(&(hw->txbuff.txfrm.desc.frame_control), p80211_hdr, >+ sizeof(p80211_hdr_t)); > } > > usbpktlen += skb->len; > > /* copy over the WEP IV if we are using host WEP */ > ptr = hw->txbuff.txfrm.data; >- if (p80211_wep->data) { >+ if (p80211_wep->data && skb->protocol != htons(ETH_P_80211_RAW)) { > memcpy(ptr, p80211_wep->iv, sizeof(p80211_wep->iv)); > ptr+= sizeof(p80211_wep->iv); > memcpy(ptr, p80211_wep->data, skb->len); > } else { > memcpy(ptr, skb->data, skb->len); > } >+ > /* copy over the packet data */ > ptr+= skb->len; > > /* copy over the WEP ICV if we are using host WEP */ >- if (p80211_wep->data) { >+ if (p80211_wep->data && skb->protocol != htons(ETH_P_80211_RAW)) { > memcpy(ptr, p80211_wep->icv, sizeof(p80211_wep->icv)); > } > >@@ -4105,6 +4133,17 @@ > switch( HFA384x_RXSTATUS_MACPORT_GET(usbin->rxfrm.desc.status)) > { > case 0: >+ /* KoreK: this testmode uses macport 0 */ >+ if ((wlandev->netdev->type == ARPHRD_IEEE80211) || >+ (wlandev->netdev->type == ARPHRD_IEEE80211_PRISM)) { >+ if ( ! HFA384x_RXSTATUS_ISFCSERR(usbin->rxfrm.desc.status) ) { >+ hfa384x_int_rxmonitor(wlandev, &usbin->rxfrm); >+ } else { >+ WLAN_LOG_DEBUG(3,"Received monitor frame: FCSerr set\n"); >+ } >+ goto done; >+ } >+ > w_hdr = (p80211_hdr_t *) &(usbin->rxfrm.desc.frame_control); > fc = ieee2host16(usbin->rxfrm.desc.frame_control); > >diff -aur linux-wlan-ng-0.2.1-pre26-orig/src/prism2/driver/prism2mgmt.c linux-wlan-ng-0.2.1-pre26/src/prism2/driver/prism2mgmt.c >--- linux-wlan-ng-0.2.1-pre26-orig/src/prism2/driver/prism2mgmt.c 2005-01-25 01:38:50.000000000 +0100 >+++ linux-wlan-ng-0.2.1-pre26/src/prism2/driver/prism2mgmt.c 2005-03-14 13:58:11.000000000 +0100 >@@ -2855,9 +2855,10 @@ > } > > /* Now if we're already sniffing, we can skip the rest */ >- if (wlandev->netdev->type != ARPHRD_ETHER) { >+ if ((wlandev->netdev->type != ARPHRD_IEEE80211) && >+ (wlandev->netdev->type != ARPHRD_IEEE80211_PRISM)) { > /* Set the port type to pIbss */ >- word = HFA384x_PORTTYPE_PSUEDOIBSS; >+ word = 5; // HFA384x_PORTTYPE_PSUEDOIBSS; > result = hfa384x_drvr_setconfig16(hw, > HFA384x_RID_CNFPORTTYPE, word); > if ( result ) { >@@ -2869,6 +2870,8 @@ > } > if ((msg->keepwepflags.status == P80211ENUM_msgitem_status_data_ok) && (msg->keepwepflags.data != P80211ENUM_truth_true)) { > /* Set the wepflags for no decryption */ >+ /* doesn't work - done from the CLI */ >+ /* Fix? KoreK */ > word = HFA384x_WEPFLAGS_DISABLE_TXCRYPT | > HFA384x_WEPFLAGS_DISABLE_RXCRYPT; > result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFWEPFLAGS, word); >@@ -2914,7 +2917,8 @@ > goto failed; > } > >- if (wlandev->netdev->type == ARPHRD_ETHER) { >+ if ((wlandev->netdev->type != ARPHRD_IEEE80211) && >+ (wlandev->netdev->type != ARPHRD_IEEE80211_PRISM)) { > WLAN_LOG_INFO("monitor mode enabled\n"); > } > >diff -aur linux-wlan-ng-0.2.1-pre26-orig/src/prism2/driver/prism2sta.c linux-wlan-ng-0.2.1-pre26/src/prism2/driver/prism2sta.c >--- linux-wlan-ng-0.2.1-pre26-orig/src/prism2/driver/prism2sta.c 2005-01-25 01:38:50.000000000 +0100 >+++ linux-wlan-ng-0.2.1-pre26/src/prism2/driver/prism2sta.c 2005-03-14 13:58:11.000000000 +0100 >@@ -649,7 +649,8 @@ > DBFENTER; > > /* If necessary, set the 802.11 WEP bit */ >- if ((wlandev->hostwep & (HOSTWEP_PRIVACYINVOKED | HOSTWEP_ENCRYPT)) == HOSTWEP_PRIVACYINVOKED) { >+ if (((wlandev->hostwep & (HOSTWEP_PRIVACYINVOKED | HOSTWEP_ENCRYPT)) == HOSTWEP_PRIVACYINVOKED) >+ && (skb->protocol != htons(ETH_P_80211_RAW))) { > p80211_hdr->a3.fc |= host2ieee16(WLAN_SET_FC_ISWEP(1)); > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 77780
:
50756
|
50757
|
61935
| 61936 |
67541