Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
kernel: generic: patch: 802.2+LLC - set transport_header offset
Conversion to DSA broke 802.2+LLC+SNAP packet processing. Frames received by napi_complete_done with GRO and DSA have transport_header set two bytes short, or pointing 2 bytes before network_header & skb->data. As snap_rcv expects transport_header to point to SNAP header (OID:PID) after LLC processing advances offset over LLC header (llc_rcv & llc_fixup_skb), code doesn't find a match and packet is dropped. Image built at this commit operates properly: 86dadeb - generic: add patch for GPON-ONU-34-20BI quirk Image built at following commit exhibits the issue: 337e36e - ipq806x: convert each device to DSA implementation As issue is LLC specific, to avoid impacting non-LLC traffic, and to follow up on original assumption made on kernel commit fda55eca5a33 ("net: introduce skb_transport_header_was_set()") stating "network stacks usually reset the transport header anyway", llc_fixup_skb to reset and advance the offset. llc_fixup_skb already assumes the LLC header is at skb->data, and by definition SNAP header immediately follows. Signed-off-by: Antonio Pastor <[email protected]> Link: openwrt/openwrt#17220 Signed-off-by: Robert Marko <[email protected]>
- Loading branch information