333
333
#define MVPP2_GMAC_INBAND_AN_MASK BIT(0)
334
334
#define MVPP2_GMAC_FLOW_CTRL_MASK GENMASK(2, 1)
335
335
#define MVPP2_GMAC_PCS_ENABLE_MASK BIT(3)
336
- #define MVPP2_GMAC_PORT_RGMII_MASK BIT(4)
336
+ #define MVPP2_GMAC_INTERNAL_CLK_MASK BIT(4)
337
337
#define MVPP2_GMAC_DISABLE_PADDING BIT(5)
338
338
#define MVPP2_GMAC_PORT_RESET_MASK BIT(6)
339
339
#define MVPP2_GMAC_AUTONEG_CONFIG 0xc
@@ -676,6 +676,7 @@ enum mvpp2_tag_type {
676
676
#define MVPP2_PRS_RI_L3_MCAST BIT(15)
677
677
#define MVPP2_PRS_RI_L3_BCAST (BIT(15) | BIT(16))
678
678
#define MVPP2_PRS_RI_IP_FRAG_MASK 0x20000
679
+ #define MVPP2_PRS_RI_IP_FRAG_TRUE BIT(17)
679
680
#define MVPP2_PRS_RI_UDF3_MASK 0x300000
680
681
#define MVPP2_PRS_RI_UDF3_RX_SPECIAL BIT(21)
681
682
#define MVPP2_PRS_RI_L4_PROTO_MASK 0x1c00000
@@ -2315,7 +2316,7 @@ static int mvpp2_prs_ip4_proto(struct mvpp2 *priv, unsigned short proto,
2315
2316
(proto != IPPROTO_IGMP ))
2316
2317
return - EINVAL ;
2317
2318
2318
- /* Fragmented packet */
2319
+ /* Not fragmented packet */
2319
2320
tid = mvpp2_prs_tcam_first_free (priv , MVPP2_PE_FIRST_FREE_TID ,
2320
2321
MVPP2_PE_LAST_FREE_TID );
2321
2322
if (tid < 0 )
@@ -2334,8 +2335,12 @@ static int mvpp2_prs_ip4_proto(struct mvpp2 *priv, unsigned short proto,
2334
2335
MVPP2_PRS_SRAM_OP_SEL_UDF_ADD );
2335
2336
mvpp2_prs_sram_ai_update (& pe , MVPP2_PRS_IPV4_DIP_AI_BIT ,
2336
2337
MVPP2_PRS_IPV4_DIP_AI_BIT );
2337
- mvpp2_prs_sram_ri_update (& pe , ri | MVPP2_PRS_RI_IP_FRAG_MASK ,
2338
- ri_mask | MVPP2_PRS_RI_IP_FRAG_MASK );
2338
+ mvpp2_prs_sram_ri_update (& pe , ri , ri_mask | MVPP2_PRS_RI_IP_FRAG_MASK );
2339
+
2340
+ mvpp2_prs_tcam_data_byte_set (& pe , 2 , 0x00 ,
2341
+ MVPP2_PRS_TCAM_PROTO_MASK_L );
2342
+ mvpp2_prs_tcam_data_byte_set (& pe , 3 , 0x00 ,
2343
+ MVPP2_PRS_TCAM_PROTO_MASK );
2339
2344
2340
2345
mvpp2_prs_tcam_data_byte_set (& pe , 5 , proto , MVPP2_PRS_TCAM_PROTO_MASK );
2341
2346
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,
2346
2351
mvpp2_prs_shadow_set (priv , pe .index , MVPP2_PRS_LU_IP4 );
2347
2352
mvpp2_prs_hw_write (priv , & pe );
2348
2353
2349
- /* Not fragmented packet */
2354
+ /* Fragmented packet */
2350
2355
tid = mvpp2_prs_tcam_first_free (priv , MVPP2_PE_FIRST_FREE_TID ,
2351
2356
MVPP2_PE_LAST_FREE_TID );
2352
2357
if (tid < 0 )
@@ -2358,8 +2363,11 @@ static int mvpp2_prs_ip4_proto(struct mvpp2 *priv, unsigned short proto,
2358
2363
pe .sram .word [MVPP2_PRS_SRAM_RI_CTRL_WORD ] = 0x0 ;
2359
2364
mvpp2_prs_sram_ri_update (& pe , ri , ri_mask );
2360
2365
2361
- mvpp2_prs_tcam_data_byte_set (& pe , 2 , 0x00 , MVPP2_PRS_TCAM_PROTO_MASK_L );
2362
- mvpp2_prs_tcam_data_byte_set (& pe , 3 , 0x00 , MVPP2_PRS_TCAM_PROTO_MASK );
2366
+ mvpp2_prs_sram_ri_update (& pe , ri | MVPP2_PRS_RI_IP_FRAG_TRUE ,
2367
+ ri_mask | MVPP2_PRS_RI_IP_FRAG_MASK );
2368
+
2369
+ mvpp2_prs_tcam_data_byte_set (& pe , 2 , 0x00 , 0x0 );
2370
+ mvpp2_prs_tcam_data_byte_set (& pe , 3 , 0x00 , 0x0 );
2363
2371
2364
2372
/* Update shadow table and hw entry */
2365
2373
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)
4591
4599
val |= MVPP2_GMAC_INBAND_AN_MASK | MVPP2_GMAC_PCS_ENABLE_MASK ;
4592
4600
} else if (phy_interface_mode_is_rgmii (port -> phy_interface )) {
4593
4601
val &= ~MVPP2_GMAC_PCS_ENABLE_MASK ;
4594
- val |= MVPP2_GMAC_PORT_RGMII_MASK ;
4595
4602
}
4596
4603
writel (val , port -> base + MVPP2_GMAC_CTRL_2_REG );
4597
4604
@@ -7496,7 +7503,7 @@ static void mvpp2_port_copy_mac_addr(struct net_device *dev, struct mvpp2 *priv,
7496
7503
/* Ports initialization */
7497
7504
static int mvpp2_port_probe (struct platform_device * pdev ,
7498
7505
struct device_node * port_node ,
7499
- struct mvpp2 * priv )
7506
+ struct mvpp2 * priv , int index )
7500
7507
{
7501
7508
struct device_node * phy_node ;
7502
7509
struct phy * comphy ;
@@ -7670,7 +7677,7 @@ static int mvpp2_port_probe(struct platform_device *pdev,
7670
7677
}
7671
7678
netdev_info (dev , "Using %s mac address %pM\n" , mac_from , dev -> dev_addr );
7672
7679
7673
- priv -> port_list [id ] = port ;
7680
+ priv -> port_list [index ] = port ;
7674
7681
return 0 ;
7675
7682
7676
7683
err_free_port_pcpu :
@@ -8005,10 +8012,12 @@ static int mvpp2_probe(struct platform_device *pdev)
8005
8012
}
8006
8013
8007
8014
/* Initialize ports */
8015
+ i = 0 ;
8008
8016
for_each_available_child_of_node (dn , port_node ) {
8009
- err = mvpp2_port_probe (pdev , port_node , priv );
8017
+ err = mvpp2_port_probe (pdev , port_node , priv , i );
8010
8018
if (err < 0 )
8011
8019
goto err_mg_clk ;
8020
+ i ++ ;
8012
8021
}
8013
8022
8014
8023
platform_set_drvdata (pdev , priv );
0 commit comments