void ci_sock_cmn_timestamp_q_enqueue(ci_netif* ni, ci_sock_cmn* s, ci_ip_pkt_fmt* pkt) { ci_ip_pkt_queue* qu = &s->timestamp_q; oo_pkt_p prev_head = qu->head; /* This part is effectively ci_ip_queue_enqueue(ni, &s->timestamp_q, p); * but inlined to allow using tsq_next field */ pkt->tsq_next = OO_PP_NULL; if( ci_ip_queue_is_empty(qu) ) { ci_assert(OO_PP_IS_NULL(qu->head)); qu->head = OO_PKT_P(pkt); } else { ci_assert(OO_PP_NOT_NULL(qu->head)); /* This assumes the netif lock is held, so use ci_ip_queue_enqueue_nnl() if it's not */ PKT(ni, qu->tail)->tsq_next = OO_PKT_P(pkt); } qu->tail = OO_PKT_P(pkt); qu->num++; if( OO_PP_IS_NULL(prev_head) ) { ci_assert(OO_PP_IS_NULL(s->timestamp_q_extract)); s->timestamp_q_extract = qu->head; } else { ci_sock_cmn_timestamp_q_reap(ni, s); } /* Tells post-poll loop to put socket on the [reap_list]. */ s->b.sb_flags |= CI_SB_FLAG_RX_DELIVERED; }
static int ath_get_totstat(struct statfoo *sf, int s, char b[], size_t bs) { struct athaggrstatfoo_p *wf = (struct athaggrstatfoo_p *) sf; #define STAT(x) \ snprintf(b, bs, "%u", wf->total.aggr_##x); return 1 #define PKT(x) \ snprintf(b, bs, "%u", wf->total.aggr_pkts[x]); return 1 switch (s) { case S_SINGLE_PKT: STAT(single_pkt); case S_NONBAW_PKT: STAT(nonbaw_pkt); case S_AGGR_PKT: STAT(aggr_pkt); case S_BAW_CLOSED_SINGLE_PKT: STAT(baw_closed_single_pkt); case S_LOW_HWQ_SINGLE_PKT: STAT(low_hwq_single_pkt); case S_SCHED_NOPKT: STAT(sched_nopkt); case S_RTS_AGGR_LIMITED: STAT(rts_aggr_limited); case S_PKT0: PKT(0); case S_PKT1: PKT(1); case S_PKT2: PKT(2); case S_PKT3: PKT(3); case S_PKT4: PKT(4); case S_PKT5: PKT(5); case S_PKT6: PKT(6); case S_PKT7: PKT(7); case S_PKT8: PKT(8); case S_PKT9: PKT(9); case S_PKT10: PKT(10); case S_PKT11: PKT(11); case S_PKT12: PKT(12); case S_PKT13: PKT(13); case S_PKT14: PKT(14); case S_PKT15: PKT(15); case S_PKT16: PKT(16); case S_PKT17: PKT(17); case S_PKT18: PKT(18); case S_PKT19: PKT(19); case S_PKT20: PKT(20); case S_PKT21: PKT(21); case S_PKT22: PKT(22); case S_PKT23: PKT(23); case S_PKT24: PKT(24); case S_PKT25: PKT(25); case S_PKT26: PKT(26); case S_PKT27: PKT(27); case S_PKT28: PKT(28); case S_PKT29: PKT(29); case S_PKT30: PKT(30); case S_PKT31: PKT(31); } b[0] = '\0'; return 0; #undef PKT #undef STAT }