net/mlx5e: Query minimum required header copy during xmit
Add support for query the minimum inline mode from the Firmware. It is required for correct TX steering according to L3/L4 packet headers. Each send queue (SQ) has inline mode that defines the minimal required headers that needs to be copied into the SQ WQE. The driver asks the Firmware for the wqe_inline_mode device capability value. In case the device capability defined as "vport context" the driver must check the reported min inline mode from the vport context before creating its SQs. Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
ae76715d15
commit
cff92d7c7e
@@ -536,7 +536,8 @@ struct mlx5_ifc_per_protocol_networking_offload_caps_bits {
|
||||
u8 self_lb_en_modifiable[0x1];
|
||||
u8 reserved_at_9[0x2];
|
||||
u8 max_lso_cap[0x5];
|
||||
u8 reserved_at_10[0x4];
|
||||
u8 reserved_at_10[0x2];
|
||||
u8 wqe_inline_mode[0x2];
|
||||
u8 rss_ind_tbl_cap[0x4];
|
||||
u8 reg_umr_sq[0x1];
|
||||
u8 scatter_fcs[0x1];
|
||||
@@ -2270,7 +2271,8 @@ struct mlx5_ifc_sqc_bits {
|
||||
u8 cd_master[0x1];
|
||||
u8 fre[0x1];
|
||||
u8 flush_in_error_en[0x1];
|
||||
u8 reserved_at_4[0x4];
|
||||
u8 reserved_at_4[0x1];
|
||||
u8 min_wqe_inline_mode[0x3];
|
||||
u8 state[0x4];
|
||||
u8 reg_umr[0x1];
|
||||
u8 reserved_at_d[0x13];
|
||||
@@ -2367,7 +2369,9 @@ struct mlx5_ifc_rmpc_bits {
|
||||
};
|
||||
|
||||
struct mlx5_ifc_nic_vport_context_bits {
|
||||
u8 reserved_at_0[0x1f];
|
||||
u8 reserved_at_0[0x5];
|
||||
u8 min_wqe_inline_mode[0x3];
|
||||
u8 reserved_at_8[0x17];
|
||||
u8 roce_en[0x1];
|
||||
|
||||
u8 arm_change_event[0x1];
|
||||
|
@@ -43,6 +43,8 @@ int mlx5_modify_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod,
|
||||
u16 vport, u8 state);
|
||||
int mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev,
|
||||
u16 vport, u8 *addr);
|
||||
void mlx5_query_nic_vport_min_inline(struct mlx5_core_dev *mdev,
|
||||
u8 *min_inline);
|
||||
int mlx5_modify_nic_vport_mac_address(struct mlx5_core_dev *dev,
|
||||
u16 vport, u8 *addr);
|
||||
int mlx5_query_nic_vport_mtu(struct mlx5_core_dev *mdev, u16 *mtu);
|
||||
|
Reference in New Issue
Block a user