Skip to content

Commit f0b8c15

Browse files
committed
Fix compiling with 6.15.10
1 parent 3583528 commit f0b8c15

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ else
1313

1414
$(info Building with KERNELRELEASE = ${KERNELRELEASE})
1515
obj-m := ipx.o
16-
ipx-y := af_ipx.o ipx_route.o ipx_proc.o pe2.o p8023.o sysctl_net_ipx.o
16+
ipx-y := af_ipx.o ipx_route.o ipx_proc.o pe2.o p8022.o p8023.o sysctl_net_ipx.o
1717

1818
endif

p8022.c

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// SPDX-License-Identifier: GPL-2.0-or-later
2+
/*
3+
* NET3: Support for 802.2 demultiplexing off Ethernet
4+
*
5+
* Demultiplex 802.2 encoded protocols. We match the entry by the
6+
* SSAP/DSAP pair and then deliver to the registered datalink that
7+
* matches. The control byte is ignored and handling of such items
8+
* is up to the routine passed the frame.
9+
*
10+
* Unlike the 802.3 datalink we have a list of 802.2 entries as
11+
* there are multiple protocols to demux. The list is currently
12+
* short (3 or 4 entries at most). The current demux assumes this.
13+
*/
14+
#include <linux/module.h>
15+
#include <linux/netdevice.h>
16+
#include <linux/skbuff.h>
17+
#include <linux/slab.h>
18+
#include <net/datalink.h>
19+
#include <linux/mm.h>
20+
#include <linux/in.h>
21+
#include <linux/init.h>
22+
#include <net/llc.h>
23+
#include <net/p8022.h>
24+
25+
static int p8022_request(struct datalink_proto *dl, struct sk_buff *skb,
26+
const unsigned char *dest)
27+
{
28+
llc_build_and_send_ui_pkt(dl->sap, skb, dest, dl->sap->laddr.lsap);
29+
return 0;
30+
}
31+
32+
struct datalink_proto *register_8022_client(unsigned char type,
33+
int (*func)(struct sk_buff *skb,
34+
struct net_device *dev,
35+
struct packet_type *pt,
36+
struct net_device *orig_dev))
37+
{
38+
struct datalink_proto *proto;
39+
40+
proto = kmalloc(sizeof(*proto), GFP_ATOMIC);
41+
if (proto) {
42+
proto->type[0] = type;
43+
proto->header_length = 3;
44+
proto->request = p8022_request;
45+
proto->sap = llc_sap_open(type, func);
46+
if (!proto->sap) {
47+
kfree(proto);
48+
proto = NULL;
49+
}
50+
}
51+
return proto;
52+
}
53+
54+
void unregister_8022_client(struct datalink_proto *proto)
55+
{
56+
llc_sap_put(proto->sap);
57+
kfree(proto);
58+
}

0 commit comments

Comments
 (0)