summaryrefslogtreecommitdiffstats
path: root/docs
AgeCommit message (Expand)AuthorFilesLines
2019-10-29docs: Fix warning with sphinx build, add script to publish docsJohn DeNisco2-1/+73
2019-10-28docs: cleanup typos on readthroughPaul Vinciguerra51-102/+101
2019-10-09docs: Add macos build documentationNathan Skrzypczak2-0/+58
2019-10-07docs: grammar police raidDave Barach1-7/+9
2019-10-04docs: add packet-generator writeupDave Barach1-0/+183
2019-09-26misc: add vnet classify filter set supportDave Barach1-7/+20
2019-09-23misc: unify pcap rx / tx / drop traceDave Barach1-8/+16
2019-09-20misc: classifier-based packet trace filterDave Barach1-0/+108
2019-09-11docs: run-sphinx-docs-mergedjdenisco2-3/+3
2019-09-09docs: improve unformat documentationDave Barach1-8/+120
2019-08-26misc: 19.08 new featuresAndrew Yourtchenko2-0/+141
2019-08-08docs: Add Ray's ACL use casejdenisco5-0/+489
2019-08-08api: api socket respect unix runtime directoryOle Troan1-2/+2
2019-08-05docs: Add more quic plugin documentationNathan Skrzypczak4-0/+2
2019-08-01docs: Small fixes and orderingNathan Skrzypczak3-0/+20
2019-07-26docs: add binary api trace replay detailsDave Barach1-7/+81
2019-07-22docs: improve home gateway use-case documentationDave Barach1-18/+131
2019-07-19docs: Fix conf.py for read the docsjdenisco2-3/+2
2019-07-12docs: add compressed core file descriptionDave Barach1-0/+27
2019-07-12docs: how to enable coredump with systemdBenoƮt Ganne1-0/+4
2019-06-27docs: Update the vhost sectionjdenisco4-8/+11
2019-05-30FIB: correctly report IPv6 FIB Unicast and Multicast memory usage (VPP-1578)"Neale Ranns3-2/+286
2019-05-28docs: Add some packages for building the docsjdenisco2-2/+13
2019-05-17docs: Fix Versions and Titlesjdenisco4-7/+7
2019-05-16docs: Update sphinx, requirements, support markdown tablesjdenisco9-30/+50
2019-05-16DOC ONLY: document VLIB_INIT_FUNCTION schemeDave Barach1-4/+49
2019-05-10docs: Add 1904jdenisco6-17/+133
2019-04-30Sphinx docs: Fix security vulnerability (VPP-1655)Dave Wallace1-1/+1
2019-04-29DOC ONLY: add a buffer metadata writeupDave Barach2-1/+192
2019-04-25docs: Add VPP inside the CloudFrancesco Spinelli9-4/+805
2019-04-08fixing typosJim Thompson1-1/+1
2019-03-22DOC-ONLY: improve multi-arch documentationDave Barach2-0/+88
2019-03-21docs: break up long lines in vmxnet3.rst to avoid line wrapSteven Luong1-21/+34
2019-03-19docs: Update vmxnet3 usecaseSteven Luong1-12/+36
2019-03-15DOC ONLY: fix g2 build documentationDave Barach2-49/+44
2019-03-12DOC ONLY: add packet handoff docDave Barach1-11/+117
2019-02-27Fix centos build and build documentationjdenisco3-4/+4
2019-02-27DOC ONLY: update bug report sectionDave Barach1-31/+58
2019-02-23Add support for 19.01jdenisco3-74/+15
2019-02-20docs: use python3 for make docs.Paul Vinciguerra1-3/+3
2019-02-19VPP-1504: Remove JVPPMichal Cmarada8-61/+6
2019-01-31docs: Instructions for using vmxnet3 on macjdenisco2-2/+24
2019-01-20buffers: don't init metadata, as it is already initializedDamjan Marion1-3/+0
2019-01-17DOC ONLY: wireshark dissector upstreamedDave Barach2-58/+48
2019-01-07Update tcpdump / wireshark packet format writeupDave Barach1-6/+14
2018-12-17docs: Add vmxmet3 driverjdenisco3-2/+131
2018-12-17docs: clarify vector element alignment description.Dave Wallace1-5/+8
2018-12-13docs: Update the requirementsjdenisco2-10/+10
2018-12-06nsim: add packet loss simulation, docsDave Barach2-1/+91
2018-12-06DOC-ONLY: MFIB documentationNeale Ranns4-5/+96
lass="p">(); vlib_main_t *vm = &vlib_global_main; u32 my_thread_index = vm->thread_index; session_event_t _e, *e = &_e; svm_msg_q_ring_t *ring; session_t *s0; svm_msg_q_msg_t *msg; svm_msg_q_t *mq; int i, index; mq = smm->wrk[my_thread_index].vpp_event_queue; index = mq->q->head; for (i = 0; i < mq->q->cursize; i++) { msg = (svm_msg_q_msg_t *) (&mq->q->data[0] + mq->q->elsize * index); ring = svm_msg_q_ring (mq, msg->ring_index); clib_memcpy_fast (e, svm_msg_q_msg_data (mq, msg), ring->elsize); switch (e->event_type) { case SESSION_IO_EVT_TX: s0 = session_get_if_valid (e->session_index, my_thread_index); fformat (stdout, "[%04d] TX session %d\n", i, s0->session_index); break; case SESSION_CTRL_EVT_CLOSE: s0 = session_get_from_handle (e->session_handle); fformat (stdout, "[%04d] disconnect session %d\n", i, s0->session_index); break; case SESSION_IO_EVT_BUILTIN_RX: s0 = session_get_if_valid (e->session_index, my_thread_index); fformat (stdout, "[%04d] builtin_rx %d\n", i, s0->session_index); break; case SESSION_CTRL_EVT_RPC: fformat (stdout, "[%04d] RPC call %llx with %llx\n", i, (u64) (uword) (e->rpc_args.fp), (u64) (uword) (e->rpc_args.arg)); break; default: fformat (stdout, "[%04d] unhandled event type %d\n", i, e->event_type); break; } index++; if (index == mq->q->maxsize) index = 0; } } static u8 session_node_cmp_event (session_event_t * e, svm_fifo_t * f) { session_t *s; switch (e->event_type) { case SESSION_IO_EVT_RX: case SESSION_IO_EVT_TX: case SESSION_IO_EVT_BUILTIN_RX: case SESSION_IO_EVT_BUILTIN_TX: case SESSION_IO_EVT_TX_FLUSH: if (e->session_index == f->master_session_index) return 1; break; case SESSION_CTRL_EVT_CLOSE: break; case SESSION_CTRL_EVT_RPC: s = session_get_from_handle (e->session_handle); if (!s) { clib_warning ("session has event but doesn't exist!"); break; } if (s->rx_fifo == f || s->tx_fifo == f) return 1; break; default: break; } return 0; } u8 session_node_lookup_fifo_event (svm_fifo_t * f, session_event_t * e) { session_evt_elt_t *elt; session_worker_t *wrk; int i, index, found = 0; svm_msg_q_msg_t *msg; svm_msg_q_ring_t *ring; svm_msg_q_t *mq; u8 thread_index; ASSERT (e); thread_index = f->master_thread_index; wrk = session_main_get_worker (thread_index); /* * Search evt queue */ mq = wrk->vpp_event_queue; index = mq->q->head; for (i = 0; i < mq->q->cursize; i++) { msg = (svm_msg_q_msg_t *) (&mq->q->data[0] + mq->q->elsize * index); ring = svm_msg_q_ring (mq, msg->ring_index); clib_memcpy_fast (e, svm_msg_q_msg_data (mq, msg), ring->elsize); found = session_node_cmp_event (e, f); if (found) return 1; index = (index + 1) % mq->q->maxsize; } /* * Search pending events vector */ /* *INDENT-OFF* */ clib_llist_foreach (wrk->event_elts, evt_list, pool_elt_at_index (wrk->event_elts, wrk->new_head), elt, ({ found = session_node_cmp_event (&elt->evt, f); if (found) { clib_memcpy_fast (e, &elt->evt, sizeof (*e)); goto done; } })); /* *INDENT-ON* */ /* *INDENT-OFF* */ clib_llist_foreach (wrk->event_elts, evt_list, pool_elt_at_index (wrk->event_elts, wrk->old_head), elt, ({ found = session_node_cmp_event (&elt->evt, f); if (found) { clib_memcpy_fast (e, &elt->evt, sizeof (*e)); goto done; } })); /* *INDENT-ON* */ done: return found; } /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */