X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fionic%2Fionic_lif.c;h=9cdab32501f6bc832969ea203cf08daf999da5e9;hb=c67719e133f767451b16d6c13bd857bc09d0a2a9;hp=2559b4c16e9dd350819d45c1c2d43d4f7298cd04;hpb=669c8de67c88f9d168eeab0fc93b71d63c669a73;p=dpdk.git diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index 2559b4c16e..9cdab32501 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -10,15 +10,38 @@ #include "ionic_lif.h" #include "ionic_ethdev.h" +static void * +ionic_bus_map_dbpage(struct ionic_adapter *adapter, int page_num) +{ + char *vaddr = adapter->bars[IONIC_PCI_BAR_DBELL].vaddr; + + if (adapter->num_bars <= IONIC_PCI_BAR_DBELL) + return NULL; + + return (void *)&vaddr[page_num << PAGE_SHIFT]; +} + int ionic_lif_alloc(struct ionic_lif *lif) { + struct ionic_adapter *adapter = lif->adapter; uint32_t socket_id = rte_socket_id(); + int dbpage_num; snprintf(lif->name, sizeof(lif->name), "lif%u", lif->index); IONIC_PRINT(DEBUG, "Allocating Lif Info"); + lif->kern_pid = 0; + + dbpage_num = ionic_db_page_num(lif, 0); + + lif->kern_dbpage = ionic_bus_map_dbpage(adapter, dbpage_num); + if (!lif->kern_dbpage) { + IONIC_PRINT(ERR, "Cannot map dbpage, aborting"); + return -ENOMEM; + } + lif->info_sz = RTE_ALIGN(sizeof(*lif->info), PAGE_SIZE); lif->info_z = rte_eth_dma_zone_reserve(lif->eth_dev,