[P4] modify_field

Leskó Dániel ldani at elte.hu
Thu Sep 24 17:55:46 CEST 2015


Hát igen, de ez a smart.py megközelítés nehezen fog menni a dpdk libben 
sajnos.

2015.09.24. 17:46 keltezéssel, Dániel Horpácsi írta:
> action.c:
>
> //::    elif arg[0]=="immediate":
> //::        arg_str = "(uint8_t[]) {"
> //::        for byte in arg[1]:
> //::            arg_str += hex(byte) + ", "
> //::        #endfor
> //::        arg_str = arg_str[0:-2] + "}"
> //::        return arg_str
>
> smart.py:
>
> if type(arg) is int or type(arg) is long:
>     # assert(width > 0)
>     tmp = arg
>     nbytes = 0
>     while tmp > 0:
>         nbytes += 1
>         tmp /= 256
>     width = max(4, nbytes)
>     type_ = "immediate"
>     value = int_to_byte_array(arg, width)
>
> def int_to_byte_array(val, num_bytes):
>     res = []
>     for i in xrange(num_bytes):
>         res.append(int(val % 256))
>         val /= 256
>     res.reverse()
>     return res
>
> On 2015-09-24 16:37, Dániel Horpácsi wrote:
>> Szia!
>>
>> Valoszinuleg erdemes ranezni az eredeti behav. modelben az actions.c, 
>> primitives.h es primitives_arith.h template fajlokra, vagyis a 
>> 'referenciaimplementaciora'. Nyilvan ezek nem feltetlenul lesznek a 
>> legjobbak a Spider implementaciohoz, de a DPDK eseteben akar elvi 
>> valtoztatas nelkul is atvehetoek, persze nemi refaktoralassal.
>>
>> Dani
>>
>> On 2015-09-24 16:06, Leskó Dániel wrote:
>>> Sziasztok!
>>>
>>>  Meetingen szóba került, hogy a modify_field-ből kellene egy 
>>> konstansos változat is, de tudjuk a típusát annak a konstansak amit 
>>> be akarunk másolni? (gondolom nem akarunk az összes típus szerinti 
>>> függvényszignatúrát legyártani)
>>>
>>>  A specifikáció szerint egyébként a value lehet egy konstans, egy 
>>> table action paramétere (itt ilyenkor csak a paraméter neve 
>>> szerepel), egy referencia másik fieldre, egy referencia regiszterre.
>>>
>>>  Ezen túl van egy opcionális mask, ami állítja, hogy melyik bitek 
>>> íródjanak felül és melyikek ne (ez szerencsére pszeudokóddal is le 
>>> van írva)
>>>
>>>  Megengedett az is, hogy a módosítandó field és az új érték mérete 
>>> különbözzön. Ilyenkor levágni vagy nyújtani kell az új értéket.
>>>
>>> Hát papíron ennyi mindent kellene tudnia a modify_fieldnek, de 
>>> jelenleg csak egy memcpy a megvalósítása és nem is nagyon látom, 
>>> hogy a fentiek mindegyikét hogyan lehetne belepréselni. Akinek van 
>>> ötlete ne tartsa vissza.
>>>
>>> Dani
>>> _______________________________________________
>>> P4 mailing list
>>> P4 at plc.inf.elte.hu
>>> https://plc.inf.elte.hu/mailman/listinfo/p4
>>
>> _______________________________________________
>> P4 mailing list
>> P4 at plc.inf.elte.hu
>> https://plc.inf.elte.hu/mailman/listinfo/p4
>
> _______________________________________________
> P4 mailing list
> P4 at plc.inf.elte.hu
> https://plc.inf.elte.hu/mailman/listinfo/p4



More information about the P4 mailing list