On Sun, Oct 7, 2012 at 10:05 PM, Ivan Shapovalov <intelfx100@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@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 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 . In general I would like src/rfkill to be simple. This patch makes it hackish in my opinion. - Jouke