From 3fa9bbfb0bee7aa4ecfd92baf8664033b44a7989 Mon Sep 17 00:00:00 2001 From: Ondrej Jirman Date: Mon, 13 Sep 2021 14:38:17 +0200 Subject: [PATCH 240/478] 8723cs: Port to 5.15 Cut out apple talk protocol handling. Signed-off-by: Ondrej Jirman --- drivers/staging/rtl8723cs/core/rtw_br_ext.c | 273 -------------------- 1 file changed, 273 deletions(-) diff --git a/drivers/staging/rtl8723cs/core/rtw_br_ext.c b/drivers/staging/rtl8723cs/core/rtw_br_ext.c index 9a0effd8b7ea..4251b825c8ae 100644 --- a/drivers/staging/rtl8723cs/core/rtw_br_ext.c +++ b/drivers/staging/rtl8723cs/core/rtw_br_ext.c @@ -17,8 +17,6 @@ #ifdef __KERNEL__ #include #include - #include - #include #include #include #endif @@ -57,8 +55,6 @@ #define NAT25_IPV4 01 #define NAT25_IPV6 02 -#define NAT25_IPX 03 -#define NAT25_APPLE 04 #define NAT25_PPPOE 05 #define RTL_RELAY_TAG_LEN (ETH_ALEN) @@ -73,8 +69,6 @@ 0 1 2 3 4 5 6 7 8 9 10 |----|----|----|----|----|----|----|----|----|----|----| IPv4 |type| | IP addr | - IPX |type| Net addr | Node addr | - IPX |type| Net addr |Sckt addr| Apple |type| Network |node| PPPoE |type| SID | AC MAC | -----------------------------------------------------------------*/ @@ -169,39 +163,6 @@ static __inline__ void __nat25_generate_ipv4_network_addr(unsigned char *network } -static __inline__ void __nat25_generate_ipx_network_addr_with_node(unsigned char *networkAddr, - unsigned int *ipxNetAddr, unsigned char *ipxNodeAddr) -{ - memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); - - networkAddr[0] = NAT25_IPX; - memcpy(networkAddr + 1, (unsigned char *)ipxNetAddr, 4); - memcpy(networkAddr + 5, ipxNodeAddr, 6); -} - - -static __inline__ void __nat25_generate_ipx_network_addr_with_socket(unsigned char *networkAddr, - unsigned int *ipxNetAddr, unsigned short *ipxSocketAddr) -{ - memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); - - networkAddr[0] = NAT25_IPX; - memcpy(networkAddr + 1, (unsigned char *)ipxNetAddr, 4); - memcpy(networkAddr + 5, (unsigned char *)ipxSocketAddr, 2); -} - - -static __inline__ void __nat25_generate_apple_network_addr(unsigned char *networkAddr, - unsigned short *network, unsigned char *node) -{ - memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); - - networkAddr[0] = NAT25_APPLE; - memcpy(networkAddr + 1, (unsigned char *)network, 2); - networkAddr[3] = *node; -} - - static __inline__ void __nat25_generate_pppoe_network_addr(unsigned char *networkAddr, unsigned char *ac_mac, unsigned short *sid) { @@ -329,19 +290,6 @@ static __inline__ int __nat25_network_hash(unsigned char *networkAddr) x = networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10]; - return x & (NAT25_HASH_SIZE - 1); - } else if (networkAddr[0] == NAT25_IPX) { - unsigned long x; - - x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3] ^ networkAddr[4] ^ networkAddr[5] ^ - networkAddr[6] ^ networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10]; - - return x & (NAT25_HASH_SIZE - 1); - } else if (networkAddr[0] == NAT25_APPLE) { - unsigned long x; - - x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3]; - return x & (NAT25_HASH_SIZE - 1); } else if (networkAddr[0] == NAT25_PPPOE) { unsigned long x; @@ -889,227 +837,6 @@ int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method) } } - /*---------------------------------------------------*/ - /* Handle IPX and Apple Talk frame */ - /*---------------------------------------------------*/ - else if ((protocol == __constant_htons(ETH_P_IPX)) || - (protocol == __constant_htons(ETH_P_ATALK)) || - (protocol == __constant_htons(ETH_P_AARP))) { - unsigned char ipx_header[2] = {0xFF, 0xFF}; - struct ipxhdr *ipx = NULL; - struct elapaarp *ea = NULL; - struct ddpehdr *ddp = NULL; - unsigned char *framePtr = skb->data + ETH_HLEN; - - if (protocol == __constant_htons(ETH_P_IPX)) { - RTW_INFO("NAT25: Protocol=IPX (Ethernet II)\n"); - ipx = (struct ipxhdr *)framePtr; - } else { /* if(protocol <= __constant_htons(ETH_FRAME_LEN)) */ - if (!memcmp(ipx_header, framePtr, 2)) { - RTW_INFO("NAT25: Protocol=IPX (Ethernet 802.3)\n"); - ipx = (struct ipxhdr *)framePtr; - } else { - unsigned char ipx_8022_type = 0xE0; - unsigned char snap_8022_type = 0xAA; - - if (*framePtr == snap_8022_type) { - unsigned char ipx_snap_id[5] = {0x0, 0x0, 0x0, 0x81, 0x37}; /* IPX SNAP ID */ - unsigned char aarp_snap_id[5] = {0x00, 0x00, 0x00, 0x80, 0xF3}; /* Apple Talk AARP SNAP ID */ - unsigned char ddp_snap_id[5] = {0x08, 0x00, 0x07, 0x80, 0x9B}; /* Apple Talk DDP SNAP ID */ - - framePtr += 3; /* eliminate the 802.2 header */ - - if (!memcmp(ipx_snap_id, framePtr, 5)) { - framePtr += 5; /* eliminate the SNAP header */ - - RTW_INFO("NAT25: Protocol=IPX (Ethernet SNAP)\n"); - ipx = (struct ipxhdr *)framePtr; - } else if (!memcmp(aarp_snap_id, framePtr, 5)) { - framePtr += 5; /* eliminate the SNAP header */ - - ea = (struct elapaarp *)framePtr; - } else if (!memcmp(ddp_snap_id, framePtr, 5)) { - framePtr += 5; /* eliminate the SNAP header */ - - ddp = (struct ddpehdr *)framePtr; - } else { - DEBUG_WARN("NAT25: Protocol=Ethernet SNAP %02x%02x%02x%02x%02x\n", framePtr[0], - framePtr[1], framePtr[2], framePtr[3], framePtr[4]); - return -1; - } - } else if (*framePtr == ipx_8022_type) { - framePtr += 3; /* eliminate the 802.2 header */ - - if (!memcmp(ipx_header, framePtr, 2)) { - RTW_INFO("NAT25: Protocol=IPX (Ethernet 802.2)\n"); - ipx = (struct ipxhdr *)framePtr; - } else - return -1; - } - } - } - - /* IPX */ - if (ipx != NULL) { - switch (method) { - case NAT25_CHECK: - if (!memcmp(skb->data + ETH_ALEN, ipx->ipx_source.node, ETH_ALEN)) { - RTW_INFO("NAT25: Check IPX skb_copy\n"); - return 0; - } - return -1; - - case NAT25_INSERT: { - RTW_INFO("NAT25: Insert IPX, Dest=%08x,%02x%02x%02x%02x%02x%02x,%04x Source=%08x,%02x%02x%02x%02x%02x%02x,%04x\n", - ipx->ipx_dest.net, - ipx->ipx_dest.node[0], - ipx->ipx_dest.node[1], - ipx->ipx_dest.node[2], - ipx->ipx_dest.node[3], - ipx->ipx_dest.node[4], - ipx->ipx_dest.node[5], - ipx->ipx_dest.sock, - ipx->ipx_source.net, - ipx->ipx_source.node[0], - ipx->ipx_source.node[1], - ipx->ipx_source.node[2], - ipx->ipx_source.node[3], - ipx->ipx_source.node[4], - ipx->ipx_source.node[5], - ipx->ipx_source.sock); - - if (!memcmp(skb->data + ETH_ALEN, ipx->ipx_source.node, ETH_ALEN)) { - RTW_INFO("NAT25: Use IPX Net, and Socket as network addr\n"); - - __nat25_generate_ipx_network_addr_with_socket(networkAddr, &ipx->ipx_source.net, &ipx->ipx_source.sock); - - /* change IPX source node addr to wlan STA address */ - memcpy(ipx->ipx_source.node, GET_MY_HWADDR(priv), ETH_ALEN); - } else - __nat25_generate_ipx_network_addr_with_node(networkAddr, &ipx->ipx_source.net, ipx->ipx_source.node); - - __nat25_db_network_insert(priv, skb->data + ETH_ALEN, networkAddr); - - __nat25_db_print(priv); - } - return 0; - - case NAT25_LOOKUP: { - if (!memcmp(GET_MY_HWADDR(priv), ipx->ipx_dest.node, ETH_ALEN)) { - RTW_INFO("NAT25: Lookup IPX, Modify Destination IPX Node addr\n"); - - __nat25_generate_ipx_network_addr_with_socket(networkAddr, &ipx->ipx_dest.net, &ipx->ipx_dest.sock); - - __nat25_db_network_lookup_and_replace(priv, skb, networkAddr); - - /* replace IPX destination node addr with Lookup destination MAC addr */ - memcpy(ipx->ipx_dest.node, skb->data, ETH_ALEN); - } else { - __nat25_generate_ipx_network_addr_with_node(networkAddr, &ipx->ipx_dest.net, ipx->ipx_dest.node); - - __nat25_db_network_lookup_and_replace(priv, skb, networkAddr); - } - } - return 0; - - default: - return -1; - } - } - - /* AARP */ - else if (ea != NULL) { - /* Sanity check fields. */ - if (ea->hw_len != ETH_ALEN || ea->pa_len != AARP_PA_ALEN) { - DEBUG_WARN("NAT25: Appletalk AARP Sanity check fail!\n"); - return -1; - } - - switch (method) { - case NAT25_CHECK: - return 0; - - case NAT25_INSERT: { - /* change to AARP source mac address to wlan STA address */ - memcpy(ea->hw_src, GET_MY_HWADDR(priv), ETH_ALEN); - - RTW_INFO("NAT25: Insert AARP, Source=%d,%d Destination=%d,%d\n", - ea->pa_src_net, - ea->pa_src_node, - ea->pa_dst_net, - ea->pa_dst_node); - - __nat25_generate_apple_network_addr(networkAddr, &ea->pa_src_net, &ea->pa_src_node); - - __nat25_db_network_insert(priv, skb->data + ETH_ALEN, networkAddr); - - __nat25_db_print(priv); - } - return 0; - - case NAT25_LOOKUP: { - RTW_INFO("NAT25: Lookup AARP, Source=%d,%d Destination=%d,%d\n", - ea->pa_src_net, - ea->pa_src_node, - ea->pa_dst_net, - ea->pa_dst_node); - - __nat25_generate_apple_network_addr(networkAddr, &ea->pa_dst_net, &ea->pa_dst_node); - - __nat25_db_network_lookup_and_replace(priv, skb, networkAddr); - - /* change to AARP destination mac address to Lookup result */ - memcpy(ea->hw_dst, skb->data, ETH_ALEN); - } - return 0; - - default: - return -1; - } - } - - /* DDP */ - else if (ddp != NULL) { - switch (method) { - case NAT25_CHECK: - return -1; - - case NAT25_INSERT: { - RTW_INFO("NAT25: Insert DDP, Source=%d,%d Destination=%d,%d\n", - ddp->deh_snet, - ddp->deh_snode, - ddp->deh_dnet, - ddp->deh_dnode); - - __nat25_generate_apple_network_addr(networkAddr, &ddp->deh_snet, &ddp->deh_snode); - - __nat25_db_network_insert(priv, skb->data + ETH_ALEN, networkAddr); - - __nat25_db_print(priv); - } - return 0; - - case NAT25_LOOKUP: { - RTW_INFO("NAT25: Lookup DDP, Source=%d,%d Destination=%d,%d\n", - ddp->deh_snet, - ddp->deh_snode, - ddp->deh_dnet, - ddp->deh_dnode); - - __nat25_generate_apple_network_addr(networkAddr, &ddp->deh_dnet, &ddp->deh_dnode); - - __nat25_db_network_lookup_and_replace(priv, skb, networkAddr); - } - return 0; - - default: - return -1; - } - } - - return -1; - } - /*---------------------------------------------------*/ /* Handle PPPoE frame */ /*---------------------------------------------------*/ -- 2.35.3