Commit 6861d6d9 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'qdisc-noop'

Jesper Dangaard Brouer says:

====================
Fix qdisc noop issue caused by driver and identify future bugs

I've been very puzzled why networking on my NXP development board,
using driver dpaa2-eth, stopped working when I updated the kernel
version >= 5.3.  The observable issue were that interface would drop
all TX packets, because it had assigned the qdisc noop.

This turned out the be a NIC driver bug, that would only get triggered
when using sysctl net/core/default_qdisc=fq_codel. It was non-trivial
to find out[1] this was driver related. Thus, this patchset besides
fixing the driver bug, also helps end-user identify the issue.

[1]: https://github.com/xdp-project/xdp-project/blob/master/areas/arm64/board_nxp_ls1088/nxp-board04-troubleshoot-qdisc.org


====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 92dc39fd b89c1e6b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2021,7 +2021,7 @@ static int dpaa2_eth_setup_tc(struct net_device *net_dev,
	int i;

	if (type != TC_SETUP_QDISC_MQPRIO)
		return -EINVAL;
		return -EOPNOTSUPP;

	mqprio->hw = TC_MQPRIO_HW_OFFLOAD_TCS;
	num_queues = dpaa2_eth_queue_count(priv);
@@ -2033,7 +2033,7 @@ static int dpaa2_eth_setup_tc(struct net_device *net_dev,
	if (num_tc  > dpaa2_eth_tc_count(priv)) {
		netdev_err(net_dev, "Max %d traffic classes supported\n",
			   dpaa2_eth_tc_count(priv));
		return -EINVAL;
		return -EOPNOTSUPP;
	}

	if (!num_tc) {
+4 −1
Original line number Diff line number Diff line
@@ -735,8 +735,11 @@ static int tcf_block_offload_cmd(struct tcf_block *block,
	INIT_LIST_HEAD(&bo.cb_list);

	err = dev->netdev_ops->ndo_setup_tc(dev, TC_SETUP_BLOCK, &bo);
	if (err < 0)
	if (err < 0) {
		if (err != -EOPNOTSUPP)
			NL_SET_ERR_MSG(extack, "Driver ndo_setup_tc failed");
		return err;
	}

	return tcf_block_setup(block, &bo);
}