From 8367be7a3426d113aed85f4c7783980894346399 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 29 May 2013 16:08:13 +0000 Subject: [PATCH] madwifi: properly fix build against Linux 3.7 and later SVN-Revision: 36762 --- net/madwifi/Makefile | 1 + net/madwifi/patches/123-ccmp_checks.patch | 4 +- net/madwifi/patches/200-no_debug.patch | 2 +- net/madwifi/patches/202-debug_variables.patch | 6 +-- net/madwifi/patches/300-napi_polling.patch | 4 +- net/madwifi/patches/305-pureg_fix.patch | 8 +-- net/madwifi/patches/309-micfail_detect.patch | 4 +- net/madwifi/patches/311-bssid_alloc.patch | 2 +- net/madwifi/patches/312-erpupdate.patch | 2 +- net/madwifi/patches/325-channel_spam.patch | 6 +-- net/madwifi/patches/330-beaconcal.patch | 4 +- net/madwifi/patches/334-input.patch | 2 +- net/madwifi/patches/340-maxrate.patch | 2 +- net/madwifi/patches/341-minrate.patch | 2 +- net/madwifi/patches/342-performance.patch | 52 +++++++++---------- .../patches/345-minstrel_sampling.patch | 2 +- net/madwifi/patches/346-protmode_trig.patch | 2 +- net/madwifi/patches/352-ani_fix.patch | 2 +- net/madwifi/patches/357-bgscan_thresh.patch | 2 +- net/madwifi/patches/360-sta_nodes.patch | 2 +- net/madwifi/patches/361-bmiss_handling.patch | 2 +- net/madwifi/patches/362-rssithr.patch | 2 +- net/madwifi/patches/368-sta_ie_preserve.patch | 2 +- net/madwifi/patches/370-wdsvap.patch | 22 ++++---- net/madwifi/patches/372-queue_vif.patch | 2 +- net/madwifi/patches/374-nbtt_fix.patch | 2 +- net/madwifi/patches/375-atim_tsf_update.patch | 6 +-- net/madwifi/patches/378-adhoc_crash_fix.patch | 2 +- .../patches/379-invalid_rate_fix.patch | 2 +- net/madwifi/patches/380-noderef_hack.patch | 2 +- net/madwifi/patches/381-ibss_modes.patch | 4 +- net/madwifi/patches/383-ibss_hostap.patch | 2 +- net/madwifi/patches/384-hwdetect.patch | 8 +-- net/madwifi/patches/385-antenna_fix.patch | 2 +- net/madwifi/patches/386-acl_crashfix.patch | 4 +- net/madwifi/patches/387-maxassoc.patch | 6 +-- net/madwifi/patches/389-autochannel.patch | 6 +-- net/madwifi/patches/390-frame_type.patch | 2 +- net/madwifi/patches/393-mbss_vap_auth.patch | 10 ++-- net/madwifi/patches/394-probereq.patch | 2 +- net/madwifi/patches/396-napi_ff_fix.patch | 2 +- net/madwifi/patches/400-new_hal.patch | 2 +- net/madwifi/patches/408-changeset_r3337.patch | 2 +- .../patches/411-autochannel_multi.patch | 8 +-- net/madwifi/patches/414-txpower.patch | 2 +- net/madwifi/patches/416-wprobe.patch | 4 +- net/madwifi/patches/420-diversity_fix.patch | 2 +- .../patches/421-channel_handling.patch | 16 +++--- net/madwifi/patches/424-timing.patch | 16 +++--- net/madwifi/patches/425-rc_rexmit.patch | 2 +- net/madwifi/patches/430-use_netdev_priv.patch | 34 ++++++------ net/madwifi/patches/432-netdev_ops.patch | 4 +- net/madwifi/patches/434-name-alloc-fix.patch | 2 +- .../patches/436-injection_checks.patch | 4 +- net/madwifi/patches/440-wme_cleanup.patch | 4 +- .../patches/441-fix_ibss_node_handling.patch | 4 +- net/madwifi/patches/446-single_module.patch | 6 +-- .../patches/448-beacon_handling_fixes.patch | 24 ++++----- net/madwifi/patches/451-ibss_race_fix.patch | 8 +-- .../patches/452-minstrel_no_timer.patch | 2 +- net/madwifi/patches/455-beacon_watchdog.patch | 4 +- net/madwifi/patches/459-2.6.33_compile.patch | 6 +-- .../patches/460-pci_softled_disable.patch | 4 +- net/madwifi/patches/462-fix_ap_scan.patch | 4 +- .../patches/472-remove_11n_devids.patch | 4 +- .../patches/479-deprecate-devinitdata.patch | 13 +++++ 66 files changed, 199 insertions(+), 185 deletions(-) create mode 100644 net/madwifi/patches/479-deprecate-devinitdata.patch diff --git a/net/madwifi/Makefile b/net/madwifi/Makefile index f41fb1ebd..d177cf8a7 100644 --- a/net/madwifi/Makefile +++ b/net/madwifi/Makefile @@ -195,6 +195,7 @@ MAKE_ARGS:= \ TOOLPREFIX="$(KERNEL_CROSS)" \ TOOLPATH="$(KERNEL_CROSS)" \ KERNELPATH="$(LINUX_DIR)" \ + KERNELRELEASE="$(LINUX_VERSION)" \ LDOPTS="--no-warn-mismatch " \ ATH_RATE="$(RATE_CONTROL)" \ ATH_CAP_SUPERG_COMP="$(COMPRESSION)" \ diff --git a/net/madwifi/patches/123-ccmp_checks.patch b/net/madwifi/patches/123-ccmp_checks.patch index 6178a3f78..d9a0ad4e2 100644 --- a/net/madwifi/patches/123-ccmp_checks.patch +++ b/net/madwifi/patches/123-ccmp_checks.patch @@ -59,7 +59,7 @@ } /* -@@ -475,6 +483,9 @@ ccmp_encrypt(struct ieee80211_key *key, +@@ -475,6 +483,9 @@ ccmp_encrypt(struct ieee80211_key *key, uint8_t *mic, *pos; u_int space; @@ -69,7 +69,7 @@ ctx->cc_vap->iv_stats.is_crypto_ccmp++; skb = skb0; -@@ -589,6 +600,9 @@ ccmp_decrypt(struct ieee80211_key *key, +@@ -589,6 +600,9 @@ ccmp_decrypt(struct ieee80211_key *key, uint8_t *pos, *mic; u_int space; diff --git a/net/madwifi/patches/200-no_debug.patch b/net/madwifi/patches/200-no_debug.patch index 3f46ec88b..d5f285c24 100644 --- a/net/madwifi/patches/200-no_debug.patch +++ b/net/madwifi/patches/200-no_debug.patch @@ -43,7 +43,7 @@ ic->ic_set_dfs_testmode = ath_set_dfs_testmode; ic->ic_get_dfs_testmode = ath_get_dfs_testmode; -@@ -1297,12 +1301,14 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1297,12 +1301,14 @@ ath_vap_create(struct ieee80211com *ic, /* If no default VAP debug flags are passed, allow a few to * transfer down from the driver to new VAPs so we can have load * time debugging for VAPs too. */ diff --git a/net/madwifi/patches/202-debug_variables.patch b/net/madwifi/patches/202-debug_variables.patch index 33e6efad1..041344ff0 100644 --- a/net/madwifi/patches/202-debug_variables.patch +++ b/net/madwifi/patches/202-debug_variables.patch @@ -10,7 +10,7 @@ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,52)) MODULE_PARM(ath_debug, "i"); #else -@@ -465,8 +465,8 @@ static void ath_printrxbuf(const struct +@@ -465,8 +465,8 @@ static void ath_printrxbuf(const struct static void ath_printtxbuf(const struct ath_buf *, int); #endif /* defined(AR_DEBUG) */ @@ -118,7 +118,7 @@ struct ieee80211com *ic = &sc->sc_ic; int required = 0; -@@ -366,6 +370,7 @@ static struct ath_rp *pulse_prev(struct +@@ -366,6 +370,7 @@ static struct ath_rp *pulse_prev(struct #define MR_FAIL_MIN_PERIOD 4 #define MR_FAIL_MAX_PERIOD 5 @@ -174,7 +174,7 @@ DPRINTF(sc, ATH_DEBUG_DOTHPULSES, "%s: ath_rp_record: " --- a/ath_rate/minstrel/minstrel.c +++ b/ath_rate/minstrel/minstrel.c -@@ -931,7 +931,9 @@ ath_proc_read_nodes(struct ieee80211vap +@@ -931,7 +931,9 @@ ath_proc_read_nodes(struct ieee80211vap (struct ieee80211_node_table *) &vap->iv_ic->ic_sta; unsigned int x = 0; unsigned int this_tp, this_prob, this_eprob; diff --git a/net/madwifi/patches/300-napi_polling.patch b/net/madwifi/patches/300-napi_polling.patch index bde768494..bc62d7b4a 100644 --- a/net/madwifi/patches/300-napi_polling.patch +++ b/net/madwifi/patches/300-napi_polling.patch @@ -183,7 +183,7 @@ } /* -@@ -6360,15 +6426,25 @@ ath_setdefantenna(struct ath_softc *sc, +@@ -6360,15 +6426,25 @@ ath_setdefantenna(struct ath_softc *sc, sc->sc_rxotherant = 0; } @@ -448,7 +448,7 @@ * device was too busy */ if (ni_tmp != NULL) { /* node reference was leaked */ -@@ -2322,8 +2322,8 @@ forward_mgmt_to_app(struct ieee80211vap +@@ -2322,8 +2322,8 @@ forward_mgmt_to_app(struct ieee80211vap skb1->protocol = __constant_htons(0x0019); /* ETH_P_80211_RAW */ ni_tmp = SKB_CB(skb1)->ni; diff --git a/net/madwifi/patches/305-pureg_fix.patch b/net/madwifi/patches/305-pureg_fix.patch index 8adb8a716..231ab081a 100644 --- a/net/madwifi/patches/305-pureg_fix.patch +++ b/net/madwifi/patches/305-pureg_fix.patch @@ -49,7 +49,7 @@ break; case IEEE80211_M_WDS: if (skb->len < sizeof(struct ieee80211_frame_addr4)) { -@@ -3066,7 +3063,7 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3066,7 +3063,7 @@ ieee80211_recv_mgmt(struct ieee80211vap u_int8_t *frm, *efrm; u_int8_t *ssid, *rates, *xrates, *suppchan, *wpa, *rsn, *wme, *ath; u_int8_t rate; @@ -58,7 +58,7 @@ u_int8_t qosinfo; if (ni_or_null == NULL) -@@ -3096,11 +3093,15 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3096,11 +3093,15 @@ ieee80211_recv_mgmt(struct ieee80211vap * o station mode when associated (to collect state * updates such as 802.11g slot time), or * o adhoc mode (to discover neighbors) @@ -75,7 +75,7 @@ vap->iv_stats.is_rx_mgtdiscard++; return; } -@@ -3184,6 +3185,7 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3184,6 +3185,7 @@ ieee80211_recv_mgmt(struct ieee80211vap break; } scan.erp = frm[2]; @@ -83,7 +83,7 @@ break; case IEEE80211_ELEMID_RSN: scan.rsn = frm; -@@ -3421,6 +3423,20 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3421,6 +3423,20 @@ ieee80211_recv_mgmt(struct ieee80211vap ieee80211_bg_scan(vap); return; } diff --git a/net/madwifi/patches/309-micfail_detect.patch b/net/madwifi/patches/309-micfail_detect.patch index ca4103a20..d74a390d5 100644 --- a/net/madwifi/patches/309-micfail_detect.patch +++ b/net/madwifi/patches/309-micfail_detect.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -6457,6 +6457,7 @@ ath_rx_poll(struct net_device *dev, int +@@ -6457,6 +6457,7 @@ ath_rx_poll(struct net_device *dev, int int type; u_int phyerr; u_int processed = 0, early_stop = 0; @@ -205,7 +205,7 @@ IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT, ni->ni_macaddr, "data", "%s", "demic error"); IEEE80211_NODE_STAT(ni, rx_demicfail); -@@ -4293,6 +4293,47 @@ ath_eth_type_trans(struct sk_buff *skb, +@@ -4293,6 +4293,47 @@ ath_eth_type_trans(struct sk_buff *skb, } #endif diff --git a/net/madwifi/patches/311-bssid_alloc.patch b/net/madwifi/patches/311-bssid_alloc.patch index 005a67738..8059b99e0 100644 --- a/net/madwifi/patches/311-bssid_alloc.patch +++ b/net/madwifi/patches/311-bssid_alloc.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -1354,7 +1354,7 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1354,7 +1354,7 @@ ath_vap_create(struct ieee80211com *ic, TAILQ_FOREACH(v, &ic->ic_vaps, iv_next) id_mask |= (1 << ATH_GET_VAP_ID(v->iv_myaddr)); diff --git a/net/madwifi/patches/312-erpupdate.patch b/net/madwifi/patches/312-erpupdate.patch index f878acd8f..34fae68db 100644 --- a/net/madwifi/patches/312-erpupdate.patch +++ b/net/madwifi/patches/312-erpupdate.patch @@ -15,7 +15,7 @@ /* if it is a mode change beacon for dynamic turbo case */ --- a/net80211/ieee80211_input.c +++ b/net80211/ieee80211_input.c -@@ -3431,9 +3431,12 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3431,9 +3431,12 @@ ieee80211_recv_mgmt(struct ieee80211vap /* Assume no ERP IE == 11b AP */ if ((!has_erp || (has_erp && (scan.erp & IEEE80211_ERP_NON_ERP_PRESENT))) && !(ic->ic_flags & IEEE80211_F_USEPROT)) { diff --git a/net/madwifi/patches/325-channel_spam.patch b/net/madwifi/patches/325-channel_spam.patch index e34b7a409..a4b9463a2 100644 --- a/net/madwifi/patches/325-channel_spam.patch +++ b/net/madwifi/patches/325-channel_spam.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -9792,7 +9792,9 @@ ath_getchannels(struct net_device *dev, +@@ -9792,7 +9792,9 @@ ath_getchannels(struct net_device *dev, /* * Convert HAL channels to ieee80211 ones. */ @@ -10,7 +10,7 @@ for (i = 0; i < nchan; i++) { HAL_CHANNEL *c = &chans[i]; struct ieee80211_channel *ichan = &ic->ic_channels[i]; -@@ -9819,6 +9821,7 @@ ath_getchannels(struct net_device *dev, +@@ -9819,6 +9821,7 @@ ath_getchannels(struct net_device *dev, ic->ic_chan_non_occupy[i].tv_sec = 0; ic->ic_chan_non_occupy[i].tv_usec = 0; @@ -18,7 +18,7 @@ IPRINTF(sc, "Channel %3d (%4d MHz) Max Tx Power %d dBm%s " "[%d hw %d reg] Flags%s%s%s%s%s%s%s%s%s%s%s%s%" "s%s%s%s%s%s%s%s%s%s%s%s\n", -@@ -9907,6 +9910,7 @@ ath_getchannels(struct net_device *dev, +@@ -9907,6 +9910,7 @@ ath_getchannels(struct net_device *dev, (c->privFlags & 0x0080 ? " PF & (1 << 7)" : "") ); diff --git a/net/madwifi/patches/330-beaconcal.patch b/net/madwifi/patches/330-beaconcal.patch index a338dc743..2b4895f35 100644 --- a/net/madwifi/patches/330-beaconcal.patch +++ b/net/madwifi/patches/330-beaconcal.patch @@ -79,7 +79,7 @@ sc->sc_stats.ast_be_xmit++; /* XXX per-VAP? */ } -@@ -5403,6 +5431,7 @@ ath_beacon_config(struct ath_softc *sc, +@@ -5403,6 +5431,7 @@ ath_beacon_config(struct ath_softc *sc, ath_hal_beacontimers(ah, &bs); sc->sc_imask |= HAL_INT_BMISS; ath_hal_intrset(ah, sc->sc_imask); @@ -87,7 +87,7 @@ } else { ath_hal_intrset(ah, 0); if (reset_tsf) -@@ -5414,8 +5443,11 @@ ath_beacon_config(struct ath_softc *sc, +@@ -5414,8 +5443,11 @@ ath_beacon_config(struct ath_softc *sc, */ intval |= HAL_BEACON_ENA; sc->sc_imask |= HAL_INT_SWBA; diff --git a/net/madwifi/patches/334-input.patch b/net/madwifi/patches/334-input.patch index 7c1336701..1e1b2760f 100644 --- a/net/madwifi/patches/334-input.patch +++ b/net/madwifi/patches/334-input.patch @@ -1,6 +1,6 @@ --- a/net80211/ieee80211_input.c +++ b/net80211/ieee80211_input.c -@@ -950,6 +950,9 @@ ieee80211_input_all(struct ieee80211com +@@ -950,6 +950,9 @@ ieee80211_input_all(struct ieee80211com TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { struct sk_buff *skb1; diff --git a/net/madwifi/patches/340-maxrate.patch b/net/madwifi/patches/340-maxrate.patch index ae93f02d2..4613ed3f5 100644 --- a/net/madwifi/patches/340-maxrate.patch +++ b/net/madwifi/patches/340-maxrate.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -1307,6 +1307,7 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1307,6 +1307,7 @@ ath_vap_create(struct ieee80211com *ic, vap->iv_key_set = ath_key_set; vap->iv_key_update_begin = ath_key_update_begin; vap->iv_key_update_end = ath_key_update_end; diff --git a/net/madwifi/patches/341-minrate.patch b/net/madwifi/patches/341-minrate.patch index cc04ae074..53567e2f5 100644 --- a/net/madwifi/patches/341-minrate.patch +++ b/net/madwifi/patches/341-minrate.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -1308,6 +1308,7 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1308,6 +1308,7 @@ ath_vap_create(struct ieee80211com *ic, vap->iv_key_update_begin = ath_key_update_begin; vap->iv_key_update_end = ath_key_update_end; vap->iv_maxrateindex = 0; diff --git a/net/madwifi/patches/342-performance.patch b/net/madwifi/patches/342-performance.patch index 88cec182d..8015643dc 100644 --- a/net/madwifi/patches/342-performance.patch +++ b/net/madwifi/patches/342-performance.patch @@ -73,7 +73,6 @@ - ieee80211_ref_node(SKB_CB(skb)->ni); - /* Unshare the node, decrementing users in the old skb */ - skb = skb_unshare(skb, GFP_ATOMIC); -- } + need_headroom -= skb_headroom(skb); + if (isff) + need_tailroom -= skb_tailroom(skb2); @@ -84,32 +83,42 @@ + need_headroom = 0; + if (need_tailroom < 0) + need_tailroom = 0; ++ ++ if (skb_cloned(skb) || (need_headroom > 0) || ++ (!isff && (need_tailroom > 0))) { ++ ++ if (pskb_expand_head(skb, need_headroom, need_tailroom, GFP_ATOMIC)) { ++ IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, ++ "%s: cannot expand storage (tail)\n", __func__); ++ goto error; ++ } + } --#ifdef ATH_SUPERG_FF -- if (isff) { + #ifdef ATH_SUPERG_FF + if (isff) { - if (skb == NULL) { - IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, - "%s: cannot unshare for encapsulation\n", - __func__); - vap->iv_stats.is_tx_nobuf++; - ieee80211_dev_kfree_skb(&skb2); -+ if (skb_cloned(skb) || (need_headroom > 0) || -+ (!isff && (need_tailroom > 0))) { - +- - return NULL; -+ if (pskb_expand_head(skb, need_headroom, need_tailroom, GFP_ATOMIC)) { -+ IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, -+ "%s: cannot expand storage (tail)\n", __func__); -+ goto error; - } -+ } +- } ++ inter_headroom -= skb_headroom(skb2); ++ if (inter_headroom < 0) ++ inter_headroom = 0; ++ if ((skb_cloned(skb2) || ++ (inter_headroom > 0) || (need_tailroom > 0))) { - /* first skb header */ - if (skb_headroom(skb) < need_headroom) { - struct sk_buff *tmp = skb; - skb = skb_realloc_headroom(skb, need_headroom); - if (skb == NULL) { -- IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, ++ if (pskb_expand_head(skb2, inter_headroom, ++ need_tailroom, GFP_ATOMIC)) { + IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, - "%s: cannot expand storage (head1)\n", - __func__); - vap->iv_stats.is_tx_nobuf++; @@ -121,14 +130,7 @@ - /* NB: cb[] area was copied, but not next ptr. must do that - * prior to return on success. */ - } -+#ifdef ATH_SUPERG_FF -+ if (isff) { -+ inter_headroom -= skb_headroom(skb2); -+ if (inter_headroom < 0) -+ inter_headroom = 0; -+ if ((skb_cloned(skb2) || -+ (inter_headroom > 0) || (need_tailroom > 0))) { - +- - /* second skb with header and tail adjustments possible */ - if (skb_tailroom(skb2) < need_tailroom) { - int n = 0; @@ -137,9 +139,7 @@ - if (pskb_expand_head(skb2, n, - need_tailroom - skb_tailroom(skb2), GFP_ATOMIC)) { - ieee80211_dev_kfree_skb(&skb2); -+ if (pskb_expand_head(skb2, inter_headroom, -+ need_tailroom, GFP_ATOMIC)) { - IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, +- IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, - "%s: cannot expand storage (tail2)\n", - __func__); - vap->iv_stats.is_tx_nobuf++; @@ -163,10 +163,10 @@ - } else - ieee80211_skb_copy_noderef(tmp, skb); - ieee80211_dev_kfree_skb(&tmp); -- } + } - if (skb) { - skb->next = skb2; - } +- } - return skb; + skb->next = skb2; } diff --git a/net/madwifi/patches/345-minstrel_sampling.patch b/net/madwifi/patches/345-minstrel_sampling.patch index 63fcb8a61..d89990c83 100644 --- a/net/madwifi/patches/345-minstrel_sampling.patch +++ b/net/madwifi/patches/345-minstrel_sampling.patch @@ -20,7 +20,7 @@ * multiple segments. --- a/ath_rate/minstrel/minstrel.c +++ b/ath_rate/minstrel/minstrel.c -@@ -333,15 +333,19 @@ ath_rate_findrate(struct ath_softc *sc, +@@ -333,15 +333,19 @@ ath_rate_findrate(struct ath_softc *sc, if (sn->static_rate_ndx >= 0) { ndx = sn->static_rate_ndx; } else { diff --git a/net/madwifi/patches/346-protmode_trig.patch b/net/madwifi/patches/346-protmode_trig.patch index 5b5cec6e9..830a6a852 100644 --- a/net/madwifi/patches/346-protmode_trig.patch +++ b/net/madwifi/patches/346-protmode_trig.patch @@ -13,7 +13,7 @@ TAILQ_INIT(&ic->ic_vaps); --- a/net80211/ieee80211_input.c +++ b/net80211/ieee80211_input.c -@@ -3411,14 +3411,18 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3411,14 +3411,18 @@ ieee80211_recv_mgmt(struct ieee80211vap IEEE80211_IS_CHAN_ANYG(ic->ic_curchan)) { /* Assume no ERP IE == 11b AP */ diff --git a/net/madwifi/patches/352-ani_fix.patch b/net/madwifi/patches/352-ani_fix.patch index 938d11c62..e8dce0cbe 100644 --- a/net/madwifi/patches/352-ani_fix.patch +++ b/net/madwifi/patches/352-ani_fix.patch @@ -23,7 +23,7 @@ return 0; bad3: ieee80211_ifdetach(ic); -@@ -2428,6 +2431,43 @@ ath_chan2flags(struct ieee80211_channel +@@ -2428,6 +2431,43 @@ ath_chan2flags(struct ieee80211_channel return flags; } diff --git a/net/madwifi/patches/357-bgscan_thresh.patch b/net/madwifi/patches/357-bgscan_thresh.patch index bf3483776..df0a6c29d 100644 --- a/net/madwifi/patches/357-bgscan_thresh.patch +++ b/net/madwifi/patches/357-bgscan_thresh.patch @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau } static __inline int -@@ -3258,6 +3260,25 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3258,6 +3260,25 @@ ieee80211_recv_mgmt(struct ieee80211vap /* record tsf of last beacon */ memcpy(ni->ni_tstamp.data, scan.tstamp, sizeof(ni->ni_tstamp)); diff --git a/net/madwifi/patches/360-sta_nodes.patch b/net/madwifi/patches/360-sta_nodes.patch index 8d2dd9ddd..206000123 100644 --- a/net/madwifi/patches/360-sta_nodes.patch +++ b/net/madwifi/patches/360-sta_nodes.patch @@ -219,7 +219,7 @@ Signed-off-by: Felix Fietkau return ret; --- a/net80211/ieee80211_wireless.c +++ b/net80211/ieee80211_wireless.c -@@ -514,8 +514,9 @@ ieee80211_ioctl_siwap(struct net_device +@@ -514,8 +514,9 @@ ieee80211_ioctl_siwap(struct net_device vap->iv_flags |= IEEE80211_F_DESBSSID; IEEE80211_ADDR_COPY(vap->iv_des_bssid, &ap_addr->sa_data); diff --git a/net/madwifi/patches/361-bmiss_handling.patch b/net/madwifi/patches/361-bmiss_handling.patch index 15d238f7b..b33cc3f73 100644 --- a/net/madwifi/patches/361-bmiss_handling.patch +++ b/net/madwifi/patches/361-bmiss_handling.patch @@ -7,7 +7,7 @@ Signed-off-by: Felix Fietkau --- a/net80211/ieee80211_input.c +++ b/net80211/ieee80211_input.c -@@ -3400,12 +3400,17 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3400,12 +3400,17 @@ ieee80211_recv_mgmt(struct ieee80211vap } /* WDS/Repeater: re-schedule software beacon timer for diff --git a/net/madwifi/patches/362-rssithr.patch b/net/madwifi/patches/362-rssithr.patch index 5a86833bb..7e178e13a 100644 --- a/net/madwifi/patches/362-rssithr.patch +++ b/net/madwifi/patches/362-rssithr.patch @@ -59,7 +59,7 @@ Signed-off-by: Felix Fietkau { IEEE80211_PARAM_UAPSDINFO, --- a/net80211/ieee80211_input.c +++ b/net80211/ieee80211_input.c -@@ -3261,6 +3261,19 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3261,6 +3261,19 @@ ieee80211_recv_mgmt(struct ieee80211vap memcpy(ni->ni_tstamp.data, scan.tstamp, sizeof(ni->ni_tstamp)); diff --git a/net/madwifi/patches/368-sta_ie_preserve.patch b/net/madwifi/patches/368-sta_ie_preserve.patch index fbd779ea0..4beef6222 100644 --- a/net/madwifi/patches/368-sta_ie_preserve.patch +++ b/net/madwifi/patches/368-sta_ie_preserve.patch @@ -29,7 +29,7 @@ if (se->se_fails && (jiffies - se->se_lastfail) > STA_FAILS_AGE*HZ) { --- a/net80211/ieee80211_input.c +++ b/net80211/ieee80211_input.c -@@ -3106,6 +3106,7 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3106,6 +3106,7 @@ ieee80211_recv_mgmt(struct ieee80211vap */ IEEE80211_VERIFY_LENGTH(efrm - frm, 12); memset(&scan, 0, sizeof(scan)); diff --git a/net/madwifi/patches/370-wdsvap.patch b/net/madwifi/patches/370-wdsvap.patch index 8a0e823ae..e507afb25 100644 --- a/net/madwifi/patches/370-wdsvap.patch +++ b/net/madwifi/patches/370-wdsvap.patch @@ -44,7 +44,7 @@ if (ic->ic_dev->flags & IFF_RUNNING) { /* needs to disable hardware too */ -@@ -1271,8 +1269,12 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1271,8 +1269,12 @@ ath_vap_create(struct ieee80211com *ic, } else ic_opmode = opmode; break; @@ -58,7 +58,7 @@ /* permit multiple APs and/or WDS links */ /* XXX sta+ap for repeater/bridge application */ if ((sc->sc_nvaps != 0) && (ic->ic_opmode == IEEE80211_M_STA)) -@@ -1304,7 +1306,7 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1304,7 +1306,7 @@ ath_vap_create(struct ieee80211com *ic, } avp = dev->priv; @@ -124,7 +124,7 @@ { #define IEEE80211_C_OPMODE \ (IEEE80211_C_IBSS | IEEE80211_C_HOSTAP | IEEE80211_C_AHDEMO | \ -@@ -510,9 +525,18 @@ ieee80211_vap_setup(struct ieee80211com +@@ -510,9 +525,18 @@ ieee80211_vap_setup(struct ieee80211com vap->iv_monitor_crc_errors = 0; vap->iv_monitor_phy_errors = 0; @@ -528,7 +528,7 @@ switch (cmd) { case SIOCG80211STATS: -@@ -5921,8 +5922,20 @@ ieee80211_ioctl(struct net_device *dev, +@@ -5921,8 +5922,20 @@ ieee80211_ioctl(struct net_device *dev, case SIOC80211IFDESTROY: if (!capable(CAP_NET_ADMIN)) return -EPERM; @@ -784,7 +784,7 @@ skb1 = skb; skb = NULL; } -@@ -3084,8 +3133,7 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3084,8 +3133,7 @@ ieee80211_recv_mgmt(struct ieee80211vap (vap->iv_opmode == IEEE80211_M_STA && ni->ni_associd) || (vap->iv_opmode == IEEE80211_M_IBSS) || ((subtype == IEEE80211_FC0_SUBTYPE_BEACON) && @@ -794,7 +794,7 @@ vap->iv_stats.is_rx_mgtdiscard++; return; } -@@ -3471,13 +3519,56 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3471,13 +3519,56 @@ ieee80211_recv_mgmt(struct ieee80211vap */ if (ic->ic_flags & IEEE80211_F_SCAN) { ieee80211_add_scan(vap, &scan, wh, subtype, rssi, rtsf); @@ -856,7 +856,7 @@ } else { /* * Copy data from beacon to neighbor table. -@@ -3490,6 +3581,7 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3490,6 +3581,7 @@ ieee80211_recv_mgmt(struct ieee80211vap IEEE80211_ADDR_COPY(ni->ni_bssid, wh->i_addr3); memcpy(ni->ni_tstamp.data, scan.tstamp, sizeof(ni->ni_tstamp)); @@ -1157,7 +1157,7 @@ /* calculate priority so drivers can find the TX queue */ if (ieee80211_classify(ni, skb)) { IEEE80211_NOTE(vap, IEEE80211_MSG_OUTPUT, ni, -@@ -334,20 +335,33 @@ void ieee80211_parent_queue_xmit(struct +@@ -334,20 +335,33 @@ void ieee80211_parent_queue_xmit(struct * constructing a frame as it sets i_fc[1]; other bits can * then be or'd in. */ @@ -1176,12 +1176,12 @@ + struct ieee80211_frame *wh; + int len = sizeof(struct ieee80211_frame); + int opmode = vap->iv_opmode; -+ + + if ((type & IEEE80211_FC0_TYPE_MASK) == IEEE80211_FC0_TYPE_DATA) { + if ((opmode == IEEE80211_M_STA) && + (vap->iv_flags_ext & IEEE80211_FEXT_WDS)) + opmode = IEEE80211_M_WDS; - ++ + if (opmode == IEEE80211_M_WDS) + len = sizeof(struct ieee80211_frame_addr4); + } @@ -1482,7 +1482,7 @@ } } EXPORT_SYMBOL(ieee80211_stop_running); -@@ -1342,9 +1398,9 @@ ieee80211_new_state(struct ieee80211vap +@@ -1342,9 +1398,9 @@ ieee80211_new_state(struct ieee80211vap struct ieee80211com *ic = vap->iv_ic; int rc; diff --git a/net/madwifi/patches/372-queue_vif.patch b/net/madwifi/patches/372-queue_vif.patch index 8b13abc33..aa32b1b22 100644 --- a/net/madwifi/patches/372-queue_vif.patch +++ b/net/madwifi/patches/372-queue_vif.patch @@ -24,7 +24,7 @@ vap->iv_devstats.tx_dropped++; --- a/net80211/ieee80211_output.c +++ b/net80211/ieee80211_output.c -@@ -324,9 +324,10 @@ void ieee80211_parent_queue_xmit(struct +@@ -324,9 +324,10 @@ void ieee80211_parent_queue_xmit(struct /* Dispatch the packet to the parent device */ skb->dev = vap->iv_ic->ic_dev; diff --git a/net/madwifi/patches/374-nbtt_fix.patch b/net/madwifi/patches/374-nbtt_fix.patch index 38a1c59d5..0a2982799 100644 --- a/net/madwifi/patches/374-nbtt_fix.patch +++ b/net/madwifi/patches/374-nbtt_fix.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -5486,6 +5486,9 @@ ath_beacon_config(struct ath_softc *sc, +@@ -5486,6 +5486,9 @@ ath_beacon_config(struct ath_softc *sc, ath_beacon_dturbo_config(vap, intval & ~(HAL_BEACON_RESET_TSF | HAL_BEACON_ENA)); #endif diff --git a/net/madwifi/patches/375-atim_tsf_update.patch b/net/madwifi/patches/375-atim_tsf_update.patch index d1313aa56..9381f8a81 100644 --- a/net/madwifi/patches/375-atim_tsf_update.patch +++ b/net/madwifi/patches/375-atim_tsf_update.patch @@ -81,7 +81,7 @@ /* * Reset the hardware w/o losing operational state. This is * basically a more efficient way of doing ath_stop, ath_init, -@@ -5294,6 +5361,7 @@ ath_beacon_config(struct ath_softc *sc, +@@ -5294,6 +5361,7 @@ ath_beacon_config(struct ath_softc *sc, u_int64_t tsf, hw_tsf; u_int32_t tsftu, hw_tsftu; u_int32_t intval, nexttbtt = 0; @@ -89,7 +89,7 @@ int reset_tsf = 0; if (vap == NULL) -@@ -5301,6 +5369,9 @@ ath_beacon_config(struct ath_softc *sc, +@@ -5301,6 +5369,9 @@ ath_beacon_config(struct ath_softc *sc, ni = vap->iv_bss; @@ -99,7 +99,7 @@ hw_tsf = ath_hal_gettsf64(ah); tsf = le64_to_cpu(ni->ni_tstamp.tsf); hw_tsftu = hw_tsf >> 10; -@@ -5490,15 +5561,27 @@ ath_beacon_config(struct ath_softc *sc, +@@ -5490,15 +5561,27 @@ ath_beacon_config(struct ath_softc *sc, <= ath_hal_sw_beacon_response_time) nexttbtt += intval; sc->sc_nexttbtt = nexttbtt; diff --git a/net/madwifi/patches/378-adhoc_crash_fix.patch b/net/madwifi/patches/378-adhoc_crash_fix.patch index 5b9168367..1d699a5ff 100644 --- a/net/madwifi/patches/378-adhoc_crash_fix.patch +++ b/net/madwifi/patches/378-adhoc_crash_fix.patch @@ -1,6 +1,6 @@ --- a/net80211/ieee80211_input.c +++ b/net80211/ieee80211_input.c -@@ -3529,6 +3529,11 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3529,6 +3529,11 @@ ieee80211_recv_mgmt(struct ieee80211vap if (ic->ic_flags & IEEE80211_F_SCAN) { ieee80211_add_scan(vap, &scan, wh, subtype, rssi, rtsf); } diff --git a/net/madwifi/patches/379-invalid_rate_fix.patch b/net/madwifi/patches/379-invalid_rate_fix.patch index c96c04daf..3ee2ed2c4 100644 --- a/net/madwifi/patches/379-invalid_rate_fix.patch +++ b/net/madwifi/patches/379-invalid_rate_fix.patch @@ -173,7 +173,7 @@ _MOD_INC_USE(THIS_MODULE, return NULL); osc = kmalloc(sizeof(struct minstrel_softc), GFP_ATOMIC); -@@ -963,7 +949,7 @@ ath_proc_read_nodes(struct ieee80211vap +@@ -963,7 +949,7 @@ ath_proc_read_nodes(struct ieee80211vap p += sprintf(p, "out of room for node " MAC_FMT "\n\n", MAC_ADDR(ni->ni_macaddr)); break; } diff --git a/net/madwifi/patches/380-noderef_hack.patch b/net/madwifi/patches/380-noderef_hack.patch index 7c082d414..e9397724e 100644 --- a/net/madwifi/patches/380-noderef_hack.patch +++ b/net/madwifi/patches/380-noderef_hack.patch @@ -1,6 +1,6 @@ --- a/net80211/ieee80211_node.c +++ b/net80211/ieee80211_node.c -@@ -427,8 +427,8 @@ ieee80211_reset_bss(struct ieee80211vap +@@ -427,8 +427,8 @@ ieee80211_reset_bss(struct ieee80211vap __func__, ni, MAC_ADDR(vap->iv_myaddr)); KASSERT(ni != NULL, ("unable to setup inital BSS node")); diff --git a/net/madwifi/patches/381-ibss_modes.patch b/net/madwifi/patches/381-ibss_modes.patch index 38969b053..f904ed972 100644 --- a/net/madwifi/patches/381-ibss_modes.patch +++ b/net/madwifi/patches/381-ibss_modes.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -1260,7 +1260,10 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1260,7 +1260,10 @@ ath_vap_create(struct ieee80211com *ic, case IEEE80211_M_IBSS: if ((sc->sc_nvaps != 0) && (ic->ic_opmode == IEEE80211_M_STA)) return NULL; @@ -12,7 +12,7 @@ break; case IEEE80211_M_AHDEMO: case IEEE80211_M_MONITOR: -@@ -1455,7 +1458,7 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1455,7 +1458,7 @@ ath_vap_create(struct ieee80211com *ic, * frames. Other modes carry over directly to the HAL. */ if (ic->ic_opmode == IEEE80211_M_AHDEMO) diff --git a/net/madwifi/patches/383-ibss_hostap.patch b/net/madwifi/patches/383-ibss_hostap.patch index d449c3037..a91753cc1 100644 --- a/net/madwifi/patches/383-ibss_hostap.patch +++ b/net/madwifi/patches/383-ibss_hostap.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -1452,6 +1452,23 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1452,6 +1452,23 @@ ath_vap_create(struct ieee80211com *ic, sc->sc_nstavaps++; else if (opmode == IEEE80211_M_MONITOR) sc->sc_nmonvaps++; diff --git a/net/madwifi/patches/384-hwdetect.patch b/net/madwifi/patches/384-hwdetect.patch index 3b67615b0..da1fe2d09 100644 --- a/net/madwifi/patches/384-hwdetect.patch +++ b/net/madwifi/patches/384-hwdetect.patch @@ -33,7 +33,7 @@ /* Allocate space for dynamically determined maximum VAP count */ sc->sc_bslot = kmalloc(ath_maxvaps * sizeof(struct ieee80211vap*), GFP_KERNEL); -@@ -1508,6 +1520,29 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1508,6 +1520,29 @@ ath_vap_create(struct ieee80211com *ic, return vap; } @@ -226,7 +226,7 @@ #include #include -@@ -181,12 +182,32 @@ exit_ath_wmac(u_int16_t wlanNum, struct +@@ -181,12 +182,32 @@ exit_ath_wmac(u_int16_t wlanNum, struct return 0; } @@ -278,7 +278,7 @@ bad4: --- a/ath/if_ath_pci.c +++ b/ath/if_ath_pci.c -@@ -123,6 +123,33 @@ static u16 ath_devidmap[][2] = { +@@ -125,6 +125,33 @@ static u16 ath_devidmap[][2] = { { 0xff1a, 0x001a } }; @@ -312,7 +312,7 @@ static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { -@@ -257,6 +284,10 @@ ath_pci_probe(struct pci_dev *pdev, cons +@@ -259,6 +286,10 @@ ath_pci_probe(struct pci_dev *pdev, cons printk(KERN_INFO "%s: %s: %s: mem=0x%lx, irq=%d\n", dev_info, dev->name, athname ? athname : "Atheros ???", phymem, dev->irq); diff --git a/net/madwifi/patches/385-antenna_fix.patch b/net/madwifi/patches/385-antenna_fix.patch index 16c7d95c7..e3899643b 100644 --- a/net/madwifi/patches/385-antenna_fix.patch +++ b/net/madwifi/patches/385-antenna_fix.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -6669,6 +6669,7 @@ ath_setdefantenna(struct ath_softc *sc, +@@ -6669,6 +6669,7 @@ ath_setdefantenna(struct ath_softc *sc, struct ath_hal *ah = sc->sc_ah; /* XXX block beacon interrupts */ diff --git a/net/madwifi/patches/386-acl_crashfix.patch b/net/madwifi/patches/386-acl_crashfix.patch index 04a1ec911..f4ef4ca27 100644 --- a/net/madwifi/patches/386-acl_crashfix.patch +++ b/net/madwifi/patches/386-acl_crashfix.patch @@ -37,7 +37,7 @@ Signed-off-by: Sebastian Gottschall return NULL; } -@@ -176,11 +183,11 @@ acl_add(struct ieee80211vap *vap, const +@@ -176,11 +183,11 @@ acl_add(struct ieee80211vap *vap, const return -ENOMEM; } @@ -51,7 +51,7 @@ Signed-off-by: Sebastian Gottschall FREE(new, M_80211_ACL); IEEE80211_DPRINTF(vap, IEEE80211_MSG_ACL, "ACL: add " MAC_FMT " failed, already present\n", -@@ -191,7 +198,7 @@ acl_add(struct ieee80211vap *vap, const +@@ -191,7 +198,7 @@ acl_add(struct ieee80211vap *vap, const IEEE80211_ADDR_COPY(new->acl_macaddr, mac); TAILQ_INSERT_TAIL(&as->as_list, new, acl_list); LIST_INSERT_HEAD(&as->as_hash[hash], new, acl_hash); diff --git a/net/madwifi/patches/387-maxassoc.patch b/net/madwifi/patches/387-maxassoc.patch index 79e5b2f4f..df2b7fd1f 100644 --- a/net/madwifi/patches/387-maxassoc.patch +++ b/net/madwifi/patches/387-maxassoc.patch @@ -56,14 +56,14 @@ /* --- a/net80211/ieee80211_input.c +++ b/net80211/ieee80211_input.c -@@ -4020,7 +4020,26 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -4020,7 +4020,26 @@ ieee80211_recv_mgmt(struct ieee80211vap vap->iv_stats.is_rx_assoc_norate++; return; } + if (vap->iv_max_nodes > 0) { + unsigned int active_nodes = 0; + struct ieee80211_node *tni; - ++ + IEEE80211_NODE_TABLE_LOCK_IRQ(&ic->ic_sta); + TAILQ_FOREACH(tni, &ic->ic_sta.nt_node, ni_list) { + if (tni->ni_vap != vap) @@ -73,7 +73,7 @@ + active_nodes++; + } + IEEE80211_NODE_TABLE_UNLOCK_IRQ(&ic->ic_sta); -+ + + if (active_nodes >= vap->iv_max_nodes) { + /* too many nodes connected */ + ieee80211_node_leave(ni); diff --git a/net/madwifi/patches/389-autochannel.patch b/net/madwifi/patches/389-autochannel.patch index 548f09e7d..06c5c12a7 100644 --- a/net/madwifi/patches/389-autochannel.patch +++ b/net/madwifi/patches/389-autochannel.patch @@ -16,7 +16,7 @@ sc->sc_curchan.channel = ic->ic_curchan->ic_freq; sc->sc_curchan.channelFlags = ath_chan2flags(ic->ic_curchan); if (!ath_hal_reset(ah, sc->sc_opmode, &sc->sc_curchan, AH_FALSE, &status)) { -@@ -2914,6 +2916,48 @@ ath_hw_check_atim(struct ath_softc *sc, +@@ -2914,6 +2916,48 @@ ath_hw_check_atim(struct ath_softc *sc, return 0; } @@ -118,7 +118,7 @@ #define IEEE80211_CHAN_MAX 255 --- a/net80211/ieee80211_scan_ap.c +++ b/net80211/ieee80211_scan_ap.c -@@ -417,6 +417,19 @@ pc_cmp_rssi(struct ap_state *as, struct +@@ -417,6 +417,19 @@ pc_cmp_rssi(struct ap_state *as, struct /* This function must be invoked with locks acquired */ static int @@ -196,7 +196,7 @@ } if (best != NULL) { -@@ -599,6 +583,9 @@ ap_end(struct ieee80211_scan_state *ss, +@@ -599,6 +583,9 @@ ap_end(struct ieee80211_scan_state *ss, ("wrong opmode %u", vap->iv_opmode)); ic = vap->iv_ic; diff --git a/net/madwifi/patches/390-frame_type.patch b/net/madwifi/patches/390-frame_type.patch index 6de01102c..0987f7c5d 100644 --- a/net/madwifi/patches/390-frame_type.patch +++ b/net/madwifi/patches/390-frame_type.patch @@ -1,6 +1,6 @@ --- a/net80211/ieee80211_input.c +++ b/net80211/ieee80211_input.c -@@ -4443,7 +4443,9 @@ ath_eth_type_trans(struct sk_buff *skb, +@@ -4443,7 +4443,9 @@ ath_eth_type_trans(struct sk_buff *skb, if (memcmp(eth->h_dest, dev->dev_addr, ETH_ALEN)) skb->pkt_type = PACKET_OTHERHOST; diff --git a/net/madwifi/patches/393-mbss_vap_auth.patch b/net/madwifi/patches/393-mbss_vap_auth.patch index a2637cccb..0e3ecaf69 100644 --- a/net/madwifi/patches/393-mbss_vap_auth.patch +++ b/net/madwifi/patches/393-mbss_vap_auth.patch @@ -291,7 +291,7 @@ if (TAILQ_NEXT(vap, iv_next) != NULL) { skb1 = skb_copy(skb, GFP_ATOMIC); if (skb1 == NULL) { -@@ -950,8 +957,12 @@ ieee80211_input_all(struct ieee80211com +@@ -950,8 +957,12 @@ ieee80211_input_all(struct ieee80211com skb1 = skb; skb = NULL; } @@ -319,7 +319,7 @@ !ni1->ni_subif && ni1 != vap->iv_bss) { -@@ -3520,6 +3529,7 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3520,6 +3529,7 @@ ieee80211_recv_mgmt(struct ieee80211vap (vap->iv_opmode == IEEE80211_M_WDS)) && (scan.capinfo & IEEE80211_CAPINFO_ESS))) { struct ieee80211vap *avp = NULL; @@ -327,7 +327,7 @@ int found = 0; IEEE80211_LOCK_IRQ(vap->iv_ic); -@@ -3553,10 +3563,12 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3553,10 +3563,12 @@ ieee80211_recv_mgmt(struct ieee80211vap ni->ni_associd |= 0xc000; avp->iv_wdsnode = ieee80211_ref_node(ni); IEEE80211_UNLOCK_IRQ(ic); @@ -341,7 +341,7 @@ } else { /* * Copy data from beacon to neighbor table. -@@ -3595,6 +3607,8 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3595,6 +3607,8 @@ ieee80211_recv_mgmt(struct ieee80211vap ni->ni_rssi = rssi; ni->ni_rtsf = rtsf; ni->ni_last_rx = jiffies; @@ -363,7 +363,7 @@ (const struct ieee80211_frame_min *)skb->data); if (ni == NULL) { DPRINTF(sc, ATH_DEBUG_BEACON, "Dropping; node unknown.\n"); -@@ -6746,7 +6745,9 @@ ath_rx_poll(struct net_device *dev, int +@@ -6746,7 +6745,9 @@ ath_rx_poll(struct net_device *dev, int struct ath_desc *ds; struct ath_rx_status *rs; struct sk_buff *skb = NULL; diff --git a/net/madwifi/patches/394-probereq.patch b/net/madwifi/patches/394-probereq.patch index 706d5a5ac..c754bfa9f 100644 --- a/net/madwifi/patches/394-probereq.patch +++ b/net/madwifi/patches/394-probereq.patch @@ -1,6 +1,6 @@ --- a/net80211/ieee80211_input.c +++ b/net80211/ieee80211_input.c -@@ -3621,6 +3621,8 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3621,6 +3621,8 @@ ieee80211_recv_mgmt(struct ieee80211vap vap->iv_stats.is_rx_mgtdiscard++; return; } diff --git a/net/madwifi/patches/396-napi_ff_fix.patch b/net/madwifi/patches/396-napi_ff_fix.patch index ca35d4cca..f84c4b4d7 100644 --- a/net/madwifi/patches/396-napi_ff_fix.patch +++ b/net/madwifi/patches/396-napi_ff_fix.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -6734,10 +6734,10 @@ ath_rx_poll(struct net_device *dev, int +@@ -6734,10 +6734,10 @@ ath_rx_poll(struct net_device *dev, int #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) struct ath_softc *sc = container_of(napi, struct ath_softc, sc_napi); struct net_device *dev = sc->sc_dev; diff --git a/net/madwifi/patches/400-new_hal.patch b/net/madwifi/patches/400-new_hal.patch index 12a59687b..621bd0f82 100644 --- a/net/madwifi/patches/400-new_hal.patch +++ b/net/madwifi/patches/400-new_hal.patch @@ -15,7 +15,7 @@ /* * Check if the MAC has multi-rate retry support. * We do this by trying to setup a fake extended -@@ -7568,7 +7576,7 @@ ath_txq_setup(struct ath_softc *sc, int +@@ -7568,7 +7576,7 @@ ath_txq_setup(struct ath_softc *sc, int if (qtype == HAL_TX_QUEUE_UAPSD) qi.tqi_qflags = HAL_TXQ_TXDESCINT_ENABLE; else diff --git a/net/madwifi/patches/408-changeset_r3337.patch b/net/madwifi/patches/408-changeset_r3337.patch index 53e76a9e8..c78daf4c6 100644 --- a/net/madwifi/patches/408-changeset_r3337.patch +++ b/net/madwifi/patches/408-changeset_r3337.patch @@ -10,7 +10,7 @@ Please let us know if you think your name should be mentioned here! --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -3147,7 +3147,7 @@ ath_tx_startraw(struct net_device *dev, +@@ -3147,7 +3147,7 @@ ath_tx_startraw(struct net_device *dev, struct ath_softc *sc = dev->priv; struct ath_hal *ah = sc->sc_ah; struct ieee80211_phy_params *ph = (struct ieee80211_phy_params *) diff --git a/net/madwifi/patches/411-autochannel_multi.patch b/net/madwifi/patches/411-autochannel_multi.patch index d05c447f7..6e6d678fd 100644 --- a/net/madwifi/patches/411-autochannel_multi.patch +++ b/net/madwifi/patches/411-autochannel_multi.patch @@ -307,7 +307,7 @@ } -@@ -575,6 +583,7 @@ ap_end(struct ieee80211_scan_state *ss, +@@ -575,6 +583,7 @@ ap_end(struct ieee80211_scan_state *ss, struct ap_state *as = ss->ss_priv; struct ieee80211_channel *bestchan = NULL; struct ieee80211com *ic = NULL; @@ -315,7 +315,7 @@ int res = 1; SCAN_AP_LOCK_IRQ(as); -@@ -586,8 +595,11 @@ ap_end(struct ieee80211_scan_state *ss, +@@ -586,8 +595,11 @@ ap_end(struct ieee80211_scan_state *ss, /* record stats for the channel that was scanned last */ ic->ic_set_channel(ic); @@ -327,7 +327,7 @@ if (ss->ss_last > 0) { /* no suitable channel, should not happen */ printk(KERN_ERR "%s: %s: no suitable channel! " -@@ -606,6 +618,7 @@ ap_end(struct ieee80211_scan_state *ss, +@@ -606,6 +618,7 @@ ap_end(struct ieee80211_scan_state *ss, bestchan->ic_freq, bestchan->ic_flags & ~IEEE80211_CHAN_TURBO)) == NULL) { /* should never happen ?? */ @@ -335,7 +335,7 @@ SCAN_AP_UNLOCK_IRQ_EARLY(as); return 0; } -@@ -618,6 +631,9 @@ ap_end(struct ieee80211_scan_state *ss, +@@ -618,6 +631,9 @@ ap_end(struct ieee80211_scan_state *ss, as->as_action = action; as->as_selbss = se; diff --git a/net/madwifi/patches/414-txpower.patch b/net/madwifi/patches/414-txpower.patch index 3c18bd6fe..6b33b8b1c 100644 --- a/net/madwifi/patches/414-txpower.patch +++ b/net/madwifi/patches/414-txpower.patch @@ -180,7 +180,7 @@ static void ath_poll_disable(struct net_device *dev); static void ath_poll_enable(struct net_device *dev); -@@ -3168,7 +3167,7 @@ ath_tx_startraw(struct net_device *dev, +@@ -3168,7 +3167,7 @@ ath_tx_startraw(struct net_device *dev, try0 = ph->try0; rt = sc->sc_currates; txrate = dot11_to_ratecode(sc, rt, ph->rate0); diff --git a/net/madwifi/patches/416-wprobe.patch b/net/madwifi/patches/416-wprobe.patch index 0b378d7e2..6c871f425 100644 --- a/net/madwifi/patches/416-wprobe.patch +++ b/net/madwifi/patches/416-wprobe.patch @@ -444,7 +444,7 @@ static int beacon_cal = 1; static const struct ath_hw_detect generic_hw_info = { -@@ -1525,6 +1526,7 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1525,6 +1526,7 @@ ath_vap_create(struct ieee80211com *ic, ath_hal_intrset(ah, sc->sc_imask); } @@ -509,7 +509,7 @@ if (bf->bf_skb->priority == WME_AC_VO || bf->bf_skb->priority == WME_AC_VI) ni->ni_ic->ic_wme.wme_hipri_traffic++; -@@ -10111,6 +10124,7 @@ ath_newassoc(struct ieee80211_node *ni, +@@ -10111,6 +10124,7 @@ ath_newassoc(struct ieee80211_node *ni, struct ath_softc *sc = ic->ic_dev->priv; sc->sc_rc->ops->newassoc(sc, ATH_NODE(ni), isnew); diff --git a/net/madwifi/patches/420-diversity_fix.patch b/net/madwifi/patches/420-diversity_fix.patch index 90bcd0e16..4a5c0b093 100644 --- a/net/madwifi/patches/420-diversity_fix.patch +++ b/net/madwifi/patches/420-diversity_fix.patch @@ -54,7 +54,7 @@ if (bfaddr != 0) { /* * Stop any current DMA and put the new frame(s) on the queue. -@@ -6734,9 +6708,8 @@ ath_setdefantenna(struct ath_softc *sc, +@@ -6734,9 +6708,8 @@ ath_setdefantenna(struct ath_softc *sc, { struct ath_hal *ah = sc->sc_ah; diff --git a/net/madwifi/patches/421-channel_handling.patch b/net/madwifi/patches/421-channel_handling.patch index 2a8ec27ce..8424321d7 100644 --- a/net/madwifi/patches/421-channel_handling.patch +++ b/net/madwifi/patches/421-channel_handling.patch @@ -8,7 +8,7 @@ static void ath_updateslot(struct net_device *); static int ath_beaconq_setup(struct ath_softc *); static int ath_beacon_alloc(struct ath_softc *, struct ieee80211_node *); -@@ -240,7 +239,7 @@ static void ath_setup_stationkey(struct +@@ -240,7 +239,7 @@ static void ath_setup_stationkey(struct static void ath_setup_stationwepkey(struct ieee80211_node *); static void ath_setup_keycacheslot(struct ath_softc *, struct ieee80211_node *); static void ath_newassoc(struct ieee80211_node *, int); @@ -263,7 +263,7 @@ ath_rate_setup(dev, mode); ath_setcurmode(sc, mode); -@@ -10124,8 +10142,7 @@ ath_newassoc(struct ieee80211_node *ni, +@@ -10124,8 +10142,7 @@ ath_newassoc(struct ieee80211_node *ni, } static int @@ -273,7 +273,7 @@ { struct ath_softc *sc = dev->priv; struct ieee80211com *ic = &sc->sc_ic; -@@ -10139,17 +10156,31 @@ ath_getchannels(struct net_device *dev, +@@ -10139,17 +10156,31 @@ ath_getchannels(struct net_device *dev, EPRINTF(sc, "Insufficient memory for channel table!\n"); return -ENOMEM; } @@ -674,7 +674,7 @@ .procname = "rp", .mode = 0200, .proc_handler = ath_sysctl_halparam, -@@ -11669,13 +11801,6 @@ static ctl_table ath_static_sysctls[] = +@@ -11669,13 +11801,6 @@ static ctl_table ath_static_sysctls[] = }, #endif { .ctl_name = CTL_AUTO, @@ -688,7 +688,7 @@ .procname = "maxvaps", .mode = 0444, .data = &ath_maxvaps, -@@ -11683,13 +11808,6 @@ static ctl_table ath_static_sysctls[] = +@@ -11683,13 +11808,6 @@ static ctl_table ath_static_sysctls[] = .proc_handler = proc_dointvec }, { .ctl_name = CTL_AUTO, @@ -1109,7 +1109,7 @@ nrs = &ni->ni_rates; fixedrate = IEEE80211_FIXED_RATE_NONE; for (i = 0; i < nrs->rs_nrates;) { -@@ -1407,6 +1407,7 @@ ieee80211_new_state(struct ieee80211vap +@@ -1407,6 +1407,7 @@ ieee80211_new_state(struct ieee80211vap IEEE80211_VAPS_UNLOCK_IRQ(ic); return rc; } @@ -1294,7 +1294,7 @@ return best; } -@@ -609,6 +611,7 @@ ap_end(struct ieee80211_scan_state *ss, +@@ -609,6 +611,7 @@ ap_end(struct ieee80211_scan_state *ss, res = 1; /* Do NOT restart scan */ } else { struct ieee80211_scan_entry se; @@ -1302,7 +1302,7 @@ /* XXX: notify all VAPs? */ /* if this is a dynamic turbo frequency , start with normal * mode first */ -@@ -623,6 +626,11 @@ ap_end(struct ieee80211_scan_state *ss, +@@ -623,6 +626,11 @@ ap_end(struct ieee80211_scan_state *ss, return 0; } } diff --git a/net/madwifi/patches/424-timing.patch b/net/madwifi/patches/424-timing.patch index 8369db618..a8b82fa10 100644 --- a/net/madwifi/patches/424-timing.patch +++ b/net/madwifi/patches/424-timing.patch @@ -196,12 +196,10 @@ static inline void ath_hal_beaconinit(struct ath_hal *ah, u_int32_t nexttbtt, u_int32_t intval) { -@@ -839,6 +850,17 @@ static inline HAL_BOOL ath_hal_setslotti - ath_hal_set_function(NULL); - ATH_HAL_UNLOCK_IRQ(ah->ah_sc); +@@ -841,6 +852,17 @@ static inline HAL_BOOL ath_hal_setslotti return ret; -+} -+ + } + +static inline HAL_BOOL ath_hal_seteifstime(struct ath_hal *ah, u_int a1) +{ + HAL_BOOL ret; @@ -211,9 +209,11 @@ + ath_hal_set_function(NULL); + ATH_HAL_UNLOCK_IRQ(ah->ah_sc); + return ret; - } - ++} ++ static inline void ath_hal_setledstate(struct ath_hal *ah, HAL_LED_STATE a1) + { + ATH_HAL_LOCK_IRQ(ah->ah_sc); --- a/ath/if_athvar.h +++ b/ath/if_athvar.h @@ -613,6 +613,15 @@ struct ath_rp { @@ -446,7 +446,7 @@ { --- a/ath_rate/sample/sample.c +++ b/ath_rate/sample/sample.c -@@ -137,92 +137,6 @@ rate_to_ndx(struct sample_node *sn, int +@@ -137,92 +137,6 @@ rate_to_ndx(struct sample_node *sn, int return -1; } diff --git a/net/madwifi/patches/425-rc_rexmit.patch b/net/madwifi/patches/425-rc_rexmit.patch index 252767a8c..10a6f9c51 100644 --- a/net/madwifi/patches/425-rc_rexmit.patch +++ b/net/madwifi/patches/425-rc_rexmit.patch @@ -303,7 +303,7 @@ /* don't use a bit-rate that has been failing */ if (sn->stats[size_bin][x].successive_failures > 3) continue; -@@ -234,10 +230,6 @@ pick_sample_ndx(struct sample_node *sn, +@@ -234,10 +230,6 @@ pick_sample_ndx(struct sample_node *sn, if (sn->rates[ndx].rate > 22 && ndx > current_ndx + 2) continue; diff --git a/net/madwifi/patches/430-use_netdev_priv.patch b/net/madwifi/patches/430-use_netdev_priv.patch index 3f65424a5..7a5ae847e 100644 --- a/net/madwifi/patches/430-use_netdev_priv.patch +++ b/net/madwifi/patches/430-use_netdev_priv.patch @@ -67,7 +67,7 @@ struct ath_hal *ah = sc->sc_ah; struct net_device *dev; struct ath_vap *avp; -@@ -1344,7 +1344,7 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1344,7 +1344,7 @@ ath_vap_create(struct ieee80211com *ic, return NULL; } @@ -175,7 +175,7 @@ struct ieee80211com *ic = &sc->sc_ic; struct ath_hal *ah = sc->sc_ah; struct ieee80211_channel *c; -@@ -3164,7 +3164,7 @@ dot11_to_ratecode(struct ath_softc *sc, +@@ -3164,7 +3164,7 @@ dot11_to_ratecode(struct ath_softc *sc, static int ath_tx_startraw(struct net_device *dev, struct ath_buf *bf, struct sk_buff *skb) { @@ -372,7 +372,7 @@ #ifdef AR_DEBUG struct ieee80211_frame *wh = (struct ieee80211_frame *)skb->data; #endif -@@ -6780,7 +6780,7 @@ ath_rx_poll(struct net_device *dev, int +@@ -6780,7 +6780,7 @@ ath_rx_poll(struct net_device *dev, int struct net_device *dev = sc->sc_dev; int rx_limit = budget; #else @@ -543,7 +543,7 @@ ieee80211_keyix_t keyix; keyix = ath_key_alloc(vap, &ni->ni_ucastkey); -@@ -10177,7 +10177,7 @@ ath_newassoc(struct ieee80211_node *ni, +@@ -10177,7 +10177,7 @@ ath_newassoc(struct ieee80211_node *ni, { struct ieee80211com *ic = ni->ni_ic; struct ieee80211vap *vap = ni->ni_vap; @@ -552,7 +552,7 @@ sc->sc_rc->ops->newassoc(sc, ATH_NODE(ni), isnew); ath_wprobe_node_join(ni->ni_vap, ni); -@@ -10208,7 +10208,7 @@ ath_newassoc(struct ieee80211_node *ni, +@@ -10208,7 +10208,7 @@ ath_newassoc(struct ieee80211_node *ni, static int ath_getchannels(struct net_device *dev) { @@ -723,7 +723,7 @@ if (sc->sc_txcont_rate != new_rate) { /* NOTE: This value is sanity checked and dropped down to * closest rate in txcont_on. */ -@@ -12539,7 +12539,7 @@ ath_set_txcont_rate(struct ieee80211com +@@ -12539,7 +12539,7 @@ ath_set_txcont_rate(struct ieee80211com ath_get_txcont_rate(struct ieee80211com *ic) { struct net_device *dev = ic->ic_dev; @@ -786,7 +786,7 @@ ath_hal_dump_map(sc->sc_ah); return 0; } -@@ -12724,7 +12724,7 @@ ath_rcv_dev_event(struct notifier_block +@@ -12724,7 +12724,7 @@ ath_rcv_dev_event(struct notifier_block void *ptr) { struct net_device *dev = (struct net_device *)ptr; @@ -842,7 +842,7 @@ #endif /* #ifdef ATH_REVERSE_ENGINEERING */ --- a/ath/if_ath_pci.c +++ b/ath/if_ath_pci.c -@@ -226,7 +226,7 @@ ath_pci_probe(struct pci_dev *pdev, cons +@@ -228,7 +228,7 @@ ath_pci_probe(struct pci_dev *pdev, cons printk(KERN_ERR "%s: no memory for device state\n", dev_info); goto bad2; } @@ -851,7 +851,7 @@ sc->aps_sc.sc_dev = dev; sc->aps_sc.sc_iobase = mem; -@@ -309,7 +309,7 @@ static void +@@ -311,7 +311,7 @@ static void ath_pci_remove(struct pci_dev *pdev) { struct net_device *dev = pci_get_drvdata(pdev); @@ -860,7 +860,7 @@ ath_detach(dev); if (dev->irq) -@@ -327,7 +327,7 @@ ath_pci_suspend(struct pci_dev *pdev, pm +@@ -329,7 +329,7 @@ ath_pci_suspend(struct pci_dev *pdev, pm struct net_device *dev = pci_get_drvdata(pdev); ath_suspend(dev); @@ -869,7 +869,7 @@ pci_disable_device(pdev); return pci_set_power_state(pdev, PCI_D3hot); } -@@ -344,7 +344,7 @@ ath_pci_resume(struct pci_dev *pdev) +@@ -346,7 +346,7 @@ ath_pci_resume(struct pci_dev *pdev) return err; /* XXX - Should this return nonzero on fail? */ @@ -938,7 +938,7 @@ } } -@@ -822,7 +822,7 @@ ath_proc_read_nodes(struct ieee80211vap +@@ -822,7 +822,7 @@ ath_proc_read_nodes(struct ieee80211vap unsigned int x = 0; unsigned int this_tp, this_prob, this_eprob; #ifdef AR_DEBUG @@ -1002,7 +1002,7 @@ #define skb_tail_pointer(_skb) ((_skb)->tail) --- a/net80211/ieee80211.c +++ b/net80211/ieee80211.c -@@ -458,7 +458,7 @@ ieee80211_vap_setup(struct ieee80211com +@@ -458,7 +458,7 @@ ieee80211_vap_setup(struct ieee80211com #define IEEE80211_C_OPMODE \ (IEEE80211_C_IBSS | IEEE80211_C_HOSTAP | IEEE80211_C_AHDEMO | \ IEEE80211_C_MONITOR) @@ -1029,7 +1029,7 @@ struct ieee80211vap *vap; struct ifmedia_entry *ime = ic->ic_media.ifm_cur; enum ieee80211_phymode newphymode; -@@ -1511,7 +1511,7 @@ checkrate(struct ieee80211com *ic, enum +@@ -1511,7 +1511,7 @@ checkrate(struct ieee80211com *ic, enum int ieee80211_media_change(struct net_device *dev) { @@ -1552,7 +1552,7 @@ struct ieee80211com *ic = vap->iv_ic; params[0] = ic->ic_dump_hal_map(ic); return 0; -@@ -1545,7 +1545,7 @@ ieee80211_ioctl_radar(struct net_device +@@ -1545,7 +1545,7 @@ ieee80211_ioctl_radar(struct net_device void *w, char *extra) { int *params = (int*) extra; @@ -1633,7 +1633,7 @@ struct ieee80211com *ic = vap->iv_ic; struct ifreq ifr; char s[6]; /* big enough for ``11adt'' */ -@@ -2222,10 +2222,10 @@ ieee80211_setathcap(struct ieee80211vap +@@ -2222,10 +2222,10 @@ ieee80211_setathcap(struct ieee80211vap static int ieee80211_set_turbo(struct net_device *dev, int flag) { @@ -1862,7 +1862,7 @@ struct ieee80211com *ic = vap->iv_ic; struct ieee80211_node *ni; u_int8_t macaddr[IEEE80211_ADDR_LEN]; -@@ -4428,7 +4428,7 @@ get_scan_result(void *arg, const struct +@@ -4428,7 +4428,7 @@ get_scan_result(void *arg, const struct static int ieee80211_ioctl_getscanresults(struct net_device *dev, struct iwreq *iwr) { diff --git a/net/madwifi/patches/432-netdev_ops.patch b/net/madwifi/patches/432-netdev_ops.patch index af829b164..2e542bfec 100644 --- a/net/madwifi/patches/432-netdev_ops.patch +++ b/net/madwifi/patches/432-netdev_ops.patch @@ -53,7 +53,7 @@ http://madwifi-project.org/changeset/4005 unregister_netdev(dev); return 0; } -@@ -12732,8 +12749,13 @@ ath_rcv_dev_event(struct notifier_block +@@ -12732,8 +12749,13 @@ ath_rcv_dev_event(struct notifier_block struct net_device *dev = (struct net_device *)ptr; struct ath_softc *sc = (struct ath_softc *)netdev_priv(dev); @@ -88,7 +88,7 @@ http://madwifi-project.org/changeset/4005 int ieee80211_vap_setup(struct ieee80211com *ic, struct net_device *dev, const char *name, int opmode, int flags, struct ieee80211vap *master) -@@ -471,16 +483,21 @@ ieee80211_vap_setup(struct ieee80211com +@@ -471,16 +483,21 @@ ieee80211_vap_setup(struct ieee80211com } else strncpy(dev->name, name, sizeof(dev->name)); } diff --git a/net/madwifi/patches/434-name-alloc-fix.patch b/net/madwifi/patches/434-name-alloc-fix.patch index ab277630d..bc96e5c81 100644 --- a/net/madwifi/patches/434-name-alloc-fix.patch +++ b/net/madwifi/patches/434-name-alloc-fix.patch @@ -14,7 +14,7 @@ if (((devid & AR5315_REV_MAJ_M) == AR5315_REV_MAJ) || --- a/ath/if_ath_pci.c +++ b/ath/if_ath_pci.c -@@ -236,6 +236,11 @@ ath_pci_probe(struct pci_dev *pdev, cons +@@ -238,6 +238,11 @@ ath_pci_probe(struct pci_dev *pdev, cons */ sc->aps_sc.sc_invalid = 1; diff --git a/net/madwifi/patches/436-injection_checks.patch b/net/madwifi/patches/436-injection_checks.patch index 274873111..7bdd82c0f 100644 --- a/net/madwifi/patches/436-injection_checks.patch +++ b/net/madwifi/patches/436-injection_checks.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -3199,7 +3199,13 @@ ath_tx_startraw(struct net_device *dev, +@@ -3199,7 +3199,13 @@ ath_tx_startraw(struct net_device *dev, struct ieee80211_frame *wh; wh = (struct ieee80211_frame *)skb->data; @@ -14,7 +14,7 @@ rt = sc->sc_currates; txrate = dot11_to_ratecode(sc, rt, ph->rate0); power = ph->power > 63 ? 63 : ph->power; -@@ -3224,7 +3230,8 @@ ath_tx_startraw(struct net_device *dev, +@@ -3224,7 +3230,8 @@ ath_tx_startraw(struct net_device *dev, rt = sc->sc_currates; KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode)); diff --git a/net/madwifi/patches/440-wme_cleanup.patch b/net/madwifi/patches/440-wme_cleanup.patch index bb81ac7f8..d6c1b2683 100644 --- a/net/madwifi/patches/440-wme_cleanup.patch +++ b/net/madwifi/patches/440-wme_cleanup.patch @@ -36,13 +36,13 @@ struct ieee80211vap *vap = ni->ni_vap; - struct ether_header *eh = (struct ether_header *) skb->data; - int v_wme_ac = 0, d_wme_ac = 0; - +- - /* default priority */ - skb->priority = WME_AC_BE; - - if (!(ni->ni_flags & IEEE80211_NODE_QOS)) - return 0; -- + - /* - * If node has a vlan tag then all traffic - * to it must have a matching vlan id. diff --git a/net/madwifi/patches/441-fix_ibss_node_handling.patch b/net/madwifi/patches/441-fix_ibss_node_handling.patch index 20d59de26..b12930fbd 100644 --- a/net/madwifi/patches/441-fix_ibss_node_handling.patch +++ b/net/madwifi/patches/441-fix_ibss_node_handling.patch @@ -44,7 +44,7 @@ if (dir != IEEE80211_FC1_DIR_NODS) { IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY, wh, "data", "invalid dir 0x%x", dir); -@@ -3558,6 +3563,11 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3558,6 +3563,11 @@ ieee80211_recv_mgmt(struct ieee80211vap } else if ((vap->iv_opmode == IEEE80211_M_WDS) && vap->iv_wdsnode) { found = 1; ni = ni_or_null = vap->iv_wdsnode; @@ -56,7 +56,7 @@ } IEEE80211_UNLOCK_IRQ(vap->iv_ic); -@@ -3686,19 +3696,8 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3686,19 +3696,8 @@ ieee80211_recv_mgmt(struct ieee80211vap vap->iv_stats.is_rx_ssidmismatch++; /*XXX*/ return; } diff --git a/net/madwifi/patches/446-single_module.patch b/net/madwifi/patches/446-single_module.patch index b2898ca7e..ba4054549 100644 --- a/net/madwifi/patches/446-single_module.patch +++ b/net/madwifi/patches/446-single_module.patch @@ -89,7 +89,7 @@ { --- a/net80211/ieee80211_crypto_ccmp.c +++ b/net80211/ieee80211_crypto_ccmp.c -@@ -686,6 +686,8 @@ ccmp_decrypt(struct ieee80211_key *key, +@@ -686,6 +686,8 @@ ccmp_decrypt(struct ieee80211_key *key, } #undef CCMP_DECRYPT @@ -451,7 +451,7 @@ module_exit(exit_ath_ahb); --- a/ath/if_ath_pci.c +++ b/ath/if_ath_pci.c -@@ -415,11 +415,19 @@ MODULE_SUPPORTED_DEVICE("Atheros WLAN ca +@@ -417,11 +417,19 @@ MODULE_SUPPORTED_DEVICE("Atheros WLAN ca MODULE_LICENSE("Dual BSD/GPL"); #endif @@ -471,7 +471,7 @@ if (pci_register_driver(&ath_pci_driver) < 0) { printk(KERN_ERR "%s: No devices found, driver not installed.\n", dev_info); return (-ENODEV); -@@ -434,6 +442,10 @@ exit_ath_pci(void) +@@ -436,6 +444,10 @@ exit_ath_pci(void) { ath_sysctl_unregister(); pci_unregister_driver(&ath_pci_driver); diff --git a/net/madwifi/patches/448-beacon_handling_fixes.patch b/net/madwifi/patches/448-beacon_handling_fixes.patch index 9c0f912e4..3fa97e2e6 100644 --- a/net/madwifi/patches/448-beacon_handling_fixes.patch +++ b/net/madwifi/patches/448-beacon_handling_fixes.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -160,7 +160,7 @@ static int ath_check_beacon_done(struct +@@ -160,7 +160,7 @@ static int ath_check_beacon_done(struct static void ath_beacon_send(struct ath_softc *, int *, uint64_t hw_tsf); static void ath_beacon_return(struct ath_softc *, struct ath_buf *); static void ath_beacon_free(struct ath_softc *); @@ -81,7 +81,7 @@ if (xchanmode != -1) ath_xchanmode = xchanmode; error = ath_getchannels(dev); -@@ -1349,12 +1337,6 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1349,12 +1337,6 @@ ath_vap_create(struct ieee80211com *ic, return NULL; } @@ -94,7 +94,7 @@ dev = alloc_etherdev(sizeof(struct ath_vap) + sc->sc_rc->arc_vap_space); if (dev == NULL) { /* XXX msg */ -@@ -1424,7 +1406,7 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1424,7 +1406,7 @@ ath_vap_create(struct ieee80211com *ic, TAILQ_FOREACH(v, &ic->ic_vaps, iv_next) id_mask |= (1 << ATH_GET_VAP_ID(v->iv_myaddr)); @@ -103,7 +103,7 @@ /* get the first available slot */ if ((id_mask & (1 << id)) == 0) { ATH_SET_VAP_BSSID(vap->iv_myaddr, id); -@@ -1451,11 +1433,11 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1451,11 +1433,11 @@ ath_vap_create(struct ieee80211com *ic, /* Assign the VAP to a beacon xmit slot. As * above, this cannot fail to find one. */ avp->av_bslot = 0; @@ -117,7 +117,7 @@ sc->sc_bslot[slot+1] == NULL) { avp->av_bslot = slot + 1; break; -@@ -1463,8 +1445,11 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1463,8 +1445,11 @@ ath_vap_create(struct ieee80211com *ic, avp->av_bslot = slot; /* NB: keep looking for a double slot */ } @@ -131,7 +131,7 @@ sc->sc_bslot[avp->av_bslot] = vap; sc->sc_nbcnvaps++; -@@ -1475,15 +1460,7 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1475,15 +1460,7 @@ ath_vap_create(struct ieee80211com *ic, * of staggered beacons. */ /* XXX check for beacon interval too small */ @@ -148,7 +148,7 @@ } DPRINTF(sc, ATH_DEBUG_BEACON, "sc->sc_stagbeacons %sabled\n", (sc->sc_stagbeacons ? "en" : "dis")); -@@ -1553,7 +1530,7 @@ ath_vap_create(struct ieee80211com *ic, +@@ -1553,7 +1530,7 @@ ath_vap_create(struct ieee80211com *ic, if (ath_startrecv(sc) != 0) /* restart recv */ EPRINTF(sc, "Unable to start receive logic.\n"); if (sc->sc_beacons) @@ -231,7 +231,7 @@ { struct ieee80211com *ic = &sc->sc_ic; struct ath_hal *ah = sc->sc_ah; -@@ -5553,7 +5530,7 @@ ath_beacon_config(struct ath_softc *sc, +@@ -5553,7 +5530,7 @@ ath_beacon_config(struct ath_softc *sc, /* We should reset hw TSF only once, so we increment * ni_tstamp.tsf to avoid resetting the hw TSF multiple * times */ @@ -240,7 +240,7 @@ reset_tsf = 1; ni->ni_tstamp.tsf = cpu_to_le64(1); } -@@ -5567,7 +5544,7 @@ ath_beacon_config(struct ath_softc *sc, +@@ -5567,7 +5544,7 @@ ath_beacon_config(struct ath_softc *sc, /* NB: the beacon interval is kept internally in TUs */ intval = ic->ic_lintval & HAL_BEACON_PERIOD; if (sc->sc_stagbeacons) @@ -249,7 +249,7 @@ if ((sc->sc_nostabeacons) && (vap->iv_opmode == IEEE80211_M_HOSTAP)) reset_tsf = 1; -@@ -5583,31 +5560,24 @@ ath_beacon_config(struct ath_softc *sc, +@@ -5583,31 +5560,24 @@ ath_beacon_config(struct ath_softc *sc, * time */ nexttbtt = intval; } else if (intval) { /* NB: can be 0 for monitor mode */ @@ -299,7 +299,7 @@ } } -@@ -5730,9 +5700,6 @@ ath_beacon_config(struct ath_softc *sc, +@@ -5730,9 +5700,6 @@ ath_beacon_config(struct ath_softc *sc, ath_beacon_dturbo_config(vap, intval & ~(HAL_BEACON_RESET_TSF | HAL_BEACON_ENA)); #endif @@ -378,7 +378,7 @@ .procname = "regdomain", .mode = 0644, .proc_handler = ath_sysctl_halparam, -@@ -11928,13 +11883,6 @@ static ctl_table ath_static_sysctls[] = +@@ -11928,13 +11883,6 @@ static ctl_table ath_static_sysctls[] = }, #endif { .ctl_name = CTL_AUTO, diff --git a/net/madwifi/patches/451-ibss_race_fix.patch b/net/madwifi/patches/451-ibss_race_fix.patch index 27e1b47da..8349b318f 100644 --- a/net/madwifi/patches/451-ibss_race_fix.patch +++ b/net/madwifi/patches/451-ibss_race_fix.patch @@ -43,7 +43,7 @@ } } iwspy_event(vap, ni, rssi); -@@ -3553,8 +3546,8 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3553,8 +3546,8 @@ ieee80211_recv_mgmt(struct ieee80211vap (((vap->iv_opmode == IEEE80211_M_HOSTAP) || (vap->iv_opmode == IEEE80211_M_WDS)) && (scan.capinfo & IEEE80211_CAPINFO_ESS))) { @@ -53,7 +53,7 @@ int found = 0; IEEE80211_LOCK_IRQ(vap->iv_ic); -@@ -3570,14 +3563,12 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3570,14 +3563,12 @@ ieee80211_recv_mgmt(struct ieee80211vap } } if (found) @@ -72,7 +72,7 @@ found = 1; } IEEE80211_UNLOCK_IRQ(vap->iv_ic); -@@ -3585,20 +3576,21 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3585,20 +3576,21 @@ ieee80211_recv_mgmt(struct ieee80211vap if (!found) break; @@ -100,7 +100,7 @@ } else { /* * Copy data from beacon to neighbor table. -@@ -3606,39 +3598,38 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3606,39 +3598,38 @@ ieee80211_recv_mgmt(struct ieee80211vap * ieee80211_add_neighbor(), so we just copy * everything over to be safe. */ diff --git a/net/madwifi/patches/452-minstrel_no_timer.patch b/net/madwifi/patches/452-minstrel_no_timer.patch index f0f5c26f9..b9b5c9f07 100644 --- a/net/madwifi/patches/452-minstrel_no_timer.patch +++ b/net/madwifi/patches/452-minstrel_no_timer.patch @@ -27,7 +27,7 @@ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,52)) -@@ -204,6 +202,11 @@ ath_rate_findrate(struct ath_softc *sc, +@@ -204,6 +202,11 @@ ath_rate_findrate(struct ath_softc *sc, unsigned int ndx, offset; int mrr; diff --git a/net/madwifi/patches/455-beacon_watchdog.patch b/net/madwifi/patches/455-beacon_watchdog.patch index d0b4fa63e..e399564df 100644 --- a/net/madwifi/patches/455-beacon_watchdog.patch +++ b/net/madwifi/patches/455-beacon_watchdog.patch @@ -62,7 +62,7 @@ /* * Configure the beacon and sleep timers. * -@@ -5523,6 +5543,7 @@ ath_beacon_config(struct ath_softc *sc, +@@ -5523,6 +5543,7 @@ ath_beacon_config(struct ath_softc *sc, if (vap == NULL) vap = TAILQ_FIRST(&ic->ic_vaps); /* XXX */ @@ -70,7 +70,7 @@ ni = vap->iv_bss; /* TSF calculation is timing critical - we don't want to be interrupted here */ -@@ -5699,6 +5720,9 @@ ath_beacon_config(struct ath_softc *sc, +@@ -5699,6 +5720,9 @@ ath_beacon_config(struct ath_softc *sc, sc->sc_imask |= HAL_INT_SWBA; ath_set_beacon_cal(sc, 1); ath_beaconq_config(sc); diff --git a/net/madwifi/patches/459-2.6.33_compile.patch b/net/madwifi/patches/459-2.6.33_compile.patch index 4e08a011a..e3b94b1c8 100644 --- a/net/madwifi/patches/459-2.6.33_compile.patch +++ b/net/madwifi/patches/459-2.6.33_compile.patch @@ -15,7 +15,7 @@ char *uts_release = UTS_RELEASE; --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -11580,227 +11580,231 @@ static int mincalibrate = 1; /* once a +@@ -11580,227 +11580,231 @@ static int mincalibrate = 1; /* once a static int maxint = 0x7fffffff; /* 32-bit big */ static const ctl_table ath_sysctl_template[] = { @@ -309,7 +309,7 @@ .procname = "debug", .mode = 0644, .data = &ath_debug, -@@ -11974,14 +11982,14 @@ static ctl_table ath_static_sysctls[] = +@@ -11974,14 +11982,14 @@ static ctl_table ath_static_sysctls[] = .proc_handler = proc_dointvec }, #endif @@ -326,7 +326,7 @@ .procname = "calibrate", .mode = 0644, .data = &ath_calinterval, -@@ -11993,14 +12001,14 @@ static ctl_table ath_static_sysctls[] = +@@ -11993,14 +12001,14 @@ static ctl_table ath_static_sysctls[] = { 0 } }; static ctl_table ath_ath_table[] = { diff --git a/net/madwifi/patches/460-pci_softled_disable.patch b/net/madwifi/patches/460-pci_softled_disable.patch index 328e8c350..1c0ec94af 100644 --- a/net/madwifi/patches/460-pci_softled_disable.patch +++ b/net/madwifi/patches/460-pci_softled_disable.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath_pci.c +++ b/ath/if_ath_pci.c -@@ -264,6 +264,7 @@ ath_pci_probe(struct pci_dev *pdev, cons +@@ -266,6 +266,7 @@ ath_pci_probe(struct pci_dev *pdev, cons } } @@ -8,7 +8,7 @@ /* * Auto-enable soft led processing for IBM cards and for * 5211 minipci cards. Users can also manually enable/disable -@@ -279,6 +280,7 @@ ath_pci_probe(struct pci_dev *pdev, cons +@@ -281,6 +282,7 @@ ath_pci_probe(struct pci_dev *pdev, cons sc->aps_sc.sc_softled = 1; sc->aps_sc.sc_ledpin = 1; } diff --git a/net/madwifi/patches/462-fix_ap_scan.patch b/net/madwifi/patches/462-fix_ap_scan.patch index 8798f534e..8a14f5b66 100644 --- a/net/madwifi/patches/462-fix_ap_scan.patch +++ b/net/madwifi/patches/462-fix_ap_scan.patch @@ -1,6 +1,6 @@ --- a/net80211/ieee80211_scan_ap.c +++ b/net80211/ieee80211_scan_ap.c -@@ -595,6 +595,14 @@ ap_end(struct ieee80211_scan_state *ss, +@@ -595,6 +595,14 @@ ap_end(struct ieee80211_scan_state *ss, ic = vap->iv_ic; @@ -15,7 +15,7 @@ /* record stats for the channel that was scanned last */ ic->ic_set_channel(ic); spin_lock_irqsave(&channel_lock, sflags); -@@ -648,6 +656,8 @@ ap_end(struct ieee80211_scan_state *ss, +@@ -648,6 +656,8 @@ ap_end(struct ieee80211_scan_state *ss, IEEE80211_SCHEDULE_TQUEUE(&as->as_actiontq); res = 1; } diff --git a/net/madwifi/patches/472-remove_11n_devids.patch b/net/madwifi/patches/472-remove_11n_devids.patch index cf80f06bf..46e2b04e1 100644 --- a/net/madwifi/patches/472-remove_11n_devids.patch +++ b/net/madwifi/patches/472-remove_11n_devids.patch @@ -7,9 +7,9 @@ - { 0x168c, 0x0023, PCI_ANY_ID, PCI_ANY_ID }, - { 0x168c, 0x0024, PCI_ANY_ID, PCI_ANY_ID }, { 0x168c, 0x9013, PCI_ANY_ID, PCI_ANY_ID }, /* sonicwall */ + { 0x168c, 0xff16, PCI_ANY_ID, PCI_ANY_ID }, { 0x168c, 0xff1a, PCI_ANY_ID, PCI_ANY_ID }, - { 0 } -@@ -146,8 +144,6 @@ static const struct ath_hw_detect cards[ +@@ -148,8 +146,6 @@ static const struct ath_hw_detect cards[ { ubnt, "SR4C", 0x168c, 0x0013, 0x7777, 0x1004, 6 }, { ubnt, "SR5", 0x168c, 0x0013, 0x168c, 0x2042, 7 }, { ubnt, "SR9", 0x168c, 0x0013, 0x7777, 0x2009, 12 }, diff --git a/net/madwifi/patches/479-deprecate-devinitdata.patch b/net/madwifi/patches/479-deprecate-devinitdata.patch new file mode 100644 index 000000000..312043bee --- /dev/null +++ b/net/madwifi/patches/479-deprecate-devinitdata.patch @@ -0,0 +1,13 @@ +--- a/include/compat.h ++++ b/include/compat.h +@@ -204,6 +204,10 @@ static inline int timeval_compare(struct + #define CTLNAME(x) + #endif + ++#ifndef __devinitdata ++#define __devinitdata ++#endif ++ + #endif /* __KERNEL__ */ + + #endif /* _ATH_COMPAT_H_ */ -- 2.30.2