]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/net/ethernet/huawei/hinic/hinic_hw_qp.h
net-next/hinic: add checksum offload and TSO support
[mirror_ubuntu-bionic-kernel.git] / drivers / net / ethernet / huawei / hinic / hinic_hw_qp.h
index 6c84f83ec283156a538706ba1c35e43d3015179d..a0dc63a4bfc7ab9bd724fda8899650b37b4785e5 100644 (file)
@@ -149,6 +149,31 @@ int hinic_get_sq_free_wqebbs(struct hinic_sq *sq);
 
 int hinic_get_rq_free_wqebbs(struct hinic_rq *rq);
 
+void hinic_task_set_l2hdr(struct hinic_sq_task *task, u32 len);
+
+void hinic_task_set_outter_l3(struct hinic_sq_task *task,
+                             enum hinic_l3_offload_type l3_type,
+                             u32 network_len);
+
+void hinic_task_set_inner_l3(struct hinic_sq_task *task,
+                            enum hinic_l3_offload_type l3_type,
+                            u32 network_len);
+
+void hinic_task_set_tunnel_l4(struct hinic_sq_task *task,
+                             enum hinic_l4_offload_type l4_type,
+                             u32 tunnel_len);
+
+void hinic_set_cs_inner_l4(struct hinic_sq_task *task,
+                          u32 *queue_info,
+                          enum hinic_l4_offload_type l4_offload,
+                          u32 l4_len, u32 offset);
+
+void hinic_set_tso_inner_l4(struct hinic_sq_task *task,
+                           u32 *queue_info,
+                           enum hinic_l4_offload_type l4_offload,
+                           u32 l4_len,
+                           u32 offset, u32 ip_ident, u32 mss);
+
 void hinic_sq_prepare_wqe(struct hinic_sq *sq, u16 prod_idx,
                          struct hinic_sq_wqe *wqe, struct hinic_sge *sges,
                          int nr_sges);
@@ -159,6 +184,8 @@ void hinic_sq_write_db(struct hinic_sq *sq, u16 prod_idx, unsigned int wqe_size,
 struct hinic_sq_wqe *hinic_sq_get_wqe(struct hinic_sq *sq,
                                      unsigned int wqe_size, u16 *prod_idx);
 
+void hinic_sq_return_wqe(struct hinic_sq *sq, unsigned int wqe_size);
+
 void hinic_sq_write_wqe(struct hinic_sq *sq, u16 prod_idx,
                        struct hinic_sq_wqe *wqe, struct sk_buff *skb,
                        unsigned int wqe_size);