#
# Copyright (C) 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# These are needed for migration of data to wifi apex directory.
on post-fs-data
   restorecon_recursive /data/misc/apexdata/com.android.wifi

on property:sys.user.0.ce_available=true
   restorecon_recursive /data/misc_ce/0/apexdata/com.android.wifi

# Below are for kernel tracing related stuff.
on fs
   setprop sys.wifitracing.started 0

on property:sys.boot_completed=1 && property:sys.wifitracing.started=0
   # Create trace buffer, and set basic configuration.
   mkdir /sys/kernel/debug/tracing/instances/wifi 711
   restorecon_recursive /sys/kernel/debug/tracing/instances/wifi
   write /sys/kernel/debug/tracing/instances/wifi/tracing_on 0
   write /sys/kernel/debug/tracing/instances/wifi/buffer_size_kb 1
   write /sys/kernel/debug/tracing/instances/wifi/trace_options disable_on_free

   mkdir /sys/kernel/tracing/instances/wifi 711
   restorecon_recursive /sys/kernel/tracing/instances/wifi
   write /sys/kernel/tracing/instances/wifi/tracing_on 0
   write /sys/kernel/tracing/instances/wifi/buffer_size_kb 1
   write /sys/kernel/tracing/instances/wifi/trace_options disable_on_free

   # Enable cfg80211 events for connection and key management events.
   # - Events are not actually logged until WifiService writes "1" to
   #   /sys/kernel/debug/tracing/instances/wifi/tracing_on.
   # - WifiService is responsible for turning tracing off and on.
   write /sys/kernel/debug/tracing/instances/wifi/events/cfg80211/cfg80211_gtk_rekey_notify/enable 1
   write /sys/kernel/debug/tracing/instances/wifi/events/cfg80211/rdev_add_key/enable 1
   write /sys/kernel/debug/tracing/instances/wifi/events/cfg80211/rdev_assoc/enable 1
   write /sys/kernel/debug/tracing/instances/wifi/events/cfg80211/rdev_auth/enable 1
   write /sys/kernel/debug/tracing/instances/wifi/events/cfg80211/rdev_connect/enable 1
   write /sys/kernel/debug/tracing/instances/wifi/events/cfg80211/rdev_set_default_key/enable 1
   write /sys/kernel/debug/tracing/instances/wifi/events/cfg80211/rdev_set_default_mgmt_key/enable 1
   write /sys/kernel/debug/tracing/instances/wifi/events/cfg80211/rdev_set_rekey_data/enable 1

   write /sys/kernel/tracing/instances/wifi/events/cfg80211/cfg80211_gtk_rekey_notify/enable 1
   write /sys/kernel/tracing/instances/wifi/events/cfg80211/rdev_add_key/enable 1
   write /sys/kernel/tracing/instances/wifi/events/cfg80211/rdev_assoc/enable 1
   write /sys/kernel/tracing/instances/wifi/events/cfg80211/rdev_auth/enable 1
   write /sys/kernel/tracing/instances/wifi/events/cfg80211/rdev_connect/enable 1
   write /sys/kernel/tracing/instances/wifi/events/cfg80211/rdev_set_default_key/enable 1
   write /sys/kernel/tracing/instances/wifi/events/cfg80211/rdev_set_default_mgmt_key/enable 1
   write /sys/kernel/tracing/instances/wifi/events/cfg80211/rdev_set_rekey_data/enable 1

   # Enable datapath events for Wifi.
   # - Events are not actually logged until WifiService writes "1" to
   #   /sys/kernel/debug/tracing/instances/wifi/tracing_on.
   # - WifiService will ensure that tracing is turned back off,
   #   when a connection attempt ends (whether in success or failure)
   write /sys/kernel/debug/tracing/instances/wifi/events/net/filter name==${wifi.interface:-wlan0}
   write /sys/kernel/debug/tracing/instances/wifi/events/net/net_dev_queue/enable 1
   write /sys/kernel/debug/tracing/instances/wifi/events/net/net_dev_xmit/enable 1
   write /sys/kernel/debug/tracing/instances/wifi/events/net/netif_rx/enable 1
   write /sys/kernel/debug/tracing/instances/wifi/events/net/netif_receive_skb/enable 1

   write /sys/kernel/tracing/instances/wifi/events/net/filter name==${wifi.interface:-wlan0}
   write /sys/kernel/tracing/instances/wifi/events/net/net_dev_queue/enable 1
   write /sys/kernel/tracing/instances/wifi/events/net/net_dev_xmit/enable 1
   write /sys/kernel/tracing/instances/wifi/events/net/netif_rx/enable 1
   write /sys/kernel/tracing/instances/wifi/events/net/netif_receive_skb/enable 1

   # Set DAC to allow system to enable/disable, and read wifi trace
   # events.
   chown system /sys/kernel/debug/tracing/instances/wifi/tracing_on
   chown system /sys/kernel/debug/tracing/instances/wifi/free_buffer
   chown system /sys/kernel/debug/tracing/instances/wifi/trace
   chmod 200 /sys/kernel/debug/tracing/instances/wifi/tracing_on
   chmod 400 /sys/kernel/debug/tracing/instances/wifi/free_buffer
   chmod 600 /sys/kernel/debug/tracing/instances/wifi/trace

   chown system /sys/kernel/tracing/instances/wifi/tracing_on
   chown system /sys/kernel/tracing/instances/wifi/free_buffer
   chown system /sys/kernel/tracing/instances/wifi/trace
   chmod 200 /sys/kernel/tracing/instances/wifi/tracing_on
   chmod 400 /sys/kernel/tracing/instances/wifi/free_buffer
   chmod 600 /sys/kernel/tracing/instances/wifi/trace
   setprop sys.wifitracing.started 1

on property:sys.boot_completed=1 && property:wifi.interface=* && property:sys.wifitracing.started=1
   # Override default value.
   write /sys/kernel/debug/tracing/instances/wifi/events/net/filter name==${wifi.interface}
   write /sys/kernel/tracing/instances/wifi/events/net/filter name==${wifi.interface}
