[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <58915834.9080802@cumulusnetworks.com>
Date: Tue, 31 Jan 2017 19:38:28 -0800
From: Roopa Prabhu <roopa@...ulusnetworks.com>
To: jtoppins@...hat.com
CC: netdev@...r.kernel.org, davem@...emloft.net,
stephen@...workplumber.org, nikolay@...ulusnetworks.com,
tgraf@...g.ch, hannes@...essinduktion.org, jbenc@...hat.com,
pshelar@....org, dsa@...ulusnetworks.com, hadi@...atatu.com
Subject: Re: [PATCH net-next 2/5] vxlan: support fdb and learning in COLLECT_METADATA
mode
On 1/31/17, 3:37 PM, Jonathan Toppins wrote:
> On 01/31/2017 12:57 AM, Roopa Prabhu wrote:
[snip]
>>
>> diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
>> index 19b1653..b80c405 100644
>> --- a/drivers/net/vxlan.c
>> +++ b/drivers/net/vxlan.c
>> @@ -57,6 +57,8 @@
>>
>> static const u8 all_zeros_mac[ETH_ALEN + 2];
>>
>> +static u32 fdb_salt __read_mostly;
>> +
>> static int vxlan_sock_add(struct vxlan_dev *vxlan);
>>
>> /* per-network namespace private data for this module */
>> @@ -75,6 +77,7 @@ struct vxlan_fdb {
>> struct list_head remotes;
>> u8 eth_addr[ETH_ALEN];
>> u16 state; /* see ndm_state */
>> + __be32 vni;
>> u8 flags; /* see ndm_flags */
>> };
>>
>> @@ -302,6 +305,10 @@ static int vxlan_fdb_info(struct sk_buff *skb, struct vxlan_dev *vxlan,
>> if (rdst->remote_vni != vxlan->default_dst.remote_vni &&
>> nla_put_u32(skb, NDA_VNI, be32_to_cpu(rdst->remote_vni)))
>> goto nla_put_failure;
>> + if ((vxlan->flags & VXLAN_F_COLLECT_METADATA) && fdb->vni &&
>> + nla_put_u32(skb, NDA_SRC_VNI,
>> + be32_to_cpu(fdb->vni)))
>> + goto nla_put_failure;
>> if (rdst->remote_ifindex &&
>> nla_put_u32(skb, NDA_IFINDEX, rdst->remote_ifindex))
>> goto nla_put_failure;
>> @@ -400,34 +407,51 @@ static u32 eth_hash(const unsigned char *addr)
>> return hash_64(value, FDB_HASH_BITS);
>> }
>>
>> +static u32 eth_vni_hash(const unsigned char *addr, __be32 vni)
>> +{
>> + /* use 1 byte of OUI and 3 bytes of NIC */
>> + u32 key = get_unaligned((u32 *)(addr + 2));
>> +
>> + return jhash_2words(key, vni, fdb_salt) & (FDB_HASH_SIZE - 1);
> Not seeing where fdb_salt gets set to anything, why not just use a
> constant zero here?
>
>
oversight. intended to use vxlan_salt which is already initialized but not used in the vxlan driver.
fixed in next queued up version (just following bridge fdb code here which uses salt).
thanks.
Powered by blists - more mailing lists