Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
de0016d4
Commit
de0016d4
authored
Mar 02, 2003
by
Christoph Hellwig
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[NET]: Move fc_type_trans into generic code.
parent
ab6671e9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
34 deletions
+35
-34
drivers/net/fc/iph5526.c
drivers/net/fc/iph5526.c
+0
-32
include/linux/fcdevice.h
include/linux/fcdevice.h
+1
-1
net/802/fc.c
net/802/fc.c
+34
-1
No files found.
drivers/net/fc/iph5526.c
View file @
de0016d4
...
...
@@ -3175,38 +3175,6 @@ struct fch_hdr fch;
LEAVE
(
"rx_net_mfs_packet"
);
}
unsigned
short
fc_type_trans
(
struct
sk_buff
*
skb
,
struct
net_device
*
dev
)
{
struct
fch_hdr
*
fch
=
(
struct
fch_hdr
*
)
skb
->
data
;
struct
fcllc
*
fcllc
;
skb
->
mac
.
raw
=
skb
->
data
;
fcllc
=
(
struct
fcllc
*
)(
skb
->
data
+
sizeof
(
struct
fch_hdr
)
+
2
);
skb_pull
(
skb
,
sizeof
(
struct
fch_hdr
)
+
2
);
if
(
*
fch
->
daddr
&
1
)
{
if
(
!
memcmp
(
fch
->
daddr
,
dev
->
broadcast
,
FC_ALEN
))
skb
->
pkt_type
=
PACKET_BROADCAST
;
else
skb
->
pkt_type
=
PACKET_MULTICAST
;
}
else
if
(
dev
->
flags
&
IFF_PROMISC
)
{
if
(
memcmp
(
fch
->
daddr
,
dev
->
dev_addr
,
FC_ALEN
))
skb
->
pkt_type
=
PACKET_OTHERHOST
;
}
/* Strip the SNAP header from ARP packets since we don't
* pass them through to the 802.2/SNAP layers.
*/
if
(
fcllc
->
dsap
==
EXTENDED_SAP
&&
(
fcllc
->
ethertype
==
ntohs
(
ETH_P_IP
)
||
fcllc
->
ethertype
==
ntohs
(
ETH_P_ARP
)))
{
skb_pull
(
skb
,
sizeof
(
struct
fcllc
));
return
fcllc
->
ethertype
;
}
return
ntohs
(
ETH_P_802_2
);
}
static
int
tx_exchange
(
struct
fc_info
*
fi
,
char
*
data
,
u_int
len
,
u_int
r_ctl
,
u_int
type
,
u_int
d_id
,
u_int
mtu
,
int
int_required
,
u_short
tx_ox_id
,
u_int
frame_class
)
{
u_char
df_ctl
;
...
...
include/linux/fcdevice.h
View file @
de0016d4
...
...
@@ -31,7 +31,7 @@ extern int fc_header(struct sk_buff *skb, struct net_device *dev,
unsigned
short
type
,
void
*
daddr
,
void
*
saddr
,
unsigned
len
);
extern
int
fc_rebuild_header
(
struct
sk_buff
*
skb
);
//
extern unsigned short fc_type_trans(struct sk_buff *skb, struct net_device *dev);
extern
unsigned
short
fc_type_trans
(
struct
sk_buff
*
skb
,
struct
net_device
*
dev
);
extern
struct
net_device
*
init_fcdev
(
struct
net_device
*
dev
,
int
sizeof_priv
);
extern
struct
net_device
*
alloc_fcdev
(
int
sizeof_priv
);
...
...
net/802/fc.c
View file @
de0016d4
...
...
@@ -95,4 +95,37 @@ int fc_rebuild_header(struct sk_buff *skb)
return
0
;
#endif
}
unsigned
short
fc_type_trans
(
struct
sk_buff
*
skb
,
struct
net_device
*
dev
)
{
struct
fch_hdr
*
fch
=
(
struct
fch_hdr
*
)
skb
->
data
;
struct
fcllc
*
fcllc
;
skb
->
mac
.
raw
=
skb
->
data
;
fcllc
=
(
struct
fcllc
*
)(
skb
->
data
+
sizeof
(
struct
fch_hdr
)
+
2
);
skb_pull
(
skb
,
sizeof
(
struct
fch_hdr
)
+
2
);
if
(
*
fch
->
daddr
&
1
)
{
if
(
!
memcmp
(
fch
->
daddr
,
dev
->
broadcast
,
FC_ALEN
))
skb
->
pkt_type
=
PACKET_BROADCAST
;
else
skb
->
pkt_type
=
PACKET_MULTICAST
;
}
else
if
(
dev
->
flags
&
IFF_PROMISC
)
{
if
(
memcmp
(
fch
->
daddr
,
dev
->
dev_addr
,
FC_ALEN
))
skb
->
pkt_type
=
PACKET_OTHERHOST
;
}
/*
* Strip the SNAP header from ARP packets since we don't pass
* them through to the 802.2/SNAP layers.
*/
if
(
fcllc
->
dsap
==
EXTENDED_SAP
&&
(
fcllc
->
ethertype
==
ntohs
(
ETH_P_IP
)
||
fcllc
->
ethertype
==
ntohs
(
ETH_P_ARP
)))
{
skb_pull
(
skb
,
sizeof
(
struct
fcllc
));
return
fcllc
->
ethertype
;
}
return
ntohs
(
ETH_P_802_2
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment