* [PATCH v3 net 0/2] bridge: Fix forwarding of 8021AD frames
@ 2014-03-27 21:32 Vlad Yasevich
2014-03-27 21:32 ` [PATCH v3 net 1/2] net: Allow modules to use is_skb_forwardable Vlad Yasevich
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Vlad Yasevich @ 2014-03-27 21:32 UTC (permalink / raw)
To: netdev; +Cc: Vlad Yasevich, shemminger, bridge
Bridge has its own way to deterine if the packet is forwardable and it doesn't
support 8021ad tags correctly. Instead just allow bridge to use an
existing is_skb_forwardable() function.
v2: Fix missing hunk in patch 2/2 to make it build.
v3: Fix indent for is_skb_forwardable
Vlad Yasevich (2):
net: Allow modules to use is_skb_forwardable
bridge: use is_skb_forwardable in forward path
include/linux/netdevice.h | 1 +
net/bridge/br_forward.c | 9 ++-------
net/core/dev.c | 3 ++-
3 files changed, 5 insertions(+), 8 deletions(-)
--
1.8.5.3
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v3 net 1/2] net: Allow modules to use is_skb_forwardable
2014-03-27 21:32 [PATCH v3 net 0/2] bridge: Fix forwarding of 8021AD frames Vlad Yasevich
@ 2014-03-27 21:32 ` Vlad Yasevich
2014-03-27 21:32 ` [PATCH v3 net 2/2] bridge: use is_skb_forwardable in forward path Vlad Yasevich
2014-03-31 20:04 ` [PATCH v3 net 0/2] bridge: Fix forwarding of 8021AD frames David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Vlad Yasevich @ 2014-03-27 21:32 UTC (permalink / raw)
To: netdev; +Cc: Vlad Yasevich, shemminger, bridge
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
---
include/linux/netdevice.h | 1 +
net/core/dev.c | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index e8eeebd..d855794 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -2551,6 +2551,7 @@ int dev_get_phys_port_id(struct net_device *dev,
int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
struct netdev_queue *txq);
int dev_forward_skb(struct net_device *dev, struct sk_buff *skb);
+bool is_skb_forwardable(struct net_device *dev, struct sk_buff *skb);
extern int netdev_budget;
diff --git a/net/core/dev.c b/net/core/dev.c
index b1b0c8d..b3639c7 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1645,8 +1645,7 @@ static inline void net_timestamp_set(struct sk_buff *skb)
__net_timestamp(SKB); \
} \
-static inline bool is_skb_forwardable(struct net_device *dev,
- struct sk_buff *skb)
+bool is_skb_forwardable(struct net_device *dev, struct sk_buff *skb)
{
unsigned int len;
@@ -1665,6 +1664,7 @@ static inline bool is_skb_forwardable(struct net_device *dev,
return false;
}
+EXPORT_SYMBOL_GPL(is_skb_forwardable);
/**
* dev_forward_skb - loopback an skb to another netif
--
1.8.5.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v3 net 2/2] bridge: use is_skb_forwardable in forward path
2014-03-27 21:32 [PATCH v3 net 0/2] bridge: Fix forwarding of 8021AD frames Vlad Yasevich
2014-03-27 21:32 ` [PATCH v3 net 1/2] net: Allow modules to use is_skb_forwardable Vlad Yasevich
@ 2014-03-27 21:32 ` Vlad Yasevich
2014-03-31 20:04 ` [PATCH v3 net 0/2] bridge: Fix forwarding of 8021AD frames David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Vlad Yasevich @ 2014-03-27 21:32 UTC (permalink / raw)
To: netdev; +Cc: bridge, shemminger, Vlad Yasevich
Use existing function instead of trying to use our own.
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
---
net/bridge/br_forward.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
index d3409e6..056b67b 100644
--- a/net/bridge/br_forward.c
+++ b/net/bridge/br_forward.c
@@ -35,16 +35,11 @@ static inline int should_deliver(const struct net_bridge_port *p,
p->state == BR_STATE_FORWARDING;
}
-static inline unsigned int packet_length(const struct sk_buff *skb)
-{
- return skb->len - (skb->protocol == htons(ETH_P_8021Q) ? VLAN_HLEN : 0);
-}
-
int br_dev_queue_push_xmit(struct sk_buff *skb)
{
/* ip_fragment doesn't copy the MAC header */
if (nf_bridge_maybe_copy_header(skb) ||
- (packet_length(skb) > skb->dev->mtu && !skb_is_gso(skb))) {
+ !is_skb_forwardable(skb->dev, skb)) {
kfree_skb(skb);
} else {
skb_push(skb, ETH_HLEN);
@@ -71,7 +66,7 @@ static void __br_deliver(const struct net_bridge_port *to, struct sk_buff *skb)
skb->dev = to->dev;
if (unlikely(netpoll_tx_running(to->br->dev))) {
- if (packet_length(skb) > skb->dev->mtu && !skb_is_gso(skb))
+ if (!is_skb_forwardable(skb->dev, skb))
kfree_skb(skb);
else {
skb_push(skb, ETH_HLEN);
--
1.8.5.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v3 net 0/2] bridge: Fix forwarding of 8021AD frames
2014-03-27 21:32 [PATCH v3 net 0/2] bridge: Fix forwarding of 8021AD frames Vlad Yasevich
2014-03-27 21:32 ` [PATCH v3 net 1/2] net: Allow modules to use is_skb_forwardable Vlad Yasevich
2014-03-27 21:32 ` [PATCH v3 net 2/2] bridge: use is_skb_forwardable in forward path Vlad Yasevich
@ 2014-03-31 20:04 ` David Miller
2 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2014-03-31 20:04 UTC (permalink / raw)
To: vyasevic; +Cc: netdev, shemminger, bridge
From: Vlad Yasevich <vyasevic@redhat.com>
Date: Thu, 27 Mar 2014 17:32:28 -0400
> Bridge has its own way to deterine if the packet is forwardable and it doesn't
> support 8021ad tags correctly. Instead just allow bridge to use an
> existing is_skb_forwardable() function.
>
> v2: Fix missing hunk in patch 2/2 to make it build.
>
> v3: Fix indent for is_skb_forwardable
Applied to net-next, if you really want this to be queued up for -stable
let me know.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-03-31 20:04 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-27 21:32 [PATCH v3 net 0/2] bridge: Fix forwarding of 8021AD frames Vlad Yasevich
2014-03-27 21:32 ` [PATCH v3 net 1/2] net: Allow modules to use is_skb_forwardable Vlad Yasevich
2014-03-27 21:32 ` [PATCH v3 net 2/2] bridge: use is_skb_forwardable in forward path Vlad Yasevich
2014-03-31 20:04 ` [PATCH v3 net 0/2] bridge: Fix forwarding of 8021AD frames David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).