Changeset c337c9f9 for lib


Ignore:
Timestamp:
12/07/18 16:48:09 (23 months ago)
Author:
Shane Alcock <salcock@…>
Branches:
develop
Children:
54ef438
Parents:
8a58afd
Message:

Try to tidy up erf_get_framing_length()

A compiler might have better luck trying to optimise this
function if we use a switch() statement rather than a massive
if with logical ORs...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/format_erf.c

    r2193905 rc337c9f9  
    124124static inline int erf_get_padding(const libtrace_packet_t *packet)
    125125{
    126         if (packet->trace->format->type==TRACE_FORMAT_ERF ||
    127                         packet->trace->format->type == TRACE_FORMAT_NDAG ||
    128                         packet->trace->format->type == TRACE_FORMAT_RAWERF ||
    129                         packet->trace->format->type == TRACE_FORMAT_DPDK_NDAG) {
    130                 dag_record_t *erfptr = (dag_record_t *)packet->header;
    131                 switch((erfptr->type & 0x7f)) {
    132                         case TYPE_ETH:
    133                         case TYPE_COLOR_ETH:
    134                         case TYPE_DSM_COLOR_ETH:
    135                         case TYPE_COLOR_HASH_ETH:
    136                                 return 2;
    137                         default:                return 0;
    138                 }
    139         }
    140         else {
    141                 switch(trace_get_link_type(packet)) {
    142                         case TRACE_TYPE_ETH:    return 2;
    143                         default:                return 0;
    144                 }
    145         }
     126        dag_record_t *erfptr = (dag_record_t *)packet->header;
     127
     128        switch(packet->trace->format->type) {
     129                case TRACE_FORMAT_ERF:
     130                case TRACE_FORMAT_NDAG:
     131                case TRACE_FORMAT_RAWERF:
     132                case TRACE_FORMAT_DPDK_NDAG:
     133                        switch((erfptr->type & 0x7f)) {
     134                                case TYPE_ETH:
     135                                case TYPE_COLOR_ETH:
     136                                case TYPE_DSM_COLOR_ETH:
     137                                case TYPE_COLOR_HASH_ETH:
     138                                        return 2;
     139                                default:
     140                                        return 0;
     141                        }
     142                        break;
     143                default:
     144                        switch(trace_get_link_type(packet)) {
     145                                case TRACE_TYPE_ETH:    return 2;
     146                                default:                return 0;
     147                        }
     148                        break;
     149        }
     150        return 0;
    146151}
    147152
Note: See TracChangeset for help on using the changeset viewer.