#ifndef _IONIC_DEV_H_
#define _IONIC_DEV_H_
+#include <stdbool.h>
+
#include "ionic_osdep.h"
#include "ionic_if.h"
#include "ionic_regs.h"
+#define IONIC_MIN_MTU RTE_ETHER_MIN_MTU
+#define IONIC_MAX_MTU 9194
+
#define IONIC_MAX_RING_DESC 32768
#define IONIC_MIN_RING_DESC 16
+#define IONIC_DEF_TXRX_DESC 4096
#define IONIC_LIFS_MAX 1024
-#define IONIC_DEVCMD_TIMEOUT 30 /* devcmd_timeout */
+#define IONIC_DEVCMD_TIMEOUT 5 /* devcmd_timeout */
+#define IONIC_DEVCMD_CHECK_PERIOD_US 10 /* devcmd status chk period */
+
#define IONIC_ALIGN 4096
struct ionic_adapter;
union ionic_dev_cmd_regs __iomem *dev_cmd;
struct ionic_doorbell __iomem *db_pages;
- rte_iova_t phy_db_pages;
-
struct ionic_intr __iomem *intr_ctrl;
-
struct ionic_intr_status __iomem *intr_status;
struct ionic_port_info *port_info;
uint32_t num_descs;
uint32_t desc_size;
uint32_t sg_desc_size;
- uint32_t pid;
uint32_t qid;
uint32_t qtype;
struct ionic_doorbell __iomem *db;
- void *nop_desc;
};
#define IONIC_INTR_INDEX_NOT_ASSIGNED (-1)
void ionic_intr_init(struct ionic_dev *idev, struct ionic_intr_info *intr,
unsigned long index);
+const char *ionic_opcode_to_str(enum ionic_cmd_opcode opcode);
+
int ionic_dev_setup(struct ionic_adapter *adapter);
void ionic_dev_cmd_go(struct ionic_dev *idev, union ionic_dev_cmd *cmd);
int ionic_q_init(struct ionic_lif *lif, struct ionic_dev *idev,
struct ionic_queue *q, uint32_t index, uint32_t num_descs,
- size_t desc_size, size_t sg_desc_size, uint32_t pid);
+ size_t desc_size, size_t sg_desc_size);
void ionic_q_map(struct ionic_queue *q, void *base, rte_iova_t base_pa);
void ionic_q_sg_map(struct ionic_queue *q, void *base, rte_iova_t base_pa);
void ionic_q_flush(struct ionic_queue *q);