Skip to content

Commit f44d85d

Browse files
mistraubegregkh
authored andcommitted
staging: rtl8723bs: move rtw_os_alloc_msdu_pkt to rtw_recv.c
Move the function rtw_os_alloc_msdu_pkt from os_dep/recv_linux.c to core/rtw_recv.c to reduce code in the os_dep directory. Signed-off-by: Michael Straube <straube.linux@gmail.com> Reviewed-by: Hans de Goede <hansg@kernel.org> Link: https://lore.kernel.org/r/20250822135418.118115-9-straube.linux@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 10bcaf9 commit f44d85d

3 files changed

Lines changed: 40 additions & 41 deletions

File tree

drivers/staging/rtl8723bs/core/rtw_recv.c

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1622,6 +1622,46 @@ static signed int wlanhdr_to_ethhdr(union recv_frame *precvframe)
16221622
return _SUCCESS;
16231623
}
16241624

1625+
static struct sk_buff *rtw_os_alloc_msdu_pkt(union recv_frame *prframe, u16 nSubframe_Length, u8 *pdata)
1626+
{
1627+
u16 eth_type;
1628+
struct sk_buff *sub_skb;
1629+
struct rx_pkt_attrib *pattrib;
1630+
1631+
pattrib = &prframe->u.hdr.attrib;
1632+
1633+
sub_skb = rtw_skb_alloc(nSubframe_Length + 12);
1634+
if (!sub_skb)
1635+
return NULL;
1636+
1637+
skb_reserve(sub_skb, 12);
1638+
skb_put_data(sub_skb, (pdata + ETH_HLEN), nSubframe_Length);
1639+
1640+
eth_type = get_unaligned_be16(&sub_skb->data[6]);
1641+
1642+
if (sub_skb->len >= 8 &&
1643+
((!memcmp(sub_skb->data, rfc1042_header, SNAP_SIZE) &&
1644+
eth_type != ETH_P_AARP && eth_type != ETH_P_IPX) ||
1645+
!memcmp(sub_skb->data, bridge_tunnel_header, SNAP_SIZE))) {
1646+
/*
1647+
* remove RFC1042 or Bridge-Tunnel encapsulation and replace
1648+
* EtherType
1649+
*/
1650+
skb_pull(sub_skb, SNAP_SIZE);
1651+
memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN);
1652+
memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN);
1653+
} else {
1654+
__be16 len;
1655+
/* Leave Ethernet header part of hdr and full payload */
1656+
len = htons(sub_skb->len);
1657+
memcpy(skb_push(sub_skb, 2), &len, 2);
1658+
memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN);
1659+
memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN);
1660+
}
1661+
1662+
return sub_skb;
1663+
}
1664+
16251665
static int amsdu_to_msdu(struct adapter *padapter, union recv_frame *prframe)
16261666
{
16271667
int a_len, padding_len;

drivers/staging/rtl8723bs/include/recv_osdep.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ extern void rtw_recv_returnpacket(struct net_device *cnxt, struct sk_buff *pretu
1818
int rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter);
1919
void rtw_free_recv_priv(struct recv_priv *precvpriv);
2020

21-
struct sk_buff *rtw_os_alloc_msdu_pkt(union recv_frame *prframe, u16 nSubframe_Length, u8 *pdata);
2221
void rtw_os_recv_indicate_pkt(struct adapter *padapter, struct sk_buff *pkt, struct rx_pkt_attrib *pattrib);
2322

2423
#endif /* */

drivers/staging/rtl8723bs/os_dep/recv_linux.c

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,46 +9,6 @@
99
#include <net/cfg80211.h>
1010
#include <linux/unaligned.h>
1111

12-
struct sk_buff *rtw_os_alloc_msdu_pkt(union recv_frame *prframe, u16 nSubframe_Length, u8 *pdata)
13-
{
14-
u16 eth_type;
15-
struct sk_buff *sub_skb;
16-
struct rx_pkt_attrib *pattrib;
17-
18-
pattrib = &prframe->u.hdr.attrib;
19-
20-
sub_skb = rtw_skb_alloc(nSubframe_Length + 12);
21-
if (!sub_skb)
22-
return NULL;
23-
24-
skb_reserve(sub_skb, 12);
25-
skb_put_data(sub_skb, (pdata + ETH_HLEN), nSubframe_Length);
26-
27-
eth_type = get_unaligned_be16(&sub_skb->data[6]);
28-
29-
if (sub_skb->len >= 8 &&
30-
((!memcmp(sub_skb->data, rfc1042_header, SNAP_SIZE) &&
31-
eth_type != ETH_P_AARP && eth_type != ETH_P_IPX) ||
32-
!memcmp(sub_skb->data, bridge_tunnel_header, SNAP_SIZE))) {
33-
/*
34-
* remove RFC1042 or Bridge-Tunnel encapsulation and replace
35-
* EtherType
36-
*/
37-
skb_pull(sub_skb, SNAP_SIZE);
38-
memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN);
39-
memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN);
40-
} else {
41-
__be16 len;
42-
/* Leave Ethernet header part of hdr and full payload */
43-
len = htons(sub_skb->len);
44-
memcpy(skb_push(sub_skb, 2), &len, 2);
45-
memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN);
46-
memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN);
47-
}
48-
49-
return sub_skb;
50-
}
51-
5212
void rtw_os_recv_indicate_pkt(struct adapter *padapter, struct sk_buff *pkt, struct rx_pkt_attrib *pattrib)
5313
{
5414
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;

0 commit comments

Comments
 (0)