+ u32 dev_instance = va_arg (*args, u32);
+ u32 indent = format_get_indent (s);
+ int __clib_unused verbose = va_arg (*args, int);
+
+ af_packet_main_t *apm = &af_packet_main;
+ af_packet_if_t *apif = pool_elt_at_index (apm->interfaces, dev_instance);
+ clib_spinlock_lock_if_init (&apif->lockp);
+ u32 tx_block_sz = apif->tx_req->tp_block_size;
+ u32 tx_frame_sz = apif->tx_req->tp_frame_size;
+ u32 tx_frame_nr = apif->tx_req->tp_frame_nr;
+ u32 tx_block_nr = apif->tx_req->tp_block_nr;
+ u32 rx_block_size = apif->rx_req->tp_block_size;
+ u32 rx_frame_size = apif->rx_req->tp_frame_size;
+ u32 rx_frame_nr = apif->rx_req->tp_frame_nr;
+ u32 rx_block_nr = apif->rx_req->tp_block_nr;
+ int block = 0;
+ u8 *tx_block_start = apif->tx_ring + block * tx_block_sz;
+ u32 tx_frame = apif->next_tx_frame;
+ struct tpacket2_hdr *tph;
+
+ s = format (s, "Linux PACKET socket interface\n");
+ s = format (s, "%UTX block size:%d nr:%d TX frame size:%d nr:%d\n",
+ format_white_space, indent, tx_block_sz, tx_block_nr,
+ tx_frame_sz, tx_frame_nr);
+ s = format (s, "%URX block size:%d nr:%d RX frame size:%d nr:%d\n",
+ format_white_space, indent, rx_block_size, rx_block_nr,
+ rx_frame_size, rx_frame_nr);
+ s = format (s, "%Unext frame:%d\n", format_white_space, indent,
+ apif->next_tx_frame);
+
+ int n_send_req = 0, n_avail = 0, n_sending = 0, n_tot = 0, n_wrong = 0;
+ do
+ {
+ tph = (struct tpacket2_hdr *) (tx_block_start + tx_frame * tx_frame_sz);
+ tx_frame = (tx_frame + 1) % tx_frame_nr;
+ if (tph->tp_status == 0)
+ n_avail++;
+ else if (tph->tp_status & TP_STATUS_SEND_REQUEST)
+ n_send_req++;
+ else if (tph->tp_status & TP_STATUS_SENDING)
+ n_sending++;
+ else
+ n_wrong++;
+ n_tot++;
+ }
+ while (tx_frame != apif->next_tx_frame);
+ s = format (s, "%Uavailable:%d request:%d sending:%d wrong:%d total:%d\n",
+ format_white_space, indent, n_avail, n_send_req, n_sending,
+ n_wrong, n_tot);
+
+ clib_spinlock_unlock_if_init (&apif->lockp);