/* Asynchronous completion handler for NB transmit */ static void l1a_tx_nb_compl(__unused enum l1_compl c) { struct msgb *msg; msg = l1_create_l2_msg(L1CTL_DATA_CONF, last_txnb_fn, 0, 0); l1_queue_for_l2(msg); }
/* Asynchronous completion handler for FB detection */ static void l1a_rach_compl(__unused enum l1_compl c) { struct msgb *msg; msg = l1_create_l2_msg(L1CTL_RACH_CONF, last_rach.fn, 0, last_rach.band_arfcn); l1_queue_for_l2(msg); }
static int l1ctl_fbsb_resp(uint8_t res) { struct msgb *msg; struct l1ctl_fbsb_conf *resp; msg = l1_create_l2_msg(L1CTL_FBSB_CONF, fbs.mon.time.fn, l1s_snr_int(fbs.mon.snr), fbs.req.band_arfcn); if (!msg) return -ENOMEM; resp = (struct l1ctl_fbsb_conf *) msgb_put(msg, sizeof(*resp)); resp->initial_freq_err = htons(fbs.initial_freq_err); resp->result = res; resp->bsic = fbs.mon.bsic; /* no need to set BSIC, as it is never used here */ l1_queue_for_l2(msg); return 0; }