Changeset 5df059b


Ignore:
Timestamp:
02/20/15 17:41:55 (6 years ago)
Author:
Richard Sanger <rsangerarj@…>
Branches:
4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
Children:
10c47a0
Parents:
e8c0a9c
git-author:
Richard Sanger <rsangerarj@…> (02/20/15 17:36:30)
git-committer:
Richard Sanger <rsangerarj@…> (02/20/15 17:41:55)
Message:

Update DAG25 to the new statisitic counters
Improve error handling of an incorrect parallel stream configuration.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/format_dag25.c

    r16840ea r5df059b  
    12151215 * If DUCK reporting is enabled, the packet returned may be a DUCK update
    12161216 */
    1217 static int dag_read_packet_real(libtrace_t *libtrace,
     1217static int dag_read_packet_stream(libtrace_t *libtrace,
    12181218                                struct dag_per_stream_t *stream_data,
    12191219                                libtrace_thread_t *t, /* Optional */
     
    12851285static int dag_read_packet(libtrace_t *libtrace, libtrace_packet_t *packet)
    12861286{
    1287         return dag_read_packet_real(libtrace, FORMAT_DATA_FIRST, NULL, packet);
     1287        return dag_read_packet_stream(libtrace, FORMAT_DATA_FIRST, NULL, packet);
    12881288}
    12891289
     
    13001300        /* Read as many packets as we can, but read atleast one packet */
    13011301        do {
    1302                 ret = dag_read_packet_real(libtrace, stream_data, t,
     1302                ret = dag_read_packet_stream(libtrace, stream_data, t,
    13031303                                           packets[read_packets]);
    13041304                if (ret < 0)
     
    14271427}
    14281428
    1429 /* Gets the number of dropped packets */
    1430 static uint64_t dag_get_dropped_packets(libtrace_t *libtrace)
    1431 {
    1432         uint64_t sum = 0;
    1433         libtrace_list_node_t *tmp = FORMAT_DATA_HEAD;
    1434 
    1435         /* Sum the drop counter for all the packets */
     1429static void dag_get_statistics(libtrace_t *libtrace, libtrace_stat_t *stat)
     1430{
     1431        libtrace_list_node_t *tmp;
     1432        assert(stat && libtrace);
     1433        tmp = FORMAT_DATA_HEAD;
     1434
     1435        /* We don't filter packets on the card itself */
     1436        stat->filtered_valid = 1;
     1437        stat->filtered = 0;
     1438
     1439        /* Dropped, filtered the  */
     1440        stat->dropped_valid = 1;
     1441        stat->dropped = 0;
    14361442        while (tmp != NULL) {
    1437                 sum += STREAM_DATA(tmp)->drops;
     1443                stat->dropped += STREAM_DATA(tmp)->drops;
    14381444                tmp = tmp->next;
    14391445        }
    14401446
    1441         return sum;
     1447}
     1448
     1449static void dag_get_thread_statisitics(libtrace_t *libtrace, libtrace_thread_t *t,
     1450                                       libtrace_stat_t *stat) {
     1451        struct dag_per_stream_t *stream_data = t->format_data;
     1452        assert(stat && libtrace);
     1453
     1454        stat->dropped_valid = 1;
     1455        stat->dropped = stream_data->drops;
     1456
     1457        stat->filtered_valid = 1;
     1458        stat->filtered = 0;
    14421459}
    14431460
     
    14791496{
    14801497        struct dag_per_stream_t *stream_data;
     1498        libtrace_list_node_t *node;
    14811499
    14821500        if (reader) {
    14831501                if (t->type == THREAD_PERPKT) {
    1484                         stream_data =
    1485                                 (struct dag_per_stream_t *)
    1486                                 libtrace_list_get_index(FORMAT_DATA->per_stream,
    1487                                                         t->perpkt_num)->data;
     1502
     1503                        node = libtrace_list_get_index(FORMAT_DATA->per_stream,
     1504                                                        t->perpkt_num);
     1505                        if (node == NULL) {
     1506                                trace_set_err(libtrace, TRACE_ERR_INIT_FAILED,
     1507                                              "Too few streams supplied for the"
     1508                                              " number of threads lanuched");
     1509                                return -1;
     1510                        }
     1511                        stream_data = node->data;
    14881512
    14891513                        /* Pass the per thread data to the thread */
     
    15421566        NULL,                           /* get_received_packets */
    15431567        NULL,                           /* get_filtered_packets */
    1544         dag_get_dropped_packets,        /* get_dropped_packets */
    1545         NULL,                           /* get_statistics */
     1568        NULL,                           /* get_dropped_packets */
     1569        dag_get_statistics,             /* get_statistics */
    15461570        NULL,                           /* get_fd */
    15471571        trace_event_dag,                /* trace_event */
     
    15561580        dag_pregister_thread,
    15571581        NULL,
    1558         NULL                            /* get thread stats */
     1582        dag_get_thread_statisitics      /* get thread stats */
    15591583};
    15601584
Note: See TracChangeset for help on using the changeset viewer.