s390/ap: Fix MAPML computation

When the TAPQ subfunction of PQAP returns a value between 0 and 3 in the
ml field, the Principles of Operation states that the Maximum AP Message
Length (MAPML) must be 12 KB.

The previous code incorrectly calculated smaller sizes for ml values 1-2:
- ml=1: 4 KB instead of 12 KB
- ml=2: 8 KB instead of 12 KB

While no current hardware reports ml=1 or ml=2, this fix ensures correct
behavior for specification compliance and future-proofing.

The fix ensures all ml values 0-3 correctly use the 12 KB default, with
only values 4+ using the formula ml * 4096.

Reviewed-by: Harald Freudenberger <freude@linux.ibm.com>
Signed-off-by: Finn Callies <fcallies@linux.ibm.com>
Acked-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
Finn Callies 2026-08-05 11:29:28 +02:00 committed by Vasily Gorbik
parent 5ddf6f12dc
commit 0de29a313c

View File

@ -241,7 +241,7 @@ struct ap_card *ap_card_create(int id, struct ap_tapq_hwinfo hwinfo,
ac->ap_dev.device_type = comp_type;
ac->hwinfo = hwinfo;
ac->id = id;
ac->maxmsgsize = hwinfo.ml > 0 ?
ac->maxmsgsize = hwinfo.ml > 3 ?
hwinfo.ml * AP_TAPQ_ML_FIELD_CHUNK_SIZE : AP_DEFAULT_MAX_MSG_SIZE;
return ac;