[dpdk-dev,v2] net/enic: fix hardcoding of some flow director masks
Checks
Commit Message
Hard coded mask values were being used for several of the IPv4 and IPv6
fields. Use the values in the rte_eth_fdir_masks structure provided by the
caller.
Fixes: dfbd6a9cb504 ("net/enic: extend flow director support for 1300 series")
Cc: stable@dpdk.org
Signed-off-by: John Daley <johndale@cisco.com>
---
v2: fix compile error
drivers/net/enic/enic_clsf.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
Comments
On 2/9/2017 12:40 AM, John Daley wrote:
> Hard coded mask values were being used for several of the IPv4 and IPv6
> fields. Use the values in the rte_eth_fdir_masks structure provided by the
> caller.
>
> Fixes: dfbd6a9cb504 ("net/enic: extend flow director support for 1300 series")
>
> Cc: stable@dpdk.org
> Signed-off-by: John Daley <johndale@cisco.com>
> ---
>
> v2: fix compile error
I wasn't getting an error for this.
V2 adds:
- ipv6_val.vtc_flow = input->flow.ipv6_flow.tc << 16;
+ ipv6_val.vtc_flow = input->flow.ipv6_flow.tc << 12;
What is the compile error this fixes?
Thanks,
ferruh
On 2/9/2017 12:40 AM, John Daley wrote:
> Hard coded mask values were being used for several of the IPv4 and IPv6
> fields. Use the values in the rte_eth_fdir_masks structure provided by the
> caller.
>
> Fixes: dfbd6a9cb504 ("net/enic: extend flow director support for 1300 series")
> Cc: stable@dpdk.org
> Signed-off-by: John Daley <johndale@cisco.com>
Applied to dpdk-next-net/master, thanks.
> -----Original Message-----
> From: Ferruh Yigit [mailto:ferruh.yigit@intel.com]
> Sent: Thursday, February 09, 2017 2:16 AM
> To: John Daley (johndale) <johndale@cisco.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: Re: [PATCH v2] net/enic: fix hardcoding of some flow director masks
>
> On 2/9/2017 12:40 AM, John Daley wrote:
> > Hard coded mask values were being used for several of the IPv4 and
> > IPv6 fields. Use the values in the rte_eth_fdir_masks structure
> > provided by the caller.
> >
> > Fixes: dfbd6a9cb504 ("net/enic: extend flow director support for 1300
> > series")
> >
> > Cc: stable@dpdk.org
> > Signed-off-by: John Daley <johndale@cisco.com>
> > ---
> >
> > v2: fix compile error
>
> I wasn't getting an error for this.
>
> V2 adds:
>
> - ipv6_val.vtc_flow = input->flow.ipv6_flow.tc << 16;
> + ipv6_val.vtc_flow = input->flow.ipv6_flow.tc << 12;
>
> What is the compile error this fixes?
This patch had the compile error:
http://www.dpdk.org/dev/patchwork/patch/20147/
+ ipv6_mask.vtc_flow = masks->ipv6_mask.tc << 16);
On 2/9/2017 5:43 PM, John Daley (johndale) wrote:
>
>
>> -----Original Message-----
>> From: Ferruh Yigit [mailto:ferruh.yigit@intel.com]
>> Sent: Thursday, February 09, 2017 2:16 AM
>> To: John Daley (johndale) <johndale@cisco.com>
>> Cc: dev@dpdk.org; stable@dpdk.org
>> Subject: Re: [PATCH v2] net/enic: fix hardcoding of some flow director masks
>>
>> On 2/9/2017 12:40 AM, John Daley wrote:
>>> Hard coded mask values were being used for several of the IPv4 and
>>> IPv6 fields. Use the values in the rte_eth_fdir_masks structure
>>> provided by the caller.
>>>
>>> Fixes: dfbd6a9cb504 ("net/enic: extend flow director support for 1300
>>> series")
>>>
>>> Cc: stable@dpdk.org
>>> Signed-off-by: John Daley <johndale@cisco.com>
>>> ---
>>>
>>> v2: fix compile error
>>
>> I wasn't getting an error for this.
>>
>> V2 adds:
>>
>> - ipv6_val.vtc_flow = input->flow.ipv6_flow.tc << 16;
>> + ipv6_val.vtc_flow = input->flow.ipv6_flow.tc << 12;
>>
>> What is the compile error this fixes?
>
> This patch had the compile error:
> http://www.dpdk.org/dev/patchwork/patch/20147/
> + ipv6_mask.vtc_flow = masks->ipv6_mask.tc << 16);
I see, perhaps (don't remember) I fixed this while applying, because
next-net was compiling fine.
@@ -211,15 +211,15 @@ copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
memset(&ip4_val, 0, sizeof(struct ipv4_hdr));
if (input->flow.ip4_flow.tos) {
- ip4_mask.type_of_service = 0xff;
+ ip4_mask.type_of_service = masks->ipv4_mask.tos;
ip4_val.type_of_service = input->flow.ip4_flow.tos;
}
if (input->flow.ip4_flow.ttl) {
- ip4_mask.time_to_live = 0xff;
+ ip4_mask.time_to_live = masks->ipv4_mask.ttl;
ip4_val.time_to_live = input->flow.ip4_flow.ttl;
}
if (input->flow.ip4_flow.proto) {
- ip4_mask.next_proto_id = 0xff;
+ ip4_mask.next_proto_id = masks->ipv4_mask.proto;
ip4_val.next_proto_id = input->flow.ip4_flow.proto;
}
if (input->flow.ip4_flow.src_ip) {
@@ -299,7 +299,7 @@ copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
memset(&ipv6_val, 0, sizeof(struct ipv6_hdr));
if (input->flow.ipv6_flow.proto) {
- ipv6_mask.proto = 0xff;
+ ipv6_mask.proto = masks->ipv6_mask.proto;
ipv6_val.proto = input->flow.ipv6_flow.proto;
}
for (i = 0; i < 4; i++) {
@@ -315,11 +315,11 @@ copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
input->flow.ipv6_flow.dst_ip[i];
}
if (input->flow.ipv6_flow.tc) {
- ipv6_mask.vtc_flow = 0x00ff0000;
- ipv6_val.vtc_flow = input->flow.ipv6_flow.tc << 16;
+ ipv6_mask.vtc_flow = masks->ipv6_mask.tc << 12;
+ ipv6_val.vtc_flow = input->flow.ipv6_flow.tc << 12;
}
if (input->flow.ipv6_flow.hop_limits) {
- ipv6_mask.hop_limits = 0xff;
+ ipv6_mask.hop_limits = masks->ipv6_mask.hop_limits;
ipv6_val.hop_limits = input->flow.ipv6_flow.hop_limits;
}