Index: html/includes/graphs/port/baystackstats_dropnores.inc.php
===================================================================
--- html/includes/graphs/port/baystackstats_dropnores.inc.php	(Revision 0)
+++ html/includes/graphs/port/baystackstats_dropnores.inc.php	(Arbeitskopie)
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * Observium
+ *
+ *   This file is part of Observium.
+ *
+ * @package    observium
+ * @subpackage graphs
+ * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2018 Observium Limited
+ *
+ */
+
+$total_units     = "Pkts";
+//$multiplier      = "8";
+$rrd_filename                 = $config['rrd_dir'].'/'.$device['hostname'].'/'.'port-'.get_port_rrdindex($port).'-baystackstats.rrd';
+
+$graph_title     = "Drop on no Resources";
+$colours         = 'red';
+
+$ds              = 'IfNoResPktsDropped';
+
+$colour_area = "ef3b2c";
+$colour_line = "67000d";
+
+$colour_area_max = "dddddd";
+
+$graph_max = 1;
+
+$unit_text = "Drop No Resources";
+
+include($config['html_dir']."/includes/graphs/generic_simplex.inc.php");
+
Index: html/includes/graphs/port/baystackstats_pfcinout.inc.php
===================================================================
--- html/includes/graphs/port/baystackstats_pfcinout.inc.php	(Revision 0)
+++ html/includes/graphs/port/baystackstats_pfcinout.inc.php	(Arbeitskopie)
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * Observium
+ *
+ *   This file is part of Observium.
+ *
+ * @package    observium
+ * @subpackage graphs
+ * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2018 Observium Limited
+ *
+ */
+
+ 
+$rrd_filename                 = $config['rrd_dir'].'/'.$device['hostname'].'/'.'port-'.get_port_rrdindex($port).'-baystackstats.rrd';
+ 
+$ds_in = "IfInPfcFrames";
+$ds_out = "IfOutPfcFrames";
+
+$colour_area_in = "AA66AA";
+$colour_line_in = darken_color($colour_area_in);
+//$colour_line_in = "330033";
+$colour_area_out = "FFDD88";
+$colour_line_out = "FF6600";
+
+$colour_area_in_max = "cc88cc";
+$colour_area_out_max = "FFefaa";
+
+$graph_max = 1;
+$graph_title     = "PFC Frames";
+$unit_text = "Packets/s";
+
+$args['nototal'] = 1;
+$print_total = 0;
+$nototal = 1;
+
+
+include('includes/graphs/generic_duplex.inc.php');
+
Index: html/pages/device/port/graphs.inc.php
===================================================================
--- html/pages/device/port/graphs.inc.php	(Revision 10042)
+++ html/pages/device/port/graphs.inc.php	(Arbeitskopie)
@@ -91,7 +91,25 @@
     echo('</td></tr>');
 
   }
+  
+  if (is_file(get_port_rrdfilename($port, "baystackstats", TRUE)))
+  {
+    echo('<tr><td>');
+    echo("<h3>Drops On no Resources</h3>");
+    $graph_array['type'] = "port_baystackstats_dropnores";
 
+    print_graph_row_port($graph_array, $port);
+    echo('</td></tr>');
+	
+	echo('<tr><td>');
+    echo("<h3>Priority-Based Flow Control</h3>");
+    $graph_array['type'] = "port_baystackstats_pfcinout";
+
+    print_graph_row_port($graph_array, $port);
+    echo('</td></tr>');
+
+  }
+
   if (is_file(get_port_rrdfilename($port, "fdbcount", TRUE)))
   {
     echo('<tr><td>');
Index: includes/polling/ports/bay-stack-stats-mib.inc.php
===================================================================
--- includes/polling/ports/bay-stack-stats-mib.inc.php	(Revision 0)
+++ includes/polling/ports/bay-stack-stats-mib.inc.php	(Arbeitskopie)
@@ -0,0 +1,19 @@
+<?php
+
+//  BAY-STACK-STATS-MIB
+
+$port_module = 'bay_stack_stats';
+
+if ($ports_modules[$port_module])
+{	
+	$baystackstats_oids  = array('bayStackStatsIfNoResourcesPktsDropped', 'bayStackStatsIfInPfcFrames', 'bayStackStatsIfOutPfcFrames');
+	
+	foreach ($baystackstats_oids as $oid)
+	{
+		$port_stats = snmpwalk_cache_oid($device, $oid, $port_stats, "BAY-STACK-STATS-MIB");
+	}
+	$process_port_functions[$port_module] = snmp_status();
+}
+
+
+// EOF
Index: includes/polling/ports/bay-stack-stats-mib.lib.php
===================================================================
--- includes/polling/ports/bay-stack-stats-mib.lib.php	(Revision 0)
+++ includes/polling/ports/bay-stack-stats-mib.lib.php	(Arbeitskopie)
@@ -0,0 +1,35 @@
+<?php
+
+// BAY-STACK-STATS-MIB functions
+
+function process_port_bay_stack_stats(&$this_port, $device, $port)
+{
+	// Check to make sure Port data is cached.
+	if (!isset($this_port['bayStackStatsIfNoResourcesPktsDropped'])) { return; }
+
+	// Used below for StatsD only
+	$baystackstats_oids  = array('bayStackStatsIfNoResourcesPktsDropped', 'bayStackStatsIfInPfcFrames', 'bayStackStatsIfOutPfcFrames');
+
+	if (dbFetchCell("SELECT COUNT(*) FROM `ports_bayStackStats` WHERE `port_id` = ?", array($port['port_id'])) == "0")
+	{
+		dbInsert(array('port_id' => $port['port_id']), 'ports_bayStackStats');
+	}
+
+	foreach ($baystackstats_oids as $oid)
+	{		
+		$baystackstats_update[$oid] = $this_port[$oid];
+	}
+	
+	dbUpdate($baystackstats_update, 'ports_bayStackStats', '`port_id` = ?', array($port['port_id']));
+
+	// Update RRDs
+    rrdtool_update_ng($device, 'port-baystackstats', array(
+      'IfNoResPktsDropped'         => $this_port['bayStackStatsIfNoResourcesPktsDropped'],
+      'IfInPfcFrames'        => $this_port['bayStackStatsIfInPfcFrames'],
+      'IfOutPfcFrames'         => $this_port['bayStackStatsIfOutPfcFrames'],
+    ), get_port_rrdindex($port));
+	
+}
+
+
+// EOF