Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/ipp/meters/tswtcl.c
          +++ new/usr/src/uts/common/ipp/meters/tswtcl.c
↓ open down ↓ 16 lines elided ↑ open up ↑
  17   17   * fields enclosed by brackets "[]" replaced with your own identifying
  18   18   * information: Portions Copyright [yyyy] [name of copyright owner]
  19   19   *
  20   20   * CDDL HEADER END
  21   21   */
  22   22  /*
  23   23   * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
  24   24   * Use is subject to license terms.
  25   25   */
  26   26  
  27      -#pragma ident   "%Z%%M% %I%     %E% SMI"
  28      -
  29   27  #include <sys/types.h>
  30   28  #include <sys/kmem.h>
  31   29  #include <sys/random.h>
  32   30  #include <netinet/in.h>
  33   31  #include <netinet/in_systm.h>
  34   32  #include <netinet/ip6.h>
  35   33  #include <inet/common.h>
  36   34  #include <inet/ip.h>
  37   35  #include <inet/ip6.h>
  38   36  #include <ipp/meters/meter_impl.h>
↓ open down ↓ 28 lines elided ↑ open up ↑
  67   65          ip6_t *ip6_hdr;
  68   66          uint32_t pkt_len;
  69   67          mblk_t *mp = *mpp;
  70   68          hrtime_t deltaT;
  71   69          uint64_t bitsinwin;
  72   70          uint32_t min = 0, additive, rnd;
  73   71          tswtcl_cfg_t *cfg_parms = tswtcl_data->cfg_parms;
  74   72  
  75   73          if (mp == NULL) {
  76   74                  tswtcl0dbg(("tswtcl_process: null mp!\n"));
  77      -                atomic_add_64(&tswtcl_data->epackets, 1);
       75 +                atomic_inc_64(&tswtcl_data->epackets);
  78   76                  return (EINVAL);
  79   77          }
  80   78  
  81   79          if (mp->b_datap->db_type != M_DATA) {
  82   80                  if ((mp->b_cont != NULL) &&
  83   81                      (mp->b_cont->b_datap->db_type == M_DATA)) {
  84   82                          mp = mp->b_cont;
  85   83                  } else {
  86   84                          tswtcl0dbg(("tswtcl_process: no data\n"));
  87      -                        atomic_add_64(&tswtcl_data->epackets, 1);
       85 +                        atomic_inc_64(&tswtcl_data->epackets);
  88   86                          return (EINVAL);
  89   87                  }
  90   88          }
  91   89  
  92   90          /* Figure out the ToS/Traffic Class and length from the message */
  93   91          if ((mp->b_wptr - mp->b_rptr) < IP_SIMPLE_HDR_LENGTH) {
  94   92                  if (!pullupmsg(mp, IP_SIMPLE_HDR_LENGTH)) {
  95   93                          tswtcl0dbg(("tswtcl_process: pullup error\n"));
  96      -                        atomic_add_64(&tswtcl_data->epackets, 1);
       94 +                        atomic_inc_64(&tswtcl_data->epackets);
  97   95                          return (EINVAL);
  98   96                  }
  99   97          }
 100   98          ipha = (ipha_t *)mp->b_rptr;
 101   99          if (IPH_HDR_VERSION(ipha) == IPV4_VERSION) {
 102  100                  pkt_len = ntohs(ipha->ipha_length);
 103  101          } else {
 104  102                  ip6_hdr = (ip6_t *)mp->b_rptr;
 105  103                  pkt_len = ntohs(ip6_hdr->ip6_plen) +
 106  104                      ip_hdr_length_v6(mp, ip6_hdr);
↓ open down ↓ 70 lines elided ↑ open up ↑
 177  175                          *next_action = cfg_parms->yellow_action;
 178  176                  } else {
 179  177                          *next_action = cfg_parms->green_action;
 180  178                  }
 181  179  
 182  180          }
 183  181          mutex_exit(&tswtcl_data->tswtcl_lock);
 184  182  
 185  183          /* Update Stats */
 186  184          if (*next_action == cfg_parms->green_action) {
 187      -                atomic_add_64(&tswtcl_data->green_packets, 1);
      185 +                atomic_inc_64(&tswtcl_data->green_packets);
 188  186                  atomic_add_64(&tswtcl_data->green_bits, pkt_len);
 189  187          } else if (*next_action == cfg_parms->yellow_action) {
 190      -                atomic_add_64(&tswtcl_data->yellow_packets, 1);
      188 +                atomic_inc_64(&tswtcl_data->yellow_packets);
 191  189                  atomic_add_64(&tswtcl_data->yellow_bits, pkt_len);
 192  190          } else {
 193  191                  ASSERT(*next_action == cfg_parms->red_action);
 194      -                atomic_add_64(&tswtcl_data->red_packets, 1);
      192 +                atomic_inc_64(&tswtcl_data->red_packets);
 195  193                  atomic_add_64(&tswtcl_data->red_bits, pkt_len);
 196  194          }
 197  195          return (0);
 198  196  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX