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

*** 22,33 **** /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ - #pragma ident "%Z%%M% %I% %E% SMI" - #include <sys/types.h> #include <sys/atomic.h> #include <sys/pattr.h> #include <netinet/in.h> #include <netinet/ip6.h> --- 22,31 ----
*** 66,100 **** if ((mp->b_cont != NULL) && (mp->b_cont->b_datap->db_type == M_DATA)) { mp = mp->b_cont; } else { dscpmk0dbg(("dscpmk_process: no data\n")); ! atomic_add_64(&dscpmk_data->epackets, 1); return (EINVAL); } } /* Pull-up needed? */ if ((mp->b_wptr - mp->b_rptr) < IP_SIMPLE_HDR_LENGTH) { if (!pullupmsg(mp, IP_SIMPLE_HDR_LENGTH)) { dscpmk0dbg(("dscpmk_process: pullup failed\n")); ! atomic_add_64(&dscpmk_data->epackets, 1); return (EINVAL); } } ipha = (ipha_t *)mp->b_rptr; /* Update global stats */ ! atomic_add_64(&dscpmk_data->npackets, 1); /* * This should only be called for outgoing packets. For inbound packets * proceed with the next action. */ if ((proc == IPP_LOCAL_IN) || (proc == IPP_FWD_IN)) { dscpmk2dbg(("dscpmk_process: cannot mark incoming packets\n")); ! atomic_add_64(&dscpmk_data->ipackets, 1); return (0); } /* Figure out the ToS or the Traffic Class from the message */ if (IPH_HDR_VERSION(ipha) == IPV4_VERSION) { --- 64,98 ---- if ((mp->b_cont != NULL) && (mp->b_cont->b_datap->db_type == M_DATA)) { mp = mp->b_cont; } else { dscpmk0dbg(("dscpmk_process: no data\n")); ! atomic_inc_64(&dscpmk_data->epackets); return (EINVAL); } } /* Pull-up needed? */ if ((mp->b_wptr - mp->b_rptr) < IP_SIMPLE_HDR_LENGTH) { if (!pullupmsg(mp, IP_SIMPLE_HDR_LENGTH)) { dscpmk0dbg(("dscpmk_process: pullup failed\n")); ! atomic_inc_64(&dscpmk_data->epackets); return (EINVAL); } } ipha = (ipha_t *)mp->b_rptr; /* Update global stats */ ! atomic_inc_64(&dscpmk_data->npackets); /* * This should only be called for outgoing packets. For inbound packets * proceed with the next action. */ if ((proc == IPP_LOCAL_IN) || (proc == IPP_FWD_IN)) { dscpmk2dbg(("dscpmk_process: cannot mark incoming packets\n")); ! atomic_inc_64(&dscpmk_data->ipackets); return (0); } /* Figure out the ToS or the Traffic Class from the message */ if (IPH_HDR_VERSION(ipha) == IPV4_VERSION) {
*** 112,136 **** * 6-bit DSCP value. */ new_dscp = dscpmk_data->dscp_map[dscp >> 2]; /* Update stats for this new_dscp */ ! atomic_add_64(&dscpmk_data->dscp_stats[new_dscp].npackets, 1); /* * if new_dscp is same as the original, update stats and * return. */ if (new_dscp == (dscp >> 2)) { ! atomic_add_64(&dscpmk_data->unchanged, 1); return (0); } /* Get back the ECN/CU value from the original dscp */ new_dscp = (new_dscp << 2) | (dscp & 0x3); ! atomic_add_64(&dscpmk_data->changed, 1); /* * IPv4 : ToS structure -- RFC 791 * * 0 1 2 3 4 5 6 7 * +---+---+---+---+---+---+---+---+ --- 110,134 ---- * 6-bit DSCP value. */ new_dscp = dscpmk_data->dscp_map[dscp >> 2]; /* Update stats for this new_dscp */ ! atomic_inc_64(&dscpmk_data->dscp_stats[new_dscp].npackets); /* * if new_dscp is same as the original, update stats and * return. */ if (new_dscp == (dscp >> 2)) { ! atomic_inc_64(&dscpmk_data->unchanged); return (0); } /* Get back the ECN/CU value from the original dscp */ new_dscp = (new_dscp << 2) | (dscp & 0x3); ! atomic_inc_64(&dscpmk_data->changed); /* * IPv4 : ToS structure -- RFC 791 * * 0 1 2 3 4 5 6 7 * +---+---+---+---+---+---+---+---+