Required to be able to use logging in the secondary process where Ethernet device pointer stored in sfc_adapter is invalid.
Signed-off-by: Andrew Rybchenko <arybche...@solarflare.com> Reviewed-by: Andy Moreton <amore...@solarflare.com> --- drivers/net/sfc/sfc.h | 2 ++ drivers/net/sfc/sfc_debug.h | 10 ++++------ drivers/net/sfc/sfc_ethdev.c | 3 +++ drivers/net/sfc/sfc_log.h | 14 ++++++-------- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/drivers/net/sfc/sfc.h b/drivers/net/sfc/sfc.h index 7927678..772a713 100644 --- a/drivers/net/sfc/sfc.h +++ b/drivers/net/sfc/sfc.h @@ -179,6 +179,8 @@ struct sfc_adapter { */ rte_spinlock_t lock; enum sfc_adapter_state state; + struct rte_pci_addr pci_addr; + uint16_t port_id; struct rte_eth_dev *eth_dev; struct rte_kvargs *kvargs; bool debug_init; diff --git a/drivers/net/sfc/sfc_debug.h b/drivers/net/sfc/sfc_debug.h index f4fe044..92eba9c 100644 --- a/drivers/net/sfc/sfc_debug.h +++ b/drivers/net/sfc/sfc_debug.h @@ -47,14 +47,12 @@ /* Log PMD message, automatically add prefix and \n */ #define sfc_panic(sa, fmt, args...) \ do { \ - const struct rte_eth_dev *_dev = (sa)->eth_dev; \ - const struct rte_pci_device *_pci_dev = \ - RTE_ETH_DEV_TO_PCI(_dev); \ + const struct sfc_adapter *_sa = (sa); \ \ rte_panic("sfc " PCI_PRI_FMT " #%" PRIu8 ": " fmt "\n", \ - _pci_dev->addr.domain, _pci_dev->addr.bus, \ - _pci_dev->addr.devid, _pci_dev->addr.function,\ - _dev->data->port_id, ##args); \ + _sa->pci_addr.domain, _sa->pci_addr.bus, \ + _sa->pci_addr.devid, _sa->pci_addr.function, \ + _sa->port_id, ##args); \ } while (0) #endif /* _SFC_DEBUG_H_ */ diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c index e4f051a..d6bba1d 100644 --- a/drivers/net/sfc/sfc_ethdev.c +++ b/drivers/net/sfc/sfc_ethdev.c @@ -1513,6 +1513,9 @@ sfc_eth_dev_init(struct rte_eth_dev *dev) sfc_register_dp(); /* Required for logging */ + sa->pci_addr = pci_dev->addr; + sa->port_id = dev->data->port_id; + sa->eth_dev = dev; /* Copy PCI device info to the dev->data */ diff --git a/drivers/net/sfc/sfc_log.h b/drivers/net/sfc/sfc_log.h index d0f8921..6c43925 100644 --- a/drivers/net/sfc/sfc_log.h +++ b/drivers/net/sfc/sfc_log.h @@ -35,18 +35,16 @@ /* Log PMD message, automatically add prefix and \n */ #define SFC_LOG(sa, level, ...) \ do { \ - const struct rte_eth_dev *_dev = (sa)->eth_dev; \ - const struct rte_pci_device *_pci_dev = \ - RTE_ETH_DEV_TO_PCI(_dev); \ + const struct sfc_adapter *_sa = (sa); \ \ RTE_LOG(level, PMD, \ RTE_FMT("sfc_efx " PCI_PRI_FMT " #%" PRIu8 ": " \ RTE_FMT_HEAD(__VA_ARGS__,) "\n", \ - _pci_dev->addr.domain, \ - _pci_dev->addr.bus, \ - _pci_dev->addr.devid, \ - _pci_dev->addr.function, \ - _dev->data->port_id, \ + _sa->pci_addr.domain, \ + _sa->pci_addr.bus, \ + _sa->pci_addr.devid, \ + _sa->pci_addr.function, \ + _sa->port_id, \ RTE_FMT_TAIL(__VA_ARGS__,))); \ } while (0) -- 2.9.4