• Cedric Roux's avatar
    Fix NFAPI integration · 3214e03a
    Cedric Roux authored
    This commit fixes issues introduced by the previous commit.
    
    Summary of work:
    - cleanup:
      - fix LOG_XX to be less verbose
      - fix cmake_targets/CMakeLists.txt
      - fix oaienv
      - remove dead code
    - bug fixes:
      - in openair1/SCHED/fapi_l1.c we had:
          eNB->pdcch_vars[subframe&1].num_dci           = number_dci;
        should be:
          eNB->pdcch_vars[subframe&1].num_dci           = 0;
        This bug let the PHY send more DCIs than what should have been
        sent because num_dci is incremented later on in the code.
        This fix may be a problem for fapi mode, to be checked.
      - add new T VCD traces
      - revert openair1/PHY/TOOLS/file_output.c to 'develop' version
      - remove thread_id in logRecord/logRecord_mt
      - revert (and adapt) configuration files
      - be careful when doing frame++, we need to % 1024
      - revert target_rx_power in openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
    - NFAPI:
      - the open-nFAPI code has been included in the repository. See nfapi/README.
        Maybe we should "git clone" the Cisco repository instead. We have to be
        careful of availability though.
    
    What has been tested:
    - monolithic eNB FDD 5/10MHz with one UE, iperf UDP/TCP uplink/downlink
    
    Anything else may fail to work, especially the FAPI mode, which has not
    been tested at all.
    3214e03a
vnf.h 1.51 KB
/*
 * Copyright 2017 Cisco Systems, Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
 * 
 * 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.
 */


#ifndef _VNF_H_
#define _VNF_H_

#include "nfapi_vnf_interface.h"

typedef struct 
{

	nfapi_vnf_config_t _public;

	uint8_t terminate;
	uint8_t sctp;

	uint8_t tx_message_buffer[NFAPI_MAX_PACKED_MESSAGE_SIZE];
	uint16_t next_phy_id;
	
} vnf_t;


int vnf_pack_and_send_p5_message(vnf_t* vnf, uint16_t p5_idx, nfapi_p4_p5_message_header_t* msg, uint16_t msg_len);
int vnf_pack_and_send_p4_message(vnf_t* vnf, uint16_t p5_idx, nfapi_p4_p5_message_header_t* msg, uint16_t msg_len);

int vnf_read_dispatch_message(nfapi_vnf_config_t* config, nfapi_vnf_pnf_info_t* pnf);

void nfapi_vnf_phy_info_list_add(nfapi_vnf_config_t* config, nfapi_vnf_phy_info_t* info);
nfapi_vnf_phy_info_t* nfapi_vnf_phy_info_list_find(nfapi_vnf_config_t* config, uint16_t phy_id);
void nfapi_vnf_pnf_list_add(nfapi_vnf_config_t* config, nfapi_vnf_pnf_info_t* node);
nfapi_vnf_pnf_info_t* nfapi_vnf_pnf_list_find(nfapi_vnf_config_t* config, int p5_idx);
#endif // _VNF_H_