On Wed, Oct 28, 2020 at 6:01 PM Xie He <xie.he.0...@gmail.com> wrote: > > When the fr_rx function drops a received frame (because the protocol type > is not supported, or because the PVC virtual device that corresponds to > the DLCI number and the protocol type doesn't exist), the function frees > the skb and returns. > > The code for freeing the skb and returning is repeated several times, this > patch uses "goto rx_drop" to replace them so that the code looks cleaner. > > Also add code to increase the stats.rx_dropped count whenever we drop a > frame. > > Cc: Krzysztof Halasa <k...@pm.waw.pl> > Signed-off-by: Xie He <xie.he.0...@gmail.com> > --- > drivers/net/wan/hdlc_fr.c | 16 +++++++--------- > 1 file changed, 7 insertions(+), 9 deletions(-) > > diff --git a/drivers/net/wan/hdlc_fr.c b/drivers/net/wan/hdlc_fr.c > index 409e5a7ad8e2..c774eff44534 100644 > --- a/drivers/net/wan/hdlc_fr.c > +++ b/drivers/net/wan/hdlc_fr.c > @@ -904,8 +904,7 @@ static int fr_rx(struct sk_buff *skb) > netdev_info(frad, "No PVC for received frame's DLCI %d\n", > dlci); > #endif > - dev_kfree_skb_any(skb); > - return NET_RX_DROP; > + goto rx_drop; > } > > if (pvc->state.fecn != fh->fecn) { > @@ -963,14 +962,12 @@ static int fr_rx(struct sk_buff *skb) > default: > netdev_info(frad, "Unsupported protocol, OUI=%x > PID=%x\n", > oui, pid); > - dev_kfree_skb_any(skb); > - return NET_RX_DROP; > + goto rx_drop; > } > } else { > netdev_info(frad, "Unsupported protocol, NLPID=%x > length=%i\n", > data[3], skb->len); > - dev_kfree_skb_any(skb); > - return NET_RX_DROP; > + goto rx_drop; > } > > if (dev) { > @@ -982,12 +979,13 @@ static int fr_rx(struct sk_buff *skb) > netif_rx(skb); > return NET_RX_SUCCESS; > } else { > - dev_kfree_skb_any(skb); > - return NET_RX_DROP; > + goto rx_drop; > } > > - rx_error: > +rx_error: > frad->stats.rx_errors++; /* Mark error */ > +rx_drop: > + frad->stats.rx_dropped++; > dev_kfree_skb_any(skb); > return NET_RX_DROP;
This does change rx_dropped count on errors. Not sure how important that is. But perhaps good to call out in the commit explicitly if it's intentional.