From ed864feb3aedcde41040d4a5293608ccd2d3361a Mon Sep 17 00:00:00 2001 From: Bartosz Szczepanek Date: Tue, 7 Feb 2017 12:20:18 +0100 Subject: [PATCH] [thunderx] Fix hardware deinitialization It is required to reset BGX context state for the LMAC using BGX_CMR_CONFIG register. This solves problem with network connectivity in Linux booted from iPXE. Signed-off-by: Bartosz Szczepanek Modified-by: Michael Brown Signed-off-by: Michael Brown --- src/drivers/net/thunderx.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/drivers/net/thunderx.c b/src/drivers/net/thunderx.c index 306adc45..901ecba1 100644 --- a/src/drivers/net/thunderx.c +++ b/src/drivers/net/thunderx.c @@ -1146,10 +1146,17 @@ static int txnic_lmac_probe ( struct txnic_lmac *lmac ) { * @v lmac Logical MAC */ static void txnic_lmac_remove ( struct txnic_lmac *lmac ) { + uint64_t config; /* Sanity check */ assert ( lmac->vnic != NULL ); + /* Disable packet receive and transmit */ + config = readq ( lmac->regs + BGX_CMR_CONFIG ); + config &= ~( BGX_CMR_CONFIG_DATA_PKT_TX_EN | + BGX_CMR_CONFIG_DATA_PKT_RX_EN ); + writeq ( config, ( lmac->regs + BGX_CMR_CONFIG ) ); + /* Unregister network device */ unregister_netdev ( lmac->vnic->netdev );