modules-avb: milan: acmp: FAST_CONNECT is not working now without any non-volatile configuration

This commit is contained in:
hackerman-kl 2026-04-19 17:07:30 +02:00 committed by Wim Taymans
parent 2e2c365d57
commit 2013ded3cb
2 changed files with 22 additions and 4 deletions

View file

@ -314,7 +314,6 @@ static void prepare_probe_tx_command_success(struct acmp *acmp,
flags = ntohs(reply->flags);
flags &= ~AVB_ACMP_FLAG_STREAMING_WAIT;
flags |= AVB_ACMP_FLAG_FAST_CONNECT;
flags &= ~AVB_ACMP_FLAG_SRP_REGISTRATION_FAILED;
reply->flags = htons(flags);
@ -1474,7 +1473,6 @@ int handle_fsm_settled_no_rsv_rcv_get_rx_state_evt(struct acmp *acmp,
prepare_get_rx_response_success(acmp, stream, m, len, buf);
reply->flags &= htons(~(AVB_ACMP_FLAG_SRP_REGISTRATION_FAILED));
reply->flags |= htons(AVB_ACMP_FLAG_FAST_CONNECT);
reply->flags |= htons(stream->acmp_sta.acmp_flags
& AVB_ACMP_FLAG_STREAMING_WAIT);
@ -1655,7 +1653,6 @@ int handle_fsm_settled_rsv_ok_rcv_get_rx_state_evt(struct acmp *acmp,
prepare_get_rx_response_success(acmp, stream, m, len, buf);
reply->flags &= htons(~(AVB_ACMP_FLAG_SRP_REGISTRATION_FAILED));
reply->flags |= htons(AVB_ACMP_FLAG_FAST_CONNECT);
reply->flags |= htons(stream->acmp_sta.acmp_flags
& AVB_ACMP_FLAG_STREAMING_WAIT);

View file

@ -179,12 +179,33 @@ static int acmp_message(void *data, uint64_t now, const void *message, int len)
pw_log_info("got ACMP message %s", acmp_cmd_names[mtype]);
switch (mtype) {
case AVB_ACMP_MESSAGE_TYPE_CONNECT_RX_COMMAND:
case AVB_ACMP_MESSAGE_TYPE_DISCONNECT_RX_COMMAND:
case AVB_ACMP_MESSAGE_TYPE_GET_RX_STATE_COMMAND:
if (be64toh(p->listener_guid) != server->entity_id)
return 0;
break;
case AVB_ACMP_MESSAGE_TYPE_CONNECT_TX_COMMAND:
case AVB_ACMP_MESSAGE_TYPE_DISCONNECT_TX_COMMAND:
case AVB_ACMP_MESSAGE_TYPE_GET_TX_STATE_COMMAND:
case AVB_ACMP_MESSAGE_TYPE_GET_TX_CONNECTION_COMMAND:
if (be64toh(p->talker_guid) != server->entity_id)
return 0;
break;
}
if (mtype < 0 || (size_t)mtype >= acmp_cmds_modes[server->avb_mode].count) {
if (mtype & 1)
return 0;
return acmp_reply_not_supported(acmp, mtype | 1, message, len);
}
if (acmp_cmds_modes[server->avb_mode].cmds[mtype].handle == NULL)
if (acmp_cmds_modes[server->avb_mode].cmds[mtype].handle == NULL) {
if (mtype & 1)
return 0;
return acmp_reply_not_supported(acmp, mtype | 1, message, len);
}
return acmp_cmds_modes[server->avb_mode].cmds[mtype].handle(acmp, now, message, len);
}