Merge branch 'mvpp2-various-fixes'
Antoine Tenart says: ==================== net: mvpp2: various fixes This series contains 3 fixes for the Marvell PPv2 driver. Since v1: - Removed one patch about dma masks as it would need a better fix. - Added one fix about the MAC Tx clock source selection. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
2d3924c218
@ -333,7 +333,7 @@
|
||||
#define MVPP2_GMAC_INBAND_AN_MASK BIT(0)
|
||||
#define MVPP2_GMAC_FLOW_CTRL_MASK GENMASK(2, 1)
|
||||
#define MVPP2_GMAC_PCS_ENABLE_MASK BIT(3)
|
||||
#define MVPP2_GMAC_PORT_RGMII_MASK BIT(4)
|
||||
#define MVPP2_GMAC_INTERNAL_CLK_MASK BIT(4)
|
||||
#define MVPP2_GMAC_DISABLE_PADDING BIT(5)
|
||||
#define MVPP2_GMAC_PORT_RESET_MASK BIT(6)
|
||||
#define MVPP2_GMAC_AUTONEG_CONFIG 0xc
|
||||
@ -676,6 +676,7 @@ enum mvpp2_tag_type {
|
||||
#define MVPP2_PRS_RI_L3_MCAST BIT(15)
|
||||
#define MVPP2_PRS_RI_L3_BCAST (BIT(15) | BIT(16))
|
||||
#define MVPP2_PRS_RI_IP_FRAG_MASK 0x20000
|
||||
#define MVPP2_PRS_RI_IP_FRAG_TRUE BIT(17)
|
||||
#define MVPP2_PRS_RI_UDF3_MASK 0x300000
|
||||
#define MVPP2_PRS_RI_UDF3_RX_SPECIAL BIT(21)
|
||||
#define MVPP2_PRS_RI_L4_PROTO_MASK 0x1c00000
|
||||
@ -2315,7 +2316,7 @@ static int mvpp2_prs_ip4_proto(struct mvpp2 *priv, unsigned short proto,
|
||||
(proto != IPPROTO_IGMP))
|
||||
return -EINVAL;
|
||||
|
||||
/* Fragmented packet */
|
||||
/* Not fragmented packet */
|
||||
tid = mvpp2_prs_tcam_first_free(priv, MVPP2_PE_FIRST_FREE_TID,
|
||||
MVPP2_PE_LAST_FREE_TID);
|
||||
if (tid < 0)
|
||||
@ -2334,8 +2335,12 @@ static int mvpp2_prs_ip4_proto(struct mvpp2 *priv, unsigned short proto,
|
||||
MVPP2_PRS_SRAM_OP_SEL_UDF_ADD);
|
||||
mvpp2_prs_sram_ai_update(&pe, MVPP2_PRS_IPV4_DIP_AI_BIT,
|
||||
MVPP2_PRS_IPV4_DIP_AI_BIT);
|
||||
mvpp2_prs_sram_ri_update(&pe, ri | MVPP2_PRS_RI_IP_FRAG_MASK,
|
||||
ri_mask | MVPP2_PRS_RI_IP_FRAG_MASK);
|
||||
mvpp2_prs_sram_ri_update(&pe, ri, ri_mask | MVPP2_PRS_RI_IP_FRAG_MASK);
|
||||
|
||||
mvpp2_prs_tcam_data_byte_set(&pe, 2, 0x00,
|
||||
MVPP2_PRS_TCAM_PROTO_MASK_L);
|
||||
mvpp2_prs_tcam_data_byte_set(&pe, 3, 0x00,
|
||||
MVPP2_PRS_TCAM_PROTO_MASK);
|
||||
|
||||
mvpp2_prs_tcam_data_byte_set(&pe, 5, proto, MVPP2_PRS_TCAM_PROTO_MASK);
|
||||
mvpp2_prs_tcam_ai_update(&pe, 0, MVPP2_PRS_IPV4_DIP_AI_BIT);
|
||||
@ -2346,7 +2351,7 @@ static int mvpp2_prs_ip4_proto(struct mvpp2 *priv, unsigned short proto,
|
||||
mvpp2_prs_shadow_set(priv, pe.index, MVPP2_PRS_LU_IP4);
|
||||
mvpp2_prs_hw_write(priv, &pe);
|
||||
|
||||
/* Not fragmented packet */
|
||||
/* Fragmented packet */
|
||||
tid = mvpp2_prs_tcam_first_free(priv, MVPP2_PE_FIRST_FREE_TID,
|
||||
MVPP2_PE_LAST_FREE_TID);
|
||||
if (tid < 0)
|
||||
@ -2358,8 +2363,11 @@ static int mvpp2_prs_ip4_proto(struct mvpp2 *priv, unsigned short proto,
|
||||
pe.sram.word[MVPP2_PRS_SRAM_RI_CTRL_WORD] = 0x0;
|
||||
mvpp2_prs_sram_ri_update(&pe, ri, ri_mask);
|
||||
|
||||
mvpp2_prs_tcam_data_byte_set(&pe, 2, 0x00, MVPP2_PRS_TCAM_PROTO_MASK_L);
|
||||
mvpp2_prs_tcam_data_byte_set(&pe, 3, 0x00, MVPP2_PRS_TCAM_PROTO_MASK);
|
||||
mvpp2_prs_sram_ri_update(&pe, ri | MVPP2_PRS_RI_IP_FRAG_TRUE,
|
||||
ri_mask | MVPP2_PRS_RI_IP_FRAG_MASK);
|
||||
|
||||
mvpp2_prs_tcam_data_byte_set(&pe, 2, 0x00, 0x0);
|
||||
mvpp2_prs_tcam_data_byte_set(&pe, 3, 0x00, 0x0);
|
||||
|
||||
/* Update shadow table and hw entry */
|
||||
mvpp2_prs_shadow_set(priv, pe.index, MVPP2_PRS_LU_IP4);
|
||||
@ -4591,7 +4599,6 @@ static void mvpp2_port_mii_gmac_configure(struct mvpp2_port *port)
|
||||
val |= MVPP2_GMAC_INBAND_AN_MASK | MVPP2_GMAC_PCS_ENABLE_MASK;
|
||||
} else if (phy_interface_mode_is_rgmii(port->phy_interface)) {
|
||||
val &= ~MVPP2_GMAC_PCS_ENABLE_MASK;
|
||||
val |= MVPP2_GMAC_PORT_RGMII_MASK;
|
||||
}
|
||||
writel(val, port->base + MVPP2_GMAC_CTRL_2_REG);
|
||||
|
||||
@ -7496,7 +7503,7 @@ static void mvpp2_port_copy_mac_addr(struct net_device *dev, struct mvpp2 *priv,
|
||||
/* Ports initialization */
|
||||
static int mvpp2_port_probe(struct platform_device *pdev,
|
||||
struct device_node *port_node,
|
||||
struct mvpp2 *priv)
|
||||
struct mvpp2 *priv, int index)
|
||||
{
|
||||
struct device_node *phy_node;
|
||||
struct phy *comphy;
|
||||
@ -7670,7 +7677,7 @@ static int mvpp2_port_probe(struct platform_device *pdev,
|
||||
}
|
||||
netdev_info(dev, "Using %s mac address %pM\n", mac_from, dev->dev_addr);
|
||||
|
||||
priv->port_list[id] = port;
|
||||
priv->port_list[index] = port;
|
||||
return 0;
|
||||
|
||||
err_free_port_pcpu:
|
||||
@ -8005,10 +8012,12 @@ static int mvpp2_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
/* Initialize ports */
|
||||
i = 0;
|
||||
for_each_available_child_of_node(dn, port_node) {
|
||||
err = mvpp2_port_probe(pdev, port_node, priv);
|
||||
err = mvpp2_port_probe(pdev, port_node, priv, i);
|
||||
if (err < 0)
|
||||
goto err_mg_clk;
|
||||
i++;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, priv);
|
||||
|
Loading…
Reference in New Issue
Block a user