* [PATCH net-next 0/2] Add accessor to vlan egress map
@ 2013-11-06 13:37 Or Gerlitz
2013-11-06 13:37 ` [PATCH net-next 1/2] net/vlan: Provide read access to the " Or Gerlitz
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Or Gerlitz @ 2013-11-06 13:37 UTC (permalink / raw)
To: davem; +Cc: netdev, amirv, sean.hefty, eyalpe, Or Gerlitz
Hi Dave, Sean,
This series adds on the work done through commits d4a968658c "net/route: export
symbol ip_tos2prio" and 366cddb40 "IB/rdma_cm: TOS <=> UP mapping for IBoE".
When vlans are used, the IBoE stack needs to inherit the egress map
which is configured on the vlan device. For that end, we provide a
read-only access method and call it from the RDMA-CM.
Or.
Eyal Perry (2):
net/vlan: Provide access to the vlan egress map
RDMA/cma: Set IBoE SL (user-priority) by egress map when using vlans
drivers/infiniband/core/cma.c | 26 +++++++++++++++++++++-----
include/linux/if_vlan.h | 9 ++++++++-
net/8021q/vlan_dev.c | 18 ++++++++++++------
3 files changed, 41 insertions(+), 12 deletions(-)
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH net-next 1/2] net/vlan: Provide read access to the vlan egress map
2013-11-06 13:37 [PATCH net-next 0/2] Add accessor to vlan egress map Or Gerlitz
@ 2013-11-06 13:37 ` Or Gerlitz
2013-11-06 13:37 ` [PATCH net-next 2/2] RDMA/cma: Set IBoE SL (user-priority) by egress map when using vlans Or Gerlitz
2013-11-08 0:10 ` [PATCH net-next 0/2] Add accessor to vlan egress map David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Or Gerlitz @ 2013-11-06 13:37 UTC (permalink / raw)
To: davem; +Cc: netdev, amirv, sean.hefty, eyalpe, Hadar Hen Zion
From: Eyal Perry <eyalpe@mellanox.com>
Provide a method for read-only access to the vlan device egress mapping.
Do this by refactoring vlan_dev_get_egress_qos_mask() such that now it
receives as an argument the skb priority instead of pointer to the skb.
Such an access is needed for the IBoE stack where the control plane
goes through the network stack. This is an add-on step on top of commit
d4a968658c "net/route: export symbol ip_tos2prio" which allowed the RDMA-CM
to use ip_tos2prio.
Signed-off-by: Eyal Perry <eyalpe@mellanox.com>
Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com>
---
include/linux/if_vlan.h | 9 ++++++++-
net/8021q/vlan_dev.c | 18 ++++++++++++------
2 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
index 715c343..f3088a0 100644
--- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h
@@ -88,7 +88,8 @@ extern struct net_device *__vlan_find_dev_deep(struct net_device *real_dev,
__be16 vlan_proto, u16 vlan_id);
extern struct net_device *vlan_dev_real_dev(const struct net_device *dev);
extern u16 vlan_dev_vlan_id(const struct net_device *dev);
-
+extern u16 vlan_dev_get_egress_qos_mask(struct net_device *dev,
+ u32 skprio);
extern bool vlan_do_receive(struct sk_buff **skb);
extern struct sk_buff *vlan_untag(struct sk_buff *skb);
@@ -121,6 +122,12 @@ static inline u16 vlan_dev_vlan_id(const struct net_device *dev)
return 0;
}
+static inline u16 vlan_dev_get_egress_qos_mask(struct net_device *dev,
+ u32 skprio)
+{
+ return 0;
+}
+
static inline bool vlan_do_receive(struct sk_buff **skb)
{
return false;
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 09bf1c3..13904a4 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -69,15 +69,15 @@ static int vlan_dev_rebuild_header(struct sk_buff *skb)
}
static inline u16
-vlan_dev_get_egress_qos_mask(struct net_device *dev, struct sk_buff *skb)
+__vlan_dev_get_egress_qos_mask(struct net_device *dev, u32 skprio)
{
struct vlan_priority_tci_mapping *mp;
smp_rmb(); /* coupled with smp_wmb() in vlan_dev_set_egress_priority() */
- mp = vlan_dev_priv(dev)->egress_priority_map[(skb->priority & 0xF)];
+ mp = vlan_dev_priv(dev)->egress_priority_map[(skprio & 0xF)];
while (mp) {
- if (mp->priority == skb->priority) {
+ if (mp->priority == skprio) {
return mp->vlan_qos; /* This should already be shifted
* to mask correctly with the
* VLAN's TCI */
@@ -87,6 +87,12 @@ vlan_dev_get_egress_qos_mask(struct net_device *dev, struct sk_buff *skb)
return 0;
}
+u16 vlan_dev_get_egress_qos_mask(struct net_device *dev, u32 skprio)
+{
+ return __vlan_dev_get_egress_qos_mask(dev, skprio);
+}
+EXPORT_SYMBOL(vlan_dev_get_egress_qos_mask);
+
/*
* Create the VLAN header for an arbitrary protocol layer
*
@@ -111,7 +117,7 @@ static int vlan_dev_hard_header(struct sk_buff *skb, struct net_device *dev,
vhdr = (struct vlan_hdr *) skb_push(skb, VLAN_HLEN);
vlan_tci = vlan->vlan_id;
- vlan_tci |= vlan_dev_get_egress_qos_mask(dev, skb);
+ vlan_tci |= __vlan_dev_get_egress_qos_mask(dev, skb->priority);
vhdr->h_vlan_TCI = htons(vlan_tci);
/*
@@ -168,7 +174,7 @@ static netdev_tx_t vlan_dev_hard_start_xmit(struct sk_buff *skb,
vlan->flags & VLAN_FLAG_REORDER_HDR) {
u16 vlan_tci;
vlan_tci = vlan->vlan_id;
- vlan_tci |= vlan_dev_get_egress_qos_mask(dev, skb);
+ vlan_tci |= __vlan_dev_get_egress_qos_mask(dev, skb->priority);
skb = __vlan_hwaccel_put_tag(skb, vlan->vlan_proto, vlan_tci);
}
@@ -253,7 +259,7 @@ int vlan_dev_set_egress_priority(const struct net_device *dev,
np->vlan_qos = vlan_qos;
/* Before inserting this element in hash table, make sure all its fields
* are committed to memory.
- * coupled with smp_rmb() in vlan_dev_get_egress_qos_mask()
+ * coupled with smp_rmb() in __vlan_dev_get_egress_qos_mask()
*/
smp_wmb();
vlan->egress_priority_map[skb_prio & 0xF] = np;
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH net-next 2/2] RDMA/cma: Set IBoE SL (user-priority) by egress map when using vlans
2013-11-06 13:37 [PATCH net-next 0/2] Add accessor to vlan egress map Or Gerlitz
2013-11-06 13:37 ` [PATCH net-next 1/2] net/vlan: Provide read access to the " Or Gerlitz
@ 2013-11-06 13:37 ` Or Gerlitz
2013-11-08 0:10 ` [PATCH net-next 0/2] Add accessor to vlan egress map David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Or Gerlitz @ 2013-11-06 13:37 UTC (permalink / raw)
To: davem; +Cc: netdev, amirv, sean.hefty, eyalpe, Or Gerlitz
From: Eyal Perry <eyalpe@mellanox.com>
On top of commit 366cddb40 "IB/rdma_cm: TOS <=> UP mapping for IBoE", add
support for case vlan egress map is used.
When the IBoE session is being set over a vlan, inherit the socket priority
to vlan priority mapping which was configured for the vlan device egress map.
Signed-off-by: Eyal Perry <eyalpe@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
---
drivers/infiniband/core/cma.c | 26 +++++++++++++++++++++-----
1 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index a082fd9..d2172e7 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -1848,6 +1848,26 @@ static int cma_resolve_iw_route(struct rdma_id_private *id_priv, int timeout_ms)
return 0;
}
+static int iboe_tos_to_sl(struct net_device *ndev, int tos)
+{
+ int prio;
+ struct net_device *dev;
+
+ prio = rt_tos2priority(tos);
+ dev = ndev->priv_flags & IFF_802_1Q_VLAN ?
+ vlan_dev_real_dev(ndev) : ndev;
+
+ if (dev->num_tc)
+ return netdev_get_prio_tc_map(dev, prio);
+
+#if IS_ENABLED(CONFIG_VLAN_8021Q)
+ if (ndev->priv_flags & IFF_802_1Q_VLAN)
+ return (vlan_dev_get_egress_qos_mask(ndev, prio) &
+ VLAN_PRIO_MASK) >> VLAN_PRIO_SHIFT;
+#endif
+ return 0;
+}
+
static int cma_resolve_iboe_route(struct rdma_id_private *id_priv)
{
struct rdma_route *route = &id_priv->id.route;
@@ -1888,11 +1908,7 @@ static int cma_resolve_iboe_route(struct rdma_id_private *id_priv)
route->path_rec->reversible = 1;
route->path_rec->pkey = cpu_to_be16(0xffff);
route->path_rec->mtu_selector = IB_SA_EQ;
- route->path_rec->sl = netdev_get_prio_tc_map(
- ndev->priv_flags & IFF_802_1Q_VLAN ?
- vlan_dev_real_dev(ndev) : ndev,
- rt_tos2priority(id_priv->tos));
-
+ route->path_rec->sl = iboe_tos_to_sl(ndev, id_priv->tos);
route->path_rec->mtu = iboe_get_mtu(ndev->mtu);
route->path_rec->rate_selector = IB_SA_EQ;
route->path_rec->rate = iboe_get_rate(ndev);
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH net-next 0/2] Add accessor to vlan egress map
2013-11-06 13:37 [PATCH net-next 0/2] Add accessor to vlan egress map Or Gerlitz
2013-11-06 13:37 ` [PATCH net-next 1/2] net/vlan: Provide read access to the " Or Gerlitz
2013-11-06 13:37 ` [PATCH net-next 2/2] RDMA/cma: Set IBoE SL (user-priority) by egress map when using vlans Or Gerlitz
@ 2013-11-08 0:10 ` David Miller
2 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2013-11-08 0:10 UTC (permalink / raw)
To: ogerlitz; +Cc: netdev, amirv, sean.hefty, eyalpe
From: Or Gerlitz <ogerlitz@mellanox.com>
Date: Wed, 6 Nov 2013 15:37:22 +0200
> This series adds on the work done through commits d4a968658c "net/route: export
> symbol ip_tos2prio" and 366cddb40 "IB/rdma_cm: TOS <=> UP mapping for IBoE".
>
> When vlans are used, the IBoE stack needs to inherit the egress map
> which is configured on the vlan device. For that end, we provide a
> read-only access method and call it from the RDMA-CM.
Looks good, series applied.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-11-08 0:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-06 13:37 [PATCH net-next 0/2] Add accessor to vlan egress map Or Gerlitz
2013-11-06 13:37 ` [PATCH net-next 1/2] net/vlan: Provide read access to the " Or Gerlitz
2013-11-06 13:37 ` [PATCH net-next 2/2] RDMA/cma: Set IBoE SL (user-priority) by egress map when using vlans Or Gerlitz
2013-11-08 0:10 ` [PATCH net-next 0/2] Add accessor to vlan egress map 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).