2605
2606 return (err);
2607 }
2608
2609 #ifdef BSCBUS_LOGSTATUS
2610 void bscbus_cmd_log(struct bscbus_channel_state *csp, bsc_cmd_stamp_t cat,
2611 uint8_t status, uint8_t data)
2612 {
2613 int idx;
2614 bsc_cmd_log_t *logp;
2615 struct bscbus_state *ssp;
2616
2617 if ((csp) == NULL)
2618 return;
2619 if ((ssp = (csp)->ssp) == NULL)
2620 return;
2621 if (ssp->cmd_log_size == 0)
2622 return;
2623 if ((bscbus_cmd_log_flags & (1 << cat)) == 0)
2624 return;
2625 idx = atomic_add_32_nv(&ssp->cmd_log_idx, 1);
2626 logp = &ssp->cmd_log[idx % ssp->cmd_log_size];
2627 logp->bcl_seq = idx;
2628 logp->bcl_cat = cat;
2629 logp->bcl_now = gethrtime();
2630 logp->bcl_chno = csp->chno;
2631 logp->bcl_cmdstate = csp->cmdstate;
2632 logp->bcl_status = status;
2633 logp->bcl_data = data;
2634 }
2635 #endif /* BSCBUS_LOGSTATUS */
|
2605
2606 return (err);
2607 }
2608
2609 #ifdef BSCBUS_LOGSTATUS
2610 void bscbus_cmd_log(struct bscbus_channel_state *csp, bsc_cmd_stamp_t cat,
2611 uint8_t status, uint8_t data)
2612 {
2613 int idx;
2614 bsc_cmd_log_t *logp;
2615 struct bscbus_state *ssp;
2616
2617 if ((csp) == NULL)
2618 return;
2619 if ((ssp = (csp)->ssp) == NULL)
2620 return;
2621 if (ssp->cmd_log_size == 0)
2622 return;
2623 if ((bscbus_cmd_log_flags & (1 << cat)) == 0)
2624 return;
2625 idx = atomic_inc_32_nv(&ssp->cmd_log_idx);
2626 logp = &ssp->cmd_log[idx % ssp->cmd_log_size];
2627 logp->bcl_seq = idx;
2628 logp->bcl_cat = cat;
2629 logp->bcl_now = gethrtime();
2630 logp->bcl_chno = csp->chno;
2631 logp->bcl_cmdstate = csp->cmdstate;
2632 logp->bcl_status = status;
2633 logp->bcl_data = data;
2634 }
2635 #endif /* BSCBUS_LOGSTATUS */
|