summaryrefslogtreecommitdiff
path: root/lib/avtp_pipeline/qmgr/openavb_qmgr.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/avtp_pipeline/qmgr/openavb_qmgr.c')
-rw-r--r--lib/avtp_pipeline/qmgr/openavb_qmgr.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/lib/avtp_pipeline/qmgr/openavb_qmgr.c b/lib/avtp_pipeline/qmgr/openavb_qmgr.c
index bf717157..5c054eb2 100644
--- a/lib/avtp_pipeline/qmgr/openavb_qmgr.c
+++ b/lib/avtp_pipeline/qmgr/openavb_qmgr.c
@@ -1,5 +1,6 @@
/*************************************************************************************************************
Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company
+Copyright (c) 2016-2017, Harman International Industries, Incorporated
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -57,14 +58,19 @@ typedef struct {
#endif
int mode;
int ifindex;
- char ifname[IFNAMSIZ];
+ char ifname[IFNAMSIZ + 10]; // Include space for the socket type prefix (e.g. "simple:eth0")
U32 linkKbit;
U32 nsrKbit;
U32 linkMTU;
int ref;
} qdisc_data_t;
-static qdisc_data_t qdisc_data;
+static qdisc_data_t qdisc_data = {
+#if (AVB_FEATURE_IGB)
+ NULL,
+#endif
+ 0, 0, {0}, 0, 0, 0, 0
+};
// We do get accessed from multiple threads, so need a mutex
pthread_mutex_t qmgr_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
@@ -97,18 +103,20 @@ static qmgrStream_t qmgr_streams[MAX_AVB_STREAMS];
static bool setupHWQueue(int nClass, unsigned classBytesPerSec)
{
int err = 0;
+#if (AVB_FEATURE_IGB)
U32 class_a_bytes_per_sec, class_b_bytes_per_sec;
+#endif
AVB_TRACE_ENTRY(AVB_TRACE_QUEUE_MANAGER);
+#if (AVB_FEATURE_IGB)
if (nClass == SR_CLASS_A) {
class_a_bytes_per_sec = classBytesPerSec;
- class_b_bytes_per_sec = qmgr_classes[SR_CLASS_B].classBytesPerSec;
+ class_b_bytes_per_sec = qmgr_classes[SR_CLASS_B].classBytesPerSec;
} else {
- class_a_bytes_per_sec = qmgr_classes[SR_CLASS_A].classBytesPerSec;
+ class_a_bytes_per_sec = qmgr_classes[SR_CLASS_A].classBytesPerSec;
class_b_bytes_per_sec = classBytesPerSec;
}
-#if (AVB_FEATURE_IGB)
err = igb_set_class_bandwidth2(qdisc_data.igb_dev, class_a_bytes_per_sec, class_b_bytes_per_sec);
if (err)
AVB_LOGF_ERROR("Adding stream; igb_set_class_bandwidth failed: %s", strerror(err));
@@ -214,7 +222,7 @@ void openavbQmgrRemoveStream(U16 fwmark)
// update class
qmgr_classes[nClass].classBytesPerSec -= qmgr_streams[idx].streamBytesPerSec;
- AVB_LOGF_DEBUG("Removed strea; classBPS=%u, streamBPS=%u", qmgr_classes[nClass].classBytesPerSec, qmgr_streams[idx].streamBytesPerSec);
+ AVB_LOGF_DEBUG("Removed stream; classBPS=%u, streamBPS=%u", qmgr_classes[nClass].classBytesPerSec, qmgr_streams[idx].streamBytesPerSec);
// and stream
memset(&qmgr_streams[idx], 0, sizeof(qmgrStream_t));
}
@@ -267,7 +275,7 @@ bool openavbQmgrInitialize(int mode, int ifindex, const char* ifname, unsigned m
// Save the configuration
if (ifname)
- strncpy(qdisc_data.ifname, ifname, IFNAMSIZ - 1);
+ strncpy(qdisc_data.ifname, ifname, sizeof(qdisc_data.ifname) - 1);
qdisc_data.ifindex = ifindex;
qdisc_data.linkKbit = link_kbit;
qdisc_data.linkMTU = mtu;