Skip to content

Commit

Permalink
net: dsa: Add overhead to tag protocol ops.
Browse files Browse the repository at this point in the history
Each DSA tag protocol needs to add additional headers to the Ethernet
frame in order to direct it towards a specific switch egress port. It
must also remove the head from a frame received from a
switch. Indicate the maximum size of these headers in the tag protocol
ops structure, so the core can take these overheads into account.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
lunn authored and davem330 committed Dec 6, 2018
1 parent 5c327f6 commit a5dd308
Show file tree
Hide file tree
Showing 10 changed files with 11 additions and 0 deletions.
1 change: 1 addition & 0 deletions include/net/dsa.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ struct dsa_device_ops {
struct packet_type *pt);
int (*flow_dissect)(const struct sk_buff *skb, __be16 *proto,
int *offset);
unsigned int overhead;
};

struct dsa_switch_tree {
Expand Down
2 changes: 2 additions & 0 deletions net/dsa/tag_brcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ static struct sk_buff *brcm_tag_rcv(struct sk_buff *skb, struct net_device *dev,
const struct dsa_device_ops brcm_netdev_ops = {
.xmit = brcm_tag_xmit,
.rcv = brcm_tag_rcv,
.overhead = BRCM_TAG_LEN,
};
#endif

Expand All @@ -196,5 +197,6 @@ static struct sk_buff *brcm_tag_rcv_prepend(struct sk_buff *skb,
const struct dsa_device_ops brcm_prepend_netdev_ops = {
.xmit = brcm_tag_xmit_prepend,
.rcv = brcm_tag_rcv_prepend,
.overhead = BRCM_TAG_LEN,
};
#endif
1 change: 1 addition & 0 deletions net/dsa/tag_dsa.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,4 +149,5 @@ static struct sk_buff *dsa_rcv(struct sk_buff *skb, struct net_device *dev,
const struct dsa_device_ops dsa_netdev_ops = {
.xmit = dsa_xmit,
.rcv = dsa_rcv,
.overhead = DSA_HLEN,
};
1 change: 1 addition & 0 deletions net/dsa/tag_edsa.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,4 +168,5 @@ static struct sk_buff *edsa_rcv(struct sk_buff *skb, struct net_device *dev,
const struct dsa_device_ops edsa_netdev_ops = {
.xmit = edsa_xmit,
.rcv = edsa_rcv,
.overhead = EDSA_HLEN,
};
1 change: 1 addition & 0 deletions net/dsa/tag_gswip.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,4 +106,5 @@ static struct sk_buff *gswip_tag_rcv(struct sk_buff *skb,
const struct dsa_device_ops gswip_netdev_ops = {
.xmit = gswip_tag_xmit,
.rcv = gswip_tag_rcv,
.overhead = GSWIP_RX_HEADER_LEN,
};
1 change: 1 addition & 0 deletions net/dsa/tag_ksz.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,4 +99,5 @@ static struct sk_buff *ksz_rcv(struct sk_buff *skb, struct net_device *dev,
const struct dsa_device_ops ksz_netdev_ops = {
.xmit = ksz_xmit,
.rcv = ksz_rcv,
.overhead = KSZ_INGRESS_TAG_LEN,
};
1 change: 1 addition & 0 deletions net/dsa/tag_lan9303.c
Original file line number Diff line number Diff line change
Expand Up @@ -140,4 +140,5 @@ static struct sk_buff *lan9303_rcv(struct sk_buff *skb, struct net_device *dev,
const struct dsa_device_ops lan9303_netdev_ops = {
.xmit = lan9303_xmit,
.rcv = lan9303_rcv,
.overhead = LAN9303_TAG_LEN,
};
1 change: 1 addition & 0 deletions net/dsa/tag_mtk.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,5 @@ const struct dsa_device_ops mtk_netdev_ops = {
.xmit = mtk_tag_xmit,
.rcv = mtk_tag_rcv,
.flow_dissect = mtk_tag_flow_dissect,
.overhead = MTK_HDR_LEN,
};
1 change: 1 addition & 0 deletions net/dsa/tag_qca.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,5 @@ static struct sk_buff *qca_tag_rcv(struct sk_buff *skb, struct net_device *dev,
const struct dsa_device_ops qca_netdev_ops = {
.xmit = qca_tag_xmit,
.rcv = qca_tag_rcv,
.overhead = QCA_HDR_LEN,
};
1 change: 1 addition & 0 deletions net/dsa/tag_trailer.c
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,5 @@ static struct sk_buff *trailer_rcv(struct sk_buff *skb, struct net_device *dev,
const struct dsa_device_ops trailer_netdev_ops = {
.xmit = trailer_xmit,
.rcv = trailer_rcv,
.overhead = 4,
};

0 comments on commit a5dd308

Please sign in to comment.