From ee5795e8503186e4eb76a3f5483f58faebe77965 Mon Sep 17 00:00:00 2001 From: Ray Chi Date: Tue, 12 Apr 2022 16:47:17 +0800 Subject: [PATCH] usb: change function sequence if debug functions are enabled On Windows platforms, wrong function sequnce will cause usb driver installing not working. This patch will modify the function sequence when debug functions are enabled. Bug: 228800277 Test: tethering is working when debug functions are enabled. Change-Id: I9f8b02354617b08a34fb4641ac710f32dabc643e --- usb/gadget/UsbGadget.cpp | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/usb/gadget/UsbGadget.cpp b/usb/gadget/UsbGadget.cpp index 2a1e16c5..8fe69929 100644 --- a/usb/gadget/UsbGadget.cpp +++ b/usb/gadget/UsbGadget.cpp @@ -165,7 +165,6 @@ static V1_0::Status validateAndSetVidPid(uint64_t functions) { } break; case static_cast(GadgetFunction::RNDIS): - case GadgetFunction::RNDIS | GadgetFunction::NCM: if (!(vendorFunctions == "user" || vendorFunctions == "")) { ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str()); ret = Status::CONFIGURATION_NOT_SUPPORTED; @@ -174,7 +173,6 @@ static V1_0::Status validateAndSetVidPid(uint64_t functions) { } break; case GadgetFunction::ADB | GadgetFunction::RNDIS: - case GadgetFunction::ADB | GadgetFunction::RNDIS | GadgetFunction::NCM: if (vendorFunctions == "dm") { ret = setVidPid("0x04e8", "0x6862"); } else { @@ -309,30 +307,20 @@ V1_0::Status UsbGadget::setupFunctions(uint64_t functions, bool ffsEnabled = false; int i = 0; - // Use the NCM support hack because the gadget function has no NCM definition. - // TODO: add formal NCM function setup once gadget function supports NCM. - uint64_t usbFunctions = functions; - bool ncmEnabled = false; - const std::string vendorRndisConfig = GetProperty(google::pixel::usb::kVendorRndisConfig, ""); - if ((functions & GadgetFunction::RNDIS) && (vendorRndisConfig.find("ncm.gs", 0) == 0)) { - ncmEnabled = true; - usbFunctions &= ~static_cast(GadgetFunction::RNDIS); - } - - if (addGenericAndroidFunctions(&monitorFfs, usbFunctions, &ffsEnabled, &i) != + if (addGenericAndroidFunctions(&monitorFfs, functions, &ffsEnabled, &i) != Status::SUCCESS) return Status::ERROR; - if ((functions & GadgetFunction::NCM) != 0) { + std::string vendorFunctions = getVendorFunctions(); + + if (((functions & GadgetFunction::NCM) != 0) && (vendorFunctions != "dm")) { if (linkFunction("ncm.gs9", i++)) return Status::ERROR; } - std::string vendorFunctions = getVendorFunctions(); - if (vendorFunctions == "dm") { ALOGI("enable usbradio debug functions"); - if ((usbFunctions & GadgetFunction::RNDIS) != 0) { + if ((functions & GadgetFunction::RNDIS) != 0) { if (linkFunction("acm.gs6", i++)) return Status::ERROR; if (linkFunction("dm.gs7", i++)) @@ -353,17 +341,14 @@ V1_0::Status UsbGadget::setupFunctions(uint64_t functions, return Status::ERROR; } - if ((usbFunctions & GadgetFunction::ADB) != 0) { + if ((functions & GadgetFunction::ADB) != 0) { ffsEnabled = true; if (addAdb(&monitorFfs, &i) != Status::SUCCESS) return Status::ERROR; } - // Reordering NCM function makes Windows generic NCM driver work when vendor funcs are enabled. - // TODO: possibly remove the reordering once vendor function Windows driver supports NCM. - if (ncmEnabled) { - ALOGI("set ncm function"); - if (linkFunction(vendorRndisConfig.c_str(), i++)) + if (((functions & GadgetFunction::NCM) != 0) && (vendorFunctions == "dm")) { + if (linkFunction("ncm.gs9", i++)) return Status::ERROR; }