Lines Matching refs:spec
836 static int parse_trans_rule(struct mlx4_dev *dev, struct mlx4_spec_list *spec,
839 if (mlx4_hw_rule_sz(dev, spec->id) < 0)
841 memset(rule_hw, 0, mlx4_hw_rule_sz(dev, spec->id));
842 rule_hw->id = cpu_to_be16(__sw_id_hw[spec->id]);
843 rule_hw->size = mlx4_hw_rule_sz(dev, spec->id) >> 2;
845 switch (spec->id) {
847 memcpy(rule_hw->eth.dst_mac, spec->eth.dst_mac, ETH_ALEN);
848 memcpy(rule_hw->eth.dst_mac_msk, spec->eth.dst_mac_msk,
850 memcpy(rule_hw->eth.src_mac, spec->eth.src_mac, ETH_ALEN);
851 memcpy(rule_hw->eth.src_mac_msk, spec->eth.src_mac_msk,
853 if (spec->eth.ether_type_enable) {
855 rule_hw->eth.ether_type = spec->eth.ether_type;
857 rule_hw->eth.vlan_tag = spec->eth.vlan_id;
858 rule_hw->eth.vlan_tag_msk = spec->eth.vlan_id_msk;
862 rule_hw->ib.l3_qpn = spec->ib.l3_qpn;
863 rule_hw->ib.qpn_mask = spec->ib.qpn_msk;
864 memcpy(&rule_hw->ib.dst_gid, &spec->ib.dst_gid, 16);
865 memcpy(&rule_hw->ib.dst_gid_msk, &spec->ib.dst_gid_msk, 16);
872 rule_hw->ipv4.src_ip = spec->ipv4.src_ip;
873 rule_hw->ipv4.src_ip_msk = spec->ipv4.src_ip_msk;
874 rule_hw->ipv4.dst_ip = spec->ipv4.dst_ip;
875 rule_hw->ipv4.dst_ip_msk = spec->ipv4.dst_ip_msk;
880 rule_hw->tcp_udp.dst_port = spec->tcp_udp.dst_port;
881 rule_hw->tcp_udp.dst_port_msk = spec->tcp_udp.dst_port_msk;
882 rule_hw->tcp_udp.src_port = spec->tcp_udp.src_port;
883 rule_hw->tcp_udp.src_port_msk = spec->tcp_udp.src_port_msk;
888 cpu_to_be32(be32_to_cpu(spec->vxlan.vni) << 8);
890 cpu_to_be32(be32_to_cpu(spec->vxlan.vni_mask) << 8);
897 return __rule_hw_sz[spec->id];
1372 struct mlx4_spec_list spec = { {NULL} };
1389 spec.id = MLX4_NET_TRANS_RULE_ID_ETH;
1390 memcpy(spec.eth.dst_mac, &gid[10], ETH_ALEN);
1391 memcpy(spec.eth.dst_mac_msk, &mac_mask, ETH_ALEN);
1395 spec.id = MLX4_NET_TRANS_RULE_ID_IB;
1396 memcpy(spec.ib.dst_gid, gid, 16);
1397 memset(&spec.ib.dst_gid_msk, 0xff, 16);
1402 list_add_tail(&spec.list, &rule.list);