linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dan Williams <dcbw@redhat.com>
To: Bas Vermeulen <bvermeul@blackstar.nl>,
	Larry Finger <Larry.Finger@lwfinger.net>,
	Kalle Valo <kvalo@codeaurora.org>
Cc: linux-wireless@vger.kernel.org, ath9k-devel@qca.qualcomm.com
Subject: Re: [PATCH] ath9k: introduce endian_check module parameter
Date: Mon, 26 Feb 2018 11:42:04 -0600	[thread overview]
Message-ID: <1519666924.30355.30.camel@redhat.com> (raw)
In-Reply-To: <c6519a95-40b1-1ca8-469a-418f6e62a2d0@blackstar.nl>

On Mon, 2018-02-26 at 17:44 +0100, Bas Vermeulen wrote:
> On 26-02-18 17:32, Larry Finger wrote:
> > On 02/26/2018 04:07 AM, Bas Vermeulen wrote:
> > > On 26-02-18 10:54, Kalle Valo wrote:
> > > > Bas Vermeulen <bvermeul@blackstar.nl> writes:
> > > > 
> > > > > A random (little endian eeprom'd) ar9278 card didn't work on
> > > > > my
> > > > > PowerMac G5 without allowing the driver to byte-swap the
> > > > > eeprom.
> > > > > 
> > > > > Introduce a module parameter endian_check to allow this to
> > > > > happen,
> > > > > and the PCIe card to function correctly on BE powerpc.
> > > > > 
> > > > > Signed-off-by: Bas Vermeulen <bvermeul@blackstar.nl>
> > > > > ---
> > > > >   drivers/net/wireless/ath/ath9k/init.c | 6 +++++-
> > > > >   1 file changed, 5 insertions(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/drivers/net/wireless/ath/ath9k/init.c 
> > > > > b/drivers/net/wireless/ath/ath9k/init.c
> > > > > index fa58a32227f5..421039dc060a 100644
> > > > > --- a/drivers/net/wireless/ath/ath9k/init.c
> > > > > +++ b/drivers/net/wireless/ath/ath9k/init.c
> > > > > @@ -67,6 +67,9 @@ static int ath9k_ps_enable;
> > > > >   module_param_named(ps_enable, ath9k_ps_enable, int, 0444);
> > > > >   MODULE_PARM_DESC(ps_enable, "Enable WLAN PowerSave");
> > > > > +static int ath9k_endian_check;
> > > > > +module_param_named(endian_check, ath9k_endian_check, int,
> > > > > 0444);
> > > > > +MODULE_PARM_DESC(endian_check, "Check EEPROM for endianness 
> > > > > compatibility");
> > > > >   #ifdef CONFIG_ATH9K_CHANNEL_CONTEXT
> > > > >   int ath9k_use_chanctx;
> > > > > @@ -587,7 +590,8 @@ static int ath9k_of_init(struct ath_softc
> > > > > *sc)
> > > > >           ether_addr_copy(common->macaddr, mac);
> > > > >       ah->ah_flags &= ~AH_USE_EEPROM;
> > > > > -    ah->ah_flags |= AH_NO_EEP_SWAP;
> > > > > +    if (!ath9k_endian_check)
> > > > > +        ah->ah_flags |= AH_NO_EEP_SWAP;
> > > > 
> > > > A bit annoying to have a module parameter, isn't there any
> > > > automatic 
> > > > way
> > > > to detect/try this? But on the other hand I guess this isn't a
> > > > common
> > > > problem as nobody has reported this before?
> > > 
> > > There is an automatic way to detect this, but that is disabled by
> > > the 
> > > AH_NO_EEP_SWAP flag.
> > > The platform initialisation does not set this flag if the 
> > > endian_check member of pdata is set
> > > to true, but there is no way to not set this when using a device 
> > > tree. I used a module
> > > parameter instead of a device tree variable because I don't know
> > > of a 
> > > way to modify the
> > > device tree my PowerMac boots with.
> > 
> > Shouldn't you be able to set ath9k_endian_check inside #ifdef 
> > __BIG_ENDIAN ... #endif in the initialization? I think that would 
> > achieve the same functionality without requiring the user to set a 
> > module parameter.
> 
> I could have done that, but didn't want to change the default
> behaviour. 
> This patch keeps the
> current behaviour on all platforms if the module parameter is not
> set. I 
> don't have the means
> to test mips and other platforms this could be used on. I don't mind 
> having to set a module
> parameter, I mind not being able to change the behaviour

Still, module parameters are an awful user experience because you need
to know that they exist, what they do, and whether you need it or not. 
It doesn't just work.

Is there no way to autodetect the endian-ness of the firmware itself,
and if the known machine endian-ness isn't the same then swap?  This
seems like a solvable problem.

Dan

  reply	other threads:[~2018-02-26 17:42 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-26  9:09 [PATCH] ath9k: introduce endian_check module parameter Bas Vermeulen
2018-02-26  9:54 ` Kalle Valo
2018-02-26 10:07   ` Bas Vermeulen
2018-02-26 11:30     ` Sebastian Gottschall
2018-02-26 12:26       ` Bas Vermeulen
2018-02-26 14:52     ` Kalle Valo
2018-03-14 12:42       ` Bas Vermeulen
2018-03-14 14:34         ` Kalle Valo
2018-03-14 21:34           ` Arend van Spriel
2018-03-19  8:11             ` Martin Blumenstingl
2018-03-20 21:07               ` Rafał Miłecki
2018-03-20 21:14                 ` Martin Blumenstingl
2018-03-24  8:05               ` Mathias Kresin
2018-04-10  9:05           ` Bas Vermeulen
2018-04-12 18:53             ` Martin Blumenstingl
2018-02-26 16:32     ` Larry Finger
2018-02-26 16:44       ` Bas Vermeulen
2018-02-26 17:42         ` Dan Williams [this message]
2018-02-26 21:42           ` Bas Vermeulen
2018-02-26 11:28   ` Sebastian Gottschall
2018-02-26 12:21     ` Bas Vermeulen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1519666924.30355.30.camel@redhat.com \
    --to=dcbw@redhat.com \
    --cc=Larry.Finger@lwfinger.net \
    --cc=ath9k-devel@qca.qualcomm.com \
    --cc=bvermeul@blackstar.nl \
    --cc=kvalo@codeaurora.org \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).