void hinic_task_set_tunnel_l4(struct hinic_sq_task *task, enum hinic_l4_tunnel_type l4_type, u32 tunnel_len) { task->pkt_info2 |= HINIC_SQ_TASK_INFO2_SET(l4_type, TUNNEL_L4TYPE) | HINIC_SQ_TASK_INFO2_SET(tunnel_len, TUNNEL_L4LEN); }
static void sq_prepare_task(struct hinic_sq_task *task) { task->pkt_info0 = HINIC_SQ_TASK_INFO0_SET(0, L2HDR_LEN) | HINIC_SQ_TASK_INFO0_SET(HINIC_L4_OFF_DISABLE, L4_OFFLOAD) | HINIC_SQ_TASK_INFO0_SET(HINIC_OUTER_L3TYPE_UNKNOWN, INNER_L3TYPE) | HINIC_SQ_TASK_INFO0_SET(HINIC_VLAN_OFF_DISABLE, VLAN_OFFLOAD) | HINIC_SQ_TASK_INFO0_SET(HINIC_PKT_NOT_PARSED, PARSE_FLAG); task->pkt_info1 = HINIC_SQ_TASK_INFO1_SET(HINIC_MEDIA_UNKNOWN, MEDIA_TYPE) | HINIC_SQ_TASK_INFO1_SET(0, INNER_L4_LEN) | HINIC_SQ_TASK_INFO1_SET(0, INNER_L3_LEN); task->pkt_info2 = HINIC_SQ_TASK_INFO2_SET(0, TUNNEL_L4_LEN) | HINIC_SQ_TASK_INFO2_SET(0, OUTER_L3_LEN) | HINIC_SQ_TASK_INFO2_SET(HINIC_TUNNEL_L4TYPE_UNKNOWN, TUNNEL_L4TYPE) | HINIC_SQ_TASK_INFO2_SET(HINIC_OUTER_L3TYPE_UNKNOWN, OUTER_L3TYPE); task->ufo_v6_identify = 0; task->pkt_info4 = HINIC_SQ_TASK_INFO4_SET(HINIC_L2TYPE_ETH, L2TYPE); task->zero_pad = 0; }
void hinic_task_set_outter_l3(struct hinic_sq_task *task, enum hinic_l3_offload_type l3_type, u32 network_len) { task->pkt_info2 |= HINIC_SQ_TASK_INFO2_SET(l3_type, OUTER_L3TYPE) | HINIC_SQ_TASK_INFO2_SET(network_len, OUTER_L3LEN); }