madwifi: fix crash on 2.6.30
authorFelix Fietkau <nbd@openwrt.org>
Sat, 18 Jul 2009 01:04:40 +0000 (01:04 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sat, 18 Jul 2009 01:04:40 +0000 (01:04 +0000)
SVN-Revision: 16889

package/madwifi/patches/432-netdev_ops.patch
package/madwifi/patches/441-fix_ibss_node_handling.patch

index be36128..6cb2c67 100644 (file)
@@ -156,3 +156,17 @@ http://madwifi-project.org/changeset/4005
  #if IW_HANDLER_VERSION < 7
        dev->get_wireless_stats = ieee80211_iw_getstats;
  #endif
+--- a/net80211/ieee80211_input.c
++++ b/net80211/ieee80211_input.c
+@@ -1185,7 +1185,11 @@ ieee80211_deliver_data(struct ieee80211_
+                       skb1->protocol = __constant_htons(ETH_P_802_2);
+                       /* XXX insert vlan tag before queue it? */
+                       ni_tmp = SKB_CB(skb1)->ni; /* remember node so we can free it */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
+                       ret = dev->hard_start_xmit(skb1, dev);
++#else
++                      ret = dev->netdev_ops->ndo_start_xmit(skb1, dev);
++#endif
+                       if (ret == NETDEV_TX_BUSY)
+                               ieee80211_dev_kfree_skb(&skb1);
index d64ebf0..1089f32 100644 (file)
@@ -44,7 +44,7 @@
                        if (dir != IEEE80211_FC1_DIR_NODS) {
                                IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY,
                                        wh, "data", "invalid dir 0x%x", dir);
-@@ -3548,6 +3553,11 @@ ieee80211_recv_mgmt(struct ieee80211vap 
+@@ -3552,6 +3557,11 @@ ieee80211_recv_mgmt(struct ieee80211vap 
                        } else if (vap->iv_opmode == IEEE80211_M_WDS) {
                                found = 1;
                                ni = ni_or_null = vap->iv_wdsnode;
@@ -56,7 +56,7 @@
                        }
                        IEEE80211_UNLOCK_IRQ(vap->iv_ic);
  
-@@ -3672,19 +3682,8 @@ ieee80211_recv_mgmt(struct ieee80211vap 
+@@ -3676,19 +3686,8 @@ ieee80211_recv_mgmt(struct ieee80211vap 
                        vap->iv_stats.is_rx_ssidmismatch++; /*XXX*/
                        return;
                }