Luis Farias | 2de9752 | 2022-03-17 20:01:53 -0700 | [diff] [blame] | 1 | .. Copyright (c) 2012 Intel |
Luis Farias | 9d66fca | 2020-05-28 19:01:58 -0700 | [diff] [blame] | 2 | .. |
| 3 | .. Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 | .. you may not use this file except in compliance with the License. |
| 5 | .. You may obtain a copy of the License at |
| 6 | .. |
| 7 | .. http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | .. |
| 9 | .. Unless required by applicable law or agreed to in writing, software |
| 10 | .. distributed under the License is distributed on an "AS IS" BASIS, |
| 11 | .. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 | .. See the License for the specific language governing permissions and |
| 13 | .. limitations under the License. |
| 14 | |
| 15 | .. |br| raw:: html |
| 16 | |
| 17 | <br /> |
| 18 | |
| 19 | Wls Lib Overview |
| 20 | ================ |
| 21 | |
Luis Farias | 70d9d92 | 2020-08-11 16:05:37 -0700 | [diff] [blame] | 22 | The Wls_lib is a Wireless Service library that supports shared memory and buffer management used by applications |
| 23 | implementing a gNb or eNb. |
| 24 | This library uses DPDK, libhugetlbfs and pthreads to provide memcpy less data exchange between an L2 application, |
Luis Farias | 9d66fca | 2020-05-28 19:01:58 -0700 | [diff] [blame] | 25 | API Translator Module and a L1 application by sharing the same memory zone from the DPDK perspective. |
| 26 | |
| 27 | Project Resources |
| 28 | ----------------- |
| 29 | |
| 30 | The source code is avalable from the Linux Foundation Gerrit server: |
| 31 | `<https://gerrit.o-ran-sc.org/r/gitweb?p=o-du%2Fphy.git;a=summary>`_ |
| 32 | |
| 33 | The build (CI) jobs will be in the Linux Foundation Jenkins server: |
| 34 | `<https://jenkins.o-ran-sc.org>`_ |
| 35 | |
| 36 | Issues are tracked in the Linux Foundation Jira server: |
| 37 | `<https://jira.o-ran-sc.org/secure/Dashboard.jspa>`_ |
| 38 | |
| 39 | Project information is available in the Linux Foundation Wiki: |
| 40 | `<https://wiki.o-ran-sc.org>`_ |
| 41 | |
| 42 | |
| 43 | Library Functions |
| 44 | ----------------- |
| 45 | |
| 46 | * **WLS_Open() and WLS_Open_Dual()** that open a single or dual wls instance interface and registers the instance with the kernel space driver. |
| 47 | |
| 48 | * **WLS_Close(), WLS_Close1()** closes the wls instance and deregisters it from the kernel space driver. |
| 49 | |
| 50 | * **WLS_Ready(), WLS_Ready1()** checks state of remote peer of WLS interface and returns 1 if remote peer is available. |
| 51 | |
| 52 | * **WLS_Alloc()** allocates a memory block for data exchange shared memory. This block uses hugepages. |
| 53 | |
| 54 | * **WLS_Free()** frees memory block for data exchange shared memory. |
| 55 | |
| 56 | * **WLS_Put(), WLS_Put1()** puts memory block (or group of blocks) allocated from WLS memory into the interface for transfer to remote peer. |
| 57 | |
| 58 | * **WLS_Check(), WLS_Check1()** checks if there are memory blocks with data from remote peer and returns number of blocks available for "get" operation. |
| 59 | |
| 60 | * **WLS_Get(), WLS_Get1()** gets memory block from interface received from remote peer. Function is a non-blocking operation and returns NULL if no blocks available. |
| 61 | |
| 62 | * **WLS_Wait(), WLS_Wait1()** waits for new memory block from remote peer. This Function is a blocking call and returns number of blocks received. |
| 63 | |
| 64 | * **WLS_WakeUp(), WLS_WakeUp1()** performs "wakeup" notification to remote peer to unblock "wait" operations pending. |
| 65 | |
| 66 | * **WLS_Get(), WLS_Get1()** gets a memory block from the interface received from remote peer. This Function is blocking operation and waits till next memory block from remote peer. |
| 67 | |
| 68 | * **WLS_VA2PA()** converts virtual address (VA) to physical address (PA). |
| 69 | |
| 70 | * **WLS_PA2VA()** converts physical address (PA) to virtual address (VA). |
| 71 | |
| 72 | * **WLS_EnqueueBlock(), WLS_EnqueueBlock1()** This function is used by a master or secondary master to provide memory blocks to a slave for next slave to master (sec master) transfer of data. |
| 73 | |
| 74 | * **WLS_NumBlocks()** returns number of current available blocks provided by master for a new transfer of data from the slave. |
| 75 | |
Luis Farias | 70d9d92 | 2020-08-11 16:05:37 -0700 | [diff] [blame] | 76 | The **_1()** functions are only needed when using the WLS_Open_Dual(). |
| 77 | |
| 78 | The source code and documentation will be updated in the next release to use inclusive engineering terms. |