On Thu, Jul 29, 2021 at 05:49:04PM -0500, Bob Pearson wrote: > return sizeof(struct rxe_recv_wqe) + > diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c > index 4f96437a2a8e..6212e61d267b 100644 > +++ b/drivers/infiniband/sw/rxe/rxe_net.c > @@ -155,7 +155,7 @@ static int rxe_udp_encap_recv(struct sock *sk, struct sk_buff *skb) > struct udphdr *udph; > struct rxe_dev *rxe; > struct net_device *ndev = skb->dev; > - struct rxe_pkt_info *pkt = SKB_TO_PKT(skb); > + struct rxe_pkt_info *pkt; > > /* takes a reference on rxe->ib_dev > * drop when skb is freed > @@ -172,6 +172,10 @@ static int rxe_udp_encap_recv(struct sock *sk, struct sk_buff *skb) > goto drop; > } > > + pkt = kzalloc(sizeof(*pkt), GFP_ATOMIC); > + RXE_CB(skb)->pkt = pkt; > + pkt->skb = skb; > + Isn't this a huge performance cost? Not even a kmem cache or something? Jason