@@ -1735,6 +1735,7 @@ static struct sk_buff *bnxt_gro_func_5730x(struct bnxt_tpa_info *tpa_info,
}
static inline struct sk_buff *bnxt_gro_skb(struct bnxt *bp,
+ bool gro,
struct bnxt_tpa_info *tpa_info,
struct rx_tpa_end_cmp *tpa_end,
struct rx_tpa_end_cmp_ext *tpa_end1,
@@ -1744,7 +1745,7 @@ static inline struct sk_buff *bnxt_gro_skb(struct bnxt *bp,
u16 segs;
segs = TPA_END_TPA_SEGS(tpa_end);
- if (segs == 1 || !IS_ENABLED(CONFIG_INET))
+ if (!gro || segs == 1 || !IS_ENABLED(CONFIG_INET))
return skb;
NAPI_GRO_CB(skb)->count = segs;
@@ -1917,10 +1918,7 @@ static inline struct sk_buff *bnxt_tpa_end(struct bnxt *bp,
(tpa_info->flags2 & RX_CMP_FLAGS2_T_L4_CS_CALC) >> 3;
}
- if (gro)
- skb = bnxt_gro_skb(bp, tpa_info, tpa_end, tpa_end1, skb);
-
- return skb;
+ return bnxt_gro_skb(bp, gro, tpa_info, tpa_end, tpa_end1, skb);
}
static void bnxt_tpa_agg(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
bnxt_tpa_end() skips calling bnxt_gro_skb() if it determines that GRO should not be performed. For ease of packet counting pass the gro bool into bnxt_gro_skb(), this way we have a single branch thru which all non-GRO packets coming out of bnxt_tpa_end() should pass. bnxt_gro_skb() is a static inline with a single caller, it will be inlined so there is no concern about adding an extra call. seg count will now be extracted every time, but tpa_end is touched by bnxt_tpa_end(), the field extraction will make no practical difference. Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)