diff --git a/qdf/linux/src/qdf_nbuf.c b/qdf/linux/src/qdf_nbuf.c index 860e1f5e223d..1cf3323df3ed 100644 --- a/qdf/linux/src/qdf_nbuf.c +++ b/qdf/linux/src/qdf_nbuf.c @@ -3047,7 +3047,6 @@ static inline void __qdf_nbuf_fill_tso_cmn_seg_info( curr_seg->seg.tso_flags.syn = tso_cmn_info->tcphdr->syn; curr_seg->seg.tso_flags.rst = tso_cmn_info->tcphdr->rst; - curr_seg->seg.tso_flags.psh = tso_cmn_info->tcphdr->psh; curr_seg->seg.tso_flags.ack = tso_cmn_info->tcphdr->ack; curr_seg->seg.tso_flags.urg = tso_cmn_info->tcphdr->urg; curr_seg->seg.tso_flags.ece = tso_cmn_info->tcphdr->ece; @@ -3160,6 +3159,10 @@ uint32_t __qdf_nbuf_get_tso_info(qdf_device_t osdev, struct sk_buff *skb, __qdf_nbuf_fill_tso_cmn_seg_info(curr_seg, &tso_cmn_info); + /* If TCP PSH flag is set, set it in the last or only segment */ + if (num_seg == 1) + curr_seg->seg.tso_flags.psh = tso_cmn_info.tcphdr->psh; + if (unlikely(skb_proc == 0)) return tso_info->num_segs;