| From a302ee4a7b380302784ebd23ece1abae7f6a640f Mon Sep 17 00:00:00 2001 |
| From: Ping-Ke Shih <pkshih@realtek.com> |
| Date: Wed, 28 Dec 2016 15:40:04 -0600 |
| Subject: [PATCH] rtlwifi: Fix alignment issues |
| |
| commit 40b368af4b750863b2cb66a3a9513241db2f0793 upstream. |
| |
| The addresses of Wlan NIC registers are natural alignment, but some |
| drivers have bugs. These are evident on platforms that need natural |
| alignment to access registers. This change contains the following: |
| 1. Function _rtl8821ae_dbi_read() is used to read one byte from DBI, |
| thus it should use rtl_read_byte(). |
| 2. Register 0x4C7 of 8192ee is single byte. |
| |
| Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> |
| Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> |
| Cc: Stable <stable@vger.kernel.org> |
| Signed-off-by: Kalle Valo <kvalo@codeaurora.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/hw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/hw.c |
| index b07af8d15273..a97485d6c866 100644 |
| --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/hw.c |
| +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/hw.c |
| @@ -1003,7 +1003,7 @@ static void _rtl92ee_hw_configure(struct ieee80211_hw *hw) |
| rtl_write_word(rtlpriv, REG_SIFS_TRX, 0x100a); |
| |
| /* Note Data sheet don't define */ |
| - rtl_write_word(rtlpriv, 0x4C7, 0x80); |
| + rtl_write_byte(rtlpriv, 0x4C7, 0x80); |
| |
| rtl_write_byte(rtlpriv, REG_RX_PKT_LIMIT, 0x20); |
| |
| diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c |
| index 0cddf1ad0fff..ef77d41cd147 100644 |
| --- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c |
| +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c |
| @@ -1127,7 +1127,7 @@ static u8 _rtl8821ae_dbi_read(struct rtl_priv *rtlpriv, u16 addr) |
| } |
| if (0 == tmp) { |
| read_addr = REG_DBI_RDATA + addr % 4; |
| - ret = rtl_read_word(rtlpriv, read_addr); |
| + ret = rtl_read_byte(rtlpriv, read_addr); |
| } |
| return ret; |
| } |
| -- |
| 2.12.0 |
| |