linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Marek Behún" <kabel@kernel.org>
To: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-leds@vger.kernel.org,
	linuxarm@huawei.com, mauro.chehab@huawei.com,
	Pavel Machek <pavel@ucw.cz>,
	gregkh@linuxfoundation.org
Subject: Re: [PATCH v2 16/17] leds: leds-nuc: add support for changing the ethernet type indicator
Date: Thu, 20 May 2021 22:07:03 +0200	[thread overview]
Message-ID: <20210520220703.5a86b994@thinkpad> (raw)
In-Reply-To: <20210520205933.3cfc57a9@coco.lan>

On Thu, 20 May 2021 20:59:33 +0200
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> wrote:

> > On the contrary, there is something the driver can do with these
> > attributes. If the specific combination is not supported, the driver
> > should return -EOPNOTSUPP in the trigger_offload method and let the
> > netdev trigger do the work in software.   
> 
> Letting netdev to trigger is something we don't want to allow, as this
> can cause side effects, making it doing slow the system due to BIOS calls
> for no good reason.
>
> > What exactly do the LEDs do
> > when configured to blink on activity on a network device? Do they just
> > blink on RX/TX, and otherwise are off?  Or are they on when a cable is
> > plugged, blink on rx/tx and otherwise off?  
> 
> They are on when a cable is plugged, blink on rx/tx and otherwise off.
> 
> Worth mentioning that, besides the LEDs controlled by this driver, each
> RJ-45 port also a couple leds that behave just like normal RJ-45 ones: 
> a yellow led for Ethernet PHY detection and a green one for traffic.

So what the LED does when configured for ethernet is almost equivalent
to netdev setting [link=1, rx=1, activity=1]. Almost because we still have
the correct device setting and interval setting.

Theoretically what you can do is deny the netdev trigger for every
other netdev setting (since, according to you, it would use too much
CPU time in BIOS via software control). This could be done by the
offload method returning another error value, or maybe just returning 0
and printing info about this into kernel log. I wonder what others
think about this possible resolution.

> > Have you looked into DSDT and SSDT tables?  
> 
> It doesn't help.

