chmod
02-07-2008, 11:02 PM
I have researched and researched this.. I see alot of people using the iwp4965 card and no injection support for it yet. I have even found a post where a guy made a patch for the injection (listed below). But have yet to see any talk about this being introduced in the next release of BT or being fixed in the current. Is anyone working on, going to work on, or plan to work on this? Thanks in advance! :eek:
diff --git a/origin/iwl4965-base.c b/origin/iwl4965-base.c
index bb476b5..aa07522 100644
--- a/origin/iwl4965-base.c
+++ b/origin/iwl4965-base.c
@@ -2679,7 +2679,8 @@ static void iwl4965_connection_init_rx_config(struct iwl4965_priv *priv)
case IEEE80211_IF_TYPE_STA:
priv->staging_rxon.dev_type = RXON_DEV_TYPE_ESS;
- priv->staging_rxon.filter_flags = RXON_FILTER_ACCEPT_GRP_MSK;
+ priv->staging_rxon.filter_flags = RXON_FILTER_ACCEPT_GRP_MSK |
+ RXON_FILTER_CTL2HOST_MSK;
break;
case IEEE80211_IF_TYPE_IBSS:
@@ -2984,11 +2985,6 @@ static int iwl4965_tx_skb(struct iwl4965_priv *priv,
goto drop_unlock;
}
- if (!priv->interface_id) {
- IWL_DEBUG_DROP("Dropping - !priv->interface_id\n");
- goto drop_unlock;
- }
-
if ((ctl->tx_rate & 0xFF) == IWL_INVALID_RATE) {
IWL_ERROR("ERROR: No TX rate available.\n");
goto drop_unlock;
@@ -3010,7 +3006,8 @@ static int iwl4965_tx_skb(struct iwl4965_priv *priv,
/* drop all data frame if we are not associated */
if (!iwl4965_is_associated(priv) && !priv->assoc_id &&
- ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA)) {
+ ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) &&
+ priv->interface_id) {
IWL_DEBUG_DROP("Dropping - !iwl4965_is_associated\n");
goto drop_unlock;
}
@@ -3020,11 +3017,22 @@ static int iwl4965_tx_skb(struct iwl4965_priv *priv,
hdr_len = ieee80211_get_hdrlen(fc);
/* Find (or create) index into station table for destination station */
- sta_id = iwl4965_get_sta_id(priv, hdr);
+ if (unlikely(!priv->interface_id)) {
+ if (!ieee80211_is_probe_response(le16_to_cpu(hdr->frame_control)) &&
+ !is_multicast_ether_addr(hdr->addr1) &&
+ !is_broadcast_ether_addr(hdr->addr1))
+ sta_id = iwl4965_add_station_flags(priv, hdr->addr1, 0, 0);
+ else
+ sta_id = priv->hw_setting.bcast_sta_id;
+ }
+ else
+ sta_id = iwl4965_get_sta_id(priv, hdr);
if (sta_id == IWL_INVALID_STATION) {
- IWL_DEBUG_DROP("Dropping - INVALID STATION: " MAC_FMT "\n",
- MAC_ARG(hdr->addr1));
- goto drop;
+ if (priv->interface_id) {
+ IWL_DEBUG_DROP("Dropping - INVALID STATION: " MAC_FMT "\n", MAC_ARG(hdr->addr1));
+ goto drop;
+ }
+ sta_id = priv->hw_setting.bcast_sta_id;
}
IWL_DEBUG_RATE("station Id %d\n", sta_id);
http://tinyshell.be/aircrackng/forum/index.php?topic=2606.new#new
http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1537
http://rpmfind.net/linux/RPM/opensuse/updates/10.3/x86_64/iwlwifi-kmp-xen-1.2.0_2.6.22.16_0.1-0.1.x86_64.html
http://rpmfind.net/linux/RPM/opensuse/updates/10.3/x86_64/lib_modules_2.6.22.17-0.1-xen_updates_Tree.html
diff --git a/origin/iwl4965-base.c b/origin/iwl4965-base.c
index bb476b5..aa07522 100644
--- a/origin/iwl4965-base.c
+++ b/origin/iwl4965-base.c
@@ -2679,7 +2679,8 @@ static void iwl4965_connection_init_rx_config(struct iwl4965_priv *priv)
case IEEE80211_IF_TYPE_STA:
priv->staging_rxon.dev_type = RXON_DEV_TYPE_ESS;
- priv->staging_rxon.filter_flags = RXON_FILTER_ACCEPT_GRP_MSK;
+ priv->staging_rxon.filter_flags = RXON_FILTER_ACCEPT_GRP_MSK |
+ RXON_FILTER_CTL2HOST_MSK;
break;
case IEEE80211_IF_TYPE_IBSS:
@@ -2984,11 +2985,6 @@ static int iwl4965_tx_skb(struct iwl4965_priv *priv,
goto drop_unlock;
}
- if (!priv->interface_id) {
- IWL_DEBUG_DROP("Dropping - !priv->interface_id\n");
- goto drop_unlock;
- }
-
if ((ctl->tx_rate & 0xFF) == IWL_INVALID_RATE) {
IWL_ERROR("ERROR: No TX rate available.\n");
goto drop_unlock;
@@ -3010,7 +3006,8 @@ static int iwl4965_tx_skb(struct iwl4965_priv *priv,
/* drop all data frame if we are not associated */
if (!iwl4965_is_associated(priv) && !priv->assoc_id &&
- ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA)) {
+ ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) &&
+ priv->interface_id) {
IWL_DEBUG_DROP("Dropping - !iwl4965_is_associated\n");
goto drop_unlock;
}
@@ -3020,11 +3017,22 @@ static int iwl4965_tx_skb(struct iwl4965_priv *priv,
hdr_len = ieee80211_get_hdrlen(fc);
/* Find (or create) index into station table for destination station */
- sta_id = iwl4965_get_sta_id(priv, hdr);
+ if (unlikely(!priv->interface_id)) {
+ if (!ieee80211_is_probe_response(le16_to_cpu(hdr->frame_control)) &&
+ !is_multicast_ether_addr(hdr->addr1) &&
+ !is_broadcast_ether_addr(hdr->addr1))
+ sta_id = iwl4965_add_station_flags(priv, hdr->addr1, 0, 0);
+ else
+ sta_id = priv->hw_setting.bcast_sta_id;
+ }
+ else
+ sta_id = iwl4965_get_sta_id(priv, hdr);
if (sta_id == IWL_INVALID_STATION) {
- IWL_DEBUG_DROP("Dropping - INVALID STATION: " MAC_FMT "\n",
- MAC_ARG(hdr->addr1));
- goto drop;
+ if (priv->interface_id) {
+ IWL_DEBUG_DROP("Dropping - INVALID STATION: " MAC_FMT "\n", MAC_ARG(hdr->addr1));
+ goto drop;
+ }
+ sta_id = priv->hw_setting.bcast_sta_id;
}
IWL_DEBUG_RATE("station Id %d\n", sta_id);
http://tinyshell.be/aircrackng/forum/index.php?topic=2606.new#new
http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1537
http://rpmfind.net/linux/RPM/opensuse/updates/10.3/x86_64/iwlwifi-kmp-xen-1.2.0_2.6.22.16_0.1-0.1.x86_64.html
http://rpmfind.net/linux/RPM/opensuse/updates/10.3/x86_64/lib_modules_2.6.22.17-0.1-xen_updates_Tree.html