Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adjust storage and processing in SystemPacketBuffer and associated code for large payloads. #31776

Merged
merged 1 commit into from
Feb 23, 2024

Conversation

pidarped
Copy link
Contributor

Extend uint16_t type variables to uint32_t wherever applicable.

Fixes #31115

Copy link

PR #31776: Size comparison from 9aeff06 to 8597870

Increases (1 build for stm32)
platform target config section 9aeff06 8597870 change % change
stm32 light STM32WB5MM-DK .bss 128320 128352 32 0.0
Decreases (1 build for stm32)
platform target config section 9aeff06 8597870 change % change
stm32 light STM32WB5MM-DK (read/write) 599157 599149 -8 -0.0
.text 381672 381632 -40 -0.0
Full report (1 build for stm32)
platform target config section 9aeff06 8597870 change % change
stm32 light STM32WB5MM-DK (read/write) 599157 599149 -8 -0.0
.bss 128320 128352 32 0.0
.data 668 668 0 0.0
.rodata 78772 78772 0 0.0
.text 381672 381632 -40 -0.0

Copy link

github-actions bot commented Feb 22, 2024

PR #31776: Size comparison from 9aeff06 to 68f4090

Increases (40 builds for cc13x4_26x4, cc32xx, efr32, linux, mbed, nrfconnect, psoc6, qpg, stm32, telink)
platform target config section 9aeff06 68f4090 change % change
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 (read only) 772636 772756 120 0.0
.rodata 81652 81748 96 0.1
.text 690720 690744 24 0.0
lock-ftd LP_EM_CC1354P10_6 (read only) 789244 789380 136 0.0
.rodata 75940 76044 104 0.1
.text 713040 713072 32 0.0
lock-mtd LP_EM_CC1354P10_6 (read only) 777908 778028 120 0.0
.rodata 102700 102796 96 0.1
.text 674944 674968 24 0.0
pump-app LP_EM_CC1354P10_6 (read only) 730076 730196 120 0.0
.rodata 77372 77468 96 0.1
.text 652440 652464 24 0.0
pump-controller-app LP_EM_CC1354P10_6 (read only) 715700 715820 120 0.0
.rodata 73212 73308 96 0.1
.text 642224 642248 24 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL (read only) 582010 582154 144 0.0
.rodata 86522 86618 96 0.1
.text 493368 493416 48 0.0
lock CC3235SF_LAUNCHXL (read only) 627362 627506 144 0.0
.rodata 106978 107082 104 0.1
.text 518264 518304 40 0.0
efr32 lighting-app BRD4161A+rs9116 (read/write) 930736 930872 136 0.0
.text 731412 731548 136 0.0
BRD4187C .bss 195152 195184 32 0.0
window-app BRD4187C .bss 167392 167424 32 0.0
linux chip-tool-ipv6only arm64 (read/write) 588512 589168 656 0.1
thermostat-no-ble arm64 (read/write) 248216 248760 544 0.2
mbed lock-app-release cy8cproto_062_4343w .bss 220448 220504 56 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 bss 130831 130863 32 0.0
nrf7002dk_nrf5340_cpuapp bss 122921 122953 32 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 bss 129689 129721 32 0.0
light-switch-app nrf52840dk_nrf52840 bss 123726 123758 32 0.0
nrf7002dk_nrf5340_cpuapp (read/write) 1190816 1190832 16 0.0
bss 115033 115065 32 0.0
lighting-app nrf52840dk_nrf52840+rpc bss 135517 135549 32 0.0
nrf52840dongle_nrf52840 bss 143582 143614 32 0.0
nrf5340dk_nrf5340_cpuapp bss 131854 131886 32 0.0
nrf7002dk_nrf5340_cpuapp (read/write) 1190816 1190832 16 0.0
bss 115033 115065 32 0.0
lock-app nrf52840dk_nrf52840 (read/write) 1012764 1012844 80 0.0
bss 124257 124289 32 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 927920 927936 16 0.0
bss 121854 121886 32 0.0
nrf7002dk_nrf5340_cpuapp (read/write) 1203788 1203804 16 0.0
bss 115564 115596 32 0.0
pump-app nrf52840dk_nrf52840 bss 122958 122990 32 0.0
pump-controller-app nrf52840dk_nrf52840 bss 122757 122789 32 0.0
psoc6 all-clusters cy8ckit_062s2_43012 (read/write) 1795228 1795364 136 0.0
.text 1587964 1588100 136 0.0
all-clusters-minimal cy8ckit_062s2_43012 (read/write) 1717316 1717444 128 0.0
.text 1513204 1513332 128 0.0
light cy8ckit_062s2_43012 (read/write) 1636436 1636548 112 0.0
.text 1439052 1439164 112 0.0
lock cy8ckit_062s2_43012 (read/write) 1666348 1666476 128 0.0
.text 1441804 1441932 128 0.0
qpg lighting-app qpg6105+debug .bss 102456 102488 32 0.0
lock-app qpg6105+debug .bss 97200 97232 32 0.0
stm32 light STM32WB5MM-DK .bss 128320 128352 32 0.0
telink all-clusters-app tlsr9518adk80d bss 101780 101812 32 0.0
all-clusters-minimal-app tlsr9528a bss 110084 110116 32 0.0
bridge-app tlsr9518adk80d bss 93116 93148 32 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d bss 100196 100228 32 0.0
ota-requestor-app tlsr9518adk80d bss 92696 92728 32 0.0
shell tlsr9518adk80d bss 73672 73704 32 0.0
Decreases (70 builds for bl602, bl702, bl702l, cyw30739, efr32, esp32, k32w, linux, nrfconnect, qpg, stm32, telink)
platform target config section 9aeff06 68f4090 change % change
bl602 lighting-app bl602 (read/write) 1433818 1433794 -24 -0.0
.text 1100814 1100792 -22 -0.0
bl602+mfd (read/write) 1448218 1448202 -16 -0.0
.text 1116128 1116106 -22 -0.0
bl602+rpc (read/write) 1481442 1481418 -24 -0.0
.text 1132452 1132430 -22 -0.0
bl702 lighting-app bl702 (read/write) 1198803 1198563 -240 -0.0
.text 970262 969990 -272 -0.0
bl702+mfd (read/write) 1209599 1209359 -240 -0.0
.text 982016 981744 -272 -0.0
bl702+rpc (read/write) 1290271 1290031 -240 -0.0
.text 1044950 1044678 -272 -0.0
bl706-eth (read/write) 1016161 1016141 -20 -0.0
.text 761062 761044 -18 -0.0
bl706-wifi (read/write) 1250306 1250302 -4 -0.0
.text 992430 992426 -4 -0.0
bl702l lighting-app bl702l (read/write) 1168632 1168392 -240 -0.0
.text 963104 962832 -272 -0.0
bl702l+mfd (read/write) 1180040 1179800 -240 -0.0
.text 975426 975154 -272 -0.0
cyw30739 light cyw930739m2evb_01 (read/write) 567843 567795 -48 -0.0
.app_xip_area 457629 457581 -48 -0.0
lock cyw930739m2evb_01 (read/write) 550651 550603 -48 -0.0
.app_xip_area 435677 435629 -48 -0.0
ota-requestor cyw930739m2evb_01 (read/write) 569443 569387 -56 -0.0
.app_xip_area 460733 460677 -56 -0.0
switch cyw930739m2evb_01 (read/write) 564051 563995 -56 -0.0
.app_xip_area 452061 452005 -56 -0.0
efr32 lighting-app BRD4187C (read/write) 1108352 1108344 -8 -0.0
.text 909772 909732 -40 -0.0
window-app BRD4187C (read/write) 1154744 1154704 -40 -0.0
.text 984012 983940 -72 -0.0
esp32 all-clusters-app c3devkit (read only) 1210272 1210246 -26 -0.0
.flash.text 1210272 1210246 -26 -0.0
m5stack (read only) 1252403 1252339 -64 -0.0
.flash.text 1246239 1246175 -64 -0.0
k32w contact k32w0+release (read only) 611968 611920 -48 -0.0
.text 611432 611384 -48 -0.0
k32w1+release (read/write) 747092 747036 -56 -0.0
.text 625720 625664 -56 -0.0
light k32w0+release (read only) 603560 603496 -64 -0.0
.text 603024 602960 -64 -0.0
k32w1+release (read/write) 789216 789160 -56 -0.0
.text 667248 667192 -56 -0.0
lock k32w0+release (read only) 582216 582152 -64 -0.0
.text 581680 581616 -64 -0.0
linux air-purifier-app debug (read only) 2605981 2605901 -80 -0.0
.text 2244453 2244373 -80 -0.0
all-clusters-app debug (read only) 5900081 5899985 -96 -0.0
.text 5118467 5118371 -96 -0.0
all-clusters-minimal-app debug (read only) 5180849 5180769 -80 -0.0
.text 4658851 4658771 -80 -0.0
bridge-app debug (read only) 4577601 4577521 -80 -0.0
.text 4129443 4129363 -80 -0.0
chip-tool debug (read only) 11991777 11991665 -112 -0.0
.text 10838915 10838803 -112 -0.0
chip-tool-ipv6only arm64 (read only) 11488384 11487728 -656 -0.0
.text 10247580 10246924 -656 -0.0
lighting-app debug+rpc+ui (read only) 5500009 5499913 -96 -0.0
.text 4900899 4900803 -96 -0.0
lock-app debug (read only) 4645505 4645409 -96 -0.0
.text 4179907 4179811 -96 -0.0
ota-provider-app debug (read only) 4278297 4278201 -96 -0.0
.text 3878787 3878691 -96 -0.0
ota-requestor-app debug (read only) 4404465 4404369 -96 -0.0
.text 3994211 3994115 -96 -0.0
shell debug (read only) 2880113 2880033 -80 -0.0
.text 2521922 2521842 -80 -0.0
thermostat-no-ble arm64 (read only) 4463840 4463296 -544 -0.0
.text 3960748 3960204 -544 -0.0
tv-app debug (read only) 5654777 5654681 -96 -0.0
.text 5125811 5125715 -96 -0.0
tv-casting-app debug (read only) 9842617 9842521 -96 -0.0
.text 8995299 8995203 -96 -0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1101264 1101232 -32 -0.0
text 810568 810524 -44 -0.0
nrf7002dk_nrf5340_cpuapp (read/write) 1221304 1221288 -16 -0.0
text 806092 806048 -44 -0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1049284 1049252 -32 -0.0
text 772368 772324 -44 -0.0
light-switch-app nrf52840dk_nrf52840 (read/write) 1000708 1000660 -48 -0.0
text 740428 740380 -48 -0.0
nrf7002dk_nrf5340_cpuapp text 754608 754560 -48 -0.0
lighting-app nrf52840dk_nrf52840+rpc (read/write) 1099640 1099592 -48 -0.0
text 818956 818912 -44 -0.0
nrf52840dongle_nrf52840 (read/write) 1060056 1060008 -48 -0.0
text 776452 776408 -44 -0.0
nrf5340dk_nrf5340_cpuapp (read/write) 984004 983956 -48 -0.0
text 716424 716380 -44 -0.0
nrf7002dk_nrf5340_cpuapp text 754608 754560 -48 -0.0
lock-app nrf52840dk_nrf52840 text 732448 732400 -48 -0.0
nrf5340dk_nrf5340_cpuapp text 651176 651128 -48 -0.0
nrf7002dk_nrf5340_cpuapp text 747520 747472 -48 -0.0
pump-app nrf52840dk_nrf52840 (read/write) 964040 963992 -48 -0.0
text 709588 709544 -44 -0.0
pump-controller-app nrf52840dk_nrf52840 (read/write) 952028 951980 -48 -0.0
text 700784 700736 -48 -0.0
qpg lighting-app qpg6105+debug (read/write) 1127704 1127656 -48 -0.0
.text 640088 640040 -48 -0.0
lock-app qpg6105+debug (read/write) 1087688 1087640 -48 -0.0
.text 600068 600020 -48 -0.0
stm32 light STM32WB5MM-DK (read/write) 599157 599149 -8 -0.0
.text 381672 381632 -40 -0.0
telink air-quality-sensor-app tlsr9528a_retention (read/write) 821970 821706 -264 -0.0
text 615770 615510 -260 -0.0
all-clusters-app tlsr9518adk80d (read/write) 1090772 1090572 -200 -0.0
text 792876 792644 -232 -0.0
all-clusters-minimal-app tlsr9528a (read/write) 1048268 1048068 -200 -0.0
text 764224 763992 -232 -0.0
bridge-app tlsr9518adk80d (read/write) 909020 908828 -192 -0.0
text 651692 651462 -230 -0.0
contact-sensor-app tlsr9528a_retention (read/write) 823642 823386 -256 -0.0
text 617508 617248 -260 -0.0
light-switch-app-ota-shell-factory-data tlsr9528a (read/write) 929368 929088 -280 -0.0
text 697666 697388 -278 -0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d (read/write) 1071644 1071428 -216 -0.0
text 776558 776310 -248 -0.0
lock-app-dfu tlsr9528a (read/write) 901720 901464 -256 -0.0
text 652888 652628 -260 -0.0
ota-requestor-app tlsr9518adk80d (read/write) 927508 927292 -216 -0.0
text 670212 669964 -248 -0.0
pump-app tlsr9258a_retention (read/write) 826202 825938 -264 -0.0
text 620464 620204 -260 -0.0
pump-controller-app tlsr9518adk80d (read/write) 789916 789652 -264 -0.0
text 591214 590954 -260 -0.0
shell tlsr9518adk80d (read/write) 676816 676664 -152 -0.0
text 462298 462114 -184 -0.0
smoke_co_alarm-app tlsr9528a_retention (read/write) 830686 830422 -264 -0.0
text 623578 623318 -260 -0.0
temperature-measurement-app-mars-ota tlsr9518adk80d (read/write) 849221 848941 -280 -0.0
text 635270 634992 -278 -0.0
thermostat tlsr9518adk80d (read/write) 815576 815320 -256 -0.0
text 610922 610662 -260 -0.0
window-covering tlsr9258a (read/write) 833680 833424 -256 -0.0
text 626178 625918 -260 -0.0
Full report (84 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, psoc6, qpg, stm32, telink)
platform target config section 9aeff06 68f4090 change % change
bl602 lighting-app bl602 (read/write) 1433818 1433794 -24 -0.0
.bss 85328 85328 0 0.0
.data 9496 9496 0 0.0
.rodata 157532 157532 0 0.0
.text 1100814 1100792 -22 -0.0
bl602+mfd (read/write) 1448218 1448202 -16 -0.0
.bss 85488 85488 0 0.0
.data 9472 9472 0 0.0
.rodata 156492 156492 0 0.0
.text 1116128 1116106 -22 -0.0
bl602+rpc (read/write) 1481442 1481418 -24 -0.0
.bss 93360 93360 0 0.0
.data 9872 9872 0 0.0
.rodata 165100 165100 0 0.0
.text 1132452 1132430 -22 -0.0
bl702 lighting-app bl702 (read only) 3478 3478 0 0.0
(read/write) 1198803 1198563 -240 -0.0
.bss 11121 11121 0 0.0
.data 3680 3680 0 0.0
.rodata 106872 106872 0 0.0
.text 970262 969990 -272 -0.0
bl702+mfd (read only) 3478 3478 0 0.0
(read/write) 1209599 1209359 -240 -0.0
.bss 11297 11297 0 0.0
.data 3656 3656 0 0.0
.rodata 105812 105812 0 0.0
.text 982016 981744 -272 -0.0
bl702+rpc (read only) 3478 3478 0 0.0
(read/write) 1290271 1290031 -240 -0.0
.bss 19589 19589 0 0.0
.data 4224 4224 0 0.0
.rodata 122244 122244 0 0.0
.text 1044950 1044678 -272 -0.0
bl706-eth (read/write) 1016161 1016141 -20 -0.0
.bss 23680 23680 0 0.0
.data 3248 3248 0 0.0
.rodata 100216 100216 0 0.0
.text 761062 761044 -18 -0.0
bl706-wifi (read/write) 1250306 1250302 -4 -0.0
.bss 10565 10565 0 0.0
.data 3688 3688 0 0.0
.rodata 121216 121216 0 0.0
.text 992430 992426 -4 -0.0
bl702l lighting-app bl702l (read/write) 1168632 1168392 -240 -0.0
.bss 16316 16316 0 0.0
.data 5040 5040 0 0.0
.rodata 100876 100876 0 0.0
.text 963104 962832 -272 -0.0
bl702l+mfd (read/write) 1180040 1179800 -240 -0.0
.bss 16492 16492 0 0.0
.data 5024 5024 0 0.0
.rodata 99816 99816 0 0.0
.text 975426 975154 -272 -0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 (read only) 772636 772756 120 0.0
(read/write) 168600 168600 0 0.0
.bss 90604 90604 0 0.0
.data 3560 3560 0 0.0
.rodata 81652 81748 96 0.1
.text 690720 690744 24 0.0
lock-ftd LP_EM_CC1354P10_6 (read only) 789244 789380 136 0.0
(read/write) 178848 178848 0 0.0
.bss 100852 100852 0 0.0
.data 3560 3560 0 0.0
.rodata 75940 76044 104 0.1
.text 713040 713072 32 0.0
lock-mtd LP_EM_CC1354P10_6 (read only) 777908 778028 120 0.0
(read/write) 173288 173288 0 0.0
.bss 95292 95292 0 0.0
.data 3560 3560 0 0.0
.rodata 102700 102796 96 0.1
.text 674944 674968 24 0.0
pump-app LP_EM_CC1354P10_6 (read only) 730076 730196 120 0.0
(read/write) 167568 167568 0 0.0
.bss 89336 89336 0 0.0
.data 3552 3552 0 0.0
.rodata 77372 77468 96 0.1
.text 652440 652464 24 0.0
pump-controller-app LP_EM_CC1354P10_6 (read only) 715700 715820 120 0.0
(read/write) 167776 167776 0 0.0
.bss 89560 89560 0 0.0
.data 3544 3544 0 0.0
.rodata 73212 73308 96 0.1
.text 642224 642248 24 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL (read only) 582010 582154 144 0.0
(read/write) 207968 207968 0 0.0
.bss 201204 201204 0 0.0
.data 1640 1640 0 0.0
.rodata 86522 86618 96 0.1
.text 493368 493416 48 0.0
lock CC3235SF_LAUNCHXL (read only) 627362 627506 144 0.0
(read/write) 208312 208312 0 0.0
.bss 201696 201696 0 0.0
.data 1496 1496 0 0.0
.rodata 106978 107082 104 0.1
.text 518264 518304 40 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 567843 567795 -48 -0.0
.app_xip_area 457629 457581 -48 -0.0
.bss 65048 65048 0 0.0
.data 744 744 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 550651 550603 -48 -0.0
.app_xip_area 435677 435629 -48 -0.0
.bss 69800 69800 0 0.0
.data 752 752 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor cyw930739m2evb_01 (read/write) 569443 569387 -56 -0.0
.app_xip_area 460733 460677 -56 -0.0
.bss 63584 63584 0 0.0
.data 704 704 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
switch cyw930739m2evb_01 (read/write) 564051 563995 -56 -0.0
.app_xip_area 452061 452005 -56 -0.0
.bss 66784 66784 0 0.0
.data 784 784 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A+rs9116 (read/write) 930736 930872 136 0.0
.bss 197912 197912 0 0.0
.data 1388 1388 0 0.0
.text 731412 731548 136 0.0
BRD4187C (read/write) 1108352 1108344 -8 -0.0
.bss 195152 195184 32 0.0
.data 3408 3408 0 0.0
.text 909772 909732 -40 -0.0
lock-app BRD4161A+wf200 (read/write) 1121492 1121492 0 0.0
.bss 186764 186764 0 0.0
.data 2792 2792 0 0.0
.text 931916 931916 0 0.0
window-app BRD4187C (read/write) 1154744 1154704 -40 -0.0
.bss 167392 167424 32 0.0
.data 3320 3320 0 0.0
.text 984012 983940 -72 -0.0
esp32 all-clusters-app c3devkit (read only) 1210272 1210246 -26 -0.0
(read/write) 1748656 1748656 0 0.0
.dram0.bss 74296 74296 0 0.0
.dram0.data 13620 13620 0 0.0
.flash.rodata 251200 251200 0 0.0
.flash.text 1210272 1210246 -26 -0.0
.iram0.text 75530 75530 0 0.0
m5stack (read only) 1252403 1252339 -64 -0.0
(read/write) 534140 534140 0 0.0
.dram0.bss 81208 81208 0 0.0
.dram0.data 35164 35164 0 0.0
.flash.rodata 281848 281848 0 0.0
.flash.text 1246239 1246175 -64 -0.0
.iram0.text 125403 125403 0 0.0
k32w contact k32w0+release (read only) 611968 611920 -48 -0.0
(read/write) 80036 80036 0 0.0
.bss 67828 67828 0 0.0
.data 2224 2224 0 0.0
.text 611432 611384 -48 -0.0
k32w1+release (read only) 1024 1024 0 0.0
(read/write) 747092 747036 -56 -0.0
.bss 79188 79188 0 0.0
.data 2816 2816 0 0.0
.text 625720 625664 -56 -0.0
light k32w0+release (read only) 603560 603496 -64 -0.0
(read/write) 79492 79492 0 0.0
.bss 67308 67308 0 0.0
.data 2200 2200 0 0.0
.text 603024 602960 -64 -0.0
k32w1+release (read only) 1024 1024 0 0.0
(read/write) 789216 789160 -56 -0.0
.bss 80580 80580 0 0.0
.data 2032 2032 0 0.0
.text 667248 667192 -56 -0.0
lock k32w0+release (read only) 582216 582152 -64 -0.0
(read/write) 77480 77480 0 0.0
.bss 65348 65348 0 0.0
.data 2148 2148 0 0.0
.text 581680 581616 -64 -0.0
linux air-purifier-app debug (read only) 2605981 2605901 -80 -0.0
(read/write) 128680 128680 0 0.0
.bss 46320 46320 0 0.0
.data 2240 2240 0 0.0
.data.rel.ro 74184 74184 0 0.0
.dynamic 608 608 0 0.0
.got 4544 4544 0 0.0
.init 27 27 0 0.0
.init_array 752 752 0 0.0
.rodata 184240 184240 0 0.0
.text 2244453 2244373 -80 -0.0
all-clusters-app debug (read only) 5900081 5899985 -96 -0.0
(read/write) 480088 480088 0 0.0
.bss 134656 134656 0 0.0
.data 4464 4464 0 0.0
.data.rel.ro 333560 333560 0 0.0
.dynamic 624 624 0 0.0
.got 5360 5360 0 0.0
.init 27 27 0 0.0
.init_array 1392 1392 0 0.0
.rodata 348464 348464 0 0.0
.text 5118467 5118371 -96 -0.0
all-clusters-minimal-app debug (read only) 5180849 5180769 -80 -0.0
(read/write) 236040 236040 0 0.0
.bss 127456 127456 0 0.0
.data 4368 4368 0 0.0
.data.rel.ro 97160 97160 0 0.0
.dynamic 624 624 0 0.0
.got 5280 5280 0 0.0
.init 27 27 0 0.0
.init_array 1120 1120 0 0.0
.rodata 287458 287458 0 0.0
.text 4658851 4658771 -80 -0.0
bridge-app debug (read only) 4577601 4577521 -80 -0.0
(read/write) 216944 216944 0 0.0
.bss 117984 117984 0 0.0
.data 6176 6176 0 0.0
.data.rel.ro 86080 86080 0 0.0
.dynamic 624 624 0 0.0
.got 5248 5248 0 0.0
.init 27 27 0 0.0
.init_array 808 808 0 0.0
.rodata 228066 228066 0 0.0
.text 4129443 4129363 -80 -0.0
chip-tool debug (read only) 11991777 11991665 -112 -0.0
(read/write) 521232 521232 0 0.0
.bss 94264 94264 0 0.0
.data 5090 5090 0 0.0
.data.rel.ro 414656 414656 0 0.0
.dynamic 624 624 0 0.0
.got 5768 5768 0 0.0
.init 27 27 0 0.0
.init_array 784 784 0 0.0
.rodata 447289 447289 0 0.0
.text 10838915 10838803 -112 -0.0
chip-tool-ipv6only arm64 (read only) 11488384 11487728 -656 -0.0
(read/write) 588512 589168 656 0.1
.bss 103352 103352 0 0.0
.data 4488 4488 0 0.0
.data.rel.ro 454416 454416 0 0.0
.dynamic 512 512 0 0.0
.got 20344 20344 0 0.0
.init 24 24 0 0.0
.init_array 248 248 0 0.0
.rodata 352988 352988 0 0.0
.text 10247580 10246924 -656 -0.0
lighting-app debug+rpc+ui (read only) 5500009 5499913 -96 -0.0
(read/write) 225712 225712 0 0.0
.bss 118920 118920 0 0.0
.data 4832 4832 0 0.0
.data.rel.ro 94480 94480 0 0.0
.dynamic 672 672 0 0.0
.got 5864 5864 0 0.0
.init 27 27 0 0.0
.init_array 928 928 0 0.0
.rodata 352916 352916 0 0.0
.text 4900899 4900803 -96 -0.0
lock-app debug (read only) 4645505 4645409 -96 -0.0
(read/write) 204600 204600 0 0.0
.bss 113440 113440 0 0.0
.data 4128 4128 0 0.0
.data.rel.ro 80328 80328 0 0.0
.dynamic 624 624 0 0.0
.got 5200 5200 0 0.0
.init 27 27 0 0.0
.init_array 848 848 0 0.0
.rodata 254114 254114 0 0.0
.text 4179907 4179811 -96 -0.0
ota-provider-app debug (read only) 4278297 4278201 -96 -0.0
(read/write) 193160 193160 0 0.0
.bss 113216 113216 0 0.0
.data 4336 4336 0 0.0
.data.rel.ro 69712 69712 0 0.0
.dynamic 624 624 0 0.0
.got 4536 4536 0 0.0
.init 27 27 0 0.0
.init_array 704 704 0 0.0
.rodata 206754 206754 0 0.0
.text 3878787 3878691 -96 -0.0
ota-requestor-app debug (read only) 4404465 4404369 -96 -0.0
(read/write) 197568 197568 0 0.0
.bss 114112 114112 0 0.0
.data 4736 4736 0 0.0
.data.rel.ro 72832 72832 0 0.0
.dynamic 624 624 0 0.0
.got 4472 4472 0 0.0
.init 27 27 0 0.0
.init_array 760 760 0 0.0
.rodata 212930 212930 0 0.0
.text 3994211 3994115 -96 -0.0
shell debug (read only) 2880113 2880033 -80 -0.0
(read/write) 156104 156104 0 0.0
.bss 62544 62544 0 0.0
.data 1392 1392 0 0.0
.data.rel.ro 86384 86384 0 0.0
.dynamic 592 592 0 0.0
.got 4072 4072 0 0.0
.init 27 27 0 0.0
.init_array 1072 1072 0 0.0
.rodata 185024 185024 0 0.0
.text 2521922 2521842 -80 -0.0
thermostat-no-ble arm64 (read only) 4463840 4463296 -544 -0.0
(read/write) 248216 248760 544 0.2
.bss 121768 121768 0 0.0
.data 3360 3360 0 0.0
.data.rel.ro 103544 103544 0 0.0
.dynamic 512 512 0 0.0
.got 12080 12080 0 0.0
.init 24 24 0 0.0
.init_array 416 416 0 0.0
.rodata 158660 158660 0 0.0
.text 3960748 3960204 -544 -0.0
tv-app debug (read only) 5654777 5654681 -96 -0.0
(read/write) 351344 351344 0 0.0
.bss 243248 243248 0 0.0
.data 6496 6496 0 0.0
.data.rel.ro 94312 94312 0 0.0
.dynamic 624 624 0 0.0
.got 5496 5496 0 0.0
.init 27 27 0 0.0
.init_array 1144 1144 0 0.0
.rodata 287202 287202 0 0.0
.text 5125811 5125715 -96 -0.0
tv-casting-app debug (read only) 9842617 9842521 -96 -0.0
(read/write) 339944 339944 0 0.0
.bss 155984 155984 0 0.0
.data 2944 2944 0 0.0
.data.rel.ro 174136 174136 0 0.0
.dynamic 624 624 0 0.0
.got 5072 5072 0 0.0
.init 27 27 0 0.0
.init_array 1168 1168 0 0.0
.rodata 381776 381776 0 0.0
.text 8995299 8995203 -96 -0.0
mbed lock-app-release cy8cproto_062_4343w (read only) 6224 6224 0 0.0
(read/write) 2531464 2531464 0 0.0
.bss 220448 220504 56 0.0
.data 5200 5200 0 0.0
.text 1494148 1494148 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read only) 4 4 0 0.0
(read/write) 1101264 1101232 -32 -0.0
bss 130831 130863 32 0.0
rodata 112024 112024 0 0.0
text 810568 810524 -44 -0.0
nrf7002dk_nrf5340_cpuapp (read only) 4 4 0 0.0
(read/write) 1221304 1221288 -16 -0.0
bss 122921 122953 32 0.0
rodata 141768 141768 0 0.0
text 806092 806048 -44 -0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read only) 4 4 0 0.0
(read/write) 1049284 1049252 -32 -0.0
bss 129689 129721 32 0.0
rodata 99396 99396 0 0.0
text 772368 772324 -44 -0.0
light-switch-app nrf52840dk_nrf52840 (read only) 4 4 0 0.0
(read/write) 1000708 1000660 -48 -0.0
bss 123726 123758 32 0.0
rodata 88884 88884 0 0.0
text 740428 740380 -48 -0.0
nrf7002dk_nrf5340_cpuapp (read only) 4 4 0 0.0
(read/write) 1190816 1190832 16 0.0
bss 115033 115065 32 0.0
rodata 166776 166776 0 0.0
text 754608 754560 -48 -0.0
lighting-app nrf52840dk_nrf52840+rpc (read only) 4 4 0 0.0
(read/write) 1099640 1099592 -48 -0.0
bss 135517 135549 32 0.0
rodata 94448 94448 0 0.0
text 818956 818912 -44 -0.0
nrf52840dongle_nrf52840 (read only) 4 4 0 0.0
(read/write) 1060056 1060008 -48 -0.0
bss 143582 143614 32 0.0
rodata 84560 84560 0 0.0
text 776452 776408 -44 -0.0
nrf5340dk_nrf5340_cpuapp (read only) 4 4 0 0.0
(read/write) 984004 983956 -48 -0.0
bss 131854 131886 32 0.0
rodata 83508 83508 0 0.0
text 716424 716380 -44 -0.0
nrf7002dk_nrf5340_cpuapp (read only) 4 4 0 0.0
(read/write) 1190816 1190832 16 0.0
bss 115033 115065 32 0.0
rodata 166776 166776 0 0.0
text 754608 754560 -48 -0.0
lock-app nrf52840dk_nrf52840 (read only) 4 4 0 0.0
(read/write) 1012764 1012844 80 0.0
bss 124257 124289 32 0.0
rodata 108444 108444 0 0.0
text 732448 732400 -48 -0.0
nrf5340dk_nrf5340_cpuapp (read only) 4 4 0 0.0
(read/write) 927920 927936 16 0.0
bss 121854 121886 32 0.0
rodata 102728 102728 0 0.0
text 651176 651128 -48 -0.0
nrf7002dk_nrf5340_cpuapp (read only) 4 4 0 0.0
(read/write) 1203788 1203804 16 0.0
bss 115564 115596 32 0.0
rodata 186344 186344 0 0.0
text 747520 747472 -48 -0.0
pump-app nrf52840dk_nrf52840 (read only) 4 4 0 0.0
(read/write) 964040 963992 -48 -0.0
bss 122958 122990 32 0.0
rodata 83904 83904 0 0.0
text 709588 709544 -44 -0.0
pump-controller-app nrf52840dk_nrf52840 (read only) 4 4 0 0.0
(read/write) 952028 951980 -48 -0.0
bss 122757 122789 32 0.0
rodata 80820 80820 0 0.0
text 700784 700736 -48 -0.0
psoc6 all-clusters cy8ckit_062s2_43012 (read only) 834464 834464 0 0.0
(read/write) 1795228 1795364 136 0.0
.bss 196212 196212 0 0.0
.data 2664 2664 0 0.0
.text 1587964 1588100 136 0.0
all-clusters-minimal cy8ckit_062s2_43012 (read only) 837616 837616 0 0.0
(read/write) 1717316 1717444 128 0.0
.bss 193092 193092 0 0.0
.data 2632 2632 0 0.0
.text 1513204 1513332 128 0.0
light cy8ckit_062s2_43012 (read only) 844344 844344 0 0.0
(read/write) 1636436 1636548 112 0.0
.bss 186556 186556 0 0.0
.data 2440 2440 0 0.0
.text 1439052 1439164 112 0.0
lock cy8ckit_062s2_43012 (read only) 817184 817184 0 0.0
(read/write) 1666348 1666476 128 0.0
.bss 213716 213716 0 0.0
.data 2440 2440 0 0.0
.text 1441804 1441932 128 0.0
qpg lighting-app qpg6105+debug (read/write) 1127704 1127656 -48 -0.0
.bss 102456 102488 32 0.0
.data 820 820 0 0.0
.text 640088 640040 -48 -0.0
lock-app qpg6105+debug (read/write) 1087688 1087640 -48 -0.0
.bss 97200 97232 32 0.0
.data 840 840 0 0.0
.text 600068 600020 -48 -0.0
stm32 light STM32WB5MM-DK (read/write) 599157 599149 -8 -0.0
.bss 128320 128352 32 0.0
.data 668 668 0 0.0
.rodata 78772 78772 0 0.0
.text 381672 381632 -40 -0.0
telink air-quality-sensor-app tlsr9528a_retention (read only) 51774 51774 0 0.0
(read/write) 821970 821706 -264 -0.0
bss 49660 49660 0 0.0
text 615770 615510 -260 -0.0
all-clusters-app tlsr9518adk80d (read only) 29042 29042 0 0.0
(read/write) 1090772 1090572 -200 -0.0
bss 101780 101812 32 0.0
text 792876 792644 -232 -0.0
all-clusters-minimal-app tlsr9528a (read only) 47960 47960 0 0.0
(read/write) 1048268 1048068 -200 -0.0
bss 110084 110116 32 0.0
text 764224 763992 -232 -0.0
bridge-app tlsr9518adk80d (read only) 29042 29042 0 0.0
(read/write) 909020 908828 -192 -0.0
bss 93116 93148 32 0.0
text 651692 651462 -230 -0.0
contact-sensor-app tlsr9528a_retention (read only) 51774 51774 0 0.0
(read/write) 823642 823386 -256 -0.0
bss 49708 49708 0 0.0
text 617508 617248 -260 -0.0
light-switch-app-ota-shell-factory-data tlsr9528a (read only) 51584 51584 0 0.0
(read/write) 929368 929088 -280 -0.0
bss 77708 77708 0 0.0
text 697666 697388 -278 -0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d (read only) 29122 29122 0 0.0
(read/write) 1071644 1071428 -216 -0.0
bss 100196 100228 32 0.0
text 776558 776310 -248 -0.0
lock-app-dfu tlsr9528a (read only) 51584 51584 0 0.0
(read/write) 901720 901464 -256 -0.0
bss 69172 69172 0 0.0
text 652888 652628 -260 -0.0
ota-requestor-app tlsr9518adk80d (read only) 29042 29042 0 0.0
(read/write) 927508 927292 -216 -0.0
bss 92696 92728 32 0.0
text 670212 669964 -248 -0.0
pump-app tlsr9258a_retention (read only) 51774 51774 0 0.0
(read/write) 826202 825938 -264 -0.0
bss 49816 49816 0 0.0
text 620464 620204 -260 -0.0
pump-controller-app tlsr9518adk80d (read only) 31872 31872 0 0.0
(read/write) 789916 789652 -264 -0.0
bss 56016 56016 0 0.0
text 591214 590954 -260 -0.0
shell tlsr9518adk80d (read only) 29042 29042 0 0.0
(read/write) 676816 676664 -152 -0.0
bss 73672 73704 32 0.0
text 462298 462114 -184 -0.0
smoke_co_alarm-app tlsr9528a_retention (read only) 51774 51774 0 0.0
(read/write) 830686 830422 -264 -0.0
bss 51340 51340 0 0.0
text 623578 623318 -260 -0.0
temperature-measurement-app-mars-ota tlsr9518adk80d (read only) 32220 32220 0 0.0
(read/write) 849221 848941 -280 -0.0
bss 59492 59492 0 0.0
text 635270 634992 -278 -0.0
thermostat tlsr9518adk80d (read only) 31872 31872 0 0.0
(read/write) 815576 815320 -256 -0.0
bss 56304 56304 0 0.0
text 610922 610662 -260 -0.0
window-covering tlsr9258a (read only) 51584 51584 0 0.0
(read/write) 833680 833424 -256 -0.0
bss 68080 68080 0 0.0
text 626178 625918 -260 -0.0

 and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
