Commit 62a502cc authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by David S. Miller

net: mvneta: do not redirect frames during reconfiguration

Disable frames injection in mvneta_xdp_xmit routine during hw
re-configuration in order to avoid hardware hangs

Fixes: b0a43db9 ("net: mvneta: add XDP_TX support")
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c96b6acc
...@@ -452,11 +452,17 @@ struct mvneta_pcpu_port { ...@@ -452,11 +452,17 @@ struct mvneta_pcpu_port {
u32 cause_rx_tx; u32 cause_rx_tx;
}; };
enum {
__MVNETA_DOWN,
};
struct mvneta_port { struct mvneta_port {
u8 id; u8 id;
struct mvneta_pcpu_port __percpu *ports; struct mvneta_pcpu_port __percpu *ports;
struct mvneta_pcpu_stats __percpu *stats; struct mvneta_pcpu_stats __percpu *stats;
unsigned long state;
int pkt_size; int pkt_size;
void __iomem *base; void __iomem *base;
struct mvneta_rx_queue *rxqs; struct mvneta_rx_queue *rxqs;
...@@ -2113,6 +2119,9 @@ mvneta_xdp_xmit(struct net_device *dev, int num_frame, ...@@ -2113,6 +2119,9 @@ mvneta_xdp_xmit(struct net_device *dev, int num_frame,
struct netdev_queue *nq; struct netdev_queue *nq;
u32 ret; u32 ret;
if (unlikely(test_bit(__MVNETA_DOWN, &pp->state)))
return -ENETDOWN;
if (unlikely(flags & ~XDP_XMIT_FLAGS_MASK)) if (unlikely(flags & ~XDP_XMIT_FLAGS_MASK))
return -EINVAL; return -EINVAL;
...@@ -3568,12 +3577,16 @@ static void mvneta_start_dev(struct mvneta_port *pp) ...@@ -3568,12 +3577,16 @@ static void mvneta_start_dev(struct mvneta_port *pp)
phylink_start(pp->phylink); phylink_start(pp->phylink);
netif_tx_start_all_queues(pp->dev); netif_tx_start_all_queues(pp->dev);
clear_bit(__MVNETA_DOWN, &pp->state);
} }
static void mvneta_stop_dev(struct mvneta_port *pp) static void mvneta_stop_dev(struct mvneta_port *pp)
{ {
unsigned int cpu; unsigned int cpu;
set_bit(__MVNETA_DOWN, &pp->state);
phylink_stop(pp->phylink); phylink_stop(pp->phylink);
if (!pp->neta_armada3700) { if (!pp->neta_armada3700) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment