mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-05-03 06:47:04 -04:00
milan-avb: aecp-aem: source GET_AVB_INFO grandmaster from gptp
This commit is contained in:
parent
e9a1e50996
commit
9f019a061d
1 changed files with 12 additions and 5 deletions
|
|
@ -7,6 +7,7 @@
|
||||||
#include "aecp-aem-descriptors.h"
|
#include "aecp-aem-descriptors.h"
|
||||||
#include "aecp-aem-state.h"
|
#include "aecp-aem-state.h"
|
||||||
#include "aecp-aem-cmds-resps/cmd-resp-helpers.h"
|
#include "aecp-aem-cmds-resps/cmd-resp-helpers.h"
|
||||||
|
#include "gptp.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
/* The headers including the command and response of the system */
|
/* The headers including the command and response of the system */
|
||||||
|
|
@ -144,6 +145,8 @@ static int handle_get_avb_info_common(struct aecp *aecp, int64_t now,
|
||||||
const struct descriptor *desc;
|
const struct descriptor *desc;
|
||||||
uint8_t buf[2048];
|
uint8_t buf[2048];
|
||||||
size_t size, psize;
|
size_t size, psize;
|
||||||
|
uint64_t gm_id_be;
|
||||||
|
uint8_t flags;
|
||||||
|
|
||||||
i = (struct avb_packet_aecp_aem_get_avb_info*)p->payload;
|
i = (struct avb_packet_aecp_aem_get_avb_info*)p->payload;
|
||||||
|
|
||||||
|
|
@ -174,13 +177,17 @@ static int handle_get_avb_info_common(struct aecp *aecp, int64_t now,
|
||||||
AVB_PACKET_SET_LENGTH(&reply->aecp.hdr, psize + 12);
|
AVB_PACKET_SET_LENGTH(&reply->aecp.hdr, psize + 12);
|
||||||
|
|
||||||
i = (struct avb_packet_aecp_aem_get_avb_info*)reply->payload;
|
i = (struct avb_packet_aecp_aem_get_avb_info*)reply->payload;
|
||||||
i->gptp_grandmaster_id = avb_interface->clock_identity;
|
flags = AVB_AEM_AVB_INFO_FLAG_SRP_ENABLED;
|
||||||
|
/* IEEE 1722.1-2021 Section 7.4.40 GET_AVB_INFO. */
|
||||||
|
if (avb_gptp_get_grandmaster_id(server->gptp, &gm_id_be)) {
|
||||||
|
i->gptp_grandmaster_id = gm_id_be;
|
||||||
|
flags |= AVB_AEM_AVB_INFO_FLAG_GPTP_ENABLED;
|
||||||
|
} else {
|
||||||
|
i->gptp_grandmaster_id = avb_interface->clock_identity;
|
||||||
|
}
|
||||||
|
i->flags = flags;
|
||||||
i->propagation_delay = htonl(0);
|
i->propagation_delay = htonl(0);
|
||||||
i->gptp_domain_number = avb_interface->domain_number;
|
i->gptp_domain_number = avb_interface->domain_number;
|
||||||
/* IEEE 1722.1-2021 Section 7.4.40: GPTP_ENABLED / GPTP_GRANDMASTER_SUPPORTED
|
|
||||||
* stay 0 until the gPTP interface lands. SRP_ENABLED is on because
|
|
||||||
* MSRP is running on every AVB interface this module manages. */
|
|
||||||
i->flags = AVB_AEM_AVB_INFO_FLAG_SRP_ENABLED;
|
|
||||||
i->msrp_mappings_count = htons(0);
|
i->msrp_mappings_count = htons(0);
|
||||||
|
|
||||||
return avb_server_send_packet(server, h->src, AVB_TSN_ETH, buf, size);
|
return avb_server_send_packet(server, h->src, AVB_TSN_ETH, buf, size);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue