| 290 | } |
| 291 | |
| 292 | static inline void dpaa_checksum_offload(struct rte_mbuf *mbuf, |
| 293 | struct qm_fd *fd, char *prs_buf) |
| 294 | { |
| 295 | struct dpaa_eth_parse_results_t *prs; |
| 296 | |
| 297 | DPAA_DP_LOG(DEBUG, " Offloading checksum for mbuf: %p", mbuf); |
| 298 | |
| 299 | prs = GET_TX_PRS(prs_buf); |
| 300 | prs->l3r = 0; |
| 301 | prs->l4r = 0; |
| 302 | if (((mbuf->packet_type & RTE_PTYPE_L3_MASK) == RTE_PTYPE_L3_IPV4) || |
| 303 | ((mbuf->packet_type & RTE_PTYPE_L3_MASK) == |
| 304 | RTE_PTYPE_L3_IPV4_EXT)) |
| 305 | prs->l3r = DPAA_L3_PARSE_RESULT_IPV4; |
| 306 | else if (((mbuf->packet_type & RTE_PTYPE_L3_MASK) == |
| 307 | RTE_PTYPE_L3_IPV6) || |
| 308 | ((mbuf->packet_type & RTE_PTYPE_L3_MASK) == |
| 309 | RTE_PTYPE_L3_IPV6_EXT)) |
| 310 | prs->l3r = DPAA_L3_PARSE_RESULT_IPV6; |
| 311 | |
| 312 | if ((mbuf->packet_type & RTE_PTYPE_L4_MASK) == RTE_PTYPE_L4_TCP) |
| 313 | prs->l4r = DPAA_L4_PARSE_RESULT_TCP; |
| 314 | else if ((mbuf->packet_type & RTE_PTYPE_L4_MASK) == RTE_PTYPE_L4_UDP) |
| 315 | prs->l4r = DPAA_L4_PARSE_RESULT_UDP; |
| 316 | |
| 317 | prs->ip_off[0] = mbuf->l2_len; |
| 318 | prs->l4_off = mbuf->l3_len + mbuf->l2_len; |
| 319 | /* Enable L3 (and L4, if TCP or UDP) HW checksum*/ |
| 320 | fd->cmd = DPAA_FD_CMD_RPD | DPAA_FD_CMD_DTC; |
| 321 | } |
| 322 | |
| 323 | static inline void |
| 324 | dpaa_unsegmented_checksum(struct rte_mbuf *mbuf, struct qm_fd *fd_arr) |
no outgoing calls
no test coverage detected