#include <linux/bitfield.h>
#include <linux/etherdevice.h>
#include <linux/delay.h>
#include <linux/dev_printk.h>
#include <linux/dma-mapping.h>
#include <linux/gfp.h>
#include <linux/types.h>
#include "fbnic.h"
#include "fbnic_tlv.h"
static void __fbnic_mbx_wr_desc(struct fbnic_dev *fbd, int mbx_idx,
int desc_idx, u64 desc)
{ … }
static u64 __fbnic_mbx_rd_desc(struct fbnic_dev *fbd, int mbx_idx, int desc_idx)
{ … }
static void fbnic_mbx_init_desc_ring(struct fbnic_dev *fbd, int mbx_idx)
{ … }
void fbnic_mbx_init(struct fbnic_dev *fbd)
{ … }
static int fbnic_mbx_map_msg(struct fbnic_dev *fbd, int mbx_idx,
struct fbnic_tlv_msg *msg, u16 length, u8 eom)
{ … }
static void fbnic_mbx_unmap_and_free_msg(struct fbnic_dev *fbd, int mbx_idx,
int desc_idx)
{ … }
static void fbnic_mbx_clean_desc_ring(struct fbnic_dev *fbd, int mbx_idx)
{ … }
void fbnic_mbx_clean(struct fbnic_dev *fbd)
{ … }
#define FBNIC_MBX_MAX_PAGE_SIZE …
#define FBNIC_RX_PAGE_SIZE …
static int fbnic_mbx_alloc_rx_msgs(struct fbnic_dev *fbd)
{ … }
static int fbnic_mbx_map_tlv_msg(struct fbnic_dev *fbd,
struct fbnic_tlv_msg *msg)
{ … }
static void fbnic_mbx_process_tx_msgs(struct fbnic_dev *fbd)
{ … }
static int fbnic_fw_xmit_simple_msg(struct fbnic_dev *fbd, u32 msg_type)
{ … }
static int fbnic_fw_xmit_cap_msg(struct fbnic_dev *fbd)
{ … }
static void fbnic_mbx_postinit_desc_ring(struct fbnic_dev *fbd, int mbx_idx)
{ … }
static void fbnic_mbx_postinit(struct fbnic_dev *fbd)
{ … }
int fbnic_fw_xmit_ownership_msg(struct fbnic_dev *fbd, bool take_ownership)
{ … }
static const struct fbnic_tlv_index fbnic_fw_cap_resp_index[] = …;
static int fbnic_fw_parse_bmc_addrs(u8 bmc_mac_addr[][ETH_ALEN],
struct fbnic_tlv_msg *attr, int len)
{ … }
static int fbnic_fw_parse_cap_resp(void *opaque, struct fbnic_tlv_msg **results)
{ … }
static const struct fbnic_tlv_index fbnic_ownership_resp_index[] = …;
static int fbnic_fw_parse_ownership_resp(void *opaque,
struct fbnic_tlv_msg **results)
{ … }
static const struct fbnic_tlv_index fbnic_heartbeat_resp_index[] = …;
static int fbnic_fw_parse_heartbeat_resp(void *opaque,
struct fbnic_tlv_msg **results)
{ … }
static int fbnic_fw_xmit_heartbeat_message(struct fbnic_dev *fbd)
{ … }
static bool fbnic_fw_heartbeat_current(struct fbnic_dev *fbd)
{ … }
int fbnic_fw_init_heartbeat(struct fbnic_dev *fbd, bool poll)
{ … }
void fbnic_fw_check_heartbeat(struct fbnic_dev *fbd)
{ … }
static const struct fbnic_tlv_parser fbnic_fw_tlv_parser[] = …;
static void fbnic_mbx_process_rx_msgs(struct fbnic_dev *fbd)
{ … }
void fbnic_mbx_poll(struct fbnic_dev *fbd)
{ … }
int fbnic_mbx_poll_tx_ready(struct fbnic_dev *fbd)
{ … }
void fbnic_mbx_flush_tx(struct fbnic_dev *fbd)
{ … }
void fbnic_get_fw_ver_commit_str(struct fbnic_dev *fbd, char *fw_version,
const size_t str_sz)
{ … }