net: mscc: ocelot: calculate vcap offsets correctly for full and quarter entries
When calculating the offsets for the current entry within the row and placing them inside struct vcap_data, the function assumes half key entry (2 keys per row). This patch modifies the vcap_data_offset_get() function to calculate a correct data offset when the setting VCAP Type-Group of a key to VCAP_TG_FULL or VCAP_TG_QUARTER. This is needed because, for example, VCAP ES0 only supports full keys. Also rename the 'count' variable to 'num_entries_per_row' to make the function just one tiny bit easier to follow. Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7a155fa3d8
commit
e6ae7c506f
|
@ -177,8 +177,21 @@ static void vcap_data_offset_get(const struct vcap_props *vcap,
|
||||||
int i, col, offset, count, cnt, base;
|
int i, col, offset, count, cnt, base;
|
||||||
u32 width = vcap->tg_width;
|
u32 width = vcap->tg_width;
|
||||||
|
|
||||||
count = (data->tg_sw == VCAP_TG_HALF ? 2 : 4);
|
switch (data->tg_sw) {
|
||||||
col = (ix % 2);
|
case VCAP_TG_FULL:
|
||||||
|
count = 1;
|
||||||
|
break;
|
||||||
|
case VCAP_TG_HALF:
|
||||||
|
count = 2;
|
||||||
|
break;
|
||||||
|
case VCAP_TG_QUARTER:
|
||||||
|
count = 4;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
col = (ix % count);
|
||||||
cnt = (vcap->sw_count / count);
|
cnt = (vcap->sw_count / count);
|
||||||
base = (vcap->sw_count - col * cnt - cnt);
|
base = (vcap->sw_count - col * cnt - cnt);
|
||||||
data->tg_value = 0;
|
data->tg_value = 0;
|
||||||
|
|
Loading…
Reference in New Issue