From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mtiwmhc11.worldnet.att.net ([204.127.131.115]:60964 "EHLO mtiwmhc11.worldnet.att.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751194AbZAZDT1 (ORCPT ); Sun, 25 Jan 2009 22:19:27 -0500 Message-ID: <497D2BB3.9000002@lwfinger.net> (sfid-20090126_041933_507912_B3B88CBA) Date: Sun, 25 Jan 2009 21:19:15 -0600 From: Larry Finger MIME-Version: 1.0 To: Hauke Mehrtens CC: "John W. Linville" , Herton Ronaldo Krzesinski , Hin-Tak Leung , barreyromartin@gmail.com, linux-wireless@vger.kernel.org Subject: [RFT V2] rtl8187: Fix OFDM power settings for RTL8187L References: <49790961.JdcKIZyYlMNFSiuO%Larry.Finger@lwfinger.net> <4979DD39.9000601@hauke-m.de> <20090123153144.GA13658@tuxdriver.com> <497B05AF.5050701@hauke-m.de> In-Reply-To: <497B05AF.5050701@hauke-m.de> Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-wireless-owner@vger.kernel.org List-ID: Hauke, Please apply this patch on top of current wireless-testing, or compat-wireless. V1 only did one of the two kinds of radios. Larry ==================== After reports of poor performance, a review of the latest vendor driver (rtl8187_linux_26.1025.0328.2007) for RTL8187L devices was undertaken. A difference was found in the code used to index the OFDM power tables. When the Linux driver was changed, my unit works at a much greater range than before. Signed-off-by: Larry Finger --- Index: wireless-testing/drivers/net/wireless/rtl818x/rtl8187_rtl8225.c =================================================================== --- wireless-testing.orig/drivers/net/wireless/rtl818x/rtl8187_rtl8225.c +++ wireless-testing/drivers/net/wireless/rtl818x/rtl8187_rtl8225.c @@ -285,6 +285,10 @@ static void rtl8225_rf_set_tx_power(stru ofdm_power = priv->channels[channel - 1].hw_value >> 4; cck_power = min(cck_power, (u8)11); + if (ofdm_power > (u8)15) + ofdm_power = 25; + else + ofdm_power += 10; ofdm_power = min(ofdm_power, (u8)35); rtl818x_iowrite8(priv, &priv->map->TX_GAIN_CCK, @@ -536,7 +540,10 @@ static void rtl8225z2_rf_set_tx_power(st cck_power += priv->txpwr_base & 0xF; cck_power = min(cck_power, (u8)35); - ofdm_power = min(ofdm_power, (u8)15); + if (ofdm_power > (u8)15) + ofdm_power = 25; + else + ofdm_power += 10; ofdm_power += priv->txpwr_base >> 4; ofdm_power = min(ofdm_power, (u8)35);