[arch-projects] [netcfg] [PATCH v2] Take rfkill switches attached to PHYs into account.

Ivan Shapovalov intelfx100 at gmail.com
Mon Oct 8 12:44:27 EDT 2012


On Sunday 07 October 2012 22:19:47 Jouke Witteveen wrote:
> On Sun, Oct 7, 2012 at 10:05 PM, Ivan Shapovalov <intelfx100 at gmail.com> 
wrote:
> > I've got rfkill switches under path
> > "/sys/class/net/$INTERFACE/phy80211/rfkill*"
> > but not
> > "/sys/class/net/$INTERFACE/rfkill"
> > on two systems with iwlagn and ath9k drivers. Guess someone else also
> > does...
> > 
> > Signed-off-by: Ivan Shapovalov <intelfx100 at gmail.com>
> > ---
> > 
> >  src/rfkill | 10 +++++++++-
> >  1 file changed, 9 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/rfkill b/src/rfkill
> > index 12e1832..ff8a878 100644
> > --- a/src/rfkill
> > +++ b/src/rfkill
> > @@ -29,10 +29,18 @@ get_rf_path() {
> > 
> >          report_fail "no rfkill switch with name $RFKILL_NAME"
> >      
> >      else
> >      
> >          path="/sys/class/net/$INTERFACE/rfkill"
> > 
> > +
> > +        # There may be many rfkill switches attached to a single PHY
> > +        # For now take the first of them
> > +        path_phy=( "/sys/class/net/$INTERFACE/phy80211/rfkill"* )
> > +
> > 
> >          if [[ -d "$path" ]]; then
> >          
> >              echo "$path"
> >              return 0
> > 
> > -        fi
> > +        elif [[ "${path_phy[0]}" && -d "${path_phy[0]}" ]]; then
> > +            echo "${path_phy[0]}"
> > +            return 0
> > +               fi
> > 
> >          report_fail "no rfkill switch available on interface $INTERFACE"
> >      
> >      fi
> >      return 1
> > 
> > --
> > 1.7.12.2
> 
> I'm not quite comfortable with the new look of the code. For one thing
> it would be nice to upgrade to the new ABI in one go:
> http://www.kernel.org/doc/Documentation/ABI/stable/sysfs-class-rfkill

I'll try to do that. The only thing we use from the obsolete API is the 
"state" file, which is replaced with "hard" and "soft" files containing 
respective states.

> Can someone point me at some official statement about the location of
> rfkill stuff under /sys/class/net/$INTERFACE ? If there is no official
> location, I think it is perhaps best to make RFKILL_NAME mandatory and
> only look under /sys/class/rfkill .

There seems to be no such statement, as the sysfs ABI is officially unstable.
OTOH, I think we should not sacrifice usability for the sake of "code 
cleanness".

An example: on my system (Atheros AR5B97, driver ath9k) I need to remove the 
driver module before suspending and to restore it afterwards, otherwise 
network performance drops noticeably. And when a driver is reinserted, the 
rfkill's name/index is changed (was phyN, becomes phyN+1).

> 
> In general I would like src/rfkill to be simple. This patch makes it
> hackish in my opinion.
> 
> - Jouke

Thanks,
Ivan.


More information about the arch-projects mailing list