net/ionic: add doorbells
[dpdk.git] / drivers / net / ionic / ionic_dev.c
index d748341..13e99ac 100644 (file)
@@ -5,6 +5,7 @@
 #include <rte_malloc.h>
 
 #include "ionic_dev.h"
+#include "ionic_lif.h"
 #include "ionic.h"
 
 int
@@ -259,3 +260,55 @@ ionic_dev_cmd_port_loopback(struct ionic_dev *idev, uint8_t loopback_mode)
 
        ionic_dev_cmd_go(idev, &cmd);
 }
+
+/* LIF commands */
+
+void
+ionic_dev_cmd_lif_identify(struct ionic_dev *idev, uint8_t type, uint8_t ver)
+{
+       union ionic_dev_cmd cmd = {
+               .lif_identify.opcode = IONIC_CMD_LIF_IDENTIFY,
+               .lif_identify.type = type,
+               .lif_identify.ver = ver,
+       };
+
+       ionic_dev_cmd_go(idev, &cmd);
+}
+
+void
+ionic_dev_cmd_lif_init(struct ionic_dev *idev, uint16_t lif_index,
+                      rte_iova_t info_pa)
+{
+       union ionic_dev_cmd cmd = {
+               .lif_init.opcode = IONIC_CMD_LIF_INIT,
+               .lif_init.index = lif_index,
+               .lif_init.info_pa = info_pa,
+       };
+
+       ionic_dev_cmd_go(idev, &cmd);
+}
+
+void
+ionic_dev_cmd_lif_reset(struct ionic_dev *idev, uint16_t lif_index)
+{
+       union ionic_dev_cmd cmd = {
+               .lif_init.opcode = IONIC_CMD_LIF_RESET,
+               .lif_init.index = lif_index,
+       };
+
+       ionic_dev_cmd_go(idev, &cmd);
+}
+
+int
+ionic_db_page_num(struct ionic_lif *lif, int pid)
+{
+       return (lif->index * 0) + pid;
+}
+
+void
+ionic_intr_init(struct ionic_dev *idev, struct ionic_intr_info *intr,
+               unsigned long index)
+{
+       ionic_intr_clean(idev->intr_ctrl, index);
+       intr->index = index;
+}