Lines Matching defs:data

90 			     struct vcap_data *data)
97 ocelot_target_write_rix(ocelot, vcap->target, data->entry[i],
99 ocelot_target_write_rix(ocelot, vcap->target, ~data->mask[i],
102 ocelot_target_write(ocelot, vcap->target, data->tg, VCAP_CACHE_TG_DAT);
107 struct vcap_data *data)
114 data->entry[i] = ocelot_target_read_rix(ocelot, vcap->target,
117 data->mask[i] = ~ocelot_target_read_rix(ocelot, vcap->target,
120 data->tg = ocelot_target_read(ocelot, vcap->target, VCAP_CACHE_TG_DAT);
125 struct vcap_data *data)
134 data->action[0] = ((data->action[0] & ~mask) | data->type);
140 ocelot_target_write_rix(ocelot, vcap->target, data->action[i],
144 ocelot_target_write_rix(ocelot, vcap->target, data->counter[i],
150 struct vcap_data *data)
158 data->action[i] = ocelot_target_read_rix(ocelot, vcap->target,
163 data->counter[i] = ocelot_target_read_rix(ocelot, vcap->target,
169 data->type = (width ? (data->action[0] & GENMASK(width, 0)) : 0);
174 struct vcap_data *data, int ix)
180 switch (data->tg_sw) {
198 data->tg_value = 0;
199 data->tg_mask = 0;
202 data->tg_value |= (data->tg_sw << offset);
203 data->tg_mask |= GENMASK(offset + width - 1, offset);
208 data->key_offset = (base * vcap->entry_width) / vcap->sw_count;
209 data->counter_offset = (num_subwords_per_entry * col *
211 i = data->type;
214 data->action_offset = ((num_subwords_per_action * col * width) /
216 data->action_offset += vcap->action_type_width;
219 static void vcap_data_set(u32 *data, u32 offset, u32 len, u32 value)
224 v = data[offset / ENTRY_WIDTH];
230 data[offset / ENTRY_WIDTH] = v;
234 static u32 vcap_data_get(u32 *data, u32 offset, u32 len)
239 v = data[offset / ENTRY_WIDTH];
247 static void vcap_key_field_set(struct vcap_data *data, u32 offset, u32 width,
250 vcap_data_set(data->entry, offset + data->key_offset, width, value);
251 vcap_data_set(data->mask, offset + data->key_offset, width, mask);
254 static void vcap_key_set(const struct vcap_props *vcap, struct vcap_data *data,
260 vcap_key_field_set(data, offset, length, value, mask);
264 struct vcap_data *data, int field,
274 * The 32 LSB of the data are written to the 32 MSB of the TCAM.
286 vcap_key_field_set(data, offset, n, value, mask);
295 struct vcap_data *data, int field,
303 vcap_key_field_set(data, offset, length, port->value, port->mask);
307 struct vcap_data *data, int field,
317 vcap_key_field_set(data, offset, length, value, msk);
321 struct vcap_data *data, int field, u32 value)
326 vcap_data_set(data->action, offset + data->action_offset, length,
330 static void is2_action_set(struct ocelot *ocelot, struct vcap_data *data,
336 vcap_action_set(vcap, data, VCAP_IS2_ACT_MASK_MODE, a->mask_mode);
337 vcap_action_set(vcap, data, VCAP_IS2_ACT_PORT_MASK, a->port_mask);
338 vcap_action_set(vcap, data, VCAP_IS2_ACT_POLICE_ENA, a->police_ena);
339 vcap_action_set(vcap, data, VCAP_IS2_ACT_POLICE_IDX, a->pol_ix);
340 vcap_action_set(vcap, data, VCAP_IS2_ACT_CPU_QU_NUM, a->cpu_qu_num);
341 vcap_action_set(vcap, data, VCAP_IS2_ACT_CPU_COPY_ENA, a->cpu_copy_ena);
351 struct vcap_data data;
355 memset(&data, 0, sizeof(data));
359 vcap_cache2entry(ocelot, vcap, &data);
360 vcap_cache2action(ocelot, vcap, &data);
362 data.tg_sw = VCAP_TG_HALF;
363 vcap_data_offset_get(vcap, &data, ix);
364 data.tg = (data.tg & ~data.tg_mask);
366 data.tg |= data.tg_value;
368 data.type = IS2_ACTION_TYPE_NORMAL;
370 vcap_key_set(vcap, &data, VCAP_IS2_HK_PAG, filter->pag, 0xff);
371 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_FIRST,
374 vcap_key_set(vcap, &data, VCAP_IS2_HK_IGR_PORT_MASK, 0,
376 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_HOST_MATCH,
378 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_L2_MC, filter->dmac_mc);
379 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_L2_BC, filter->dmac_bc);
380 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_VLAN_TAGGED, tag->tagged);
381 vcap_key_set(vcap, &data, VCAP_IS2_HK_VID,
383 vcap_key_set(vcap, &data, VCAP_IS2_HK_PCP,
385 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_DEI, tag->dei);
392 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_L2_DMAC,
394 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_L2_SMAC,
396 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_MAC_ETYPE_ETYPE,
399 vcap_key_set(vcap, &data, VCAP_IS2_HK_MAC_ETYPE_L2_PAYLOAD0,
401 vcap_key_set(vcap, &data, VCAP_IS2_HK_MAC_ETYPE_L2_PAYLOAD1,
403 vcap_key_set(vcap, &data, VCAP_IS2_HK_MAC_ETYPE_L2_PAYLOAD2,
405 vcap_key_bytes_set(vcap, &data,
407 etype->data.value, etype->data.mask);
414 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_L2_DMAC,
416 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_L2_SMAC,
422 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_MAC_LLC_L2_LLC,
430 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_L2_DMAC,
432 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_L2_SMAC,
434 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_MAC_SNAP_L2_SNAP,
443 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_MAC_ARP_SMAC,
445 vcap_key_bit_set(vcap, &data,
448 vcap_key_bit_set(vcap, &data,
451 vcap_key_bit_set(vcap, &data,
454 vcap_key_bit_set(vcap, &data,
457 vcap_key_bit_set(vcap, &data,
460 vcap_key_bit_set(vcap, &data,
469 vcap_key_set(vcap, &data, VCAP_IS2_HK_MAC_ARP_OPCODE,
471 vcap_key_bytes_set(vcap, &data,
474 vcap_key_bytes_set(vcap, &data,
477 vcap_key_set(vcap, &data, VCAP_IS2_HK_MAC_ARP_DIP_EQ_SIP,
500 ip_data = &ipv4->data;
521 ip_data = &ipv6->data;
546 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_IP4,
548 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_L3_FRAGMENT,
550 vcap_key_set(vcap, &data, VCAP_IS2_HK_L3_FRAG_OFS_GT0, 0, 0);
551 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_L3_OPTIONS,
553 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_IP4_L3_TTL_GT0,
555 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_L3_TOS,
557 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_L3_IP4_DIP,
559 vcap_key_bytes_set(vcap, &data, VCAP_IS2_HK_L3_IP4_SIP,
561 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_DIP_EQ_SIP,
570 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_TCP, tcp);
571 vcap_key_l4_port_set(vcap, &data,
573 vcap_key_l4_port_set(vcap, &data,
575 vcap_key_set(vcap, &data, VCAP_IS2_HK_L4_RNG, 0, 0);
576 vcap_key_bit_set(vcap, &data,
579 vcap_key_bit_set(vcap, &data,
582 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_L4_FIN,
584 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_L4_SYN,
586 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_L4_RST,
588 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_L4_PSH,
590 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_L4_ACK,
592 vcap_key_bit_set(vcap, &data, VCAP_IS2_HK_L4_URG,
594 vcap_key_set(vcap, &data, VCAP_IS2_HK_L4_1588_DOM,
596 vcap_key_set(vcap, &data, VCAP_IS2_HK_L4_1588_VER,
610 vcap_key_bytes_set(vcap, &data,
613 vcap_key_bytes_set(vcap, &data,
625 * clear entry data
629 vcap_key_field_set(&data, i, min(32u, count - i), 0, 0);
634 vcap_key_set(vcap, &data, VCAP_IS2_TYPE, type, type_mask);
635 is2_action_set(ocelot, &data, filter);
636 vcap_data_set(data.counter, data.counter_offset,
640 vcap_entry2cache(ocelot, vcap, &data);
641 vcap_action2cache(ocelot, vcap, &data);
645 static void is1_action_set(struct ocelot *ocelot, struct vcap_data *data,
651 vcap_action_set(vcap, data, VCAP_IS1_ACT_VID_REPLACE_ENA,
653 vcap_action_set(vcap, data, VCAP_IS1_ACT_VID_ADD_VAL, a->vid);
654 vcap_action_set(vcap, data, VCAP_IS1_ACT_VLAN_POP_CNT_ENA,
656 vcap_action_set(vcap, data, VCAP_IS1_ACT_VLAN_POP_CNT,
658 vcap_action_set(vcap, data, VCAP_IS1_ACT_PCP_DEI_ENA, a->pcp_dei_ena);
659 vcap_action_set(vcap, data, VCAP_IS1_ACT_PCP_VAL, a->pcp);
660 vcap_action_set(vcap, data, VCAP_IS1_ACT_DEI_VAL, a->dei);
661 vcap_action_set(vcap, data, VCAP_IS1_ACT_QOS_ENA, a->qos_ena);
662 vcap_action_set(vcap, data, VCAP_IS1_ACT_QOS_VAL, a->qos_val);
663 vcap_action_set(vcap, data, VCAP_IS1_ACT_PAG_OVERRIDE_MASK,
665 vcap_action_set(vcap, data, VCAP_IS1_ACT_PAG_VAL, a->pag_val);
674 struct vcap_data data;
679 memset(&data, 0, sizeof(data));
683 vcap_cache2entry(ocelot, vcap, &data);
684 vcap_cache2action(ocelot, vcap, &data);
686 data.tg_sw = VCAP_TG_HALF;
687 data.type = IS1_ACTION_TYPE_NORMAL;
688 vcap_data_offset_get(vcap, &data, ix);
689 data.tg = (data.tg & ~data.tg_mask);
691 data.tg |= data.tg_value;
693 vcap_key_set(vcap, &data, VCAP_IS1_HK_LOOKUP, filter->lookup, 0x3);
694 vcap_key_set(vcap, &data, VCAP_IS1_HK_IGR_PORT_MASK, 0,
696 vcap_key_bit_set(vcap, &data, VCAP_IS1_HK_L2_MC, filter->dmac_mc);
697 vcap_key_bit_set(vcap, &data, VCAP_IS1_HK_L2_BC, filter->dmac_bc);
698 vcap_key_bit_set(vcap, &data, VCAP_IS1_HK_VLAN_TAGGED, tag->tagged);
699 vcap_key_set(vcap, &data, VCAP_IS1_HK_VID,
701 vcap_key_set(vcap, &data, VCAP_IS1_HK_PCP,
709 vcap_key_bytes_set(vcap, &data, VCAP_IS1_HK_L2_SMAC,
711 vcap_key_bytes_set(vcap, &data, VCAP_IS1_HK_ETYPE,
724 vcap_key_bit_set(vcap, &data, VCAP_IS1_HK_IP_SNAP,
726 vcap_key_bit_set(vcap, &data, VCAP_IS1_HK_IP4,
728 vcap_key_bit_set(vcap, &data, VCAP_IS1_HK_ETYPE_LEN,
730 vcap_key_bytes_set(vcap, &data, VCAP_IS1_HK_L3_IP4_SIP,
738 vcap_key_bit_set(vcap, &data, VCAP_IS1_HK_TCP_UDP, tcp_udp);
746 vcap_key_bit_set(vcap, &data, VCAP_IS1_HK_TCP, tcp);
747 vcap_key_l4_port_set(vcap, &data, VCAP_IS1_HK_L4_SPORT,
750 vcap_key_l4_port_set(vcap, &data, VCAP_IS1_HK_ETYPE,
760 vcap_key_bytes_set(vcap, &data, VCAP_IS1_HK_ETYPE,
767 vcap_key_bit_set(vcap, &data, VCAP_IS1_HK_TYPE,
770 is1_action_set(ocelot, &data, filter);
771 vcap_data_set(data.counter, data.counter_offset,
775 vcap_entry2cache(ocelot, vcap, &data);
776 vcap_action2cache(ocelot, vcap, &data);
780 static void es0_action_set(struct ocelot *ocelot, struct vcap_data *data,
786 vcap_action_set(vcap, data, VCAP_ES0_ACT_PUSH_OUTER_TAG,
788 vcap_action_set(vcap, data, VCAP_ES0_ACT_PUSH_INNER_TAG,
790 vcap_action_set(vcap, data, VCAP_ES0_ACT_TAG_A_TPID_SEL,
792 vcap_action_set(vcap, data, VCAP_ES0_ACT_TAG_A_VID_SEL,
794 vcap_action_set(vcap, data, VCAP_ES0_ACT_TAG_A_PCP_SEL,
796 vcap_action_set(vcap, data, VCAP_ES0_ACT_VID_A_VAL, a->vid_a_val);
797 vcap_action_set(vcap, data, VCAP_ES0_ACT_PCP_A_VAL, a->pcp_a_val);
798 vcap_action_set(vcap, data, VCAP_ES0_ACT_TAG_B_TPID_SEL,
800 vcap_action_set(vcap, data, VCAP_ES0_ACT_TAG_B_VID_SEL,
802 vcap_action_set(vcap, data, VCAP_ES0_ACT_TAG_B_PCP_SEL,
804 vcap_action_set(vcap, data, VCAP_ES0_ACT_VID_B_VAL, a->vid_b_val);
805 vcap_action_set(vcap, data, VCAP_ES0_ACT_PCP_B_VAL, a->pcp_b_val);
814 struct vcap_data data;
818 memset(&data, 0, sizeof(data));
822 vcap_cache2entry(ocelot, vcap, &data);
823 vcap_cache2action(ocelot, vcap, &data);
825 data.tg_sw = VCAP_TG_FULL;
826 data.type = ES0_ACTION_TYPE_NORMAL;
827 vcap_data_offset_get(vcap, &data, ix);
828 data.tg = (data.tg & ~data.tg_mask);
830 data.tg |= data.tg_value;
832 vcap_key_set(vcap, &data, VCAP_ES0_IGR_PORT, filter->ingress_port.value,
834 vcap_key_set(vcap, &data, VCAP_ES0_EGR_PORT, filter->egress_port.value,
836 vcap_key_bit_set(vcap, &data, VCAP_ES0_L2_MC, filter->dmac_mc);
837 vcap_key_bit_set(vcap, &data, VCAP_ES0_L2_BC, filter->dmac_bc);
838 vcap_key_set(vcap, &data, VCAP_ES0_VID,
840 vcap_key_set(vcap, &data, VCAP_ES0_PCP,
843 es0_action_set(ocelot, &data, filter);
844 vcap_data_set(data.counter, data.counter_offset,
848 vcap_entry2cache(ocelot, vcap, &data);
849 vcap_action2cache(ocelot, vcap, &data);
857 struct vcap_data data;
862 data.tg_sw = VCAP_TG_FULL;
864 data.tg_sw = VCAP_TG_HALF;
866 count = (1 << (data.tg_sw - 1));
869 vcap_cache2action(ocelot, vcap, &data);
870 vcap_data_offset_get(vcap, &data, ix);
871 cnt = vcap_data_get(data.counter, data.counter_offset,
1239 struct vcap_data data;
1241 memset(&data, 0, sizeof(data));
1243 vcap_entry2cache(ocelot, vcap, &data);
1248 vcap_action2cache(ocelot, vcap, &data);
1303 * Type-Groups when packing and unpacking key entry data in a TCAM row.