@pidarped pidarped merged commit 5b8bb6f into project-chip:tcp Feb 23, 2024
58 checks passed
pidarped added a commit that referenced this pull request Feb 23, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit that referenced this pull request Feb 27, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
@@ -483,7 +483,7 @@ CHIP_ERROR TCPEndPointImplSockets::DriveSendingImpl()

while (!mSendQueue.IsNull())
{
uint16_t bufLen = mSendQueue->DataLength();
uint32_t bufLen = static_cast<uint32_t>(mSendQueue->DataLength());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does bufLen here need to be uint32_t? send takes a size_t.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't necessarily need to be, I guess. But, IIRC, I might have gotten a CI error(or warning being flagged as error) on some platform when casting ssize_t to size_t for lenSentRaw and then comparing with bufLen. So, this seemed like a practical workaround.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What was the error? There shouldn't be an error in that case...

@@ -496,14 +496,14 @@ CHIP_ERROR TCPEndPointImplSockets::DriveSendingImpl()
break;
}

if (lenSentRaw < 0 || lenSentRaw > bufLen)
if (lenSentRaw < 0 || bufLen < static_cast<uint32_t>(lenSentRaw))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And this should cast to size_t, I would think.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the issue was, IIRC, that some platforms were complaining when casting from ssize_t to size_t, which was probably the reason I cast bufLen to uint32_t as well. lenSentRaw is ssize_t and directly casting to size_t. I might have to have an exclusive check for lenSentRaw to be positive when casting to size_t. Will check.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see how casting to size_t can possibly complain but casting to uint32_t succeed. But I'd love to learn more.

