netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] bridge: Fix forwarding of 8021AD frames
@ 2014-03-26 16:00 Vlad Yasevich
  2014-03-26 16:00 ` Vlad Yasevich
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Vlad Yasevich @ 2014-03-26 16:00 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.


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   | 7 +------
 net/core/dev.c            | 3 ++-
 3 files changed, 4 insertions(+), 7 deletions(-)

-- 
1.8.5.3

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 0/2] bridge: Fix forwarding of 8021AD frames
  2014-03-26 16:00 [PATCH 0/2] bridge: Fix forwarding of 8021AD frames Vlad Yasevich
@ 2014-03-26 16:00 ` Vlad Yasevich
  2014-03-26 16:00 ` [PATCH 1/2] net: Allow modules to use is_skb_forwardable Vlad Yasevich
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Vlad Yasevich @ 2014-03-26 16:00 UTC (permalink / raw)
  To: netdev; +Cc: bridge, shemminger, Vlad Yasevich

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.

-vlad

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/2] net: Allow modules to use is_skb_forwardable
  2014-03-26 16:00 [PATCH 0/2] bridge: Fix forwarding of 8021AD frames Vlad Yasevich
  2014-03-26 16:00 ` Vlad Yasevich
@ 2014-03-26 16:00 ` Vlad Yasevich
  2014-03-26 21:35   ` Stephen Hemminger
  2014-03-26 16:00 ` [PATCH 2/2] bridge: use is_skb_forwardable in forward path Vlad Yasevich
  2014-03-26 16:09 ` [PATCH 0/2] bridge: Fix forwarding of 8021AD frames Vlad Yasevich
  3 siblings, 1 reply; 7+ messages in thread
From: Vlad Yasevich @ 2014-03-26 16:00 UTC (permalink / raw)
  To: netdev; +Cc: bridge, shemminger, Vlad Yasevich

Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
---
 include/linux/netdevice.h | 1 +
 net/core/dev.c            | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

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..a98f7fa 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1645,7 +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,
+bool is_skb_forwardable(struct net_device *dev,
 				      struct sk_buff *skb)
 {
 	unsigned int len;
@@ -1665,6 +1665,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] 7+ messages in thread

* [PATCH 2/2] bridge: use is_skb_forwardable in forward path
  2014-03-26 16:00 [PATCH 0/2] bridge: Fix forwarding of 8021AD frames Vlad Yasevich
  2014-03-26 16:00 ` Vlad Yasevich
  2014-03-26 16:00 ` [PATCH 1/2] net: Allow modules to use is_skb_forwardable Vlad Yasevich
@ 2014-03-26 16:00 ` Vlad Yasevich
  2014-03-26 16:09 ` [PATCH 0/2] bridge: Fix forwarding of 8021AD frames Vlad Yasevich
  3 siblings, 0 replies; 7+ messages in thread
From: Vlad Yasevich @ 2014-03-26 16:00 UTC (permalink / raw)
  To: netdev; +Cc: Vlad Yasevich, shemminger, bridge

Use existing function instead of trying to use our own.

Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
---
 net/bridge/br_forward.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
index d3409e6..e33d0b6 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);
-- 
1.8.5.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/2] bridge: Fix forwarding of 8021AD frames
  2014-03-26 16:00 [PATCH 0/2] bridge: Fix forwarding of 8021AD frames Vlad Yasevich
                   ` (2 preceding siblings ...)
  2014-03-26 16:00 ` [PATCH 2/2] bridge: use is_skb_forwardable in forward path Vlad Yasevich
@ 2014-03-26 16:09 ` Vlad Yasevich
  3 siblings, 0 replies; 7+ messages in thread
From: Vlad Yasevich @ 2014-03-26 16:09 UTC (permalink / raw)
  To: netdev; +Cc: bridge, shemminger

On 03/26/2014 12:00 PM, Vlad Yasevich wrote:
> 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.
> 
> 
> 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   | 7 +------
>  net/core/dev.c            | 3 ++-
>  3 files changed, 4 insertions(+), 7 deletions(-)
> 

Self-nack.  Missed one of the hunks in patch2.

-vlad

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] net: Allow modules to use is_skb_forwardable
  2014-03-26 16:00 ` [PATCH 1/2] net: Allow modules to use is_skb_forwardable Vlad Yasevich
@ 2014-03-26 21:35   ` Stephen Hemminger
  2014-03-27  0:50     ` Vlad Yasevich
  0 siblings, 1 reply; 7+ messages in thread
From: Stephen Hemminger @ 2014-03-26 21:35 UTC (permalink / raw)
  To: Vlad Yasevich; +Cc: netdev, shemminger, bridge

On Wed, 26 Mar 2014 12:00:26 -0400
Vlad Yasevich <vyasevic@redhat.com> wrote:

> Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
> ---
>  include/linux/netdevice.h | 1 +
>  net/core/dev.c            | 3 ++-
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> 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..a98f7fa 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -1645,7 +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,
> +bool is_skb_forwardable(struct net_device *dev,
>  				      struct sk_buff *skb)
>  {
>  	unsigned int len;
> @@ -1665,6 +1665,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

This will allow an arbitrary 1522 byte frame to be forwarded.
Not sure if this ok.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] net: Allow modules to use is_skb_forwardable
  2014-03-26 21:35   ` Stephen Hemminger
@ 2014-03-27  0:50     ` Vlad Yasevich
  0 siblings, 0 replies; 7+ messages in thread
From: Vlad Yasevich @ 2014-03-27  0:50 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: netdev, shemminger, bridge

On 03/26/2014 05:35 PM, Stephen Hemminger wrote:
> On Wed, 26 Mar 2014 12:00:26 -0400
> Vlad Yasevich <vyasevic@redhat.com> wrote:
> 
>> Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
>> ---
>>  include/linux/netdevice.h | 1 +
>>  net/core/dev.c            | 3 ++-
>>  2 files changed, 3 insertions(+), 1 deletion(-)
>>
>> 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..a98f7fa 100644
>> --- a/net/core/dev.c
>> +++ b/net/core/dev.c
>> @@ -1645,7 +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,
>> +bool is_skb_forwardable(struct net_device *dev,
>>  				      struct sk_buff *skb)
>>  {
>>  	unsigned int len;
>> @@ -1665,6 +1665,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
> 
> This will allow an arbitrary 1522 byte frame to be forwarded.
> Not sure if this ok.
> 

We already do that for macvlan/veth.

-vlad

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-03-27  0:50 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-26 16:00 [PATCH 0/2] bridge: Fix forwarding of 8021AD frames Vlad Yasevich
2014-03-26 16:00 ` Vlad Yasevich
2014-03-26 16:00 ` [PATCH 1/2] net: Allow modules to use is_skb_forwardable Vlad Yasevich
2014-03-26 21:35   ` Stephen Hemminger
2014-03-27  0:50     ` Vlad Yasevich
2014-03-26 16:00 ` [PATCH 2/2] bridge: use is_skb_forwardable in forward path Vlad Yasevich
2014-03-26 16:09 ` [PATCH 0/2] bridge: Fix forwarding of 8021AD frames Vlad Yasevich

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).