Exemple #1
0
        static int get_ts(ref ixgbe_timestamp ixgbe)
        {
            int _ts   = 0;
            int retry = 0;

            ++timestamps_to_read;
            if (timestamps_to_read > max_past_failed)
            {
                Console.WriteLine("Interface does not provide timestamps\nExiting");
                System.Environment.Exit(1);
            }

            while (timestamps_to_read >= 1)
            {
                Console.WriteLine("Timestamps to read Pre: " + timestamps_to_read + " Current Timestamp to drop: " + _ts);
                while (retry < retry_max)
                {
                    var ts_result = ixgbe.get_timestamp(); //recvmsg
                    if (ts_result.ok)
                    {
                        Console.WriteLine("Tx ts read");
                        _ts = ts_result.ts;
                        break;
                    }
                    else
                    {
                        ++retry;
                        Console.WriteLine("Fail retry: " + retry);
                    }
                }

                if (retry < retry_max)
                {
                    --timestamps_to_read;
                    Console.WriteLine("Queued timestamps: " + timestamps_to_read);
                    retry = 0;
                }
                else
                {
                    Console.WriteLine("BAIL for next cycle\n  Queued timestamps: " + timestamps_to_read);
                    break;
                }
            }

            Console.WriteLine("Timestamps to read Post: " + timestamps_to_read);
            return(_ts);
        }
Exemple #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Test cases:");
            Console.WriteLine("--------------------------------------------------------------------------------");
            Console.WriteLine("AOK-------------------------------");
            ixgbe_timestamp ixgbe_ok = new ixgbe_timestamp(0, 0, 0);

            for (int i = 0; i < 10; ++i)
            {
                int expected = ixgbe_ok.send();
                int received = get_ts(ref ixgbe_ok);
                Console.WriteLine(i + ":                  Main Loop Ts:" + received);
                if (expected == received)
                {
                    Console.WriteLine("OK");
                }
                else
                {
                    Console.WriteLine("FAIL");
                }
                Thread.Sleep(1000);
            }

            Console.WriteLine("--------------------------------------------------------------------------------");
            Console.WriteLine("Single persistent Failure-------------------");
            ixgbe_timestamp ixgbe_single_per = new ixgbe_timestamp(3, 5, 0);

            for (int i = 0; i < 5; ++i)
            {
                int expected = ixgbe_single_per.send();
                int received = get_ts(ref ixgbe_single_per);
                Console.WriteLine(i + ":                 Main loop Ts:" + received);
                if (expected == received)
                {
                    Console.WriteLine("OK");
                }
                else
                {
                    Console.WriteLine("FAIL");
                }
                Thread.Sleep(1000);
            }

            Console.WriteLine("--------------------------------------------------------------------------------");
            Console.WriteLine("Multiple persistent Failures----------------");
            ixgbe_timestamp ixgbe_multiple_fail = new ixgbe_timestamp(4, 15, 0);

            for (int i = 0; i < 10; ++i)
            {
                int expected = ixgbe_multiple_fail.send();
                int received = get_ts(ref ixgbe_multiple_fail);
                Console.WriteLine(i + ":                Main Loop Ts:" + received);
                if (expected == received)
                {
                    Console.WriteLine("OK");
                }
                else
                {
                    Console.WriteLine("FAIL");
                }
                Thread.Sleep(1000);
            }

            Console.WriteLine("--------------------------------------------------------------------------------");
            Console.WriteLine("Permanent Failure---------------------------");
            ixgbe_timestamp ixgbe_permanent = new ixgbe_timestamp(8, 0, 10);

            for (int i = 0; i < 30; ++i)
            {
                int expected = ixgbe_permanent.send();
                int received = get_ts(ref ixgbe_permanent);
                Console.Write(i + ":                Main Loop Ts:" + received + " : ");
                if (expected == received)
                {
                    Console.WriteLine("OK");
                }
                else
                {
                    Console.WriteLine("FAIL");
                }
                Thread.Sleep(1000);
            }
        }