{
err = CHIP_ERROR_INCORRECT_STATE;
break;
}

// Cast is safe because bufLen is uint16_t.
uint16_t lenSent = static_cast<uint16_t>(lenSentRaw);
// Cast is safe because bufLen is uint32_t.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, but the cast to set bufLen initially was unsafe, no?

Why can't lenSent just be size_t?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the reason as above.

@@ -237,7 +237,7 @@ CHIP_ERROR UDPEndPointImplOT::SendMsgImpl(const IPPacketInfo * aPktInfo, System:
message = otUdpNewMessage(mOTInstance, NULL);
VerifyOrExit(message != NULL, error = OT_ERROR_NO_BUFS);

error = otMessageAppend(message, msg->Start(), msg->DataLength());
error = otMessageAppend(message, msg->Start(), static_cast<uint16_t>(msg->DataLength()));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be erroring out of the DataLength is too big?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not necessary. Threa, BLE and LwIP cap the message max length to UINT16_MAX. So, casting to uint16_t should be safe.

Copy link
Contributor

@bzbarsky-apple bzbarsky-apple Mar 2, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My point is this: we are going to throw away the high bytes of the length. If those are nonzero, we should error out, not silently use a different length.

@@ -416,7 +416,10 @@ CHIP_ERROR UDPEndPointImplSockets::SendMsgImpl(const IPPacketInfo * aPktInfo, Sy
{
return CHIP_ERROR_POSIX(errno);
}
if (lenSent != msg->DataLength())

size_t len = static_cast<size_t>(lenSent);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we only checking for -1 on send but for < 0 on receive? Pre-existing, but please do a followup to make them consistent.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should, ideally be checking with -1. Will take a look.

@@ -31,7 +31,7 @@ namespace System {
CHIP_ERROR TLVPacketBufferBackingStore::OnInit(chip::TLV::TLVReader & reader, const uint8_t *& bufStart, uint32_t & bufLen)
{
bufStart = mHeadBuffer->Start();
bufLen = mHeadBuffer->DataLength();
bufLen = static_cast<uint32_t>(mHeadBuffer->DataLength());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to be checking the cast is safe, erroring if not?

This is all going to come back and bite us sometime. Please fix all such callsites.

"Addition to generate payloadLength might overflow");

ReturnErrorOnFailure(payloadHeader.EncodeBeforeData(msgBuf));

uint8_t * data = msgBuf->Start();
uint16_t totalLen = msgBuf->TotalLength();
uint32_t totalLen = static_cast<uint32_t>(msgBuf->TotalLength());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should be checking this is safe!


MessageAuthenticationCode mac;
ReturnErrorOnFailure(context.Encrypt(data, totalLen, data, nonce, packetHeader, mac));

uint16_t taglen = 0;
ReturnErrorOnFailure(mac.Encode(packetHeader, &data[totalLen], msgBuf->AvailableDataLength(), &taglen));

VerifyOrReturnError(CanCastTo<uint16_t>(totalLen + taglen), CHIP_ERROR_INTERNAL);
msgBuf->SetDataLength(static_cast<uint16_t>(totalLen + taglen));
VerifyOrReturnError(CanCastTo<size_t>(totalLen + taglen), CHIP_ERROR_INTERNAL);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is no longer doing correct checks. Back when totalLen and taglen were both uint16_t, we knew we could add without overflow, since it would add as (4-byte) int.

But now that we have 32-bit things here, we have to be a lot more careful with our additions. Please fix this.

@@ -69,7 +69,7 @@ CHIP_ERROR Decrypt(const CryptoContext & context, CryptoContext::ConstNonceView
ReturnErrorCodeIf(msg.IsNull(), CHIP_ERROR_INVALID_ARGUMENT);

uint8_t * data = msg->Start();
uint16_t len = msg->DataLength();
uint32_t len = static_cast<uint32_t>(msg->DataLength());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the cast safe?

{
VerifyOrReturnError(size >= EncodeSizeBytes(), CHIP_ERROR_INVALID_ARGUMENT);
VerifyOrReturnError(size >= static_cast<size_t>(EncodeSizeBytes()), CHIP_ERROR_INVALID_ARGUMENT);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the cast needed? What type does EncodeSizeBytes() return?

pidarped added a commit that referenced this pull request Mar 11, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit that referenced this pull request Mar 12, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit to pidarped/connectedhomeip that referenced this pull request Mar 14, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit to pidarped/connectedhomeip that referenced this pull request Mar 27, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit to pidarped/connectedhomeip that referenced this pull request Apr 16, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit to pidarped/connectedhomeip that referenced this pull request Apr 16, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit to pidarped/connectedhomeip that referenced this pull request Apr 17, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit to pidarped/connectedhomeip that referenced this pull request Apr 18, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit to pidarped/connectedhomeip that referenced this pull request Apr 25, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit to pidarped/connectedhomeip that referenced this pull request Apr 25, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit that referenced this pull request Apr 25, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit to pidarped/connectedhomeip that referenced this pull request Apr 25, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
pidarped added a commit that referenced this pull request Apr 25, 2024
and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.
yunhanw-google pushed a commit that referenced this pull request Apr 26, 2024
… master (#33001)

* Adjust storage and processing in SystemPacketBuffer (#31776)

and associated code for large payloads.

Extend uint16_t type variables to size_t for the APIs
and all applicable places.

* Address review comments
@pidarped pidarped deleted the TCPBufferMgmt branch November 12, 2024 22:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants