mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-10 07:00:48 +00:00
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: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
6861d6d9cf
@ -2021,7 +2021,7 @@ static int dpaa2_eth_setup_tc(struct net_device *net_dev,
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (type != TC_SETUP_QDISC_MQPRIO)
|
if (type != TC_SETUP_QDISC_MQPRIO)
|
||||||
return -EINVAL;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
mqprio->hw = TC_MQPRIO_HW_OFFLOAD_TCS;
|
mqprio->hw = TC_MQPRIO_HW_OFFLOAD_TCS;
|
||||||
num_queues = dpaa2_eth_queue_count(priv);
|
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)) {
|
if (num_tc > dpaa2_eth_tc_count(priv)) {
|
||||||
netdev_err(net_dev, "Max %d traffic classes supported\n",
|
netdev_err(net_dev, "Max %d traffic classes supported\n",
|
||||||
dpaa2_eth_tc_count(priv));
|
dpaa2_eth_tc_count(priv));
|
||||||
return -EINVAL;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!num_tc) {
|
if (!num_tc) {
|
||||||
|
@ -735,8 +735,11 @@ static int tcf_block_offload_cmd(struct tcf_block *block,
|
|||||||
INIT_LIST_HEAD(&bo.cb_list);
|
INIT_LIST_HEAD(&bo.cb_list);
|
||||||
|
|
||||||
err = dev->netdev_ops->ndo_setup_tc(dev, TC_SETUP_BLOCK, &bo);
|
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 err;
|
||||||
|
}
|
||||||
|
|
||||||
return tcf_block_setup(block, &bo);
|
return tcf_block_setup(block, &bo);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user