X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Flacp%2Ftx_machine.c;h=1eb3bc1c4b749d27065d2dc2c097c4f86628b64c;hb=4c4223edf;hp=794b4f10d9596133c6464d581d90123f70ce92bd;hpb=9cd2d7a5a4fafadb65d772c48109d55d1e19d425;p=vpp.git diff --git a/src/plugins/lacp/tx_machine.c b/src/plugins/lacp/tx_machine.c index 794b4f10d95..1eb3bc1c4b7 100644 --- a/src/plugins/lacp/tx_machine.c +++ b/src/plugins/lacp/tx_machine.c @@ -38,22 +38,23 @@ lacp_machine_t lacp_tx_machine = { int lacp_tx_action_transmit (void *p1, void *p2) { - vlib_main_t *vm = (vlib_main_t *) p1; - slave_if_t *sif = (slave_if_t *) p2; + vlib_main_t *vm = p1; + member_if_t *mif = p2; f64 now = vlib_time_now (vm); - if (!lacp_timer_is_running (sif->periodic_timer)) + if (!lacp_timer_is_running (mif->periodic_timer)) return 0; // No more than 3 LACPDUs per fast interval - if (now <= (sif->last_lacpdu_time + 0.333)) + if (now <= (mif->last_lacpdu_sent_time + 0.333)) return 0; - if (sif->ntt) + if (mif->ntt) { - lacp_send_lacp_pdu (vm, sif); + lacp_send_lacp_pdu (vm, mif); + lacp_schedule_periodic_timer (vm, mif); } - sif->ntt = 0; + mif->ntt = 0; return 0; } @@ -68,8 +69,7 @@ format_tx_event (u8 * s, va_list * args) {.str = NULL} }; int e = va_arg (*args, int); - lacp_event_struct *event_entry = - (lacp_event_struct *) & lacp_tx_event_array; + lacp_event_struct *event_entry = lacp_tx_event_array; if (e >= (sizeof (lacp_tx_event_array) / sizeof (*event_entry))) s = format (s, "Bad event %d", e); @@ -80,24 +80,35 @@ format_tx_event (u8 * s, va_list * args) } void -lacp_tx_debug_func (slave_if_t * sif, int event, int state, +lacp_tx_debug_func (member_if_t * mif, int event, int state, lacp_fsm_state_t * transition) { - clib_warning ("%U-TX: event %U, old state %U, new state %U", - format_vnet_sw_if_index_name, vnet_get_main (), - sif->sw_if_index, format_tx_event, - event, format_tx_sm_state, state, format_tx_sm_state, - transition->next_state); + vlib_worker_thread_t *w = vlib_worker_threads + os_get_thread_index (); + /* *INDENT-OFF* */ + ELOG_TYPE_DECLARE (e) = + { + .format = "%s", + .format_args = "T4", + }; + /* *INDENT-ON* */ + struct + { + u32 event; + } *ed = 0; + + ed = ELOG_TRACK_DATA (&vlib_global_main.elog_main, e, w->elog_track); + ed->event = elog_string (&vlib_global_main.elog_main, "%U-TX: %U, %U->%U%c", + format_vnet_sw_if_index_name, vnet_get_main (), + mif->sw_if_index, format_tx_event, event, + format_tx_sm_state, state, format_tx_sm_state, + transition->next_state, 0); } void -lacp_init_tx_machine (vlib_main_t * vm, slave_if_t * sif) +lacp_init_tx_machine (vlib_main_t * vm, member_if_t * mif) { - lacp_machine_dispatch (&lacp_tx_machine, vm, sif, LACP_TX_EVENT_BEGIN, - &sif->tx_state); - if (sif->is_passive == 0) - lacp_machine_dispatch (&lacp_tx_machine, vm, sif, LACP_TX_EVENT_NTT, - &sif->tx_state); + lacp_machine_dispatch (&lacp_tx_machine, vm, mif, LACP_TX_EVENT_BEGIN, + &mif->tx_state); } /*