mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-04-30 06:46:49 -04:00
modules-avb: milan: acmp: FAST_CONNECT is not working now without any non-volatile configuration
This commit is contained in:
parent
2e2c365d57
commit
2013ded3cb
2 changed files with 22 additions and 4 deletions
|
|
@ -314,7 +314,6 @@ static void prepare_probe_tx_command_success(struct acmp *acmp,
|
||||||
|
|
||||||
flags = ntohs(reply->flags);
|
flags = ntohs(reply->flags);
|
||||||
flags &= ~AVB_ACMP_FLAG_STREAMING_WAIT;
|
flags &= ~AVB_ACMP_FLAG_STREAMING_WAIT;
|
||||||
flags |= AVB_ACMP_FLAG_FAST_CONNECT;
|
|
||||||
flags &= ~AVB_ACMP_FLAG_SRP_REGISTRATION_FAILED;
|
flags &= ~AVB_ACMP_FLAG_SRP_REGISTRATION_FAILED;
|
||||||
reply->flags = htons(flags);
|
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);
|
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_SRP_REGISTRATION_FAILED));
|
||||||
reply->flags |= htons(AVB_ACMP_FLAG_FAST_CONNECT);
|
|
||||||
|
|
||||||
reply->flags |= htons(stream->acmp_sta.acmp_flags
|
reply->flags |= htons(stream->acmp_sta.acmp_flags
|
||||||
& AVB_ACMP_FLAG_STREAMING_WAIT);
|
& 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);
|
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_SRP_REGISTRATION_FAILED));
|
||||||
reply->flags |= htons(AVB_ACMP_FLAG_FAST_CONNECT);
|
|
||||||
reply->flags |= htons(stream->acmp_sta.acmp_flags
|
reply->flags |= htons(stream->acmp_sta.acmp_flags
|
||||||
& AVB_ACMP_FLAG_STREAMING_WAIT);
|
& AVB_ACMP_FLAG_STREAMING_WAIT);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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]);
|
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 < 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);
|
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_reply_not_supported(acmp, mtype | 1, message, len);
|
||||||
|
}
|
||||||
|
|
||||||
return acmp_cmds_modes[server->avb_mode].cmds[mtype].handle(acmp, now, message, len);
|
return acmp_cmds_modes[server->avb_mode].cmds[mtype].handle(acmp, now, message, len);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue