429 ASSERT(MAC_PERIM_HELD(port->lp_grp->lg_mh));
430 ASSERT(MAC_PERIM_HELD(port->lp_mh));
431
432 if (port->lp_state != AGGR_PORT_STATE_ATTACHED)
433 return;
434
435 (void) aggr_port_multicst(port, B_FALSE,
436 (uchar_t *)&slow_multicast_addr);
437 }
438
439 static void
440 start_periodic_timer(aggr_port_t *portp)
441 {
442 aggr_lacp_port_t *pl = &portp->lp_lacp;
443
444 ASSERT(MAC_PERIM_HELD(portp->lp_grp->lg_mh));
445
446 mutex_enter(&pl->lacp_timer_lock);
447 if (pl->periodic_timer.id == 0) {
448 pl->periodic_timer.id = timeout(periodic_timer_pop, portp,
449 drv_usectohz(1000000 * portp->lp_lacp.periodic_timer.val));
450 }
451 mutex_exit(&pl->lacp_timer_lock);
452 }
453
454 static void
455 stop_periodic_timer(aggr_port_t *portp)
456 {
457 aggr_lacp_port_t *pl = &portp->lp_lacp;
458 timeout_id_t id;
459
460 ASSERT(MAC_PERIM_HELD(portp->lp_grp->lg_mh));
461
462 mutex_enter(&pl->lacp_timer_lock);
463 if ((id = pl->periodic_timer.id) != 0) {
464 pl->lacp_timer_bits &= ~LACP_PERIODIC_TIMEOUT;
465 pl->periodic_timer.id = 0;
466 }
467 mutex_exit(&pl->lacp_timer_lock);
468
469 if (id != 0)
1500 ASSERT(MAC_PERIM_HELD(portp->lp_grp->lg_mh));
1501
1502 AGGR_LACP_DBG(("trunk link:(%d): wait_while_timer pop \n",
1503 portp->lp_linkid));
1504 portp->lp_lacp.sm.ready_n = B_TRUE;
1505
1506 lacp_selection_logic(portp);
1507 }
1508
1509 static void
1510 start_wait_while_timer(aggr_port_t *portp)
1511 {
1512 aggr_lacp_port_t *pl = &portp->lp_lacp;
1513
1514 ASSERT(MAC_PERIM_HELD(portp->lp_grp->lg_mh));
1515
1516 mutex_enter(&pl->lacp_timer_lock);
1517 if (pl->wait_while_timer.id == 0) {
1518 pl->wait_while_timer.id =
1519 timeout(wait_while_timer_pop, portp,
1520 drv_usectohz(1000000 *
1521 portp->lp_lacp.wait_while_timer.val));
1522 }
1523 mutex_exit(&pl->lacp_timer_lock);
1524 }
1525
1526
1527 static void
1528 stop_wait_while_timer(aggr_port_t *portp)
1529 {
1530 aggr_lacp_port_t *pl = &portp->lp_lacp;
1531 timeout_id_t id;
1532
1533 ASSERT(MAC_PERIM_HELD(portp->lp_grp->lg_mh));
1534
1535 mutex_enter(&pl->lacp_timer_lock);
1536 if ((id = pl->wait_while_timer.id) != 0) {
1537 pl->lacp_timer_bits &= ~LACP_WAIT_WHILE_TIMEOUT;
1538 pl->wait_while_timer.id = 0;
1539 }
1540 mutex_exit(&pl->lacp_timer_lock);
1541
|
429 ASSERT(MAC_PERIM_HELD(port->lp_grp->lg_mh));
430 ASSERT(MAC_PERIM_HELD(port->lp_mh));
431
432 if (port->lp_state != AGGR_PORT_STATE_ATTACHED)
433 return;
434
435 (void) aggr_port_multicst(port, B_FALSE,
436 (uchar_t *)&slow_multicast_addr);
437 }
438
439 static void
440 start_periodic_timer(aggr_port_t *portp)
441 {
442 aggr_lacp_port_t *pl = &portp->lp_lacp;
443
444 ASSERT(MAC_PERIM_HELD(portp->lp_grp->lg_mh));
445
446 mutex_enter(&pl->lacp_timer_lock);
447 if (pl->periodic_timer.id == 0) {
448 pl->periodic_timer.id = timeout(periodic_timer_pop, portp,
449 drv_sectohz(portp->lp_lacp.periodic_timer.val));
450 }
451 mutex_exit(&pl->lacp_timer_lock);
452 }
453
454 static void
455 stop_periodic_timer(aggr_port_t *portp)
456 {
457 aggr_lacp_port_t *pl = &portp->lp_lacp;
458 timeout_id_t id;
459
460 ASSERT(MAC_PERIM_HELD(portp->lp_grp->lg_mh));
461
462 mutex_enter(&pl->lacp_timer_lock);
463 if ((id = pl->periodic_timer.id) != 0) {
464 pl->lacp_timer_bits &= ~LACP_PERIODIC_TIMEOUT;
465 pl->periodic_timer.id = 0;
466 }
467 mutex_exit(&pl->lacp_timer_lock);
468
469 if (id != 0)
1500 ASSERT(MAC_PERIM_HELD(portp->lp_grp->lg_mh));
1501
1502 AGGR_LACP_DBG(("trunk link:(%d): wait_while_timer pop \n",
1503 portp->lp_linkid));
1504 portp->lp_lacp.sm.ready_n = B_TRUE;
1505
1506 lacp_selection_logic(portp);
1507 }
1508
1509 static void
1510 start_wait_while_timer(aggr_port_t *portp)
1511 {
1512 aggr_lacp_port_t *pl = &portp->lp_lacp;
1513
1514 ASSERT(MAC_PERIM_HELD(portp->lp_grp->lg_mh));
1515
1516 mutex_enter(&pl->lacp_timer_lock);
1517 if (pl->wait_while_timer.id == 0) {
1518 pl->wait_while_timer.id =
1519 timeout(wait_while_timer_pop, portp,
1520 drv_sectohz(portp->lp_lacp.wait_while_timer.val));
1521 }
1522 mutex_exit(&pl->lacp_timer_lock);
1523 }
1524
1525
1526 static void
1527 stop_wait_while_timer(aggr_port_t *portp)
1528 {
1529 aggr_lacp_port_t *pl = &portp->lp_lacp;
1530 timeout_id_t id;
1531
1532 ASSERT(MAC_PERIM_HELD(portp->lp_grp->lg_mh));
1533
1534 mutex_enter(&pl->lacp_timer_lock);
1535 if ((id = pl->wait_while_timer.id) != 0) {
1536 pl->lacp_timer_bits &= ~LACP_WAIT_WHILE_TIMEOUT;
1537 pl->wait_while_timer.id = 0;
1538 }
1539 mutex_exit(&pl->lacp_timer_lock);
1540
|