From patchwork Mon Sep 14 03:41:19 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hin-Tak Leung X-Patchwork-Id: 47220 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n8E3fO6K008119 for ; Mon, 14 Sep 2009 03:41:24 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754028AbZINDlT (ORCPT ); Sun, 13 Sep 2009 23:41:19 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753658AbZINDlT (ORCPT ); Sun, 13 Sep 2009 23:41:19 -0400 Received: from ey-out-2122.google.com ([74.125.78.27]:52277 "EHLO ey-out-2122.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752695AbZINDlS (ORCPT ); Sun, 13 Sep 2009 23:41:18 -0400 Received: by ey-out-2122.google.com with SMTP id 25so522620eya.19 for ; Sun, 13 Sep 2009 20:41:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=7iIujkrUsrkltGMGbWw/ckxuH7ZEFDM/atqPM4mUwLA=; b=M0IPFyBl41EKCuX5YV6CHpIpxFLnLdbmLAFrk9zO5RzmdFbKBc+3Dp1FlatE/oVY/U bcQnFatoKYr9/+7737IB7ir6HYyJPvYdghamFX6K1EXmmCJ4oNGcwhFQ5FlwQVFIExXx Y6blLscUNbJ6yQn14yJumI0OjY3uhRzPS0yko= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=Uk0znnzOYH0eJJQbJgXBbZ2sjscNuK66JFcEIFQQUGaXrWSvHxuFL0UUvM0ZX99VxE mXqk/EtGKr8riO/addRvMJ+eAXNKL4/QUNo3qqeROgPBk5UdE4xeD7MnoBKpECR3jnxW 1b6RCmh/oLfV7Jh/IRv04AjhY3Oj4Zv9eyfnA= MIME-Version: 1.0 Received: by 10.216.90.203 with SMTP id e53mr1598632wef.28.1252899679873; Sun, 13 Sep 2009 20:41:19 -0700 (PDT) In-Reply-To: <3ace41890909130313y474074ecnc5e720f780a4bd8f@mail.gmail.com> References: <4A9BFCCB.6040808@ufra.edu.br> <3ace41890908311025r3ce83c12gd6aeace4833609b1@mail.gmail.com> <4A9C0ADC.6050607@ufra.edu.br> <3ace41890908311126m5212926cl27172ae775fc92f2@mail.gmail.com> <4A9D7DC0.6050701@ufra.edu.br> <4AAC240E.20104@ufra.edu.br> <3ace41890909130313y474074ecnc5e720f780a4bd8f@mail.gmail.com> Date: Mon, 14 Sep 2009 04:41:19 +0100 Message-ID: <3ace41890909132041w2d3f10b7r72e0eb855f1ab2a5@mail.gmail.com> Subject: Re: zd1211rw on ppc (iBook G4) -- Solved, somewhat) From: Hin-Tak Leung To: "Leonardo H. Souza Hamada" Cc: linux-wireless@vger.kernel.org Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On Sun, Sep 13, 2009 at 11:13 AM, Hin-Tak Leung wrote: > On Sat, Sep 12, 2009 at 11:43 PM, Leonardo H. Souza Hamada > wrote: >> Hi all, >> >> At this moment, after tweaking the zd1211rw code in kernel >> 2.6.31-gentoo, finally I am able to use the WLI-U2-KG54L wireless usb >> dongle on this old ibook. >> >> Browsing the source with a cross referencing tool >> (http://lxr.free-electrons.com) and making additional checking points, I >> could trace the issue as follow. >> >> The problem is that this device returns a regulatory region of 0x49, >> which is not defined in the zd1211rw tables. So the call >> >> r = zd_reg2alpha2 (mac ->regdomain, alpha2); >> >> will fail the initialization process. >> >> >> Workaround: >> >> ----snip---- >> int zd_mac_init_hw(struct ieee80211_hw *hw) >> { >> ... >> r = zd_read_regdomain(chip, &default_regdomain); >> /* A unknown regulatory of 0x49 will be set default to >> ZD_REGDOMAIN_FCC. */ >> if (0x49 == default_regdomain) >> default_regdomain = ZD_REGDOMAIN_FCC; >> ... >> ----snip---- >> >> The above code will force the default regulatry to be FCC code for this >> case. I think that this was the case in previous zd1211rw driver. What >> is the country code for 0x49 region? There is a better way? >> >> >> Thanks all, >> >> Phew!! Leonardo > > The vendor driver has quite a lot more regdomain code defined, and > 0x49 is apparently > > ZD_Region_Japan_3 = 0x49,//G channel->ch1-13; A channel->8~16,34~46; > > the rw driver code probably should set it to most restrictive than let > it fail... > Can you give this patch a try against a recent wireless-testing/compat-wireless? I think this is the correct way to do things. Here is the content of the patch for others who doesn't like attachments - it just sets 0x49 as Japan. ============================================ diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c index 6d66635..b0d32c4 100644 --- a/drivers/net/wireless/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/zd1211rw/zd_mac.c @@ -42,6 +42,7 @@ static struct zd_reg_alpha2_map reg_alpha2_map[] = { { ZD_REGDOMAIN_ETSI, "DE" }, /* Generic ETSI, use most restrictive */ { ZD_REGDOMAIN_JAPAN, "JP" }, { ZD_REGDOMAIN_JAPAN_ADD, "JP" }, + { ZD_REGDOMAIN_JAPAN_3, "JP" }, { ZD_REGDOMAIN_SPAIN, "ES" }, { ZD_REGDOMAIN_FRANCE, "FR" }, }; diff --git a/drivers/net/wireless/zd1211rw/zd_mac.h b/drivers/net/wireless/zd1211rw/zd_mac.h index 7c27591..9701935 100644 --- a/drivers/net/wireless/zd1211rw/zd_mac.h +++ b/drivers/net/wireless/zd1211rw/zd_mac.h @@ -193,6 +193,7 @@ struct zd_mac { #define ZD_REGDOMAIN_FRANCE 0x32 #define ZD_REGDOMAIN_JAPAN_ADD 0x40 #define ZD_REGDOMAIN_JAPAN 0x41 +#define ZD_REGDOMAIN_JAPAN_3 0x49 enum { MIN_CHANNEL24 = 1,