diff options
Diffstat (limited to 'package/kernel/mac80211/patches/315-ath9k-Fix-address-management.patch')
-rw-r--r-- | package/kernel/mac80211/patches/315-ath9k-Fix-address-management.patch | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/315-ath9k-Fix-address-management.patch b/package/kernel/mac80211/patches/315-ath9k-Fix-address-management.patch new file mode 100644 index 0000000..a407861 --- /dev/null +++ b/package/kernel/mac80211/patches/315-ath9k-Fix-address-management.patch @@ -0,0 +1,65 @@ +From: Sujith Manoharan <c_manoha@qca.qualcomm.com> +Date: Fri, 17 Oct 2014 07:40:20 +0530 +Subject: [PATCH] ath9k: Fix address management + +Since both the arguments need to satisfy +the alignment requirements of ether_addr_copy(), +use memcpy() in cases where there will be no +big performance benefit and make sure that +ether_addr_copy() calls use properly aligned +arguments. + +Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> +--- + +--- a/drivers/net/wireless/ath/ath.h ++++ b/drivers/net/wireless/ath/ath.h +@@ -147,7 +147,7 @@ struct ath_common { + u16 cachelsz; + u16 curaid; + u8 macaddr[ETH_ALEN]; +- u8 curbssid[ETH_ALEN]; ++ u8 curbssid[ETH_ALEN] __aligned(2); + u8 bssidmask[ETH_ALEN]; + + u32 rx_bufsize; +--- a/drivers/net/wireless/ath/ath9k/ath9k.h ++++ b/drivers/net/wireless/ath/ath9k/ath9k.h +@@ -595,7 +595,7 @@ struct ath_vif { + u16 seq_no; + + /* BSS info */ +- u8 bssid[ETH_ALEN]; ++ u8 bssid[ETH_ALEN] __aligned(2); + u16 aid; + bool assoc; + +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -1057,7 +1057,7 @@ static void ath9k_set_offchannel_state(s + + eth_zero_addr(common->curbssid); + eth_broadcast_addr(common->bssidmask); +- ether_addr_copy(common->macaddr, vif->addr); ++ memcpy(common->macaddr, vif->addr, ETH_ALEN); + common->curaid = 0; + ah->opmode = vif->type; + ah->imask &= ~ATH9K_INT_SWBA; +@@ -1098,7 +1098,7 @@ void ath9k_calculate_summary_state(struc + ath9k_calculate_iter_data(sc, ctx, &iter_data); + + if (iter_data.has_hw_macaddr) +- ether_addr_copy(common->macaddr, iter_data.hw_macaddr); ++ memcpy(common->macaddr, iter_data.hw_macaddr, ETH_ALEN); + + memcpy(common->bssidmask, iter_data.mask, ETH_ALEN); + ath_hw_setbssidmask(common); +@@ -1785,7 +1785,7 @@ static void ath9k_bss_info_changed(struc + ath_dbg(common, CONFIG, "BSSID %pM Changed ASSOC %d\n", + bss_conf->bssid, bss_conf->assoc); + +- ether_addr_copy(avp->bssid, bss_conf->bssid); ++ memcpy(avp->bssid, bss_conf->bssid, ETH_ALEN); + avp->aid = bss_conf->aid; + avp->assoc = bss_conf->assoc; + |