@@ -363,93 +363,7 @@ static const struct mlxsw_sp_ipip_ops mlxsw_sp_ipip_gre4_ops = {
363
363
};
364
364
365
365
static struct mlxsw_sp_ipip_parms
366
- mlxsw_sp1_ipip_netdev_parms_init_gre6 (const struct net_device * ol_dev )
367
- {
368
- struct mlxsw_sp_ipip_parms parms = {0 };
369
-
370
- WARN_ON_ONCE (1 );
371
- return parms ;
372
- }
373
-
374
- static int
375
- mlxsw_sp1_ipip_nexthop_update_gre6 (struct mlxsw_sp * mlxsw_sp , u32 adj_index ,
376
- struct mlxsw_sp_ipip_entry * ipip_entry ,
377
- bool force , char * ratr_pl )
378
- {
379
- WARN_ON_ONCE (1 );
380
- return - EINVAL ;
381
- }
382
-
383
- static int
384
- mlxsw_sp1_ipip_decap_config_gre6 (struct mlxsw_sp * mlxsw_sp ,
385
- struct mlxsw_sp_ipip_entry * ipip_entry ,
386
- u32 tunnel_index )
387
- {
388
- WARN_ON_ONCE (1 );
389
- return - EINVAL ;
390
- }
391
-
392
- static bool mlxsw_sp1_ipip_can_offload_gre6 (const struct mlxsw_sp * mlxsw_sp ,
393
- const struct net_device * ol_dev )
394
- {
395
- return false;
396
- }
397
-
398
- static struct mlxsw_sp_rif_ipip_lb_config
399
- mlxsw_sp1_ipip_ol_loopback_config_gre6 (struct mlxsw_sp * mlxsw_sp ,
400
- const struct net_device * ol_dev )
401
- {
402
- struct mlxsw_sp_rif_ipip_lb_config config = {0 };
403
-
404
- WARN_ON_ONCE (1 );
405
- return config ;
406
- }
407
-
408
- static int
409
- mlxsw_sp1_ipip_ol_netdev_change_gre6 (struct mlxsw_sp * mlxsw_sp ,
410
- struct mlxsw_sp_ipip_entry * ipip_entry ,
411
- struct netlink_ext_ack * extack )
412
- {
413
- WARN_ON_ONCE (1 );
414
- return - EINVAL ;
415
- }
416
-
417
- static int
418
- mlxsw_sp1_ipip_rem_addr_set_gre6 (struct mlxsw_sp * mlxsw_sp ,
419
- struct mlxsw_sp_ipip_entry * ipip_entry )
420
- {
421
- WARN_ON_ONCE (1 );
422
- return - EINVAL ;
423
- }
424
-
425
- static void
426
- mlxsw_sp1_ipip_rem_addr_unset_gre6 (struct mlxsw_sp * mlxsw_sp ,
427
- const struct mlxsw_sp_ipip_entry * ipip_entry )
428
- {
429
- WARN_ON_ONCE (1 );
430
- }
431
-
432
- static const struct mlxsw_sp_ipip_ops mlxsw_sp1_ipip_gre6_ops = {
433
- .dev_type = ARPHRD_IP6GRE ,
434
- .ul_proto = MLXSW_SP_L3_PROTO_IPV6 ,
435
- .inc_parsing_depth = true,
436
- .parms_init = mlxsw_sp1_ipip_netdev_parms_init_gre6 ,
437
- .nexthop_update = mlxsw_sp1_ipip_nexthop_update_gre6 ,
438
- .decap_config = mlxsw_sp1_ipip_decap_config_gre6 ,
439
- .can_offload = mlxsw_sp1_ipip_can_offload_gre6 ,
440
- .ol_loopback_config = mlxsw_sp1_ipip_ol_loopback_config_gre6 ,
441
- .ol_netdev_change = mlxsw_sp1_ipip_ol_netdev_change_gre6 ,
442
- .rem_ip_addr_set = mlxsw_sp1_ipip_rem_addr_set_gre6 ,
443
- .rem_ip_addr_unset = mlxsw_sp1_ipip_rem_addr_unset_gre6 ,
444
- };
445
-
446
- const struct mlxsw_sp_ipip_ops * mlxsw_sp1_ipip_ops_arr [] = {
447
- [MLXSW_SP_IPIP_TYPE_GRE4 ] = & mlxsw_sp_ipip_gre4_ops ,
448
- [MLXSW_SP_IPIP_TYPE_GRE6 ] = & mlxsw_sp1_ipip_gre6_ops ,
449
- };
450
-
451
- static struct mlxsw_sp_ipip_parms
452
- mlxsw_sp2_ipip_netdev_parms_init_gre6 (const struct net_device * ol_dev )
366
+ mlxsw_sp_ipip_netdev_parms_init_gre6 (const struct net_device * ol_dev )
453
367
{
454
368
struct __ip6_tnl_parm parms = mlxsw_sp_ipip_netdev_parms6 (ol_dev );
455
369
@@ -464,9 +378,9 @@ mlxsw_sp2_ipip_netdev_parms_init_gre6(const struct net_device *ol_dev)
464
378
}
465
379
466
380
static int
467
- mlxsw_sp2_ipip_nexthop_update_gre6 (struct mlxsw_sp * mlxsw_sp , u32 adj_index ,
468
- struct mlxsw_sp_ipip_entry * ipip_entry ,
469
- bool force , char * ratr_pl )
381
+ mlxsw_sp_ipip_nexthop_update_gre6 (struct mlxsw_sp * mlxsw_sp , u32 adj_index ,
382
+ struct mlxsw_sp_ipip_entry * ipip_entry ,
383
+ bool force , char * ratr_pl )
470
384
{
471
385
u16 rif_index = mlxsw_sp_ipip_lb_rif_index (ipip_entry -> ol_lb );
472
386
enum mlxsw_reg_ratr_op op ;
@@ -482,9 +396,9 @@ mlxsw_sp2_ipip_nexthop_update_gre6(struct mlxsw_sp *mlxsw_sp, u32 adj_index,
482
396
}
483
397
484
398
static int
485
- mlxsw_sp2_ipip_decap_config_gre6 (struct mlxsw_sp * mlxsw_sp ,
486
- struct mlxsw_sp_ipip_entry * ipip_entry ,
487
- u32 tunnel_index )
399
+ mlxsw_sp_ipip_decap_config_gre6 (struct mlxsw_sp * mlxsw_sp ,
400
+ struct mlxsw_sp_ipip_entry * ipip_entry ,
401
+ u32 tunnel_index )
488
402
{
489
403
u16 rif_index = mlxsw_sp_ipip_lb_rif_index (ipip_entry -> ol_lb );
490
404
u16 ul_rif_id = mlxsw_sp_ipip_lb_ul_rif_id (ipip_entry -> ol_lb );
@@ -519,8 +433,8 @@ mlxsw_sp2_ipip_decap_config_gre6(struct mlxsw_sp *mlxsw_sp,
519
433
return mlxsw_reg_write (mlxsw_sp -> core , MLXSW_REG (rtdp ), rtdp_pl );
520
434
}
521
435
522
- static bool mlxsw_sp2_ipip_can_offload_gre6 (const struct mlxsw_sp * mlxsw_sp ,
523
- const struct net_device * ol_dev )
436
+ static bool mlxsw_sp_ipip_can_offload_gre6 (const struct mlxsw_sp * mlxsw_sp ,
437
+ const struct net_device * ol_dev )
524
438
{
525
439
struct __ip6_tnl_parm tparm = mlxsw_sp_ipip_netdev_parms6 (ol_dev );
526
440
bool inherit_tos = tparm .flags & IP6_TNL_F_USE_ORIG_TCLASS ;
@@ -534,8 +448,8 @@ static bool mlxsw_sp2_ipip_can_offload_gre6(const struct mlxsw_sp *mlxsw_sp,
534
448
}
535
449
536
450
static struct mlxsw_sp_rif_ipip_lb_config
537
- mlxsw_sp2_ipip_ol_loopback_config_gre6 (struct mlxsw_sp * mlxsw_sp ,
538
- const struct net_device * ol_dev )
451
+ mlxsw_sp_ipip_ol_loopback_config_gre6 (struct mlxsw_sp * mlxsw_sp ,
452
+ const struct net_device * ol_dev )
539
453
{
540
454
struct __ip6_tnl_parm parms = mlxsw_sp_ipip_netdev_parms6 (ol_dev );
541
455
enum mlxsw_reg_ritr_loopback_ipip_type lb_ipipt ;
@@ -553,45 +467,65 @@ mlxsw_sp2_ipip_ol_loopback_config_gre6(struct mlxsw_sp *mlxsw_sp,
553
467
}
554
468
555
469
static int
556
- mlxsw_sp2_ipip_ol_netdev_change_gre6 (struct mlxsw_sp * mlxsw_sp ,
557
- struct mlxsw_sp_ipip_entry * ipip_entry ,
558
- struct netlink_ext_ack * extack )
470
+ mlxsw_sp_ipip_ol_netdev_change_gre6 (struct mlxsw_sp * mlxsw_sp ,
471
+ struct mlxsw_sp_ipip_entry * ipip_entry ,
472
+ struct netlink_ext_ack * extack )
559
473
{
560
474
struct mlxsw_sp_ipip_parms new_parms ;
561
475
562
- new_parms = mlxsw_sp2_ipip_netdev_parms_init_gre6 (ipip_entry -> ol_dev );
476
+ new_parms = mlxsw_sp_ipip_netdev_parms_init_gre6 (ipip_entry -> ol_dev );
563
477
return mlxsw_sp_ipip_ol_netdev_change_gre (mlxsw_sp , ipip_entry ,
564
478
& new_parms , extack );
565
479
}
566
480
567
481
static int
568
- mlxsw_sp2_ipip_rem_addr_set_gre6 (struct mlxsw_sp * mlxsw_sp ,
569
- struct mlxsw_sp_ipip_entry * ipip_entry )
482
+ mlxsw_sp_ipip_rem_addr_set_gre6 (struct mlxsw_sp * mlxsw_sp ,
483
+ struct mlxsw_sp_ipip_entry * ipip_entry )
570
484
{
571
485
return mlxsw_sp_ipv6_addr_kvdl_index_get (mlxsw_sp ,
572
486
& ipip_entry -> parms .daddr .addr6 ,
573
487
& ipip_entry -> dip_kvdl_index );
574
488
}
575
489
576
490
static void
577
- mlxsw_sp2_ipip_rem_addr_unset_gre6 (struct mlxsw_sp * mlxsw_sp ,
578
- const struct mlxsw_sp_ipip_entry * ipip_entry )
491
+ mlxsw_sp_ipip_rem_addr_unset_gre6 (struct mlxsw_sp * mlxsw_sp ,
492
+ const struct mlxsw_sp_ipip_entry * ipip_entry )
579
493
{
580
494
mlxsw_sp_ipv6_addr_put (mlxsw_sp , & ipip_entry -> parms .daddr .addr6 );
581
495
}
582
496
497
+ static const struct mlxsw_sp_ipip_ops mlxsw_sp1_ipip_gre6_ops = {
498
+ .dev_type = ARPHRD_IP6GRE ,
499
+ .ul_proto = MLXSW_SP_L3_PROTO_IPV6 ,
500
+ .inc_parsing_depth = true,
501
+ .double_rif_entry = true,
502
+ .parms_init = mlxsw_sp_ipip_netdev_parms_init_gre6 ,
503
+ .nexthop_update = mlxsw_sp_ipip_nexthop_update_gre6 ,
504
+ .decap_config = mlxsw_sp_ipip_decap_config_gre6 ,
505
+ .can_offload = mlxsw_sp_ipip_can_offload_gre6 ,
506
+ .ol_loopback_config = mlxsw_sp_ipip_ol_loopback_config_gre6 ,
507
+ .ol_netdev_change = mlxsw_sp_ipip_ol_netdev_change_gre6 ,
508
+ .rem_ip_addr_set = mlxsw_sp_ipip_rem_addr_set_gre6 ,
509
+ .rem_ip_addr_unset = mlxsw_sp_ipip_rem_addr_unset_gre6 ,
510
+ };
511
+
512
+ const struct mlxsw_sp_ipip_ops * mlxsw_sp1_ipip_ops_arr [] = {
513
+ [MLXSW_SP_IPIP_TYPE_GRE4 ] = & mlxsw_sp_ipip_gre4_ops ,
514
+ [MLXSW_SP_IPIP_TYPE_GRE6 ] = & mlxsw_sp1_ipip_gre6_ops ,
515
+ };
516
+
583
517
static const struct mlxsw_sp_ipip_ops mlxsw_sp2_ipip_gre6_ops = {
584
518
.dev_type = ARPHRD_IP6GRE ,
585
519
.ul_proto = MLXSW_SP_L3_PROTO_IPV6 ,
586
520
.inc_parsing_depth = true,
587
- .parms_init = mlxsw_sp2_ipip_netdev_parms_init_gre6 ,
588
- .nexthop_update = mlxsw_sp2_ipip_nexthop_update_gre6 ,
589
- .decap_config = mlxsw_sp2_ipip_decap_config_gre6 ,
590
- .can_offload = mlxsw_sp2_ipip_can_offload_gre6 ,
591
- .ol_loopback_config = mlxsw_sp2_ipip_ol_loopback_config_gre6 ,
592
- .ol_netdev_change = mlxsw_sp2_ipip_ol_netdev_change_gre6 ,
593
- .rem_ip_addr_set = mlxsw_sp2_ipip_rem_addr_set_gre6 ,
594
- .rem_ip_addr_unset = mlxsw_sp2_ipip_rem_addr_unset_gre6 ,
521
+ .parms_init = mlxsw_sp_ipip_netdev_parms_init_gre6 ,
522
+ .nexthop_update = mlxsw_sp_ipip_nexthop_update_gre6 ,
523
+ .decap_config = mlxsw_sp_ipip_decap_config_gre6 ,
524
+ .can_offload = mlxsw_sp_ipip_can_offload_gre6 ,
525
+ .ol_loopback_config = mlxsw_sp_ipip_ol_loopback_config_gre6 ,
526
+ .ol_netdev_change = mlxsw_sp_ipip_ol_netdev_change_gre6 ,
527
+ .rem_ip_addr_set = mlxsw_sp_ipip_rem_addr_set_gre6 ,
528
+ .rem_ip_addr_unset = mlxsw_sp_ipip_rem_addr_unset_gre6 ,
595
529
};
596
530
597
531
const struct mlxsw_sp_ipip_ops * mlxsw_sp2_ipip_ops_arr [] = {
0 commit comments