Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) The forcedeth conversion from pci_*() DMA interfaces to dma_*() ones missed one spot. From Zhu Yanjun. 2) Missing CRYPTO_SHA256 Kconfig dep in cfg80211, from Johannes Berg. 3) Fix checksum offloading in thunderx driver, from Sunil Goutham. 4) Add SPDX to vm_sockets_diag.h, from Stephen Hemminger. 5) Fix use after free of packet headers in TIPC, from Jon Maloy. 6) "sizeof(ptr)" vs "sizeof(*ptr)" bug in i40e, from Gustavo A R Silva. 7) Tunneling fixes in mlxsw driver, from Petr Machata. 8) Fix crash in fanout_demux_rollover() of AF_PACKET, from Mike Maloney. 9) Fix race in AF_PACKET bind() vs. NETDEV_UP notifier, from Eric Dumazet. 10) Fix regression in sch_sfq.c due to one of the timer_setup() conversions. From Paolo Abeni. 11) SCTP does list_for_each_entry() using wrong struct member, fix from Xin Long. 12) Don't use big endian netlink attribute read for IFLA_BOND_AD_ACTOR_SYSTEM, it is in cpu endianness. Also from Xin Long. 13) Fix mis-initialization of q->link.clock in CBQ scheduler, preventing adding filters there. From Jiri Pirko. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (67 commits) ethernet: dwmac-stm32: Fix copyright net: via: via-rhine: use %p to format void * address instead of %x net: ethernet: xilinx: Mark XILINX_LL_TEMAC broken on 64-bit myri10ge: Update MAINTAINERS net: sched: cbq: create block for q->link.block atm: suni: remove extraneous space to fix indentation atm: lanai: use %p to format kernel addresses instead of %x VSOCK: Don't set sk_state to TCP_CLOSE before testing it atm: fore200e: use %pK to format kernel addresses instead of %x ambassador: fix incorrect indentation of assignment statement vxlan: use __be32 type for the param vni in __vxlan_fdb_delete bonding: use nla_get_u64 to extract the value for IFLA_BOND_AD_ACTOR_SYSTEM sctp: use right member as the param of list_for_each_entry sch_sfq: fix null pointer dereference at timer expiration cls_bpf: don't decrement net's refcount when offload fails net/packet: fix a race in packet_bind() and packet_notifier() packet: fix crash in fanout_demux_rollover() sctp: remove extern from stream sched sctp: force the params with right types for sctp csum apis sctp: force SCTP_ERROR_INV_STRM with __u32 when calling sctp_chunk_fail ...
This commit is contained in:
@@ -4629,11 +4629,6 @@ static void mvpp2_port_mii_gmac_configure_mode(struct mvpp2_port *port)
|
||||
MVPP22_CTRL4_QSGMII_BYPASS_ACTIVE;
|
||||
val &= ~MVPP22_CTRL4_EXT_PIN_GMII_SEL;
|
||||
writel(val, port->base + MVPP22_GMAC_CTRL_4_REG);
|
||||
|
||||
val = readl(port->base + MVPP2_GMAC_CTRL_2_REG);
|
||||
val |= MVPP2_GMAC_DISABLE_PADDING;
|
||||
val &= ~MVPP2_GMAC_FLOW_CTRL_MASK;
|
||||
writel(val, port->base + MVPP2_GMAC_CTRL_2_REG);
|
||||
} else if (phy_interface_mode_is_rgmii(port->phy_interface)) {
|
||||
val = readl(port->base + MVPP22_GMAC_CTRL_4_REG);
|
||||
val |= MVPP22_CTRL4_EXT_PIN_GMII_SEL |
|
||||
@@ -4641,10 +4636,6 @@ static void mvpp2_port_mii_gmac_configure_mode(struct mvpp2_port *port)
|
||||
MVPP22_CTRL4_QSGMII_BYPASS_ACTIVE;
|
||||
val &= ~MVPP22_CTRL4_DP_CLK_SEL;
|
||||
writel(val, port->base + MVPP22_GMAC_CTRL_4_REG);
|
||||
|
||||
val = readl(port->base + MVPP2_GMAC_CTRL_2_REG);
|
||||
val &= ~MVPP2_GMAC_DISABLE_PADDING;
|
||||
writel(val, port->base + MVPP2_GMAC_CTRL_2_REG);
|
||||
}
|
||||
|
||||
/* The port is connected to a copper PHY */
|
||||
@@ -5805,7 +5796,7 @@ static int mvpp2_txq_init(struct mvpp2_port *port,
|
||||
sizeof(*txq_pcpu->buffs),
|
||||
GFP_KERNEL);
|
||||
if (!txq_pcpu->buffs)
|
||||
goto cleanup;
|
||||
return -ENOMEM;
|
||||
|
||||
txq_pcpu->count = 0;
|
||||
txq_pcpu->reserved_num = 0;
|
||||
@@ -5821,26 +5812,10 @@ static int mvpp2_txq_init(struct mvpp2_port *port,
|
||||
&txq_pcpu->tso_headers_dma,
|
||||
GFP_KERNEL);
|
||||
if (!txq_pcpu->tso_headers)
|
||||
goto cleanup;
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
return 0;
|
||||
cleanup:
|
||||
for_each_present_cpu(cpu) {
|
||||
txq_pcpu = per_cpu_ptr(txq->pcpu, cpu);
|
||||
kfree(txq_pcpu->buffs);
|
||||
|
||||
dma_free_coherent(port->dev->dev.parent,
|
||||
txq_pcpu->size * TSO_HEADER_SIZE,
|
||||
txq_pcpu->tso_headers,
|
||||
txq_pcpu->tso_headers_dma);
|
||||
}
|
||||
|
||||
dma_free_coherent(port->dev->dev.parent,
|
||||
txq->size * MVPP2_DESC_ALIGNED_SIZE,
|
||||
txq->descs, txq->descs_dma);
|
||||
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/* Free allocated TXQ resources */
|
||||
@@ -6867,6 +6842,12 @@ static int mvpp2_check_ringparam_valid(struct net_device *dev,
|
||||
else if (!IS_ALIGNED(ring->tx_pending, 32))
|
||||
new_tx_pending = ALIGN(ring->tx_pending, 32);
|
||||
|
||||
/* The Tx ring size cannot be smaller than the minimum number of
|
||||
* descriptors needed for TSO.
|
||||
*/
|
||||
if (new_tx_pending < MVPP2_MAX_SKB_DESCS)
|
||||
new_tx_pending = ALIGN(MVPP2_MAX_SKB_DESCS, 32);
|
||||
|
||||
if (ring->rx_pending != new_rx_pending) {
|
||||
netdev_info(dev, "illegal Rx ring size value %d, round to %d\n",
|
||||
ring->rx_pending, new_rx_pending);
|
||||
@@ -8345,7 +8326,7 @@ static int mvpp2_probe(struct platform_device *pdev)
|
||||
for_each_available_child_of_node(dn, port_node) {
|
||||
err = mvpp2_port_probe(pdev, port_node, priv, i);
|
||||
if (err < 0)
|
||||
goto err_mg_clk;
|
||||
goto err_port_probe;
|
||||
i++;
|
||||
}
|
||||
|
||||
@@ -8361,12 +8342,19 @@ static int mvpp2_probe(struct platform_device *pdev)
|
||||
priv->stats_queue = create_singlethread_workqueue(priv->queue_name);
|
||||
if (!priv->stats_queue) {
|
||||
err = -ENOMEM;
|
||||
goto err_mg_clk;
|
||||
goto err_port_probe;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, priv);
|
||||
return 0;
|
||||
|
||||
err_port_probe:
|
||||
i = 0;
|
||||
for_each_available_child_of_node(dn, port_node) {
|
||||
if (priv->port_list[i])
|
||||
mvpp2_port_remove(priv->port_list[i]);
|
||||
i++;
|
||||
}
|
||||
err_mg_clk:
|
||||
clk_disable_unprepare(priv->axi_clk);
|
||||
if (priv->hw_version == MVPP22)
|
||||
|
Reference in New Issue
Block a user