* [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