Alin/Nithin,

Thanks for the review! I look forward to the Conntrack reviews.

Sairam

On 3/31/16, 4:58 PM, "Alin Serdean" <aserd...@cloudbasesolutions.com>
wrote:

>Acked-by: Alin Gabriel Serdean <aserd...@cloudbasesolutions.com>
>
>
>
>> -----Mesaj original-----
>
>> De la: dev [mailto:dev-boun...@openvswitch.org] În numele Sairam
>
>> Venugopal
>
>> Trimis: Friday, April 1, 2016 2:47 AM
>
>> Către: dev@openvswitch.org
>
>> Subiect: [ovs-dev] [PATCH v2, 2/3] datapath-windows: Update flow lookup
>
>> to support RecircId and DpHash
>
>> 
>
>> Update the OvsLookupFlow to include RecircId and DpHash in its flow
>
>> comparison. Revert the keyLen related changes until they are aligned
>
>> appropriately.
>
>> 
>
>> Signed-off-by: Sairam Venugopal <vsai...@vmware.com>
>
>> ---
>
>>  datapath-windows/ovsext/Flow.c | 33 ++++++++++++++++++++++++-------
>
>> --
>
>>  1 file changed, 24 insertions(+), 9 deletions(-)
>
>> 
>
>> diff --git a/datapath-windows/ovsext/Flow.c b/datapath-
>
>> windows/ovsext/Flow.c index c079540..f74ce12 100644
>
>> --- a/datapath-windows/ovsext/Flow.c
>
>> +++ b/datapath-windows/ovsext/Flow.c
>
>> @@ -1380,12 +1380,10 @@ _MapKeyAttrToFlowPut(PNL_ATTR *keyAttrs,
>
>> 
>
>>      if (keyAttrs[OVS_KEY_ATTR_RECIRC_ID]) {
>
>>          destKey->recircId =
>
>> NlAttrGetU32(keyAttrs[OVS_KEY_ATTR_RECIRC_ID]);
>
>> -        destKey->l2.keyLen += sizeof(destKey->recircId);
>
>>      }
>
>> 
>
>>      if (keyAttrs[OVS_KEY_ATTR_DP_HASH]) {
>
>>          destKey->dpHash =
>
>> NlAttrGetU32(keyAttrs[OVS_KEY_ATTR_DP_HASH]);
>
>> -        destKey->l2.keyLen += sizeof(destKey->dpHash);
>
>>      }
>
>> 
>
>>      /* ===== L2 headers ===== */
>
>> @@ -1770,12 +1768,10 @@ OvsGetFlowMetadata(OvsFlowKey *key,
>
>> 
>
>>      if (keyAttrs[OVS_KEY_ATTR_RECIRC_ID]) {
>
>>          key->recircId = NlAttrGetU32(keyAttrs[OVS_KEY_ATTR_RECIRC_ID]);
>
>> -        key->l2.keyLen += sizeof(key->recircId);
>
>>      }
>
>> 
>
>>      if (keyAttrs[OVS_KEY_ATTR_DP_HASH]) {
>
>>          key->dpHash = NlAttrGetU32(keyAttrs[OVS_KEY_ATTR_DP_HASH]);
>
>> -        key->l2.keyLen += sizeof(key->dpHash);
>
>>      }
>
>> 
>
>>      return status;
>
>> @@ -2037,7 +2033,7 @@ OvsExtractFlow(const NET_BUFFER_LIST *packet,  }
>
>> 
>
>>  __inline BOOLEAN
>
>> -FlowEqual(UINT64 *src, UINT64 *dst, UINT32 size)
>
>> +FlowMemoryEqual(UINT64 *src, UINT64 *dst, UINT32 size)
>
>>  {
>
>>      UINT32 i;
>
>>      ASSERT((size & 0x7) == 0);
>
>> @@ -2051,6 +2047,22 @@ FlowEqual(UINT64 *src, UINT64 *dst, UINT32 size)
>
>>      return TRUE;
>
>>  }
>
>> 
>
>> +__inline BOOLEAN
>
>> +FlowEqual(OvsFlow *srcFlow,
>
>> +         const OvsFlowKey *dstKey,
>
>> +         UINT8 *dstStart,
>
>> +         UINT64 hash,
>
>> +         UINT32 offset,
>
>> +         UINT16 size)
>
>> +{
>
>> +    return (srcFlow->hash == hash &&
>
>> +            srcFlow->key.l2.val == dstKey->l2.val &&
>
>> +            srcFlow->key.recircId == dstKey->recircId &&
>
>> +            srcFlow->key.dpHash == dstKey->dpHash &&
>
>> +            FlowMemoryEqual((UINT64 *)((UINT8 *)&srcFlow->key +
>>offset),
>
>> +                            (UINT64 *) dstStart,
>
>> +                            size));
>
>> +}
>
>> 
>
>>  /*
>
>>   * 
>>-------------------------------------------------------------------------
>>---
>
>> @@ -2138,6 +2150,12 @@ OvsLookupFlow(OVS_DATAPATH *datapath,
>
>> 
>
>>      if (!hashValid) {
>
>>          *hash = OvsJhashBytes(start, size, 0);
>
>> +        if (key->recircId) {
>
>> +            *hash = OvsJhashWords((UINT32*)hash, 1, key->recircId);
>
>> +        }
>
>> +        if (key->dpHash) {
>
>> +            *hash = OvsJhashWords((UINT32*)hash, 1, key->dpHash);
>
>> +        }
>
>>      }
>
>> 
>
>>      head = &datapath->flowTable[HASH_BUCKET(*hash)];
>
>> @@ -2145,10 +2163,7 @@ OvsLookupFlow(OVS_DATAPATH *datapath,
>
>>      while (link != head) {
>
>>          OvsFlow *flow = CONTAINING_RECORD(link, OvsFlow, ListEntry);
>
>> 
>
>> -        if (flow->hash == *hash &&
>
>> -            flow->key.l2.val == key->l2.val &&
>
>> -            FlowEqual((UINT64 *)((uint8 *)&flow->key + offset),
>
>> -                         (UINT64 *)start, size)) {
>
>> +        if (FlowEqual(flow, key, start, *hash, offset, size)) {
>
>>              return flow;
>
>>          }
>
>>          link = link->Flink;
>
>> --
>
>> 2.5.0.windows.1
>
>> 
>
>> _______________________________________________
>
>> dev mailing list
>
>> dev@openvswitch.org
>
>> 
>>https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailm
>>an_listinfo_dev&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=
>>Dcruz40PROJ40ROzSpxyQSLw6fcrOWpJgEcEmNR3JEQ&m=ztQ-06z6ybVSnemGMwf5Kz8fPLv
>>31JpEokr6t07LggM&s=k-T_-NJj3SS7MPYageABMaqVelNZrd1GR59UDkOdIC8&e=
>

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to