diff options
author | andrew-elder <aelder@audioscience.com> | 2015-12-09 17:43:35 -0800 |
---|---|---|
committer | andrew-elder <aelder@audioscience.com> | 2015-12-09 17:43:35 -0800 |
commit | 8e64094f1c0423d794f3629af0603b6e59d902c8 (patch) | |
tree | 66f3f78f7b18a02a531e3f16bb29b65dda5e143b | |
parent | a5e8f25585f17b83b4041691fcf2c41ee1f992d6 (diff) | |
parent | 9637624d4f3c5cc3dac071b8980f747b619b70c3 (diff) | |
download | Open-AVB-8e64094f1c0423d794f3629af0603b6e59d902c8.tar.gz |
Merge pull request #328 from MarcinMiklas/vlan_id_in_avtp_pipeline
New: VLAN ID can be configured for no endpoint builds.
17 files changed, 61 insertions, 2 deletions
diff --git a/lib/avtp_pipeline/intf_ctrl/ctrl_talker.ini b/lib/avtp_pipeline/intf_ctrl/ctrl_talker.ini index ef33fa59..747ff19b 100644 --- a/lib/avtp_pipeline/intf_ctrl/ctrl_talker.ini +++ b/lib/avtp_pipeline/intf_ctrl/ctrl_talker.ini @@ -96,6 +96,9 @@ max_transmit_deficit_usec = 50000 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/intf_echo/echo_talker.ini b/lib/avtp_pipeline/intf_echo/echo_talker.ini index 69a0f988..6987e03c 100644 --- a/lib/avtp_pipeline/intf_echo/echo_talker.ini +++ b/lib/avtp_pipeline/intf_echo/echo_talker.ini @@ -93,6 +93,9 @@ report_seconds = 1 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/intf_echo/echo_talker_auto.ini b/lib/avtp_pipeline/intf_echo/echo_talker_auto.ini index d6ec7280..66326964 100644 --- a/lib/avtp_pipeline/intf_echo/echo_talker_auto.ini +++ b/lib/avtp_pipeline/intf_echo/echo_talker_auto.ini @@ -93,6 +93,9 @@ report_seconds = 1 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/intf_null/null_talker.ini b/lib/avtp_pipeline/intf_null/null_talker.ini index 088c2009..3f440cbd 100644 --- a/lib/avtp_pipeline/intf_null/null_talker.ini +++ b/lib/avtp_pipeline/intf_null/null_talker.ini @@ -93,6 +93,9 @@ max_transmit_deficit_usec = 50000 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/intf_tonegen/tonegen_talker.ini b/lib/avtp_pipeline/intf_tonegen/tonegen_talker.ini index dbbc9f2d..24a207c9 100644 --- a/lib/avtp_pipeline/intf_tonegen/tonegen_talker.ini +++ b/lib/avtp_pipeline/intf_tonegen/tonegen_talker.ini @@ -78,6 +78,9 @@ max_transit_usec = 2000 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/intf_viewer/latency_talker.ini b/lib/avtp_pipeline/intf_viewer/latency_talker.ini index 823ae3b9..f69a6673 100644 --- a/lib/avtp_pipeline/intf_viewer/latency_talker.ini +++ b/lib/avtp_pipeline/intf_viewer/latency_talker.ini @@ -103,6 +103,9 @@ max_transmit_deficit_usec = 50000 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/platform/Linux/intf_alsa/aaf_file_talker.ini b/lib/avtp_pipeline/platform/Linux/intf_alsa/aaf_file_talker.ini index ffa339a5..0eddb28f 100644 --- a/lib/avtp_pipeline/platform/Linux/intf_alsa/aaf_file_talker.ini +++ b/lib/avtp_pipeline/platform/Linux/intf_alsa/aaf_file_talker.ini @@ -74,6 +74,9 @@ max_transit_usec = 50000 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/platform/Linux/intf_alsa/aaf_talker.ini b/lib/avtp_pipeline/platform/Linux/intf_alsa/aaf_talker.ini index 40bb3e38..f98ba668 100644 --- a/lib/avtp_pipeline/platform/Linux/intf_alsa/aaf_talker.ini +++ b/lib/avtp_pipeline/platform/Linux/intf_alsa/aaf_talker.ini @@ -89,6 +89,9 @@ max_transmit_deficit_usec = 50000 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/platform/Linux/intf_alsa/alsa_talker.ini b/lib/avtp_pipeline/platform/Linux/intf_alsa/alsa_talker.ini index 652b9704..e5908906 100644 --- a/lib/avtp_pipeline/platform/Linux/intf_alsa/alsa_talker.ini +++ b/lib/avtp_pipeline/platform/Linux/intf_alsa/alsa_talker.ini @@ -87,6 +87,9 @@ max_transmit_deficit_usec = 50000 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/platform/Linux/intf_mjpeg_gst/mjpeg_gst_talker.ini b/lib/avtp_pipeline/platform/Linux/intf_mjpeg_gst/mjpeg_gst_talker.ini index 05b8223e..7e906a76 100644 --- a/lib/avtp_pipeline/platform/Linux/intf_mjpeg_gst/mjpeg_gst_talker.ini +++ b/lib/avtp_pipeline/platform/Linux/intf_mjpeg_gst/mjpeg_gst_talker.ini @@ -93,6 +93,9 @@ max_transmit_deficit_usec = 50000 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/platform/Linux/intf_mpeg2ts_file/mpeg2ts_file_talker.ini b/lib/avtp_pipeline/platform/Linux/intf_mpeg2ts_file/mpeg2ts_file_talker.ini index c4f595a0..b5bf26d0 100644 --- a/lib/avtp_pipeline/platform/Linux/intf_mpeg2ts_file/mpeg2ts_file_talker.ini +++ b/lib/avtp_pipeline/platform/Linux/intf_mpeg2ts_file/mpeg2ts_file_talker.ini @@ -93,6 +93,9 @@ raw_rx_buffers = 100 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/platform/Linux/intf_mpeg2ts_gst/mpeg2ts_gst_talker.ini b/lib/avtp_pipeline/platform/Linux/intf_mpeg2ts_gst/mpeg2ts_gst_talker.ini index fa48e7a3..0cc3299b 100644 --- a/lib/avtp_pipeline/platform/Linux/intf_mpeg2ts_gst/mpeg2ts_gst_talker.ini +++ b/lib/avtp_pipeline/platform/Linux/intf_mpeg2ts_gst/mpeg2ts_gst_talker.ini @@ -83,6 +83,9 @@ max_transmit_deficit_usec = 50000 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/platform/Linux/intf_wav_file/wav_file_talker.ini b/lib/avtp_pipeline/platform/Linux/intf_wav_file/wav_file_talker.ini index ead3bbfc..9abe8167 100644 --- a/lib/avtp_pipeline/platform/Linux/intf_wav_file/wav_file_talker.ini +++ b/lib/avtp_pipeline/platform/Linux/intf_wav_file/wav_file_talker.ini @@ -78,6 +78,9 @@ max_transit_usec = 2000 # Ethernet Interface Name. Only needed on some platforms when stack is built with no endpoint functionality # ifname = eth0 +# vlan_id: VLAN Identifier (1-4094). Used in "no endpoint" builds. Defaults to 2. +# vlan_id = 2 + ##################################################################### # Mapping module configuration ##################################################################### diff --git a/lib/avtp_pipeline/platform/Linux/tl/openavb_tl_osal.c b/lib/avtp_pipeline/platform/Linux/tl/openavb_tl_osal.c index 44d5b1c4..d6ca4264 100644 --- a/lib/avtp_pipeline/platform/Linux/tl/openavb_tl_osal.c +++ b/lib/avtp_pipeline/platform/Linux/tl/openavb_tl_osal.c @@ -303,6 +303,18 @@ static int openavbTLCfgCallback(void *user, const char *tlSection, const char *n valOK = TRUE; } } + else if (MATCH(name, "vlan_id")) { + errno = 0; + long tmp; + tmp = strtol(value, &pEnd, 0); + // vlanID is 12 bit field + if (*pEnd == '\0' && errno == 0 + && tmp >= 0x0 + && tmp <= 0xFFF) { + pCfg->vlan_id = tmp; + valOK = TRUE; + } + } else if (MATCH(name, "map_lib")) { if (pTLState->mapLib.libName) diff --git a/lib/avtp_pipeline/tl/openavb_talker_no_endpoint.c b/lib/avtp_pipeline/tl/openavb_talker_no_endpoint.c index 5d1aec64..d7e08225 100644 --- a/lib/avtp_pipeline/tl/openavb_talker_no_endpoint.c +++ b/lib/avtp_pipeline/tl/openavb_talker_no_endpoint.c @@ -74,12 +74,14 @@ bool openavbTLRunTalkerInit(tl_state_t *pTLState) pTalkerData->streamID.uniqueID = pCfg->stream_uid;
if (pCfg->sr_class == SR_CLASS_A) {
pTalkerData->classRate = 8000;
- pTalkerData->vlanID = SR_CLASS_A_DEFAULT_VID;
+ pTalkerData->vlanID = pCfg->vlan_id == VLAN_NULL ?
+ SR_CLASS_A_DEFAULT_VID : pCfg->vlan_id;
pTalkerData->vlanPCP = SR_CLASS_A_DEFAULT_PRIORITY;
}
else if (pCfg->sr_class == SR_CLASS_B) {
pTalkerData->classRate = 4000;
- pTalkerData->vlanID = SR_CLASS_B_DEFAULT_VID;
+ pTalkerData->vlanID = pCfg->vlan_id == VLAN_NULL ?
+ SR_CLASS_B_DEFAULT_VID : pCfg->vlan_id;
pTalkerData->vlanPCP = SR_CLASS_B_DEFAULT_PRIORITY;
}
memcpy(&pTalkerData->destAddr, &pCfg->dest_addr.mac->ether_addr_octet, ETH_ALEN);
diff --git a/lib/avtp_pipeline/tl/openavb_tl.c b/lib/avtp_pipeline/tl/openavb_tl.c index f22191a9..eb9ee145 100755 --- a/lib/avtp_pipeline/tl/openavb_tl.c +++ b/lib/avtp_pipeline/tl/openavb_tl.c @@ -395,6 +395,7 @@ EXTERN_DLL_EXPORT void openavbTLInitCfg(openavb_tl_cfg_t *pCfg) pCfg->rx_signal_mode = 1;
pCfg->pMapInitFn = NULL;
pCfg->pIntfInitFn = NULL;
+ pCfg->vlan_id = VLAN_NULL;
AVB_TRACE_EXIT(AVB_TRACE_TL);
}
diff --git a/lib/avtp_pipeline/tl/openavb_tl_pub.h b/lib/avtp_pipeline/tl/openavb_tl_pub.h index 58b59dfd..6e46494b 100755 --- a/lib/avtp_pipeline/tl/openavb_tl_pub.h +++ b/lib/avtp_pipeline/tl/openavb_tl_pub.h @@ -75,6 +75,9 @@ typedef enum { /// Maximum size of interface name #define IFNAMSIZE 16 +/// Indicatates that VLAN ID is not set in configuration +#define VLAN_NULL UINT16_MAX + /// Structure containing configuration of the host typedef struct { /// Role of the host @@ -122,6 +125,8 @@ typedef struct { bool tx_blocking_in_intf; /// Network interface name. Not used on all platforms. char ifname[IFNAMSIZE]; + /// VLAN ID + U16 vlan_id; /// When set incoming packets will trigger a signal to the stream task to wakeup. bool rx_signal_mode; |