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: b0a43db908
("net: mvneta: add XDP_TX support")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
c96b6acc8f
Коммит
62a502cc91
|
@ -452,11 +452,17 @@ struct mvneta_pcpu_port {
|
|||
u32 cause_rx_tx;
|
||||
};
|
||||
|
||||
enum {
|
||||
__MVNETA_DOWN,
|
||||
};
|
||||
|
||||
struct mvneta_port {
|
||||
u8 id;
|
||||
struct mvneta_pcpu_port __percpu *ports;
|
||||
struct mvneta_pcpu_stats __percpu *stats;
|
||||
|
||||
unsigned long state;
|
||||
|
||||
int pkt_size;
|
||||
void __iomem *base;
|
||||
struct mvneta_rx_queue *rxqs;
|
||||
|
@ -2113,6 +2119,9 @@ mvneta_xdp_xmit(struct net_device *dev, int num_frame,
|
|||
struct netdev_queue *nq;
|
||||
u32 ret;
|
||||
|
||||
if (unlikely(test_bit(__MVNETA_DOWN, &pp->state)))
|
||||
return -ENETDOWN;
|
||||
|
||||
if (unlikely(flags & ~XDP_XMIT_FLAGS_MASK))
|
||||
return -EINVAL;
|
||||
|
||||
|
@ -3568,12 +3577,16 @@ static void mvneta_start_dev(struct mvneta_port *pp)
|
|||
|
||||
phylink_start(pp->phylink);
|
||||
netif_tx_start_all_queues(pp->dev);
|
||||
|
||||
clear_bit(__MVNETA_DOWN, &pp->state);
|
||||
}
|
||||
|
||||
static void mvneta_stop_dev(struct mvneta_port *pp)
|
||||
{
|
||||
unsigned int cpu;
|
||||
|
||||
set_bit(__MVNETA_DOWN, &pp->state);
|
||||
|
||||
phylink_stop(pp->phylink);
|
||||
|
||||
if (!pp->neta_armada3700) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче