Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/renesas/ravb_main.c kernel/bpf/syscall.c net/ipv4/ipmr.c All three conflicts were cases of overlapping changes. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -299,16 +299,17 @@ static int sti_dwmac_parse_data(struct sti_dwmac *dwmac,
|
||||
if (IS_PHY_IF_MODE_GBIT(dwmac->interface)) {
|
||||
const char *rs;
|
||||
|
||||
dwmac->tx_retime_src = TX_RETIME_SRC_CLKGEN;
|
||||
|
||||
err = of_property_read_string(np, "st,tx-retime-src", &rs);
|
||||
if (err < 0) {
|
||||
dev_warn(dev, "Use internal clock source\n");
|
||||
dwmac->tx_retime_src = TX_RETIME_SRC_CLKGEN;
|
||||
} else if (!strcasecmp(rs, "clk_125")) {
|
||||
dwmac->tx_retime_src = TX_RETIME_SRC_CLK_125;
|
||||
} else if (!strcasecmp(rs, "txclk")) {
|
||||
dwmac->tx_retime_src = TX_RETIME_SRC_TXCLK;
|
||||
} else {
|
||||
if (!strcasecmp(rs, "clk_125"))
|
||||
dwmac->tx_retime_src = TX_RETIME_SRC_CLK_125;
|
||||
else if (!strcasecmp(rs, "txclk"))
|
||||
dwmac->tx_retime_src = TX_RETIME_SRC_TXCLK;
|
||||
}
|
||||
|
||||
dwmac->speed = SPEED_1000;
|
||||
}
|
||||
|
||||
|
@@ -185,7 +185,7 @@ static void stmmac_clk_csr_set(struct stmmac_priv *priv)
|
||||
priv->clk_csr = STMMAC_CSR_100_150M;
|
||||
else if ((clk_rate >= CSR_F_150M) && (clk_rate < CSR_F_250M))
|
||||
priv->clk_csr = STMMAC_CSR_150_250M;
|
||||
else if ((clk_rate >= CSR_F_250M) && (clk_rate < CSR_F_300M))
|
||||
else if ((clk_rate >= CSR_F_250M) && (clk_rate <= CSR_F_300M))
|
||||
priv->clk_csr = STMMAC_CSR_250_300M;
|
||||
}
|
||||
}
|
||||
@@ -2232,6 +2232,12 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit)
|
||||
|
||||
frame_len = priv->hw->desc->get_rx_frame_len(p, coe);
|
||||
|
||||
/* check if frame_len fits the preallocated memory */
|
||||
if (frame_len > priv->dma_buf_sz) {
|
||||
priv->dev->stats.rx_length_errors++;
|
||||
break;
|
||||
}
|
||||
|
||||
/* ACS is set; GMAC core strips PAD/FCS for IEEE 802.3
|
||||
* Type frames (LLC/LLC-SNAP)
|
||||
*/
|
||||
@@ -3102,6 +3108,7 @@ int stmmac_resume(struct net_device *ndev)
|
||||
init_dma_desc_rings(ndev, GFP_ATOMIC);
|
||||
stmmac_hw_setup(ndev, false);
|
||||
stmmac_init_tx_coalesce(priv);
|
||||
stmmac_set_rx_mode(ndev);
|
||||
|
||||
napi_enable(&priv->napi);
|
||||
|
||||
|
@@ -138,7 +138,6 @@ int stmmac_mdio_reset(struct mii_bus *bus)
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
if (priv->device->of_node) {
|
||||
int reset_gpio, active_low;
|
||||
|
||||
if (data->reset_gpio < 0) {
|
||||
struct device_node *np = priv->device->of_node;
|
||||
@@ -154,24 +153,23 @@ int stmmac_mdio_reset(struct mii_bus *bus)
|
||||
"snps,reset-active-low");
|
||||
of_property_read_u32_array(np,
|
||||
"snps,reset-delays-us", data->delays, 3);
|
||||
|
||||
if (gpio_request(data->reset_gpio, "mdio-reset"))
|
||||
return 0;
|
||||
}
|
||||
|
||||
reset_gpio = data->reset_gpio;
|
||||
active_low = data->active_low;
|
||||
gpio_direction_output(data->reset_gpio,
|
||||
data->active_low ? 1 : 0);
|
||||
if (data->delays[0])
|
||||
msleep(DIV_ROUND_UP(data->delays[0], 1000));
|
||||
|
||||
if (!gpio_request(reset_gpio, "mdio-reset")) {
|
||||
gpio_direction_output(reset_gpio, active_low ? 1 : 0);
|
||||
if (data->delays[0])
|
||||
msleep(DIV_ROUND_UP(data->delays[0], 1000));
|
||||
gpio_set_value(data->reset_gpio, data->active_low ? 0 : 1);
|
||||
if (data->delays[1])
|
||||
msleep(DIV_ROUND_UP(data->delays[1], 1000));
|
||||
|
||||
gpio_set_value(reset_gpio, active_low ? 0 : 1);
|
||||
if (data->delays[1])
|
||||
msleep(DIV_ROUND_UP(data->delays[1], 1000));
|
||||
|
||||
gpio_set_value(reset_gpio, active_low ? 1 : 0);
|
||||
if (data->delays[2])
|
||||
msleep(DIV_ROUND_UP(data->delays[2], 1000));
|
||||
}
|
||||
gpio_set_value(data->reset_gpio, data->active_low ? 1 : 0);
|
||||
if (data->delays[2])
|
||||
msleep(DIV_ROUND_UP(data->delays[2], 1000));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user