Support IPv6 MTU in IRadio 1.5

Change mtu->mtuV4 and add mtuV6 for DataProfileInfo and
SetupDataCallResult

Test: mm and build
Bug: 146668814
Change-Id: I33320281730fdb91d2b07d11cd24a95d0834c9dd
Merged-In: I33320281730fdb91d2b07d11cd24a95d0834c9dd
This commit is contained in:
Sarah Chin
2020-01-16 11:09:13 -08:00
parent e7dcbfc135
commit 308569a879
3 changed files with 126 additions and 55 deletions

View File

@@ -635,7 +635,7 @@ c9273429fcf98d797d3bb07fdba6f1be95bf960f9255cde169fd1ca4db85f856 android.hardwar
##
# BEGIN Radio HAL Merge Conflict Avoidance Buffer - STOPSHIP if present
##
7b2481e38a41695de301cbced4259060108ce664132ec506b7533e6da202812a android.hardware.radio@1.5::types
372abc5d0502fc40ca0b83b233addf9babc7fd459bafb908915b1371fc6f1bd0 android.hardware.radio@1.5::types
603851ca0f5360778049902fc7486d0ff60065b16e83b99f076487667aba1928 android.hardware.radio@1.5::IRadio
e96ae1c3a9c0689002ec2318e9c587f4f607c16a75a3cd38788b77eb91072021 android.hardware.radio@1.5::IRadioIndication
04cce8fdae2b03becda4ee6fe17cb032fd7d30152f8ab36f642d794e4f5f6999 android.hardware.radio@1.5::IRadioResponse

View File

