Commit f97d5c2a authored by Khalid Manaa's avatar Khalid Manaa Committed by Saeed Mahameed

net/mlx5e: Add handle SHAMPO cqe support

This patch adds the new CQE SHAMPO fields:
- flush: indicates that we must close the current session and pass the SKB
         to the network stack.

- match: indicates that the current packet matches the oppened session,
         the packet will be merge into the current SKB.

- header_size: the size of the packet headers that written into the headers
               buffer.

- header_entry_index: the entry index in the headers buffer.

- data_offset: packets data offset in the WQE.

Also new cqe handler is added to handle SHAMPO packets:
- The new handler uses CQE SHAMPO fields to build the SKB.
  CQE's Flush and match fields are not used in this patch, packets are not
  merged in this patch.
Signed-off-by: default avatarKhalid Manaa <khalidm@nvidia.com>
Reviewed-by: default avatarTariq Toukan <tariqt@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent e5ca8fb0
...@@ -943,6 +943,7 @@ struct mlx5e_priv { ...@@ -943,6 +943,7 @@ struct mlx5e_priv {
struct mlx5e_rx_handlers { struct mlx5e_rx_handlers {
mlx5e_fp_handle_rx_cqe handle_rx_cqe; mlx5e_fp_handle_rx_cqe handle_rx_cqe;
mlx5e_fp_handle_rx_cqe handle_rx_cqe_mpwqe; mlx5e_fp_handle_rx_cqe handle_rx_cqe_mpwqe;
mlx5e_fp_handle_rx_cqe handle_rx_cqe_mpwqe_shampo;
}; };
extern const struct mlx5e_rx_handlers mlx5e_rx_handlers_nic; extern const struct mlx5e_rx_handlers mlx5e_rx_handlers_nic;
......
...@@ -800,10 +800,23 @@ struct mlx5_cqe64 { ...@@ -800,10 +800,23 @@ struct mlx5_cqe64 {
u8 tls_outer_l3_tunneled; u8 tls_outer_l3_tunneled;
u8 rsvd0; u8 rsvd0;
__be16 wqe_id; __be16 wqe_id;
u8 lro_tcppsh_abort_dupack; union {
u8 lro_min_ttl; struct {
__be16 lro_tcp_win; u8 tcppsh_abort_dupack;
__be32 lro_ack_seq_num; u8 min_ttl;
__be16 tcp_win;
__be32 ack_seq_num;
} lro;
struct {
u8 reserved0:1;
u8 match:1;
u8 flush:1;
u8 reserved3:5;
u8 header_size;
__be16 header_entry_index;
__be32 data_offset;
} shampo;
};
__be32 rss_hash_result; __be32 rss_hash_result;
u8 rss_hash_type; u8 rss_hash_type;
u8 ml_path; u8 ml_path;
...@@ -873,7 +886,7 @@ static inline u8 get_cqe_opcode(struct mlx5_cqe64 *cqe) ...@@ -873,7 +886,7 @@ static inline u8 get_cqe_opcode(struct mlx5_cqe64 *cqe)
static inline u8 get_cqe_lro_tcppsh(struct mlx5_cqe64 *cqe) static inline u8 get_cqe_lro_tcppsh(struct mlx5_cqe64 *cqe)
{ {
return (cqe->lro_tcppsh_abort_dupack >> 6) & 1; return (cqe->lro.tcppsh_abort_dupack >> 6) & 1;
} }
static inline u8 get_cqe_l4_hdr_type(struct mlx5_cqe64 *cqe) static inline u8 get_cqe_l4_hdr_type(struct mlx5_cqe64 *cqe)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment