97
97
98
98
#define SJA1105_SIZE_DYN_CMD 4
99
99
100
+ #define SJA1105ET_SJA1105_SIZE_VL_LOOKUP_DYN_CMD \
101
+ SJA1105_SIZE_DYN_CMD
102
+
103
+ #define SJA1105PQRS_SJA1105_SIZE_VL_LOOKUP_DYN_CMD \
104
+ (SJA1105_SIZE_DYN_CMD + SJA1105_SIZE_VL_LOOKUP_ENTRY)
105
+
100
106
#define SJA1105ET_SIZE_MAC_CONFIG_DYN_ENTRY \
101
107
SJA1105_SIZE_DYN_CMD
102
108
@@ -146,6 +152,29 @@ enum sja1105_hostcmd {
146
152
SJA1105_HOSTCMD_INVALIDATE = 4 ,
147
153
};
148
154
155
+ static void
156
+ sja1105_vl_lookup_cmd_packing (void * buf , struct sja1105_dyn_cmd * cmd ,
157
+ enum packing_op op )
158
+ {
159
+ const int size = SJA1105_SIZE_DYN_CMD ;
160
+
161
+ sja1105_packing (buf , & cmd -> valid , 31 , 31 , size , op );
162
+ sja1105_packing (buf , & cmd -> errors , 30 , 30 , size , op );
163
+ sja1105_packing (buf , & cmd -> rdwrset , 29 , 29 , size , op );
164
+ sja1105_packing (buf , & cmd -> index , 9 , 0 , size , op );
165
+ }
166
+
167
+ static size_t sja1105et_vl_lookup_entry_packing (void * buf , void * entry_ptr ,
168
+ enum packing_op op )
169
+ {
170
+ struct sja1105_vl_lookup_entry * entry = entry_ptr ;
171
+ const int size = SJA1105ET_SJA1105_SIZE_VL_LOOKUP_DYN_CMD ;
172
+
173
+ sja1105_packing (buf , & entry -> egrmirr , 21 , 17 , size , op );
174
+ sja1105_packing (buf , & entry -> ingrmirr , 16 , 16 , size , op );
175
+ return size ;
176
+ }
177
+
149
178
static void
150
179
sja1105pqrs_l2_lookup_cmd_packing (void * buf , struct sja1105_dyn_cmd * cmd ,
151
180
enum packing_op op )
@@ -505,6 +534,16 @@ sja1105pqrs_avb_params_cmd_packing(void *buf, struct sja1105_dyn_cmd *cmd,
505
534
struct sja1105_dynamic_table_ops sja1105et_dyn_ops [BLK_IDX_MAX_DYN ] = {
506
535
[BLK_IDX_SCHEDULE ] = {0 },
507
536
[BLK_IDX_SCHEDULE_ENTRY_POINTS ] = {0 },
537
+ [BLK_IDX_VL_LOOKUP ] = {
538
+ .entry_packing = sja1105et_vl_lookup_entry_packing ,
539
+ .cmd_packing = sja1105_vl_lookup_cmd_packing ,
540
+ .access = OP_WRITE ,
541
+ .max_entry_count = SJA1105_MAX_VL_LOOKUP_COUNT ,
542
+ .packed_size = SJA1105ET_SJA1105_SIZE_VL_LOOKUP_DYN_CMD ,
543
+ .addr = 0x35 ,
544
+ },
545
+ [BLK_IDX_VL_POLICING ] = {0 },
546
+ [BLK_IDX_VL_FORWARDING ] = {0 },
508
547
[BLK_IDX_L2_LOOKUP ] = {
509
548
.entry_packing = sja1105et_dyn_l2_lookup_entry_packing ,
510
549
.cmd_packing = sja1105et_l2_lookup_cmd_packing ,
@@ -548,6 +587,7 @@ struct sja1105_dynamic_table_ops sja1105et_dyn_ops[BLK_IDX_MAX_DYN] = {
548
587
},
549
588
[BLK_IDX_SCHEDULE_PARAMS ] = {0 },
550
589
[BLK_IDX_SCHEDULE_ENTRY_POINTS_PARAMS ] = {0 },
590
+ [BLK_IDX_VL_FORWARDING_PARAMS ] = {0 },
551
591
[BLK_IDX_L2_LOOKUP_PARAMS ] = {
552
592
.entry_packing = sja1105et_l2_lookup_params_entry_packing ,
553
593
.cmd_packing = sja1105et_l2_lookup_params_cmd_packing ,
@@ -573,6 +613,16 @@ struct sja1105_dynamic_table_ops sja1105et_dyn_ops[BLK_IDX_MAX_DYN] = {
573
613
struct sja1105_dynamic_table_ops sja1105pqrs_dyn_ops [BLK_IDX_MAX_DYN ] = {
574
614
[BLK_IDX_SCHEDULE ] = {0 },
575
615
[BLK_IDX_SCHEDULE_ENTRY_POINTS ] = {0 },
616
+ [BLK_IDX_VL_LOOKUP ] = {
617
+ .entry_packing = sja1105_vl_lookup_entry_packing ,
618
+ .cmd_packing = sja1105_vl_lookup_cmd_packing ,
619
+ .access = (OP_READ | OP_WRITE ),
620
+ .max_entry_count = SJA1105_MAX_VL_LOOKUP_COUNT ,
621
+ .packed_size = SJA1105PQRS_SJA1105_SIZE_VL_LOOKUP_DYN_CMD ,
622
+ .addr = 0x47 ,
623
+ },
624
+ [BLK_IDX_VL_POLICING ] = {0 },
625
+ [BLK_IDX_VL_FORWARDING ] = {0 },
576
626
[BLK_IDX_L2_LOOKUP ] = {
577
627
.entry_packing = sja1105pqrs_dyn_l2_lookup_entry_packing ,
578
628
.cmd_packing = sja1105pqrs_l2_lookup_cmd_packing ,
@@ -616,6 +666,7 @@ struct sja1105_dynamic_table_ops sja1105pqrs_dyn_ops[BLK_IDX_MAX_DYN] = {
616
666
},
617
667
[BLK_IDX_SCHEDULE_PARAMS ] = {0 },
618
668
[BLK_IDX_SCHEDULE_ENTRY_POINTS_PARAMS ] = {0 },
669
+ [BLK_IDX_VL_FORWARDING_PARAMS ] = {0 },
619
670
[BLK_IDX_L2_LOOKUP_PARAMS ] = {
620
671
.entry_packing = sja1105et_l2_lookup_params_entry_packing ,
621
672
.cmd_packing = sja1105et_l2_lookup_params_cmd_packing ,
0 commit comments