wimax/i2400m: introduce i2400m_reset(), stopping TX and carrier
Currently the i2400m driver was resetting by just calling
i2400m->bus_reset(). However, this was missing stopping the TX queue
and downing the carrier. This was causing, for the corner case of the
driver reseting a device that refuses to go out of idle mode, that a
few packets would be queued and more than one reset would go through,
making the recovery a wee bit messy.
To avoid introducing the same cleanup in all the bus-specific driver,
introduced a i2400m_reset() function that takes care of house cleaning
and then calling the bus-level reset implementation.
The bulk of the changes in all files are just to rename the call from
i2400m->bus_reset() to i2400m_reset().
Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
diff --git a/drivers/net/wimax/i2400m/sdio.c b/drivers/net/wimax/i2400m/sdio.c
index ec17892..20ab22e 100644
--- a/drivers/net/wimax/i2400m/sdio.c
+++ b/drivers/net/wimax/i2400m/sdio.c
@@ -43,7 +43,7 @@
* i2400m_release()
* free_netdev(net_dev)
*
- * i2400ms_bus_reset() Called by i2400m->bus_reset
+ * i2400ms_bus_reset() Called by i2400m_reset
* __i2400ms_reset()
* __i2400ms_send_barker()
*/
@@ -342,13 +342,6 @@
sizeof(i2400m_COLD_BOOT_BARKER));
else if (rt == I2400M_RT_BUS) {
do_bus_reset:
- /* call netif_tx_disable() before sending IOE disable,
- * so that all the tx from network layer are stopped
- * while IOE is being reset. Make sure it is called
- * only after register_netdev() was issued.
- */
- if (i2400m->wimax_dev.net_dev->reg_state == NETREG_REGISTERED)
- netif_tx_disable(i2400m->wimax_dev.net_dev);
i2400ms_bus_release(i2400m);