diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/mlx4/device.h | 104 | ||||
| -rw-r--r-- | include/linux/mlx4/srq.h | 2 |
2 files changed, 100 insertions, 6 deletions
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index 53acaf64189f..a51b0134ce18 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h | |||
| @@ -903,11 +903,12 @@ static inline int map_hw_to_sw_id(u16 header_id) | |||
| 903 | } | 903 | } |
| 904 | 904 | ||
| 905 | enum mlx4_net_trans_promisc_mode { | 905 | enum mlx4_net_trans_promisc_mode { |
| 906 | MLX4_FS_PROMISC_NONE = 0, | 906 | MLX4_FS_REGULAR = 1, |
| 907 | MLX4_FS_PROMISC_UPLINK, | 907 | MLX4_FS_ALL_DEFAULT, |
| 908 | /* For future use. Not implemented yet */ | 908 | MLX4_FS_MC_DEFAULT, |
| 909 | MLX4_FS_PROMISC_FUNCTION_PORT, | 909 | MLX4_FS_UC_SNIFFER, |
| 910 | MLX4_FS_PROMISC_ALL_MULTI, | 910 | MLX4_FS_MC_SNIFFER, |
| 911 | MLX4_FS_MODE_NUM, /* should be last */ | ||
| 911 | }; | 912 | }; |
| 912 | 913 | ||
| 913 | struct mlx4_spec_eth { | 914 | struct mlx4_spec_eth { |
| @@ -936,7 +937,7 @@ struct mlx4_spec_ipv4 { | |||
| 936 | }; | 937 | }; |
| 937 | 938 | ||
| 938 | struct mlx4_spec_ib { | 939 | struct mlx4_spec_ib { |
| 939 | __be32 r_qpn; | 940 | __be32 l3_qpn; |
| 940 | __be32 qpn_msk; | 941 | __be32 qpn_msk; |
| 941 | u8 dst_gid[16]; | 942 | u8 dst_gid[16]; |
| 942 | u8 dst_gid_msk[16]; | 943 | u8 dst_gid_msk[16]; |
| @@ -969,6 +970,92 @@ struct mlx4_net_trans_rule { | |||
| 969 | u32 qpn; | 970 | u32 qpn; |
| 970 | }; | 971 | }; |
| 971 | 972 | ||
| 973 | struct mlx4_net_trans_rule_hw_ctrl { | ||
| 974 | __be16 prio; | ||
| 975 | u8 type; | ||
| 976 | u8 flags; | ||
| 977 | u8 rsvd1; | ||
| 978 | u8 funcid; | ||
| 979 | u8 vep; | ||
| 980 | u8 port; | ||
| 981 | __be32 qpn; | ||
| 982 | __be32 rsvd2; | ||
| 983 | }; | ||
| 984 | |||
| 985 | struct mlx4_net_trans_rule_hw_ib { | ||
| 986 | u8 size; | ||
| 987 | u8 rsvd1; | ||
| 988 | __be16 id; | ||
| 989 | u32 rsvd2; | ||
| 990 | __be32 l3_qpn; | ||
| 991 | __be32 qpn_mask; | ||
| 992 | u8 dst_gid[16]; | ||
| 993 | u8 dst_gid_msk[16]; | ||
| 994 | } __packed; | ||
| 995 | |||
| 996 | struct mlx4_net_trans_rule_hw_eth { | ||
| 997 | u8 size; | ||
| 998 | u8 rsvd; | ||
| 999 | __be16 id; | ||
| 1000 | u8 rsvd1[6]; | ||
| 1001 | u8 dst_mac[6]; | ||
| 1002 | u16 rsvd2; | ||
| 1003 | u8 dst_mac_msk[6]; | ||
| 1004 | u16 rsvd3; | ||
| 1005 | u8 src_mac[6]; | ||
| 1006 | u16 rsvd4; | ||
| 1007 | u8 src_mac_msk[6]; | ||
| 1008 | u8 rsvd5; | ||
| 1009 | u8 ether_type_enable; | ||
| 1010 | __be16 ether_type; | ||
| 1011 | __be16 vlan_tag_msk; | ||
| 1012 | __be16 vlan_tag; | ||
| 1013 | } __packed; | ||
| 1014 | |||
| 1015 | struct mlx4_net_trans_rule_hw_tcp_udp { | ||
| 1016 | u8 size; | ||
| 1017 | u8 rsvd; | ||
| 1018 | __be16 id; | ||
| 1019 | __be16 rsvd1[3]; | ||
| 1020 | __be16 dst_port; | ||
| 1021 | __be16 rsvd2; | ||
| 1022 | __be16 dst_port_msk; | ||
| 1023 | __be16 rsvd3; | ||
| 1024 | __be16 src_port; | ||
| 1025 | __be16 rsvd4; | ||
| 1026 | __be16 src_port_msk; | ||
| 1027 | } __packed; | ||
| 1028 | |||
| 1029 | struct mlx4_net_trans_rule_hw_ipv4 { | ||
| 1030 | u8 size; | ||
| 1031 | u8 rsvd; | ||
| 1032 | __be16 id; | ||
| 1033 | __be32 rsvd1; | ||
| 1034 | __be32 dst_ip; | ||
| 1035 | __be32 dst_ip_msk; | ||
| 1036 | __be32 src_ip; | ||
| 1037 | __be32 src_ip_msk; | ||
| 1038 | } __packed; | ||
| 1039 | |||
| 1040 | struct _rule_hw { | ||
| 1041 | union { | ||
| 1042 | struct { | ||
| 1043 | u8 size; | ||
| 1044 | u8 rsvd; | ||
| 1045 | __be16 id; | ||
| 1046 | }; | ||
| 1047 | struct mlx4_net_trans_rule_hw_eth eth; | ||
| 1048 | struct mlx4_net_trans_rule_hw_ib ib; | ||
| 1049 | struct mlx4_net_trans_rule_hw_ipv4 ipv4; | ||
| 1050 | struct mlx4_net_trans_rule_hw_tcp_udp tcp_udp; | ||
| 1051 | }; | ||
| 1052 | }; | ||
| 1053 | |||
| 1054 | /* translating DMFS verbs sniffer rule to the FW API would need two reg IDs */ | ||
| 1055 | struct mlx4_flow_handle { | ||
| 1056 | u64 reg_id[2]; | ||
| 1057 | }; | ||
| 1058 | |||
| 972 | int mlx4_flow_steer_promisc_add(struct mlx4_dev *dev, u8 port, u32 qpn, | 1059 | int mlx4_flow_steer_promisc_add(struct mlx4_dev *dev, u8 port, u32 qpn, |
| 973 | enum mlx4_net_trans_promisc_mode mode); | 1060 | enum mlx4_net_trans_promisc_mode mode); |
| 974 | int mlx4_flow_steer_promisc_remove(struct mlx4_dev *dev, u8 port, | 1061 | int mlx4_flow_steer_promisc_remove(struct mlx4_dev *dev, u8 port, |
| @@ -1018,6 +1105,11 @@ void mlx4_counter_free(struct mlx4_dev *dev, u32 idx); | |||
| 1018 | int mlx4_flow_attach(struct mlx4_dev *dev, | 1105 | int mlx4_flow_attach(struct mlx4_dev *dev, |
| 1019 | struct mlx4_net_trans_rule *rule, u64 *reg_id); | 1106 | struct mlx4_net_trans_rule *rule, u64 *reg_id); |
| 1020 | int mlx4_flow_detach(struct mlx4_dev *dev, u64 reg_id); | 1107 | int mlx4_flow_detach(struct mlx4_dev *dev, u64 reg_id); |
| 1108 | int mlx4_map_sw_to_hw_steering_mode(struct mlx4_dev *dev, | ||
| 1109 | enum mlx4_net_trans_promisc_mode flow_type); | ||
| 1110 | int mlx4_map_sw_to_hw_steering_id(struct mlx4_dev *dev, | ||
| 1111 | enum mlx4_net_trans_rule_id id); | ||
| 1112 | int mlx4_hw_rule_sz(struct mlx4_dev *dev, enum mlx4_net_trans_rule_id id); | ||
| 1021 | 1113 | ||
| 1022 | void mlx4_sync_pkey_table(struct mlx4_dev *dev, int slave, int port, | 1114 | void mlx4_sync_pkey_table(struct mlx4_dev *dev, int slave, int port, |
| 1023 | int i, int val); | 1115 | int i, int val); |
diff --git a/include/linux/mlx4/srq.h b/include/linux/mlx4/srq.h index 799a0697a383..192e0f7784f2 100644 --- a/include/linux/mlx4/srq.h +++ b/include/linux/mlx4/srq.h | |||
| @@ -39,4 +39,6 @@ struct mlx4_wqe_srq_next_seg { | |||
| 39 | u32 reserved2[3]; | 39 | u32 reserved2[3]; |
| 40 | }; | 40 | }; |
| 41 | 41 | ||
| 42 | struct mlx4_srq *mlx4_srq_lookup(struct mlx4_dev *dev, u32 srqn); | ||
| 43 | |||
| 42 | #endif /* MLX4_SRQ_H */ | 44 | #endif /* MLX4_SRQ_H */ |
