Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a0fd98b authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'ife-to-module'



Yotam Gigi says:

====================
Extract IFE logic to module

Extract ife logic from the tc_ife action into an independent module, and
make the tc_ife action use it. This way, the ife encapsulation can be used
by other modules other than tc_ife action.

v1->v2:
Fix duplicate symbol error by introducing a new patch that makes the
original symbol static.

The symbol ife_tlv_meta_extract is exported in act_ife, though not being
used by any other module. As the symbol is being moved to the new ife
module, introducing the new module creates duplicate symbol. To fix it,
add a new patch (1/3) that makes the ife_tlv_meta_extract symbol static in
act_ife, thus the symbol does not collide.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 3541f9e8 295a6e06
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -6250,6 +6250,13 @@ F: include/net/cfg802154.h
F:	include/net/ieee802154_netdev.h
F:	Documentation/networking/ieee802154.txt

IFE PROTOCOL
M:	Yotam Gigi <yotamg@mellanox.com>
M:	Jamal Hadi Salim <jhs@mojatatu.com>
F:	net/ife
F:	include/net/ife.h
F:	include/uapi/linux/ife.h

IGORPLUG-USB IR RECEIVER
M:	Sean Young <sean@mess.org>
L:	linux-media@vger.kernel.org

include/net/ife.h

0 → 100644
+51 −0
Original line number Diff line number Diff line
#ifndef __NET_IFE_H
#define __NET_IFE_H

#include <linux/etherdevice.h>
#include <linux/rtnetlink.h>
#include <linux/module.h>
#include <uapi/linux/ife.h>

#if IS_ENABLED(CONFIG_NET_IFE)

void *ife_encode(struct sk_buff *skb, u16 metalen);
void *ife_decode(struct sk_buff *skb, u16 *metalen);

void *ife_tlv_meta_decode(void *skbdata, u16 *attrtype, u16 *dlen, u16 *totlen);
int ife_tlv_meta_encode(void *skbdata, u16 attrtype, u16 dlen,
			const void *dval);

void *ife_tlv_meta_next(void *skbdata);

#else

static inline void *ife_encode(struct sk_buff *skb, u16 metalen)
{
	return NULL;
}

static inline void *ife_decode(struct sk_buff *skb, u16 *metalen)
{
	return NULL;
}

static inline void *ife_tlv_meta_decode(void *skbdata, u16 *attrtype, u16 *dlen,
					u16 *totlen)
{
	return NULL;
}

static inline int ife_tlv_meta_encode(void *skbdata, u16 attrtype, u16 dlen,
			const void *dval)
{
	return 0;
}

static inline void *ife_tlv_meta_next(void *skbdata)
{
	return NULL;
}

#endif

#endif /* __NET_IFE_H */
+0 −3
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@
#include <linux/rtnetlink.h>
#include <linux/module.h>

#define IFE_METAHDRLEN 2
struct tcf_ife_info {
	struct tc_action common;
	u8 eth_dst[ETH_ALEN];
@@ -45,8 +44,6 @@ struct tcf_meta_ops {

int ife_get_meta_u32(struct sk_buff *skb, struct tcf_meta_info *mi);
int ife_get_meta_u16(struct sk_buff *skb, struct tcf_meta_info *mi);
int ife_tlv_meta_encode(void *skbdata, u16 attrtype, u16 dlen,
			const void *dval);
int ife_alloc_meta_u32(struct tcf_meta_info *mi, void *metaval, gfp_t gfp);
int ife_alloc_meta_u16(struct tcf_meta_info *mi, void *metaval, gfp_t gfp);
int ife_check_meta_u32(u32 metaval, struct tcf_meta_info *mi);
+1 −0
Original line number Diff line number Diff line
@@ -195,6 +195,7 @@ header-y += if_tun.h
header-y += if_tunnel.h
header-y += if_vlan.h
header-y += if_x25.h
header-y += ife.h
header-y += igmp.h
header-y += ila.h
header-y += in6.h
+18 −0
Original line number Diff line number Diff line
#ifndef __UAPI_IFE_H
#define __UAPI_IFE_H

#define IFE_METAHDRLEN 2

enum {
	IFE_META_SKBMARK = 1,
	IFE_META_HASHID,
	IFE_META_PRIO,
	IFE_META_QMAP,
	IFE_META_TCINDEX,
	__IFE_META_MAX
};

/*Can be overridden at runtime by module option*/
#define IFE_META_MAX (__IFE_META_MAX - 1)

#endif
Loading