summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Tam <etam@google.com>2014-10-30 11:09:21 -0700
committerEd Tam <etam@google.com>2014-10-30 12:07:52 -0700
commit58d40445c1caba95a168e29dc3dfe5e39c4282da (patch)
tree224d91d0e3b2776cfb4ba9b94bf21f45d5d02bcd
parentf46c8b81b08fb6c4acefc94b8ae6f41a7163f562 (diff)
downloadmako-58d40445c1caba95a168e29dc3dfe5e39c4282da.tar.gz
Fix wifi startup timing issue
Bug: 17358965 Change-Id: Iacafcf1a1a9fed9755912b591eacdefd6992b088
-rw-r--r--device.mk3
-rw-r--r--init.mako.rc11
-rw-r--r--init.mako.wifi.sh10
-rw-r--r--sepolicy/conn_init.te12
-rw-r--r--sepolicy/device.te2
-rw-r--r--sepolicy/file_contexts3
6 files changed, 30 insertions, 11 deletions
diff --git a/device.mk b/device.mk
index 09d7ae2..e7d4da5 100644
--- a/device.mk
+++ b/device.mk
@@ -57,7 +57,8 @@ PRODUCT_COPY_FILES := \
PRODUCT_COPY_FILES += \
device/lge/mako/WCNSS_cfg.dat:system/vendor/firmware/wlan/prima/WCNSS_cfg.dat \
device/lge/mako/WCNSS_qcom_cfg.ini:system/etc/wifi/WCNSS_qcom_cfg.ini \
- device/lge/mako/WCNSS_qcom_wlan_nv.bin:system/etc/wifi/WCNSS_qcom_wlan_nv.bin
+ device/lge/mako/WCNSS_qcom_wlan_nv.bin:system/etc/wifi/WCNSS_qcom_wlan_nv.bin \
+ device/lge/mako/init.mako.wifi.sh:system/etc/init.mako.wifi.sh
PRODUCT_COPY_FILES += \
device/lge/mako/audio_policy.conf:system/etc/audio_policy.conf
diff --git a/init.mako.rc b/init.mako.rc
index 85babc8..67a80d8 100644
--- a/init.mako.rc
+++ b/init.mako.rc
@@ -147,16 +147,12 @@ on post-fs-data
# to observe dnsmasq.leases file for dhcp information of soft ap.
chown dhcp system /data/misc/dhcp
- write /dev/wcnss_wlan 1
+ chown system system /dev/wcnss_wlan
write /sys/module/wcnss_ssr_8960/parameters/enable_riva_ssr 1
# Create directory used by audio subsystem
mkdir /data/misc/audio 0770 audio audio
- # Workaround for conn_init not copying the updated firmware
- rm /data/misc/wifi/WCNSS_qcom_cfg.ini
- rm /data/misc/wifi/WCNSS_qcom_wlan_nv.bin
-
# Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections
# We chown/chmod /persist again so because mount is run as root + defaults
chown system system /persist
@@ -395,10 +391,11 @@ service qcamerasvr /system/bin/mm-qcamera-daemon
user camera
group camera system inet input
-service conn_init /system/bin/conn_init
- class late_start
+service wcnss_init /system/bin/sh /system/etc/init.mako.wifi.sh
+ class main
user system
group system wifi
+ seclabel u:r:conn_init:s0
oneshot
service bdAddrLoader /system/bin/bdAddrLoader -f /persist/bluetooth/.bdaddr -h -x
diff --git a/init.mako.wifi.sh b/init.mako.wifi.sh
new file mode 100644
index 0000000..e586e96
--- /dev/null
+++ b/init.mako.wifi.sh
@@ -0,0 +1,10 @@
+#!/system/bin/sh
+
+# Workaround for conn_init not copying the updated firmware
+rm /data/misc/wifi/WCNSS_qcom_cfg.ini
+rm /data/misc/wifi/WCNSS_qcom_wlan_nv.bin
+
+/system/bin/conn_init
+
+echo 1 > /dev/wcnss_wlan
+
diff --git a/sepolicy/conn_init.te b/sepolicy/conn_init.te
index 33f0cab..6491888 100644
--- a/sepolicy/conn_init.te
+++ b/sepolicy/conn_init.te
@@ -2,10 +2,11 @@
type conn_init, domain;
type conn_init_exec, exec_type, file_type;
-# Started by logwrapper in init
-domain_auto_trans(init, conn_init_exec, conn_init)
+init_daemon_domain(conn_init)
-allow conn_init devpts:chr_file { read write };
+# Runs init.mako.wifi.sh
+allow conn_init shell_exec:file { entrypoint read };
+allow conn_init conn_init_exec:file rx_file_perms;
# Allow /persist/wifi access
allow conn_init { persist_file persist_wifi_file }:dir search;
@@ -14,3 +15,8 @@ allow conn_init persist_wifi_file:file r_file_perms;
# Allow /data/misc/wifi access for firmware files
allow conn_init wifi_data_file:dir w_dir_perms;
allow conn_init wifi_data_file:file create_file_perms;
+
+allow conn_init wlan_device:chr_file rw_file_perms;
+
+# init.mako.wifi.sh runs toolbox
+allow conn_init system_file:file execute_no_trans;
diff --git a/sepolicy/device.te b/sepolicy/device.te
index 81caeca..b6e993a 100644
--- a/sepolicy/device.te
+++ b/sepolicy/device.te
@@ -1,3 +1,5 @@
+type wlan_device, dev_type;
+
type diag_device, dev_type;
# Kickstart device used by QC qcks
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index ca7e215..4944f75 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -2,6 +2,9 @@
/dev/kgsl-3d0 u:object_r:gpu_device:s0
/dev/kgsl u:object_r:gpu_device:s0
+# WLAN
+/dev/wcnss_wlan u:object_r:wlan_device:s0
+
# Image Rotator Driver
/dev/msm_rotator u:object_r:video_device:s0