Print this page
5255 uts shouldn't open-code ISP2

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/inet/ilb/ilb_conn.c
          +++ new/usr/src/uts/common/inet/ilb/ilb_conn.c
↓ open down ↓ 16 lines elided ↑ open up ↑
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  24   24   * Use is subject to license terms.
  25   25   */
  26   26  
       27 +#include <sys/sysmacros.h>
  27   28  #include <sys/types.h>
  28   29  #include <sys/conf.h>
  29   30  #include <sys/time.h>
  30   31  #include <sys/taskq.h>
  31   32  #include <sys/cmn_err.h>
  32   33  #include <sys/sdt.h>
  33   34  #include <sys/atomic.h>
  34   35  #include <netinet/in.h>
  35   36  #include <inet/ip.h>
  36   37  #include <inet/ip6.h>
↓ open down ↓ 256 lines elided ↑ open up ↑
 293  294  {
 294  295          extern pri_t minclsyspri;
 295  296          int i, part;
 296  297          ilb_timer_t *tm;
 297  298          char tq_name[TASKQ_NAMELEN];
 298  299  
 299  300          /*
 300  301           * If ilbs->ilbs_conn_hash_size is not a power of 2, bump it up to
 301  302           * the next power of 2.
 302  303           */
 303      -        if (ilbs->ilbs_conn_hash_size & (ilbs->ilbs_conn_hash_size - 1)) {
      304 +        if (!ISP2(ilbs->ilbs_conn_hash_size)) {
 304  305                  for (i = 0; i < 31; i++) {
 305  306                          if (ilbs->ilbs_conn_hash_size < (1 << i))
 306  307                                  break;
 307  308                  }
 308  309                  ilbs->ilbs_conn_hash_size = 1 << i;
 309  310          }
 310  311  
 311  312          /*
 312  313           * Can sleep since this should be called when a rule is being added,
 313  314           * hence we are not in interrupt context.
↓ open down ↓ 1038 lines elided ↑ open up ↑
1352 1353  }
1353 1354  
1354 1355  void
1355 1356  ilb_sticky_hash_init(ilb_stack_t *ilbs)
1356 1357  {
1357 1358          extern pri_t minclsyspri;
1358 1359          int i, part;
1359 1360          char tq_name[TASKQ_NAMELEN];
1360 1361          ilb_timer_t *tm;
1361 1362  
1362      -        if (ilbs->ilbs_sticky_hash_size & (ilbs->ilbs_sticky_hash_size - 1)) {
     1363 +        if (!ISP2(ilbs->ilbs_sticky_hash_size)) {
1363 1364                  for (i = 0; i < 31; i++) {
1364 1365                          if (ilbs->ilbs_sticky_hash_size < (1 << i))
1365 1366                                  break;
1366 1367                  }
1367 1368                  ilbs->ilbs_sticky_hash_size = 1 << i;
1368 1369          }
1369 1370  
1370 1371          ilbs->ilbs_sticky_hash = kmem_zalloc(sizeof (ilb_sticky_hash_t) *
1371 1372              ilbs->ilbs_sticky_hash_size, KM_SLEEP);
1372 1373          for (i = 0; i < ilbs->ilbs_sticky_hash_size; i++) {
↓ open down ↓ 159 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX