summaryrefslogtreecommitdiff
path: root/src/ipcpd
Commit message (Collapse)AuthorAgeFilesLines
...
* ipcpd: Remove FRCT from normal IPCPdimitri staessens2017-05-1015-709/+91
| | | | | | | In order to ensure 100% reliable transfer, the protocol state machine that takes care of retransmission and SDU ordering has to be in the application. Flow allocation in the normal now uses fds. The PDU_type field was deprecated and AE's within the DIF can use reserved fds.
* ipcpd: Don't send deallocation messagesdimitri staessens2017-05-022-39/+0
| | | | | | | The flow resources are Delta-t protocol machines that will time out and free their resources without any required signaling. Flows can be cleaned locally when the application requests it and all FRCT instances have timed out and released their resources.
* ipcpd: Fix sending fa dealloc messagedimitri staessens2017-04-292-18/+31
| | | | | | | The frct instance was previously destroyed before sending the message, resulting in the destination address being 0 and the message getting dropped. Some fixes in the normal for deallocation, but will require further revision once all data transfer protocols are in place.
* ipcpd: Fix some bugs for the normal splitdimitri staessens2017-04-284-39/+46
|
* Merged in sandervrijders/ouroboros/be-frct-api (pull request #497)Sander Vrijders2017-04-2815-680/+647
|\ | | | | | | ipcpd: normal: Split connection establishment
| * ipcpd: normal: Split connection establishmentSander Vrijders2017-04-2815-680/+647
| | | | | | | | | | | | Connection establishment was done at the same time as flow allocation. This splits it more cleanly, and allows to re-use the DT AE for other purposes.
* | ipcpd: Add capability reportingdimitri staessens2017-04-273-15/+29
|/ | | | | | | | The IPCP will now report the DIF name and the hash value to the IRMd as a dif_info struct. This can later be extended to add further capability reporting. Some bugfixes in normal. Fixes #24
* ipcpd: Fix start/stop order in dtdimitri staessens2017-04-261-9/+9
|
* lib: Add call to reserve blocks in rdrbuffdimitri staessens2017-04-266-16/+16
| | | | | | | This adds a call ipcp_sdb_reserve to reserve memory in the rdrbuff without directly writing to a flow. The ipcp_flow_del function was renamed to ipcp_sdb_release. The functions operating on sdbs are moved to their own header.
* ipcpd: normal: Extract flow sets from componentsSander Vrijders2017-04-244-65/+58
| | | | | | The flow sets were still kept within the FA and DT components, when it makes more sense that they are kept within the SDU scheduler component.
* ipcpd: normal: Split flow manager into DT and FASander Vrijders2017-04-2111-884/+972
| | | | | | This splits the flow manager into the Data Transfer AE, which is in charge of routing SDUs, and the Flow Allocator AE, which handles flow allocations.
* Merged in dstaesse/ouroboros/be-complete (pull request #489)dimitri staessens2017-04-204-21/+78
|\ | | | | | | ipcpd: Build complete graph with gam
| * ipcpd: Build complete graph with gamdimitri staessens2017-04-204-21/+78
| | | | | | | | | | The complete policy will now build a complete graph. Currently a simple timer is used to check the member list periodically.
* | ipcpd: normal: Extract SDU scheduling componentSander Vrijders2017-04-194-127/+236
|/ | | | | | This extracts the SDU scheduling component out of the Flow Manager since the functionality was duplicated. For both the N-1 and N+1 flow sets an SDU scheduling component is now created.
* Merged in dstaesse/ouroboros/be-hashing (pull request #484)dimitri staessens2017-04-169-46/+49
|\ | | | | | | Be hashing
| * ipcpd: Allow specifying the hash algorithm to usedimitri staessens2017-04-169-46/+49
| | | | | | | | Currently CRC32, MD5, and SHA3 (224, 256, 384 and 512 bit) are supported.
* | irmd, ipcpd: Include socket in select() for FreeBSDdimitri staessens2017-04-161-1/+1
|/ | | | Fixes #41
* ipcpd: Fix LLC shim for BSD using netmapdimitri staessens2017-04-131-7/+5
| | | | Fixes #22
* ipcpd: Fix unregistration in normaldimitri staessens2017-04-131-0/+2
|
* include, lib: Rename ap_init/ap_finidimitri staessens2017-04-131-4/+4
| | | | Fixes #35
* Merged in dstaesse/ouroboros/be-hashes (pull request #479)dimitri staessens2017-04-1326-738/+524
|\ | | | | | | lib, ipcpd, irmd: Register hash instead of name
| * lib, ipcpd, irmd: Register hash instead of namedimitri staessens2017-04-1326-738/+524
| | | | | | | | | | | | | | | | | | All information passed over the IRMd/IPCP boundary for using IPC services (flow allocation, registration) is now hashed. This effectively fixes the shared namespace between DIFs and the IRMDs. This PR also fixes some API issues (adding const identifiers), shuffles the include headers a bit and some small bugs.
* | build: Add STATUS to message statementsSander Vrijders2017-04-122-6/+6
|/ | | | | | This adds the STATUS variable to the message() call in CMakeLists.txt in places where it was missing. This ensures that the message is printed to stdout instead of stderr.
* ipcpd: Fix wrong timeval value in LLC shimdimitri staessens2017-04-081-3/+2
|
* ipcpd: Increase query timeout in shim LLCdimitri staessens2017-04-081-2/+9
|
* ipcpd: Add netmap support for LLC shimdimitri staessens2017-04-071-52/+124
| | | | | Adds support for netmap (https://github.com/luigirizzo/netmap) to increase the performance of packet transfer over the LLC shim.
* ipcpd: shim-eth-llc: Add check for netmap headersSander Vrijders2017-04-071-0/+14
| | | | This checks if the netmap headers are available on the system.
* ipcpd: Fix race condition with concurrent allocsdimitri staessens2017-04-066-23/+167
|
* ipcpd: normal: Change assert to NULL checkSander Vrijders2017-04-061-1/+5
| | | | | | An assertion was done instead of NULL check, where the FRCT instance could legitimately be NULL, resulting in the IPCP dying when it shouldn't.
* ipcpd: shim-eth-llc: Avoid handling mgmt frame under lockSander Vrijders2017-04-061-4/+3
| | | | | This avoids handling the mgmt frames under lock, since it may deadlock if a new mgmt frame arrives in the meantime.
* lib, irmd: Implement flow allocation timeoutdimitri staessens2017-04-061-1/+3
| | | | | | Setting the timeouts on flow_alloc and flow_accept will now work. This makes some changes to the UNIX sockets used for management communication between the APs, IRMd and IPCPs.
* ipcpd: shim-eth-llc: Fix overwrite mgmt framesSander Vrijders2017-04-051-21/+42
| | | | | | This fixes the overwriting of management frames by adding a list in the shim Ethernet that keeps track of management frames instead of a single buffer.
* ipcpd: normal: Add missing else clauseSander Vrijders2017-04-052-10/+7
| | | | | A missing else clause was missing in the fast path, causing the PCI to be shrunk when it should not be. A double free has also been fixed.
* ipcpd: Add lock for allocation requestsSander Vrijders2017-04-056-103/+79
| | | | | This adds a lock to prevent a race condition between flow_req_arr and flow_alloc_resp.
* ipcpd: shim-eth-llc: Fix state check in readerSander Vrijders2017-04-051-3/+3
| | | | | The state check should be done first to avoid blocking on the recv call.
* Merged in dstaesse/ouroboros/be-local (pull request #461)dimitri staessens2017-04-041-32/+3
|\ | | | | | | ipcpd: Remove unnecessary locks in local
| * ipcpd: Remove unnecessary locks in localdimitri staessens2017-04-041-32/+3
| |
* | Merged in dstaesse/ouroboros/be-irmd-res (pull request #460)dimitri staessens2017-04-041-23/+16
|\| | | | | | | Be irmd res
| * ipcpd, irmd: Fix cleanup of thread resourcesdimitri staessens2017-04-041-23/+16
| |
* | ipcpd: shim-eth-llc: Remove IPCP rwlockSander Vrijders2017-04-041-73/+23
| | | | | | | | | | This removes the rwlock in the shim-eth-llc IPCP since it is already protected by a mutex.
* | ipcpd: shim-eth-llc: Remove pthread_cancelSander Vrijders2017-04-041-78/+117
| | | | | | | | | | This removes cancellation calls from the shim Ethernet. The different threads now check if the IPCP is still operational or not.
* | ipcpd: shim-eth-llc: Deprecate PACKET_RX|TX_RINGSander Vrijders2017-04-041-203/+11
| | | | | | | | | | | | This deprecates these special socket options of the raw socket since they are less efficient for regular packet I/O. They should be more performant for batch processing of SDUs.
* | ipcpd: shim-eth-llc: Add thread for mgmt framesSander Vrijders2017-04-041-29/+101
|/ | | | | | This adds a thread to handle management frames, since otherwise a deadlock can occur by blocking SDUs until flow allocation can be handled.
* ipcpd: Fix lock order in local sdu_loopdimitri staessens2017-04-041-1/+1
|
* lib, irmd, ipcpd: Stabilize flow allocationdimitri staessens2017-04-041-29/+49
|
* ipcpd: Fix some bad lockingdimitri staessens2017-04-033-48/+43
|
* ipcpd: Add dynamic threadpooling for IPCPsdimitri staessens2017-04-022-26/+253
|
* ipcpd: Revert timeout in fmgrdimitri staessens2017-04-011-6/+1
| | | | | | | Since there are no SDUs on most QoS cubes, the fmgr was always timing out on most QoS cubes, causing considerable delays in most SDUs. The timeout was reset to a very small value (so the bug in glibc 2.25 will cause lockups again).
* ipcpd: Fix CDAP return checks at enrollmentdimitri staessens2017-04-011-4/+4
|
* ipcpd: normal: Fix logsSander Vrijders2017-03-312-11/+6
| | | | | This removes some logs in the graph component and replaces prints of uin64_t variables with an architecture agnostic variant.