tune usb irq (dwc3) based on usb function
This among other things greatly increases tethering performance. Bug: 185092876 Test: TreeHugger, built and booted on an oriole, enabled tethering Signed-off-by: Maciej Żenczykowski <maze@google.com> Change-Id: Ic9f0b4bef05250bb38c91dc1e046366098d98dc0
This commit is contained in:
parent
ed651c86bf
commit
a24469c9d0
4 changed files with 29 additions and 0 deletions
|
@ -85,6 +85,12 @@ on property:vendor.usb.config=*
|
||||||
on property:persist.vendor.usb.usbradio.config=*
|
on property:persist.vendor.usb.usbradio.config=*
|
||||||
start usbd
|
start usbd
|
||||||
|
|
||||||
|
on property:vendor.usb.dwc3_irq=medium
|
||||||
|
exec /vendor/bin/hw/set_usb_irq.sh medium
|
||||||
|
|
||||||
|
on property:vendor.usb.dwc3_irq=big
|
||||||
|
exec /vendor/bin/hw/set_usb_irq.sh big
|
||||||
|
|
||||||
on charger
|
on charger
|
||||||
mkdir /config/usb_gadget/g1
|
mkdir /config/usb_gadget/g1
|
||||||
mkdir /config/usb_gadget/g1/strings/0x409
|
mkdir /config/usb_gadget/g1/strings/0x409
|
||||||
|
|
|
@ -261,6 +261,7 @@ PRODUCT_COPY_FILES += \
|
||||||
# Shell scripts
|
# Shell scripts
|
||||||
PRODUCT_COPY_FILES += \
|
PRODUCT_COPY_FILES += \
|
||||||
device/google/gs101/init.insmod.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.insmod.sh \
|
device/google/gs101/init.insmod.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.insmod.sh \
|
||||||
|
device/google/gs101/set_usb_irq.sh:$(TARGET_COPY_OUT_VENDOR)/bin/hw/set_usb_irq.sh \
|
||||||
|
|
||||||
# insmod files
|
# insmod files
|
||||||
PRODUCT_COPY_FILES += \
|
PRODUCT_COPY_FILES += \
|
||||||
|
|
16
set_usb_irq.sh
Executable file
16
set_usb_irq.sh
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/vendor/bin/sh
|
||||||
|
|
||||||
|
# Switch into /proc/irq/$IRQ for the dwc3 usb controller
|
||||||
|
cd /proc/irq/*/dwc3/.. || exit 7
|
||||||
|
|
||||||
|
# Move the USB Controller (DWC3) interrupt as requested
|
||||||
|
# Modem and DIT are on 0/2/5 depending on throughput, so avoid those.
|
||||||
|
# 0-3 small, 4-5 medium, 6-7 big
|
||||||
|
case "$1" in
|
||||||
|
medium) core=4;;
|
||||||
|
big) core=6;;
|
||||||
|
*) core=0;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# This can sometimes fail due to smp_affinity_list no longer existing...
|
||||||
|
echo "${core}" > smp_affinity_list
|
|
@ -367,6 +367,12 @@ Return<void> UsbGadget::setCurrentUsbFunctions(uint64_t functions,
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (functions & GadgetFunction::NCM) {
|
||||||
|
SetProperty("vendor.usb.dwc3_irq", "big");
|
||||||
|
} else {
|
||||||
|
SetProperty("vendor.usb.dwc3_irq", "medium");
|
||||||
|
}
|
||||||
|
|
||||||
ALOGI("Usb Gadget setcurrent functions called successfully");
|
ALOGI("Usb Gadget setcurrent functions called successfully");
|
||||||
return Void();
|
return Void();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue