On 11 April 2016 at 11:35, Arend van Spriel <arend@xxxxxxxxxxxx> wrote: > @@ -298,18 +298,11 @@ void brcmf_txflowblock(struct device *dev, bool state) > brcmf_fws_bus_blocked(drvr, state); > } > > -void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb, > - bool handle_event) > +void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb) > { > - skb->protocol = eth_type_trans(skb, ifp->ndev); With this change every brcmf_netif_rx caller has to call eth_type_trans on its own. > @@ -348,10 +341,17 @@ void brcmf_rx_frame(struct device *dev, struct sk_buff *skb, bool handle_evnt) > return; > } > > - if (brcmf_proto_is_reorder_skb(skb)) > + skb->protocol = eth_type_trans(skb, ifp->ndev); > + > + if (brcmf_proto_is_reorder_skb(skb)) { > brcmf_proto_rxreorder(ifp, skb); > - else > - brcmf_netif_rx(ifp, skb, handle_evnt); > + } else { > + /* Process special event packets */ > + if (handle_event) > + brcmf_fweh_process_skb(ifp->drvr, skb); > + > + brcmf_netif_rx(ifp, skb); > + } > } You added a call to eth_type_trans in brcmf_rx_frame which is used by USB and SDIO. My guess it you wanted to avoid having duplicated eth_type_trans call in brcmf_proto_rxreorder. However you forgot about calling eth_type_trans from brcmf_msgbuf_process_rx_complete (used by PCI). So to fix this regression you'll need another call to eth_type_trans anyway. -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html