This implements the STOP.request/indication for all 3 transport mechanisms, the VNF will send the STOP.request to the PNF, indicating it will disconnect, and await a STOP.indication from the PNF The WLS VNF is reworked to be able to start before the PNF, by calling call rte_eal_init and rte_dev_probe to determine if dpdk has been initialized properly, before calling rte_eal_init in the intended process when it is appropriate to do so
108 lines
3.8 KiB
C
108 lines
3.8 KiB
C
/*
|
|
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
|
* contributor license agreements. See the NOTICE file distributed with
|
|
* this work for additional information regarding copyright ownership.
|
|
* The OpenAirInterface Software Alliance licenses this file to You under
|
|
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
|
* except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.openairinterface.org/?page_id=698
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*-------------------------------------------------------------------------------
|
|
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
|
* contact@openairinterface.org
|
|
*/
|
|
|
|
#ifndef OPENAIRINTERFACE_WLS_COMMON_H
|
|
#define OPENAIRINTERFACE_WLS_COMMON_H
|
|
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <stdbool.h>
|
|
#include "nfapi/open-nFAPI/fapi/inc/nr_fapi_p5_utils.h"
|
|
#include "nfapi/open-nFAPI/fapi/inc/nr_fapi_p7_utils.h"
|
|
|
|
#define WLS_DEV_NAME "wls"
|
|
#define WLS_MAC_MEMORY_SIZE 0x7F000000
|
|
#define WLS_PHY_MEMORY_SIZE 0x7F000000
|
|
|
|
#define MAX_NUM_LOCATIONS (508)
|
|
|
|
#define MIN_DL_BUF_LOCATIONS (0) /* Used for stats collection 0-49 */
|
|
#define MIN_UL_BUF_LOCATIONS (MIN_DL_BUF_LOCATIONS + MAX_NUM_LOCATIONS) /* Used for stats collection 50-99 */
|
|
|
|
#define MAX_DL_BUF_LOCATIONS (MIN_DL_BUF_LOCATIONS + MAX_NUM_LOCATIONS) /* Used for stats collection 0-49 */
|
|
#define MAX_UL_BUF_LOCATIONS (MIN_UL_BUF_LOCATIONS + MAX_NUM_LOCATIONS) /* Used for stats collection 50-99 */
|
|
|
|
#define ALLOC_TRACK_SIZE ( 16384 )
|
|
|
|
typedef struct {
|
|
uint64_t *values;
|
|
uint16_t values_size;
|
|
uint16_t values_count;
|
|
}pa_store_t;
|
|
|
|
/* ----- WLS Operation --- */
|
|
#define FAPI_VENDOR_MSG_HEADER_IND 0x1A
|
|
// Linked list header present at the top of all messages
|
|
typedef struct _fapi_api_queue_elem {
|
|
struct _fapi_api_queue_elem *p_next;
|
|
// p_tx_data_elm_list used for TX_DATA.request processing
|
|
struct _fapi_api_queue_elem *p_tx_data_elm_list;
|
|
uint8_t msg_type;
|
|
uint8_t num_message_in_block;
|
|
uint32_t msg_len;
|
|
uint32_t align_offset;
|
|
uint64_t time_stamp;
|
|
} fapi_api_queue_elem_t,
|
|
*p_fapi_api_queue_elem_t;
|
|
|
|
|
|
typedef struct wls_mac_mem_array
|
|
{
|
|
void **ppFreeBlock;
|
|
void *pStorage;
|
|
void *pEndOfStorage;
|
|
uint32_t nBlockSize;
|
|
uint32_t nBlockCount;
|
|
} WLS_MAC_MEM_SRUCT, *PWLS_MAC_MEM_SRUCT;
|
|
|
|
typedef struct wls_mac_ctx
|
|
{
|
|
void *hWls;
|
|
void *pWlsMemBase;
|
|
void *pWlsMemBaseUsable;
|
|
WLS_MAC_MEM_SRUCT sWlsStruct;
|
|
|
|
uint64_t nTotalMemorySize;
|
|
uint64_t nTotalMemorySizeUsable;
|
|
uint32_t nBlockSize;
|
|
uint32_t nTotalBlocks;
|
|
uint32_t nAllocBlocks;
|
|
uint32_t nTotalAllocCnt;
|
|
uint32_t nTotalFreeCnt;
|
|
uint32_t nTotalUlBufAllocCnt;
|
|
uint32_t nTotalUlBufFreeCnt;
|
|
uint32_t nTotalDlBufAllocCnt;
|
|
uint32_t nTotalDlBufFreeCnt;
|
|
// Support for FAPI Translator
|
|
uint32_t nPartitionMemSize;
|
|
void *pPartitionMemBase;
|
|
|
|
volatile pthread_mutex_t lock;
|
|
volatile pthread_mutex_t lock_alloc;
|
|
} WLS_MAC_CTX, *PWLS_MAC_CTX;
|
|
|
|
void fill_fapi_list_elem(p_fapi_api_queue_elem_t currElem, p_fapi_api_queue_elem_t nextElem, const uint8_t msgType, const uint8_t numMsgInBlock, const uint32_t alignOffset);
|
|
uint64_t dequeueBlock(PWLS_MAC_CTX pWls);
|
|
void wls_return_msg_to_master(PWLS_MAC_CTX pWls, const uint64_t msg_PA);
|
|
uint8_t wls_send_fapi_msg(PWLS_MAC_CTX pWls, const uint16_t message_id, const int packed_len, const uint8_t *message );
|
|
uint8_t wls_msg_send(PWLS_MAC_CTX pWls, p_fapi_api_queue_elem_t currMsg);
|
|
#endif //OPENAIRINTERFACE_WLS_COMMON_H
|