From: Sasha Levin Date: Mon, 27 Sep 2021 05:01:35 +0000 (-0400) Subject: Drop net-mlx4_en-resolve-bad-operstate-value.patch X-Git-Tag: v5.4.150~31 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=05a11b8d4a4b0af12124359b22d472feec73664f;p=thirdparty%2Fkernel%2Fstable-queue.git Drop net-mlx4_en-resolve-bad-operstate-value.patch Signed-off-by: Sasha Levin --- diff --git a/queue-4.14/net-mlx4_en-resolve-bad-operstate-value.patch b/queue-4.14/net-mlx4_en-resolve-bad-operstate-value.patch deleted file mode 100644 index 14f2189c4c3..00000000000 --- a/queue-4.14/net-mlx4_en-resolve-bad-operstate-value.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 698b354c5fb8c714cfc1665bf0f43be9a123d992 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Sun, 19 Sep 2021 14:55:45 +0300 -Subject: net/mlx4_en: Resolve bad operstate value - -From: Lama Kayal - -[ Upstream commit 72a3c58d18fd780eecd80178bb2132ce741a0a74 ] - -Any link state change that's done prior to net device registration -isn't reflected on the state, thus the operational state is left -obsolete, with 'UNKNOWN' status. - -To resolve the issue, query link state from FW upon open operations -to ensure operational state is updated. - -Fixes: c27a02cd94d6 ("mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC") -Signed-off-by: Lama Kayal -Signed-off-by: Tariq Toukan -Signed-off-by: David S. Miller -Signed-off-by: Sasha Levin ---- - .../net/ethernet/mellanox/mlx4/en_netdev.c | 47 ++++++++++++------- - drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 - - 2 files changed, 29 insertions(+), 19 deletions(-) - -diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -index b27dbc34df02..f191a0d042b9 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -@@ -1260,7 +1260,6 @@ static void mlx4_en_do_set_rx_mode(struct work_struct *work) - if (!netif_carrier_ok(dev)) { - if (!mlx4_en_QUERY_PORT(mdev, priv->port)) { - if (priv->port_state.link_state) { -- priv->last_link_state = MLX4_DEV_EVENT_PORT_UP; - netif_carrier_on(dev); - en_dbg(LINK, priv, "Link Up\n"); - } -@@ -1568,26 +1567,36 @@ static void mlx4_en_service_task(struct work_struct *work) - mutex_unlock(&mdev->state_lock); - } - --static void mlx4_en_linkstate(struct work_struct *work) -+static void mlx4_en_linkstate(struct mlx4_en_priv *priv) -+{ -+ struct mlx4_en_port_state *port_state = &priv->port_state; -+ struct mlx4_en_dev *mdev = priv->mdev; -+ struct net_device *dev = priv->dev; -+ bool up; -+ -+ if (mlx4_en_QUERY_PORT(mdev, priv->port)) -+ port_state->link_state = MLX4_PORT_STATE_DEV_EVENT_PORT_DOWN; -+ -+ up = port_state->link_state == MLX4_PORT_STATE_DEV_EVENT_PORT_UP; -+ if (up == netif_carrier_ok(dev)) -+ netif_carrier_event(dev); -+ if (!up) { -+ en_info(priv, "Link Down\n"); -+ netif_carrier_off(dev); -+ } else { -+ en_info(priv, "Link Up\n"); -+ netif_carrier_on(dev); -+ } -+} -+ -+static void mlx4_en_linkstate_work(struct work_struct *work) - { - struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, - linkstate_task); - struct mlx4_en_dev *mdev = priv->mdev; -- int linkstate = priv->link_state; - - mutex_lock(&mdev->state_lock); -- /* If observable port state changed set carrier state and -- * report to system log */ -- if (priv->last_link_state != linkstate) { -- if (linkstate == MLX4_DEV_EVENT_PORT_DOWN) { -- en_info(priv, "Link Down\n"); -- netif_carrier_off(priv->dev); -- } else { -- en_info(priv, "Link Up\n"); -- netif_carrier_on(priv->dev); -- } -- } -- priv->last_link_state = linkstate; -+ mlx4_en_linkstate(priv); - mutex_unlock(&mdev->state_lock); - } - -@@ -2090,9 +2099,11 @@ static int mlx4_en_open(struct net_device *dev) - mlx4_en_clear_stats(dev); - - err = mlx4_en_start_port(dev); -- if (err) -+ if (err) { - en_err(priv, "Failed starting port:%d\n", priv->port); -- -+ goto out; -+ } -+ mlx4_en_linkstate(priv); - out: - mutex_unlock(&mdev->state_lock); - return err; -@@ -3292,7 +3303,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, - spin_lock_init(&priv->stats_lock); - INIT_WORK(&priv->rx_mode_task, mlx4_en_do_set_rx_mode); - INIT_WORK(&priv->restart_task, mlx4_en_restart); -- INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate); -+ INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate_work); - INIT_DELAYED_WORK(&priv->stats_task, mlx4_en_do_get_stats); - INIT_DELAYED_WORK(&priv->service_task, mlx4_en_service_task); - INIT_WORK(&priv->vxlan_add_task, mlx4_en_add_vxlan_offloads); -diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -index 7078330e25c1..e66efee88c9c 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -@@ -566,7 +566,6 @@ struct mlx4_en_priv { - - struct mlx4_hwq_resources res; - int link_state; -- int last_link_state; - bool port_up; - int port; - int registered; --- -2.33.0 - diff --git a/queue-4.14/series b/queue-4.14/series index 5d22a3a57dc..d17bbba6966 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -14,6 +14,5 @@ usb-serial-option-add-device-id-for-foxconn-t99w265.patch mcb-fix-error-handling-in-mcb_alloc_bus.patch serial-mvebu-uart-fix-driver-s-tx_empty-callback.patch net-hso-fix-muxed-tty-registration.patch -net-mlx4_en-resolve-bad-operstate-value.patch bnxt_en-fix-tx-timeout-when-tx-ring-size-is-set-to-t.patch net-mlx4_en-don-t-allow-arfs-for-encapsulated-packet.patch diff --git a/queue-4.19/net-mlx4_en-resolve-bad-operstate-value.patch b/queue-4.19/net-mlx4_en-resolve-bad-operstate-value.patch deleted file mode 100644 index 98ce56de41a..00000000000 --- a/queue-4.19/net-mlx4_en-resolve-bad-operstate-value.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 5f4d3e6040e070ab765ab674f38b8f8328c21407 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Sun, 19 Sep 2021 14:55:45 +0300 -Subject: net/mlx4_en: Resolve bad operstate value - -From: Lama Kayal - -[ Upstream commit 72a3c58d18fd780eecd80178bb2132ce741a0a74 ] - -Any link state change that's done prior to net device registration -isn't reflected on the state, thus the operational state is left -obsolete, with 'UNKNOWN' status. - -To resolve the issue, query link state from FW upon open operations -to ensure operational state is updated. - -Fixes: c27a02cd94d6 ("mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC") -Signed-off-by: Lama Kayal -Signed-off-by: Tariq Toukan -Signed-off-by: David S. Miller -Signed-off-by: Sasha Levin ---- - .../net/ethernet/mellanox/mlx4/en_netdev.c | 47 ++++++++++++------- - drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 - - 2 files changed, 29 insertions(+), 19 deletions(-) - -diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -index f3a0617733d8..afd2dd8ebd73 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -@@ -1269,7 +1269,6 @@ static void mlx4_en_do_set_rx_mode(struct work_struct *work) - if (!netif_carrier_ok(dev)) { - if (!mlx4_en_QUERY_PORT(mdev, priv->port)) { - if (priv->port_state.link_state) { -- priv->last_link_state = MLX4_DEV_EVENT_PORT_UP; - netif_carrier_on(dev); - en_dbg(LINK, priv, "Link Up\n"); - } -@@ -1563,26 +1562,36 @@ static void mlx4_en_service_task(struct work_struct *work) - mutex_unlock(&mdev->state_lock); - } - --static void mlx4_en_linkstate(struct work_struct *work) -+static void mlx4_en_linkstate(struct mlx4_en_priv *priv) -+{ -+ struct mlx4_en_port_state *port_state = &priv->port_state; -+ struct mlx4_en_dev *mdev = priv->mdev; -+ struct net_device *dev = priv->dev; -+ bool up; -+ -+ if (mlx4_en_QUERY_PORT(mdev, priv->port)) -+ port_state->link_state = MLX4_PORT_STATE_DEV_EVENT_PORT_DOWN; -+ -+ up = port_state->link_state == MLX4_PORT_STATE_DEV_EVENT_PORT_UP; -+ if (up == netif_carrier_ok(dev)) -+ netif_carrier_event(dev); -+ if (!up) { -+ en_info(priv, "Link Down\n"); -+ netif_carrier_off(dev); -+ } else { -+ en_info(priv, "Link Up\n"); -+ netif_carrier_on(dev); -+ } -+} -+ -+static void mlx4_en_linkstate_work(struct work_struct *work) - { - struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, - linkstate_task); - struct mlx4_en_dev *mdev = priv->mdev; -- int linkstate = priv->link_state; - - mutex_lock(&mdev->state_lock); -- /* If observable port state changed set carrier state and -- * report to system log */ -- if (priv->last_link_state != linkstate) { -- if (linkstate == MLX4_DEV_EVENT_PORT_DOWN) { -- en_info(priv, "Link Down\n"); -- netif_carrier_off(priv->dev); -- } else { -- en_info(priv, "Link Up\n"); -- netif_carrier_on(priv->dev); -- } -- } -- priv->last_link_state = linkstate; -+ mlx4_en_linkstate(priv); - mutex_unlock(&mdev->state_lock); - } - -@@ -2086,9 +2095,11 @@ static int mlx4_en_open(struct net_device *dev) - mlx4_en_clear_stats(dev); - - err = mlx4_en_start_port(dev); -- if (err) -+ if (err) { - en_err(priv, "Failed starting port:%d\n", priv->port); -- -+ goto out; -+ } -+ mlx4_en_linkstate(priv); - out: - mutex_unlock(&mdev->state_lock); - return err; -@@ -3288,7 +3299,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, - spin_lock_init(&priv->stats_lock); - INIT_WORK(&priv->rx_mode_task, mlx4_en_do_set_rx_mode); - INIT_WORK(&priv->restart_task, mlx4_en_restart); -- INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate); -+ INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate_work); - INIT_DELAYED_WORK(&priv->stats_task, mlx4_en_do_get_stats); - INIT_DELAYED_WORK(&priv->service_task, mlx4_en_service_task); - INIT_WORK(&priv->vxlan_add_task, mlx4_en_add_vxlan_offloads); -diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -index 3d5597d5b10d..2e759cd0f66e 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -@@ -571,7 +571,6 @@ struct mlx4_en_priv { - - struct mlx4_hwq_resources res; - int link_state; -- int last_link_state; - bool port_up; - int port; - int registered; --- -2.33.0 - diff --git a/queue-4.19/series b/queue-4.19/series index e6f3a0f448b..57e7379790f 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -16,7 +16,6 @@ usb-serial-option-add-device-id-for-foxconn-t99w265.patch mcb-fix-error-handling-in-mcb_alloc_bus.patch serial-mvebu-uart-fix-driver-s-tx_empty-callback.patch net-hso-fix-muxed-tty-registration.patch -net-mlx4_en-resolve-bad-operstate-value.patch bnxt_en-fix-tx-timeout-when-tx-ring-size-is-set-to-t.patch net-smc-add-missing-error-check-in-smc_clc_prfx_set.patch gpio-uniphier-fix-void-functions-to-remove-return-va.patch diff --git a/queue-4.4/net-mlx4_en-resolve-bad-operstate-value.patch b/queue-4.4/net-mlx4_en-resolve-bad-operstate-value.patch deleted file mode 100644 index 373b495b554..00000000000 --- a/queue-4.4/net-mlx4_en-resolve-bad-operstate-value.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 5dd50b63228e97e604fc82ef115dad91c31c0e95 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Sun, 19 Sep 2021 14:55:45 +0300 -Subject: net/mlx4_en: Resolve bad operstate value - -From: Lama Kayal - -[ Upstream commit 72a3c58d18fd780eecd80178bb2132ce741a0a74 ] - -Any link state change that's done prior to net device registration -isn't reflected on the state, thus the operational state is left -obsolete, with 'UNKNOWN' status. - -To resolve the issue, query link state from FW upon open operations -to ensure operational state is updated. - -Fixes: c27a02cd94d6 ("mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC") -Signed-off-by: Lama Kayal -Signed-off-by: Tariq Toukan -Signed-off-by: David S. Miller -Signed-off-by: Sasha Levin ---- - .../net/ethernet/mellanox/mlx4/en_netdev.c | 47 ++++++++++++------- - drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 - - 2 files changed, 29 insertions(+), 19 deletions(-) - -diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -index 112ce16717cd..9dd081715c1e 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -@@ -1186,7 +1186,6 @@ static void mlx4_en_do_set_rx_mode(struct work_struct *work) - if (!netif_carrier_ok(dev)) { - if (!mlx4_en_QUERY_PORT(mdev, priv->port)) { - if (priv->port_state.link_state) { -- priv->last_link_state = MLX4_DEV_EVENT_PORT_UP; - netif_carrier_on(dev); - en_dbg(LINK, priv, "Link Up\n"); - } -@@ -1488,26 +1487,36 @@ static void mlx4_en_service_task(struct work_struct *work) - mutex_unlock(&mdev->state_lock); - } - --static void mlx4_en_linkstate(struct work_struct *work) -+static void mlx4_en_linkstate(struct mlx4_en_priv *priv) -+{ -+ struct mlx4_en_port_state *port_state = &priv->port_state; -+ struct mlx4_en_dev *mdev = priv->mdev; -+ struct net_device *dev = priv->dev; -+ bool up; -+ -+ if (mlx4_en_QUERY_PORT(mdev, priv->port)) -+ port_state->link_state = MLX4_PORT_STATE_DEV_EVENT_PORT_DOWN; -+ -+ up = port_state->link_state == MLX4_PORT_STATE_DEV_EVENT_PORT_UP; -+ if (up == netif_carrier_ok(dev)) -+ netif_carrier_event(dev); -+ if (!up) { -+ en_info(priv, "Link Down\n"); -+ netif_carrier_off(dev); -+ } else { -+ en_info(priv, "Link Up\n"); -+ netif_carrier_on(dev); -+ } -+} -+ -+static void mlx4_en_linkstate_work(struct work_struct *work) - { - struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, - linkstate_task); - struct mlx4_en_dev *mdev = priv->mdev; -- int linkstate = priv->link_state; - - mutex_lock(&mdev->state_lock); -- /* If observable port state changed set carrier state and -- * report to system log */ -- if (priv->last_link_state != linkstate) { -- if (linkstate == MLX4_DEV_EVENT_PORT_DOWN) { -- en_info(priv, "Link Down\n"); -- netif_carrier_off(priv->dev); -- } else { -- en_info(priv, "Link Up\n"); -- netif_carrier_on(priv->dev); -- } -- } -- priv->last_link_state = linkstate; -+ mlx4_en_linkstate(priv); - mutex_unlock(&mdev->state_lock); - } - -@@ -1962,9 +1971,11 @@ static int mlx4_en_open(struct net_device *dev) - mlx4_en_clear_stats(dev); - - err = mlx4_en_start_port(dev); -- if (err) -+ if (err) { - en_err(priv, "Failed starting port:%d\n", priv->port); -- -+ goto out; -+ } -+ mlx4_en_linkstate(priv); - out: - mutex_unlock(&mdev->state_lock); - return err; -@@ -2856,7 +2867,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, - spin_lock_init(&priv->stats_lock); - INIT_WORK(&priv->rx_mode_task, mlx4_en_do_set_rx_mode); - INIT_WORK(&priv->restart_task, mlx4_en_restart); -- INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate); -+ INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate_work); - INIT_DELAYED_WORK(&priv->stats_task, mlx4_en_do_get_stats); - INIT_DELAYED_WORK(&priv->service_task, mlx4_en_service_task); - #ifdef CONFIG_MLX4_EN_VXLAN -diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -index b6cd733791a8..8336f3ed81d8 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -@@ -533,7 +533,6 @@ struct mlx4_en_priv { - - struct mlx4_hwq_resources res; - int link_state; -- int last_link_state; - bool port_up; - int port; - int registered; --- -2.33.0 - diff --git a/queue-4.4/series b/queue-4.4/series index 2c34943263e..241ea3f2fff 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -8,5 +8,4 @@ usb-serial-option-add-telit-ln920-compositions.patch usb-serial-option-remove-duplicate-usb-device-id.patch usb-serial-option-add-device-id-for-foxconn-t99w265.patch net-hso-fix-muxed-tty-registration.patch -net-mlx4_en-resolve-bad-operstate-value.patch net-mlx4_en-don-t-allow-arfs-for-encapsulated-packet.patch diff --git a/queue-4.9/net-mlx4_en-resolve-bad-operstate-value.patch b/queue-4.9/net-mlx4_en-resolve-bad-operstate-value.patch deleted file mode 100644 index 6b38b5e0eff..00000000000 --- a/queue-4.9/net-mlx4_en-resolve-bad-operstate-value.patch +++ /dev/null @@ -1,127 +0,0 @@ -From e854b820a11d4ebc0d0873cededf0c1223c66c68 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Sun, 19 Sep 2021 14:55:45 +0300 -Subject: net/mlx4_en: Resolve bad operstate value - -From: Lama Kayal - -[ Upstream commit 72a3c58d18fd780eecd80178bb2132ce741a0a74 ] - -Any link state change that's done prior to net device registration -isn't reflected on the state, thus the operational state is left -obsolete, with 'UNKNOWN' status. - -To resolve the issue, query link state from FW upon open operations -to ensure operational state is updated. - -Fixes: c27a02cd94d6 ("mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC") -Signed-off-by: Lama Kayal -Signed-off-by: Tariq Toukan -Signed-off-by: David S. Miller -Signed-off-by: Sasha Levin ---- - .../net/ethernet/mellanox/mlx4/en_netdev.c | 47 ++++++++++++------- - drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 - - 2 files changed, 29 insertions(+), 19 deletions(-) - -diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -index 543f30dec4a0..437e30a5a314 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -@@ -1184,7 +1184,6 @@ static void mlx4_en_do_set_rx_mode(struct work_struct *work) - if (!netif_carrier_ok(dev)) { - if (!mlx4_en_QUERY_PORT(mdev, priv->port)) { - if (priv->port_state.link_state) { -- priv->last_link_state = MLX4_DEV_EVENT_PORT_UP; - netif_carrier_on(dev); - en_dbg(LINK, priv, "Link Up\n"); - } -@@ -1487,26 +1486,36 @@ static void mlx4_en_service_task(struct work_struct *work) - mutex_unlock(&mdev->state_lock); - } - --static void mlx4_en_linkstate(struct work_struct *work) -+static void mlx4_en_linkstate(struct mlx4_en_priv *priv) -+{ -+ struct mlx4_en_port_state *port_state = &priv->port_state; -+ struct mlx4_en_dev *mdev = priv->mdev; -+ struct net_device *dev = priv->dev; -+ bool up; -+ -+ if (mlx4_en_QUERY_PORT(mdev, priv->port)) -+ port_state->link_state = MLX4_PORT_STATE_DEV_EVENT_PORT_DOWN; -+ -+ up = port_state->link_state == MLX4_PORT_STATE_DEV_EVENT_PORT_UP; -+ if (up == netif_carrier_ok(dev)) -+ netif_carrier_event(dev); -+ if (!up) { -+ en_info(priv, "Link Down\n"); -+ netif_carrier_off(dev); -+ } else { -+ en_info(priv, "Link Up\n"); -+ netif_carrier_on(dev); -+ } -+} -+ -+static void mlx4_en_linkstate_work(struct work_struct *work) - { - struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, - linkstate_task); - struct mlx4_en_dev *mdev = priv->mdev; -- int linkstate = priv->link_state; - - mutex_lock(&mdev->state_lock); -- /* If observable port state changed set carrier state and -- * report to system log */ -- if (priv->last_link_state != linkstate) { -- if (linkstate == MLX4_DEV_EVENT_PORT_DOWN) { -- en_info(priv, "Link Down\n"); -- netif_carrier_off(priv->dev); -- } else { -- en_info(priv, "Link Up\n"); -- netif_carrier_on(priv->dev); -- } -- } -- priv->last_link_state = linkstate; -+ mlx4_en_linkstate(priv); - mutex_unlock(&mdev->state_lock); - } - -@@ -1978,9 +1987,11 @@ static int mlx4_en_open(struct net_device *dev) - mlx4_en_clear_stats(dev); - - err = mlx4_en_start_port(dev); -- if (err) -+ if (err) { - en_err(priv, "Failed starting port:%d\n", priv->port); -- -+ goto out; -+ } -+ mlx4_en_linkstate(priv); - out: - mutex_unlock(&mdev->state_lock); - return err; -@@ -3087,7 +3098,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, - spin_lock_init(&priv->stats_lock); - INIT_WORK(&priv->rx_mode_task, mlx4_en_do_set_rx_mode); - INIT_WORK(&priv->restart_task, mlx4_en_restart); -- INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate); -+ INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate_work); - INIT_DELAYED_WORK(&priv->stats_task, mlx4_en_do_get_stats); - INIT_DELAYED_WORK(&priv->service_task, mlx4_en_service_task); - INIT_WORK(&priv->vxlan_add_task, mlx4_en_add_vxlan_offloads); -diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -index 2e8c138beaf7..393b8a43bd85 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -@@ -558,7 +558,6 @@ struct mlx4_en_priv { - - struct mlx4_hwq_resources res; - int link_state; -- int last_link_state; - bool port_up; - int port; - int registered; --- -2.33.0 - diff --git a/queue-4.9/series b/queue-4.9/series index 3e3508920cd..c858db9f470 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -13,5 +13,4 @@ usb-serial-option-add-device-id-for-foxconn-t99w265.patch mcb-fix-error-handling-in-mcb_alloc_bus.patch serial-mvebu-uart-fix-driver-s-tx_empty-callback.patch net-hso-fix-muxed-tty-registration.patch -net-mlx4_en-resolve-bad-operstate-value.patch net-mlx4_en-don-t-allow-arfs-for-encapsulated-packet.patch diff --git a/queue-5.10/net-mlx4_en-resolve-bad-operstate-value.patch b/queue-5.10/net-mlx4_en-resolve-bad-operstate-value.patch deleted file mode 100644 index 69f7176e067..00000000000 --- a/queue-5.10/net-mlx4_en-resolve-bad-operstate-value.patch +++ /dev/null @@ -1,127 +0,0 @@ -From d161613ee7b68dba877408f5edc8fe9d0fa2646a Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Sun, 19 Sep 2021 14:55:45 +0300 -Subject: net/mlx4_en: Resolve bad operstate value - -From: Lama Kayal - -[ Upstream commit 72a3c58d18fd780eecd80178bb2132ce741a0a74 ] - -Any link state change that's done prior to net device registration -isn't reflected on the state, thus the operational state is left -obsolete, with 'UNKNOWN' status. - -To resolve the issue, query link state from FW upon open operations -to ensure operational state is updated. - -Fixes: c27a02cd94d6 ("mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC") -Signed-off-by: Lama Kayal -Signed-off-by: Tariq Toukan -Signed-off-by: David S. Miller -Signed-off-by: Sasha Levin ---- - .../net/ethernet/mellanox/mlx4/en_netdev.c | 47 ++++++++++++------- - drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 - - 2 files changed, 29 insertions(+), 19 deletions(-) - -diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -index d8a20e83d904..49a11406b6ab 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -@@ -1269,7 +1269,6 @@ static void mlx4_en_do_set_rx_mode(struct work_struct *work) - if (!netif_carrier_ok(dev)) { - if (!mlx4_en_QUERY_PORT(mdev, priv->port)) { - if (priv->port_state.link_state) { -- priv->last_link_state = MLX4_DEV_EVENT_PORT_UP; - netif_carrier_on(dev); - en_dbg(LINK, priv, "Link Up\n"); - } -@@ -1557,26 +1556,36 @@ static void mlx4_en_service_task(struct work_struct *work) - mutex_unlock(&mdev->state_lock); - } - --static void mlx4_en_linkstate(struct work_struct *work) -+static void mlx4_en_linkstate(struct mlx4_en_priv *priv) -+{ -+ struct mlx4_en_port_state *port_state = &priv->port_state; -+ struct mlx4_en_dev *mdev = priv->mdev; -+ struct net_device *dev = priv->dev; -+ bool up; -+ -+ if (mlx4_en_QUERY_PORT(mdev, priv->port)) -+ port_state->link_state = MLX4_PORT_STATE_DEV_EVENT_PORT_DOWN; -+ -+ up = port_state->link_state == MLX4_PORT_STATE_DEV_EVENT_PORT_UP; -+ if (up == netif_carrier_ok(dev)) -+ netif_carrier_event(dev); -+ if (!up) { -+ en_info(priv, "Link Down\n"); -+ netif_carrier_off(dev); -+ } else { -+ en_info(priv, "Link Up\n"); -+ netif_carrier_on(dev); -+ } -+} -+ -+static void mlx4_en_linkstate_work(struct work_struct *work) - { - struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, - linkstate_task); - struct mlx4_en_dev *mdev = priv->mdev; -- int linkstate = priv->link_state; - - mutex_lock(&mdev->state_lock); -- /* If observable port state changed set carrier state and -- * report to system log */ -- if (priv->last_link_state != linkstate) { -- if (linkstate == MLX4_DEV_EVENT_PORT_DOWN) { -- en_info(priv, "Link Down\n"); -- netif_carrier_off(priv->dev); -- } else { -- en_info(priv, "Link Up\n"); -- netif_carrier_on(priv->dev); -- } -- } -- priv->last_link_state = linkstate; -+ mlx4_en_linkstate(priv); - mutex_unlock(&mdev->state_lock); - } - -@@ -2080,9 +2089,11 @@ static int mlx4_en_open(struct net_device *dev) - mlx4_en_clear_stats(dev); - - err = mlx4_en_start_port(dev); -- if (err) -+ if (err) { - en_err(priv, "Failed starting port:%d\n", priv->port); -- -+ goto out; -+ } -+ mlx4_en_linkstate(priv); - out: - mutex_unlock(&mdev->state_lock); - return err; -@@ -3173,7 +3184,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, - spin_lock_init(&priv->stats_lock); - INIT_WORK(&priv->rx_mode_task, mlx4_en_do_set_rx_mode); - INIT_WORK(&priv->restart_task, mlx4_en_restart); -- INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate); -+ INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate_work); - INIT_DELAYED_WORK(&priv->stats_task, mlx4_en_do_get_stats); - INIT_DELAYED_WORK(&priv->service_task, mlx4_en_service_task); - #ifdef CONFIG_RFS_ACCEL -diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -index 0aa4a23ad3de..c1f23dc3b0e6 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -@@ -571,7 +571,6 @@ struct mlx4_en_priv { - - struct mlx4_hwq_resources res; - int link_state; -- int last_link_state; - bool port_up; - int port; - int registered; --- -2.33.0 - diff --git a/queue-5.10/series b/queue-5.10/series index 7c6dd0a96d3..dedeebb1a8d 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -35,7 +35,6 @@ afs-fix-updating-of-i_blocks-on-file-dir-extension.patch platform-x86-intel-punit_ipc-drop-wrong-use-of-acpi_.patch enetc-fix-illegal-access-when-reading-affinity_hint.patch enetc-fix-uninitialized-struct-dim_sample-field-usag.patch -net-mlx4_en-resolve-bad-operstate-value.patch bnxt_en-fix-tx-timeout-when-tx-ring-size-is-set-to-t.patch net-hns3-fix-change-rss-hfunc-ineffective-issue.patch net-hns3-fix-misuse-vf-id-and-vport-id-in-some-logs.patch diff --git a/queue-5.14/net-mlx4_en-resolve-bad-operstate-value.patch b/queue-5.14/net-mlx4_en-resolve-bad-operstate-value.patch deleted file mode 100644 index e33f5d682fd..00000000000 --- a/queue-5.14/net-mlx4_en-resolve-bad-operstate-value.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 548f95a57741c4879bc873aee299f1dcf6c602a4 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Sun, 19 Sep 2021 14:55:45 +0300 -Subject: net/mlx4_en: Resolve bad operstate value - -From: Lama Kayal - -[ Upstream commit 72a3c58d18fd780eecd80178bb2132ce741a0a74 ] - -Any link state change that's done prior to net device registration -isn't reflected on the state, thus the operational state is left -obsolete, with 'UNKNOWN' status. - -To resolve the issue, query link state from FW upon open operations -to ensure operational state is updated. - -Fixes: c27a02cd94d6 ("mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC") -Signed-off-by: Lama Kayal -Signed-off-by: Tariq Toukan -Signed-off-by: David S. Miller -Signed-off-by: Sasha Levin ---- - .../net/ethernet/mellanox/mlx4/en_netdev.c | 47 ++++++++++++------- - drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 - - 2 files changed, 29 insertions(+), 19 deletions(-) - -diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -index 5d0c9c62382d..c3171b5f6431 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -@@ -1269,7 +1269,6 @@ static void mlx4_en_do_set_rx_mode(struct work_struct *work) - if (!netif_carrier_ok(dev)) { - if (!mlx4_en_QUERY_PORT(mdev, priv->port)) { - if (priv->port_state.link_state) { -- priv->last_link_state = MLX4_DEV_EVENT_PORT_UP; - netif_carrier_on(dev); - en_dbg(LINK, priv, "Link Up\n"); - } -@@ -1557,26 +1556,36 @@ static void mlx4_en_service_task(struct work_struct *work) - mutex_unlock(&mdev->state_lock); - } - --static void mlx4_en_linkstate(struct work_struct *work) -+static void mlx4_en_linkstate(struct mlx4_en_priv *priv) -+{ -+ struct mlx4_en_port_state *port_state = &priv->port_state; -+ struct mlx4_en_dev *mdev = priv->mdev; -+ struct net_device *dev = priv->dev; -+ bool up; -+ -+ if (mlx4_en_QUERY_PORT(mdev, priv->port)) -+ port_state->link_state = MLX4_PORT_STATE_DEV_EVENT_PORT_DOWN; -+ -+ up = port_state->link_state == MLX4_PORT_STATE_DEV_EVENT_PORT_UP; -+ if (up == netif_carrier_ok(dev)) -+ netif_carrier_event(dev); -+ if (!up) { -+ en_info(priv, "Link Down\n"); -+ netif_carrier_off(dev); -+ } else { -+ en_info(priv, "Link Up\n"); -+ netif_carrier_on(dev); -+ } -+} -+ -+static void mlx4_en_linkstate_work(struct work_struct *work) - { - struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, - linkstate_task); - struct mlx4_en_dev *mdev = priv->mdev; -- int linkstate = priv->link_state; - - mutex_lock(&mdev->state_lock); -- /* If observable port state changed set carrier state and -- * report to system log */ -- if (priv->last_link_state != linkstate) { -- if (linkstate == MLX4_DEV_EVENT_PORT_DOWN) { -- en_info(priv, "Link Down\n"); -- netif_carrier_off(priv->dev); -- } else { -- en_info(priv, "Link Up\n"); -- netif_carrier_on(priv->dev); -- } -- } -- priv->last_link_state = linkstate; -+ mlx4_en_linkstate(priv); - mutex_unlock(&mdev->state_lock); - } - -@@ -2079,9 +2088,11 @@ static int mlx4_en_open(struct net_device *dev) - mlx4_en_clear_stats(dev); - - err = mlx4_en_start_port(dev); -- if (err) -+ if (err) { - en_err(priv, "Failed starting port:%d\n", priv->port); -- -+ goto out; -+ } -+ mlx4_en_linkstate(priv); - out: - mutex_unlock(&mdev->state_lock); - return err; -@@ -3168,7 +3179,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, - spin_lock_init(&priv->stats_lock); - INIT_WORK(&priv->rx_mode_task, mlx4_en_do_set_rx_mode); - INIT_WORK(&priv->restart_task, mlx4_en_restart); -- INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate); -+ INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate_work); - INIT_DELAYED_WORK(&priv->stats_task, mlx4_en_do_get_stats); - INIT_DELAYED_WORK(&priv->service_task, mlx4_en_service_task); - #ifdef CONFIG_RFS_ACCEL -diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -index f3d1a20201ef..6bf558c5ec10 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -@@ -552,7 +552,6 @@ struct mlx4_en_priv { - - struct mlx4_hwq_resources res; - int link_state; -- int last_link_state; - bool port_up; - int port; - int registered; --- -2.33.0 - diff --git a/queue-5.14/series b/queue-5.14/series index 17c0fb97e6b..262f745bd43 100644 --- a/queue-5.14/series +++ b/queue-5.14/series @@ -58,7 +58,6 @@ enetc-fix-uninitialized-struct-dim_sample-field-usag.patch igc-fix-build-errors-for-ptp.patch net-dsa-tear-down-devlink-port-regions-when-tearing-.patch net-bgmac-bcma-handle-deferred-probe-error-due-to-ma.patch -net-mlx4_en-resolve-bad-operstate-value.patch napi-fix-race-inside-napi_enable.patch bnxt_en-fix-tx-timeout-when-tx-ring-size-is-set-to-t.patch net-hns3-fix-change-rss-hfunc-ineffective-issue.patch diff --git a/queue-5.4/net-mlx4_en-resolve-bad-operstate-value.patch b/queue-5.4/net-mlx4_en-resolve-bad-operstate-value.patch deleted file mode 100644 index 23ae8dc5935..00000000000 --- a/queue-5.4/net-mlx4_en-resolve-bad-operstate-value.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 86479b316b5100ab5dc7c591bd4a2cf753ffd5ec Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Sun, 19 Sep 2021 14:55:45 +0300 -Subject: net/mlx4_en: Resolve bad operstate value - -From: Lama Kayal - -[ Upstream commit 72a3c58d18fd780eecd80178bb2132ce741a0a74 ] - -Any link state change that's done prior to net device registration -isn't reflected on the state, thus the operational state is left -obsolete, with 'UNKNOWN' status. - -To resolve the issue, query link state from FW upon open operations -to ensure operational state is updated. - -Fixes: c27a02cd94d6 ("mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC") -Signed-off-by: Lama Kayal -Signed-off-by: Tariq Toukan -Signed-off-by: David S. Miller -Signed-off-by: Sasha Levin ---- - .../net/ethernet/mellanox/mlx4/en_netdev.c | 47 ++++++++++++------- - drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 - - 2 files changed, 29 insertions(+), 19 deletions(-) - -diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -index cd165e52ed33..d7d20b7fae39 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c -@@ -1268,7 +1268,6 @@ static void mlx4_en_do_set_rx_mode(struct work_struct *work) - if (!netif_carrier_ok(dev)) { - if (!mlx4_en_QUERY_PORT(mdev, priv->port)) { - if (priv->port_state.link_state) { -- priv->last_link_state = MLX4_DEV_EVENT_PORT_UP; - netif_carrier_on(dev); - en_dbg(LINK, priv, "Link Up\n"); - } -@@ -1562,26 +1561,36 @@ static void mlx4_en_service_task(struct work_struct *work) - mutex_unlock(&mdev->state_lock); - } - --static void mlx4_en_linkstate(struct work_struct *work) -+static void mlx4_en_linkstate(struct mlx4_en_priv *priv) -+{ -+ struct mlx4_en_port_state *port_state = &priv->port_state; -+ struct mlx4_en_dev *mdev = priv->mdev; -+ struct net_device *dev = priv->dev; -+ bool up; -+ -+ if (mlx4_en_QUERY_PORT(mdev, priv->port)) -+ port_state->link_state = MLX4_PORT_STATE_DEV_EVENT_PORT_DOWN; -+ -+ up = port_state->link_state == MLX4_PORT_STATE_DEV_EVENT_PORT_UP; -+ if (up == netif_carrier_ok(dev)) -+ netif_carrier_event(dev); -+ if (!up) { -+ en_info(priv, "Link Down\n"); -+ netif_carrier_off(dev); -+ } else { -+ en_info(priv, "Link Up\n"); -+ netif_carrier_on(dev); -+ } -+} -+ -+static void mlx4_en_linkstate_work(struct work_struct *work) - { - struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, - linkstate_task); - struct mlx4_en_dev *mdev = priv->mdev; -- int linkstate = priv->link_state; - - mutex_lock(&mdev->state_lock); -- /* If observable port state changed set carrier state and -- * report to system log */ -- if (priv->last_link_state != linkstate) { -- if (linkstate == MLX4_DEV_EVENT_PORT_DOWN) { -- en_info(priv, "Link Down\n"); -- netif_carrier_off(priv->dev); -- } else { -- en_info(priv, "Link Up\n"); -- netif_carrier_on(priv->dev); -- } -- } -- priv->last_link_state = linkstate; -+ mlx4_en_linkstate(priv); - mutex_unlock(&mdev->state_lock); - } - -@@ -2085,9 +2094,11 @@ static int mlx4_en_open(struct net_device *dev) - mlx4_en_clear_stats(dev); - - err = mlx4_en_start_port(dev); -- if (err) -+ if (err) { - en_err(priv, "Failed starting port:%d\n", priv->port); -- -+ goto out; -+ } -+ mlx4_en_linkstate(priv); - out: - mutex_unlock(&mdev->state_lock); - return err; -@@ -3271,7 +3282,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, - spin_lock_init(&priv->stats_lock); - INIT_WORK(&priv->rx_mode_task, mlx4_en_do_set_rx_mode); - INIT_WORK(&priv->restart_task, mlx4_en_restart); -- INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate); -+ INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate_work); - INIT_DELAYED_WORK(&priv->stats_task, mlx4_en_do_get_stats); - INIT_DELAYED_WORK(&priv->service_task, mlx4_en_service_task); - INIT_WORK(&priv->vxlan_add_task, mlx4_en_add_vxlan_offloads); -diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -index 17a5bd4c68b2..c72a9201c7ea 100644 ---- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h -@@ -571,7 +571,6 @@ struct mlx4_en_priv { - - struct mlx4_hwq_resources res; - int link_state; -- int last_link_state; - bool port_up; - int port; - int registered; --- -2.33.0 - diff --git a/queue-5.4/series b/queue-5.4/series index 928a6049ab7..27fd7c59f6a 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -25,7 +25,6 @@ net-hso-fix-muxed-tty-registration.patch afs-fix-incorrect-triggering-of-sillyrename-on-3rd-p.patch platform-x86-intel-punit_ipc-drop-wrong-use-of-acpi_.patch enetc-fix-illegal-access-when-reading-affinity_hint.patch -net-mlx4_en-resolve-bad-operstate-value.patch bnxt_en-fix-tx-timeout-when-tx-ring-size-is-set-to-t.patch net-smc-add-missing-error-check-in-smc_clc_prfx_set.patch gpio-uniphier-fix-void-functions-to-remove-return-va.patch