@@ -324,13 +324,74 @@ enum ApnTypes : @1.4::ApnTypes {
};
/**
* Extended from @1.4::DataProfileInfo to update ApnTypes to 1.5 version
* Extended from @1.4::DataProfileInfo to update ApnTypes to 1.5 version and replace mtu with
* mtuV4 and mtuV6. In the future, this must be extended instead of overwritten.
*/
struct DataProfileInfo {
@1.4::DataProfileInfo base;
/** ID of the data profile. */
DataProfileId profileId;
/** The APN name. */
string apn;
/** PDP_type values. */
PdpProtocolType protocol;
/** PDP_type values used on roaming network. */
PdpProtocolType roamingProtocol;
/** APN authentication type. */
ApnAuthType authType;
/** The username for APN, or empty string. */
string user;
/** The password for APN, or empty string. */
string password;
/** Data profile technology type. */
DataProfileInfoType type;
/** The period in seconds to limit the maximum connections. */
int32_t maxConnsTime;
/** The maximum connections during maxConnsTime. */
int32_t maxConns;
/**
* The required wait time in seconds after a successful UE initiated disconnect of a given PDN
* connection before the device can send a new PDN connection request for that given PDN.
*/
int32_t waitTime;
/** True to enable the profile, false to disable. */
bool enabled;
/** Supported APN types bitmap. See ApnTypes for the value of each bit. */
bitfield<ApnTypes> supportedApnTypesBitmap;
/** The bearer bitmap. See RadioAccessFamily for the value of each bit. */
bitfield<RadioAccessFamily> bearerBitmap;
/** Maximum transmission unit (MTU) size in bytes for IPv4. */
int32_t mtuV4;
/** Maximum transmission unit (MTU) size in bytes for IPv6. */
int32_t mtuV6;
/**
* True if this data profile was used to bring up the last default (i.e internet) data
* connection successfully.
*/
bool preferred;
/**
* If true, modem must persist this data profile and profileId must not be
* set to DataProfileId.INVALID. If the same data profile exists, this data profile must
* overwrite it.
*/
bool persistent;
};
/**
@@ -377,7 +438,8 @@ struct LinkAddress {
/**
* Overwritten from @1.4::SetupDataCallResult in order to update the addresses to 1.5
* version. In 1.5 the type of addresses changes to vector of LinkAddress.
* version. In 1.5 the type of addresses changes to vector of LinkAddress, and mtu is replaced by
* mtuV4 and mtuV6.
*/
struct SetupDataCallResult {
/** Data call fail cause. DataCallFailCause.NONE if no error. */
@@ -431,10 +493,16 @@ struct SetupDataCallResult {
vec<string> pcscf;
/**
* MTU received from network. Value <= 0 means network has either not sent a value or sent an
* invalid value.
* MTU received from network for IPv4.
* Value <= 0 means network has either not sent a value or sent an invalid value.
*/
int32_t mtu;
int32_t mtuV4;
/**
* MTU received from network for IPv6.
* Value <= 0 means network has either not sent a value or sent an invalid value.
*/
int32_t mtuV6;
};
enum Domain : int32_t {

View File

@@ -833,23 +833,24 @@ TEST_F(RadioHidlTest_v1_5, setupDataCall_1_5) {
android::hardware::radio::V1_5::DataProfileInfo dataProfileInfo;
memset(&dataProfileInfo, 0, sizeof(dataProfileInfo));
dataProfileInfo.base.profileId = DataProfileId::DEFAULT;
dataProfileInfo.base.apn = hidl_string("internet");
dataProfileInfo.base.protocol = PdpProtocolType::IP;
dataProfileInfo.base.roamingProtocol = PdpProtocolType::IP;
dataProfileInfo.base.authType = ApnAuthType::NO_PAP_NO_CHAP;
dataProfileInfo.base.user = hidl_string("username");
dataProfileInfo.base.password = hidl_string("password");
dataProfileInfo.base.type = DataProfileInfoType::THREE_GPP;
dataProfileInfo.base.maxConnsTime = 300;
dataProfileInfo.base.maxConns = 20;
dataProfileInfo.base.waitTime = 0;
dataProfileInfo.base.enabled = true;
dataProfileInfo.profileId = DataProfileId::DEFAULT;
dataProfileInfo.apn = hidl_string("internet");
dataProfileInfo.protocol = PdpProtocolType::IP;
dataProfileInfo.roamingProtocol = PdpProtocolType::IP;
dataProfileInfo.authType = ApnAuthType::NO_PAP_NO_CHAP;
dataProfileInfo.user = hidl_string("username");
dataProfileInfo.password = hidl_string("password");
dataProfileInfo.type = DataProfileInfoType::THREE_GPP;
dataProfileInfo.maxConnsTime = 300;
dataProfileInfo.maxConns = 20;
dataProfileInfo.waitTime = 0;
dataProfileInfo.enabled = true;
dataProfileInfo.supportedApnTypesBitmap = 320;
dataProfileInfo.base.bearerBitmap = 161543;
dataProfileInfo.base.mtu = 0;
dataProfileInfo.base.preferred = true;
dataProfileInfo.base.persistent = false;
dataProfileInfo.bearerBitmap = 161543;
dataProfileInfo.mtuV4 = 0;
dataProfileInfo.mtuV6 = 0;
dataProfileInfo.preferred = true;
dataProfileInfo.persistent = false;
bool roamingAllowed = false;
@@ -884,23 +885,24 @@ TEST_F(RadioHidlTest_v1_5, setInitialAttachApn_1_5) {
// Create a dataProfileInfo
android::hardware::radio::V1_5::DataProfileInfo dataProfileInfo;
memset(&dataProfileInfo, 0, sizeof(dataProfileInfo));
dataProfileInfo.base.profileId = DataProfileId::DEFAULT;
dataProfileInfo.base.apn = hidl_string("internet");
dataProfileInfo.base.protocol = PdpProtocolType::IPV4V6;
dataProfileInfo.base.roamingProtocol = PdpProtocolType::IPV4V6;
dataProfileInfo.base.authType = ApnAuthType::NO_PAP_NO_CHAP;
dataProfileInfo.base.user = hidl_string("username");
dataProfileInfo.base.password = hidl_string("password");
dataProfileInfo.base.type = DataProfileInfoType::THREE_GPP;
dataProfileInfo.base.maxConnsTime = 300;
dataProfileInfo.base.maxConns = 20;
dataProfileInfo.base.waitTime = 0;
dataProfileInfo.base.enabled = true;
dataProfileInfo.profileId = DataProfileId::DEFAULT;
dataProfileInfo.apn = hidl_string("internet");
dataProfileInfo.protocol = PdpProtocolType::IPV4V6;
dataProfileInfo.roamingProtocol = PdpProtocolType::IPV4V6;
dataProfileInfo.authType = ApnAuthType::NO_PAP_NO_CHAP;
dataProfileInfo.user = hidl_string("username");
dataProfileInfo.password = hidl_string("password");
dataProfileInfo.type = DataProfileInfoType::THREE_GPP;
dataProfileInfo.maxConnsTime = 300;
dataProfileInfo.maxConns = 20;
dataProfileInfo.waitTime = 0;
dataProfileInfo.enabled = true;
dataProfileInfo.supportedApnTypesBitmap = 320;
dataProfileInfo.base.bearerBitmap = 161543;
dataProfileInfo.base.mtu = 0;
dataProfileInfo.base.preferred = true;
dataProfileInfo.base.persistent = false;
dataProfileInfo.bearerBitmap = 161543;
dataProfileInfo.mtuV4 = 0;
dataProfileInfo.mtuV6 = 0;
dataProfileInfo.preferred = true;
dataProfileInfo.persistent = false;
radio_v1_5->setInitialAttachApn_1_5(serial, dataProfileInfo);
@@ -923,23 +925,24 @@ TEST_F(RadioHidlTest_v1_5, setDataProfile_1_5) {
// Create a dataProfileInfo
android::hardware::radio::V1_5::DataProfileInfo dataProfileInfo;
memset(&dataProfileInfo, 0, sizeof(dataProfileInfo));
dataProfileInfo.base.profileId = DataProfileId::DEFAULT;
dataProfileInfo.base.apn = hidl_string("internet");
dataProfileInfo.base.protocol = PdpProtocolType::IPV4V6;
dataProfileInfo.base.roamingProtocol = PdpProtocolType::IPV4V6;
dataProfileInfo.base.authType = ApnAuthType::NO_PAP_NO_CHAP;
dataProfileInfo.base.user = hidl_string("username");
dataProfileInfo.base.password = hidl_string("password");
dataProfileInfo.base.type = DataProfileInfoType::THREE_GPP;
dataProfileInfo.base.maxConnsTime = 300;
dataProfileInfo.base.maxConns = 20;
dataProfileInfo.base.waitTime = 0;
dataProfileInfo.base.enabled = true;
dataProfileInfo.profileId = DataProfileId::DEFAULT;
dataProfileInfo.apn = hidl_string("internet");
dataProfileInfo.protocol = PdpProtocolType::IPV4V6;
dataProfileInfo.roamingProtocol = PdpProtocolType::IPV4V6;
dataProfileInfo.authType = ApnAuthType::NO_PAP_NO_CHAP;
dataProfileInfo.user = hidl_string("username");
dataProfileInfo.password = hidl_string("password");
dataProfileInfo.type = DataProfileInfoType::THREE_GPP;
dataProfileInfo.maxConnsTime = 300;
dataProfileInfo.maxConns = 20;
dataProfileInfo.waitTime = 0;
dataProfileInfo.enabled = true;
dataProfileInfo.supportedApnTypesBitmap = 320;
dataProfileInfo.base.bearerBitmap = 161543;
dataProfileInfo.base.mtu = 0;
dataProfileInfo.base.preferred = true;
dataProfileInfo.base.persistent = true;
dataProfileInfo.bearerBitmap = 161543;
dataProfileInfo.mtuV4 = 0;
dataProfileInfo.mtuV6 = 0;
dataProfileInfo.preferred = true;
dataProfileInfo.persistent = true;
// Create a dataProfileInfoList
android::hardware::hidl_vec<android::hardware::radio::V1_5::DataProfileInfo>