Pity :(

> > If even DSDT data is not enough to reliably find out which of the 2
> > network interfaces belongs to which LED setting, the worst case scenario
> > here is for your driver to need to have a list containing this
> > information for specific motherboards, and other people can then extend
> > the driver to support their motherboards as well.  
> 
> Needing something like that sucks and it is hard to maintain,
> and depends on people reporting issues.

I don't see much difference between this and various drivers having
different OF compatible strings for different chips all supported by
one driver.

> Ok, on some cases, there are no other options, but this is not
> the case here, as the user of such API that wants to monitor
> just a single interface (default is to monitor both) can easily 
> ask the driver to monitor LAN1. If it doesn't work, switch to LAN2.
> 
> That's a way more elegant than adding some guessing code that
> would be checking for the machine codes, eventually printing
> a warning and disabling support for monitoring LAN when the
> machine is not properly identified.
> 
> Also, implementing such table can be painful. I can't see an
> easy way to implement it, specially without having any information
> about how all other models that support the WMI API are shipped,
> and how to map "LAN1", "LAN2" into something that matches netdev
> detection. OK, if each one have a different BUS ID,
> a mapping table could associate each one with a different BUS
> ID, and then some logic at netdev would convert BUS ID into
> the device name.
> 
> > > > > Also, while netdev trigger seems to use just one device name,
> > > > > the NUC allows to monitor both interfaces at the same time.        
> > > > 
> > > > Yes. This can be solved in the future by extending netdev trigger to
> > > > support blinking on activity on multiple netdevices. I also thought
> > > > about this for use with another HW (mv88e6xxx switch).
> > > >       
> > > > > See, unfortunately I can't see a common API that would fit
> > > > > nicely on both cases.        
> > > > 
> > > > Well I can.      
> > > 
> > > Then the API needs to change, in order to allow to abstract from
> > > netdev-centric view of Ethernet interfaces. Or, instead, some
> > > other trigger is needed for firmware-controlled events.    
> > 
> > No. If the necessary information for determining which network
> > interface pairs to LED1 and which to LED2 cannot be reliably determined
> > from ACPI tables, then IMO the driver should specify this information
> > for each motherboard that wants to use this feature.  
> 
> What's the gain of adding such extra complexity to the driver?

Having a consistent API on different devices is a benefit in itself, I
would think.

> All the user wants is to blink a led only for one of the LAN ports.
> 
> Denying it and using a more complex API doesn't make much sense, IMO.

As I see it you are the one wanting to introduce more complexity into
the sysfs ABI. There is already a solution together with documentation
and everything for when the user wants to "blink a led only for one of
the LAN ports". It is the netdev trigger. And you want to complicate
that ABI.

> > > -
> > > 
> > > One thing that it is not clear to me: let's say that the LED
> > > called "front1" is currently handling Ethernet events, but
> > > the user wants to use, instead, the "front2" LED, disabling
> > > the "front1" one (or using for another event, like wifi, which
> > > is not monitored on BIOS default).
> > > 
> > > How this can be done using the trigger's API?    
> > 
> > cd /sys/class/leds/front1
> > echo none >trigger
> > cd /sys/class/leds/front2
> > echo netdev >trigger  
> 
> Clear enough to me.
> 
> > echo ifname >device_name
> > echo 1 >rx
> > echo 1 >tx  
> 
> And that's the part that it makes no sense for this hardware ;-)
> 
> It can't identify RX/TX in separate. It can only monitor both RX and TX at
> the same time.
> 
> So, for this specific device, neither "rx", "tx" or "interval"
> attributes should be shown.

If a netdev setting is not supported by the HW, it should be done in SW.
You say that for this controller it would be bad to do in SW, because it
would take too much time in BIOS calls. (I wonder how much...) If this
is really the case then I still think it is more preferable to do this
via netdev trigger, and forbid settings not supported by HW. The result
could be:

     # I want the LED to blink on ethernet activity
   $ echo netdev >trigger
     # ok, but I only wan't it to blink on rx activity, not tx
   $ echo 0 >tx
   Operation not supported.

Pavel, what is your opinion here?

Marek

  reply	other threads:[~2021-05-20 20:07 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-18 15:08 [PATCH v2 00/17] Adding support for controlling the leds found on Intel NUC Mauro Carvalho Chehab
2021-05-18 15:08 ` [PATCH v2 01/17] docs: describe the API used to set NUC LEDs Mauro Carvalho Chehab
2021-05-18 15:08 ` [PATCH v2 02/17] leds: add support for NUC WMI LEDs Mauro Carvalho Chehab
2021-05-18 15:08 ` [PATCH v2 03/17] leds: leds-nuc: detect WMI API detection Mauro Carvalho Chehab
2021-05-18 15:08 ` [PATCH v2 04/17] leds: leds-nuc: add support for changing S0 brightness Mauro Carvalho Chehab
2021-05-18 15:08 ` [PATCH v2 05/17] leds: leds-nuc: add all types of brightness Mauro Carvalho Chehab
2021-05-18 15:08 ` [PATCH v2 06/17] leds: leds-nuc: allow changing the LED colors Mauro Carvalho Chehab
2021-05-18 15:08 ` [PATCH v2 07/17] leds: leds-nuc: add support for WMI API version 1.0 Mauro Carvalho Chehab
2021-05-18 15:08 ` [PATCH v2 08/17] leds: leds-nuc: add basic support for NUC6 WMI Mauro Carvalho Chehab
2021-05-18 15:08 ` [PATCH v2 09/17] leds: leds-nuc: add brightness and color for NUC6 API Mauro Carvalho Chehab
2021-05-18 15:08 ` [PATCH v2 10/17] leds: leds-nuc: Add support to blink behavior for NUC8/10 Mauro Carvalho Chehab
2021-05-19  7:58   ` Marek Behun
2021-05-19 10:09     ` Mauro Carvalho Chehab
2021-05-18 15:09 ` [PATCH v2 11/17] leds: leds-nuc: get rid of an unused variable Mauro Carvalho Chehab
2021-05-18 15:09 ` [PATCH v2 12/17] leds: leds-nuc: implement blink control for NUC6 Mauro Carvalho Chehab
2021-05-18 15:09 ` [PATCH v2 13/17] leds: leds-nuc: better detect NUC6/NUC7 devices Mauro Carvalho Chehab
2021-05-18 15:09 ` [PATCH v2 14/17] leds: leds-nuc: add support for HDD activity default Mauro Carvalho Chehab
2021-05-18 15:09 ` [PATCH v2 15/17] leds: leds-nuc: fix software blink behavior logic Mauro Carvalho Chehab
2021-05-18 15:09 ` [PATCH v2 16/17] leds: leds-nuc: add support for changing the ethernet type indicator Mauro Carvalho Chehab
2021-05-19  8:02   ` Marek Behún
2021-05-19 10:18     ` Mauro Carvalho Chehab
2021-05-19 12:11       ` Marek Behún
2021-05-19 14:24         ` Mauro Carvalho Chehab
2021-05-19 15:55           ` Marek Behún
2021-05-19 18:30             ` Mauro Carvalho Chehab
2021-05-20 11:00               ` Marek Behún
2021-05-20 16:00                 ` Mauro Carvalho Chehab
2021-05-20 16:36                   ` Marek Behún
2021-05-20 18:59                     ` Mauro Carvalho Chehab
2021-05-20 20:07                       ` Marek Behún [this message]
2021-05-21  9:14                         ` Mauro Carvalho Chehab
2021-05-26 14:51                           ` Pavel Machek
2021-05-28 11:33                             ` Mauro Carvalho Chehab
2021-05-26 14:47                       ` Pavel Machek
2021-05-28 11:24                         ` Mauro Carvalho Chehab
2021-05-18 15:09 ` [PATCH v2 17/17] leds: leds-nuc: add support for changing the power limit scheme Mauro Carvalho Chehab
2021-05-19 11:11 ` [PATCH v2 00/17] Adding support for controlling the leds found on Intel NUC Pavel Machek
2021-05-19 12:15   ` Mauro Carvalho Chehab
2021-05-19 19:41     ` Pavel Machek
2021-05-19 23:07       ` Mauro Carvalho Chehab
2021-05-20 16:19         ` Marek Behún
2021-05-20 19:16           ` Mauro Carvalho Chehab
2021-05-20 19:43             ` Marek Behún
2021-05-21  9:57               ` Mauro Carvalho Chehab

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=20210520220703.5a86b994@thinkpad \
    --to=kabel@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=mauro.chehab@huawei.com \
    --cc=mchehab+huawei@kernel.org \
    --cc=pavel@ucw.cz \
    /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).