u16 addr_type = 0;
u16 n_proto = 0;
int i = 0;
+ struct virtchnl_filter *vf = &filter->f;
if (f->dissector->used_keys &
~(BIT(FLOW_DISSECTOR_KEY_CONTROL) |
return -EINVAL;
if (n_proto == ETH_P_IPV6) {
/* specify flow type as TCP IPv6 */
- filter->f.flow_type = VIRTCHNL_TCP_V6_FLOW;
+ vf->flow_type = VIRTCHNL_TCP_V6_FLOW;
}
if (key->ip_proto != IPPROTO_TCP) {
is_multicast_ether_addr(key->dst)) {
/* set the mask if a valid dst_mac address */
for (i = 0; i < ETH_ALEN; i++)
- filter->f.mask.tcp_spec.dst_mac[i] |=
- 0xff;
- ether_addr_copy(filter->f.data.tcp_spec.dst_mac,
+ vf->mask.tcp_spec.dst_mac[i] |= 0xff;
+ ether_addr_copy(vf->data.tcp_spec.dst_mac,
key->dst);
}
is_multicast_ether_addr(key->src)) {
/* set the mask if a valid dst_mac address */
for (i = 0; i < ETH_ALEN; i++)
- filter->f.mask.tcp_spec.src_mac[i] |=
- 0xff;
- ether_addr_copy(filter->f.data.tcp_spec.src_mac,
+ vf->mask.tcp_spec.src_mac[i] |= 0xff;
+ ether_addr_copy(vf->data.tcp_spec.src_mac,
key->src);
}
}
return I40E_ERR_CONFIG;
}
}
- filter->f.mask.tcp_spec.vlan_id |= cpu_to_be16(0xffff);
- filter->f.data.tcp_spec.vlan_id = cpu_to_be16(key->vlan_id);
+ vf->mask.tcp_spec.vlan_id |= cpu_to_be16(0xffff);
+ vf->data.tcp_spec.vlan_id = cpu_to_be16(key->vlan_id);
}
if (dissector_uses_key(f->dissector, FLOW_DISSECTOR_KEY_CONTROL)) {
return I40E_ERR_CONFIG;
}
if (key->dst) {
- filter->f.mask.tcp_spec.dst_ip[0] |=
- cpu_to_be32(0xffffffff);
- filter->f.data.tcp_spec.dst_ip[0] = key->dst;
+ vf->mask.tcp_spec.dst_ip[0] |= cpu_to_be32(0xffffffff);
+ vf->data.tcp_spec.dst_ip[0] = key->dst;
}
if (key->src) {
- filter->f.mask.tcp_spec.src_ip[0] |=
- cpu_to_be32(0xffffffff);
- filter->f.data.tcp_spec.src_ip[0] = key->src;
+ vf->mask.tcp_spec.src_ip[0] |= cpu_to_be32(0xffffffff);
+ vf->data.tcp_spec.src_ip[0] = key->src;
}
}
if (!ipv6_addr_any(&mask->dst) || !ipv6_addr_any(&mask->src))
field_flags |= I40EVF_CLOUD_FIELD_IIP;
- if (key->dst.s6_addr) {
- for (i = 0; i < 4; i++)
- filter->f.mask.tcp_spec.dst_ip[i] |=
- cpu_to_be32(0xffffffff);
- memcpy(&filter->f.data.tcp_spec.dst_ip,
- &key->dst.s6_addr32,
- sizeof(filter->f.data.tcp_spec.dst_ip));
- }
- if (key->src.s6_addr) {
- for (i = 0; i < 4; i++)
- filter->f.mask.tcp_spec.src_ip[i] |=
- cpu_to_be32(0xffffffff);
- memcpy(&filter->f.data.tcp_spec.src_ip,
- &key->src.s6_addr32,
- sizeof(filter->f.data.tcp_spec.src_ip));
- }
+ for (i = 0; i < 4; i++)
+ vf->mask.tcp_spec.dst_ip[i] |= cpu_to_be32(0xffffffff);
+ memcpy(&vf->data.tcp_spec.dst_ip, &key->dst.s6_addr32,
+ sizeof(vf->data.tcp_spec.dst_ip));
+ for (i = 0; i < 4; i++)
+ vf->mask.tcp_spec.src_ip[i] |= cpu_to_be32(0xffffffff);
+ memcpy(&vf->data.tcp_spec.src_ip, &key->src.s6_addr32,
+ sizeof(vf->data.tcp_spec.src_ip));
}
if (dissector_uses_key(f->dissector, FLOW_DISSECTOR_KEY_PORTS)) {
struct flow_dissector_key_ports *key =
}
}
if (key->dst) {
- filter->f.mask.tcp_spec.dst_port |= cpu_to_be16(0xffff);
- filter->f.data.tcp_spec.dst_port = key->dst;
+ vf->mask.tcp_spec.dst_port |= cpu_to_be16(0xffff);
+ vf->data.tcp_spec.dst_port = key->dst;
}
if (key->src) {
- filter->f.mask.tcp_spec.src_port |= cpu_to_be16(0xffff);
- filter->f.data.tcp_spec.src_port = key->dst;
+ vf->mask.tcp_spec.src_port |= cpu_to_be16(0xffff);
+ vf->data.tcp_spec.src_port = key->dst;
}
}
- filter->f.field_flags = field_flags;
+ vf->field_flags = field_flags;
return 0;
}