git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/liquidio: fix jumbo frame flag condition for MTU set
[dpdk.git]
/
drivers
/
net
/
mlx5
/
mlx5_mr.c
diff --git
a/drivers/net/mlx5/mlx5_mr.c
b/drivers/net/mlx5/mlx5_mr.c
index
2b4b3e2
..
8b20ee3
100644
(file)
--- a/
drivers/net/mlx5/mlx5_mr.c
+++ b/
drivers/net/mlx5/mlx5_mr.c
@@
-3,21
+3,12
@@
* Copyright 2016 Mellanox Technologies, Ltd
*/
* Copyright 2016 Mellanox Technologies, Ltd
*/
-#ifdef PEDANTIC
-#pragma GCC diagnostic ignored "-Wpedantic"
-#endif
-#include <infiniband/verbs.h>
-#ifdef PEDANTIC
-#pragma GCC diagnostic error "-Wpedantic"
-#endif
-
#include <rte_eal_memconfig.h>
#include <rte_mempool.h>
#include <rte_malloc.h>
#include <rte_rwlock.h>
#include <rte_bus_pci.h>
#include <rte_eal_memconfig.h>
#include <rte_mempool.h>
#include <rte_malloc.h>
#include <rte_rwlock.h>
#include <rte_bus_pci.h>
-#include <mlx5_glue.h>
#include <mlx5_common_mp.h>
#include <mlx5_common_mr.h>
#include <mlx5_common_mp.h>
#include <mlx5_common_mr.h>
@@
-57,7
+48,7
@@
struct mr_update_mp_data {
* Size of freed memory.
*/
static void
* Size of freed memory.
*/
static void
-mlx5_mr_mem_event_free_cb(struct mlx5_
ibv
_shared *sh,
+mlx5_mr_mem_event_free_cb(struct mlx5_
dev_ctx
_shared *sh,
const void *addr, size_t len)
{
const struct rte_memseg_list *msl;
const void *addr, size_t len)
{
const struct rte_memseg_list *msl;
@@
-145,7
+136,7
@@
void
mlx5_mr_mem_event_cb(enum rte_mem_event event_type, const void *addr,
size_t len, void *arg __rte_unused)
{
mlx5_mr_mem_event_cb(enum rte_mem_event event_type, const void *addr,
size_t len, void *arg __rte_unused)
{
- struct mlx5_
ibv
_shared *sh;
+ struct mlx5_
dev_ctx
_shared *sh;
struct mlx5_dev_list *dev_list = &mlx5_shared_data->mem_event_cb_list;
/* Must be called from the primary process. */
struct mlx5_dev_list *dev_list = &mlx5_shared_data->mem_event_cb_list;
/* Must be called from the primary process. */
@@
-259,7
+250,7
@@
mlx5_mr_update_ext_mp_cb(struct rte_mempool *mp, void *opaque,
struct mr_update_mp_data *data = opaque;
struct rte_eth_dev *dev = data->dev;
struct mlx5_priv *priv = dev->data->dev_private;
struct mr_update_mp_data *data = opaque;
struct rte_eth_dev *dev = data->dev;
struct mlx5_priv *priv = dev->data->dev_private;
- struct mlx5_
ibv
_shared *sh = priv->sh;
+ struct mlx5_
dev_ctx
_shared *sh = priv->sh;
struct mlx5_mr_ctrl *mr_ctrl = data->mr_ctrl;
struct mlx5_mr *mr = NULL;
uintptr_t addr = (uintptr_t)memhdr->addr;
struct mlx5_mr_ctrl *mr_ctrl = data->mr_ctrl;
struct mlx5_mr *mr = NULL;
uintptr_t addr = (uintptr_t)memhdr->addr;
@@
-276,7
+267,8
@@
mlx5_mr_update_ext_mp_cb(struct rte_mempool *mp, void *opaque,
return;
DRV_LOG(DEBUG, "port %u register MR for chunk #%d of mempool (%s)",
dev->data->port_id, mem_idx, mp->name);
return;
DRV_LOG(DEBUG, "port %u register MR for chunk #%d of mempool (%s)",
dev->data->port_id, mem_idx, mp->name);
- mr = mlx5_create_mr_ext(sh->pd, addr, len, mp->socket_id);
+ mr = mlx5_create_mr_ext(sh->pd, addr, len, mp->socket_id,
+ sh->share_cache.reg_mr_cb);
if (!mr) {
DRV_LOG(WARNING,
"port %u unable to allocate a new MR of"
if (!mr) {
DRV_LOG(WARNING,
"port %u unable to allocate a new MR of"
@@
-312,9
+304,10
@@
pci_dev_to_eth_dev(struct rte_pci_device *pdev)
{
uint16_t port_id;
{
uint16_t port_id;
- RTE_ETH_FOREACH_DEV_OF(port_id, &pdev->device)
- return &rte_eth_devices[port_id];
- return NULL;
+ port_id = rte_eth_find_next_of(0, &pdev->device);
+ if (port_id == RTE_MAX_ETHPORTS)
+ return NULL;
+ return &rte_eth_devices[port_id];
}
/**
}
/**
@@
-339,7
+332,7
@@
mlx5_dma_map(struct rte_pci_device *pdev, void *addr,
struct rte_eth_dev *dev;
struct mlx5_mr *mr;
struct mlx5_priv *priv;
struct rte_eth_dev *dev;
struct mlx5_mr *mr;
struct mlx5_priv *priv;
- struct mlx5_
ibv
_shared *sh;
+ struct mlx5_
dev_ctx
_shared *sh;
dev = pci_dev_to_eth_dev(pdev);
if (!dev) {
dev = pci_dev_to_eth_dev(pdev);
if (!dev) {
@@
-350,7
+343,8
@@
mlx5_dma_map(struct rte_pci_device *pdev, void *addr,
}
priv = dev->data->dev_private;
sh = priv->sh;
}
priv = dev->data->dev_private;
sh = priv->sh;
- mr = mlx5_create_mr_ext(sh->pd, (uintptr_t)addr, len, SOCKET_ID_ANY);
+ mr = mlx5_create_mr_ext(sh->pd, (uintptr_t)addr, len, SOCKET_ID_ANY,
+ sh->share_cache.reg_mr_cb);
if (!mr) {
DRV_LOG(WARNING,
"port %u unable to dma map", dev->data->port_id);
if (!mr) {
DRV_LOG(WARNING,
"port %u unable to dma map", dev->data->port_id);
@@
-386,7
+380,7
@@
mlx5_dma_unmap(struct rte_pci_device *pdev, void *addr,
{
struct rte_eth_dev *dev;
struct mlx5_priv *priv;
{
struct rte_eth_dev *dev;
struct mlx5_priv *priv;
- struct mlx5_
ibv
_shared *sh;
+ struct mlx5_
dev_ctx
_shared *sh;
struct mlx5_mr *mr;
struct mr_cache_entry entry;
struct mlx5_mr *mr;
struct mr_cache_entry entry;
@@
-410,7
+404,7
@@
mlx5_dma_unmap(struct rte_pci_device *pdev, void *addr,
return -1;
}
LIST_REMOVE(mr, mr);
return -1;
}
LIST_REMOVE(mr, mr);
-
LIST_INSERT_HEAD(&sh->share_cache.mr_free_list, mr, mr
);
+
mlx5_mr_free(mr, sh->share_cache.dereg_mr_cb
);
DEBUG("port %u remove MR(%p) from list", dev->data->port_id,
(void *)mr);
mlx5_mr_rebuild_cache(&sh->share_cache);
DEBUG("port %u remove MR(%p) from list", dev->data->port_id,
(void *)mr);
mlx5_mr_rebuild_cache(&sh->share_cache);
@@
-542,6
+536,9
@@
mlx5_mr_update_mp(struct rte_eth_dev *dev, struct mlx5_mr_ctrl *mr_ctrl,
.ret = 0,
};
.ret = 0,
};
+ DRV_LOG(DEBUG, "Port %u Rx queue registering mp %s "
+ "having %u chunks.", dev->data->port_id,
+ mp->name, mp->nb_mem_chunks);
rte_mempool_mem_iter(mp, mlx5_mr_update_mp_cb, &data);
if (data.ret < 0 && rte_errno == ENXIO) {
/* Mempool may have externally allocated memory. */
rte_mempool_mem_iter(mp, mlx5_mr_update_mp_cb, &data);
if (data.ret < 0 && rte_errno == ENXIO) {
/* Mempool may have externally allocated memory. */