Lines Matching refs:weth
118 static int wet_eth_proc(dhd_wet_info_t *weth, void *sdu,
120 static int wet_vtag_proc(dhd_wet_info_t *weth, void *sdu,
122 static int wet_ip_proc(dhd_wet_info_t *weth, void *sdu,
124 static int wet_arp_proc(dhd_wet_info_t *weth, void *sdu,
126 static int wet_udp_proc(dhd_wet_info_t *weth,
128 static int wet_dhcpc_proc(dhd_wet_info_t *weth,
130 static int wet_dhcps_proc(dhd_wet_info_t *weth,
132 static int wet_sta_alloc(dhd_wet_info_t *weth, wet_sta_t **saddr);
133 static int wet_sta_update_all(dhd_wet_info_t *weth,
135 static int wet_sta_update_mac(dhd_wet_info_t *weth,
137 static int wet_sta_remove_mac_entry(dhd_wet_info_t *weth, struct ether_addr *eaddr);
138 static int wet_sta_find_ip(dhd_wet_info_t *weth,
140 static int wet_sta_find_mac(dhd_wet_info_t *weth,
149 typedef int (*prot_proc_t)(dhd_wet_info_t *weth, void *sdu, uint8 *eh,
178 typedef int (*ipv4_proc_t)(dhd_wet_info_t *weth, uint8 *eh,
198 typedef int (*udp_proc_t)(dhd_wet_info_t *weth, uint8 *eh,
220 #define WETHWADDR(weth) ((weth)->pub->mac.octet) argument
221 #define WETOSH(weth) ((weth)->pub->osh) argument
274 BCMFASTPATH(wet_eth_proc)(dhd_wet_info_t *weth, void *sdu, uint8 *frame, int length, int send) in BCMFASTPATH()
307 return (phdlr->prot_proc)(weth, sdu, frame, ph, length, send); in BCMFASTPATH()
310 if (!bcmp(WETHWADDR(weth), frame + ETHER_SRC_OFFSET, ETHER_ADDR_LEN)) { in BCMFASTPATH()
330 BCMFASTPATH(wet_vtag_proc)(dhd_wet_info_t *weth, void *sdu, in BCMFASTPATH()
356 return (phdlr->prot_proc)(weth, sdu, eh, in BCMFASTPATH()
371 BCMFASTPATH(wet_ip_proc)(dhd_wet_info_t *weth, void *sdu, in BCMFASTPATH()
406 if ((ret = (iphdlr->ipv4_proc)(weth, eh, in BCMFASTPATH()
431 if (wet_table_upd && wet_sta_update_all(weth, iaddr, in BCMFASTPATH()
439 ea = (struct ether_addr *)WETHWADDR(weth); in BCMFASTPATH()
450 if (wet_sta_find_ip(weth, iaddr, &sta) < 0) { in BCMFASTPATH()
471 BCMFASTPATH(wet_arp_proc)(dhd_wet_info_t *weth, void *sdu, in BCMFASTPATH()
490 if (wet_sta_update_all(weth, iaddr, in BCMFASTPATH()
498 bcopy(WETHWADDR(weth), eh + ETHER_SRC_OFFSET, ETHER_ADDR_LEN); in BCMFASTPATH()
499 bcopy(WETHWADDR(weth), arph+ARP_SRC_ETH_OFFSET, ETHER_ADDR_LEN); in BCMFASTPATH()
510 if (wet_sta_find_ip(weth, iaddr, &sta) < 0) { in BCMFASTPATH()
530 BCMFASTPATH(wet_udp_proc)(dhd_wet_info_t *weth, in BCMFASTPATH()
553 return (udphdlr->udp_proc)(weth, eh, iph, udph, in BCMFASTPATH()
607 BCMFASTPATH(wet_dhcpc_proc)(dhd_wet_info_t *weth, in BCMFASTPATH()
633 if (wet_sta_update_mac(weth, in BCMFASTPATH()
642 if (!ETHER_ISNULLADDR(weth->mac.octet) && in BCMFASTPATH()
643 !bcmp(dhcp + DHCP_CHADDR_OFFSET, &weth->mac, ETHER_ADDR_LEN)) { in BCMFASTPATH()
647 WETHWADDR(weth), ETHER_ADDR_LEN); in BCMFASTPATH()
648 bcopy(WETHWADDR(weth), dhcp + DHCP_CHADDR_OFFSET, ETHER_ADDR_LEN); in BCMFASTPATH()
653 else if (!IPV4_ADDR_NULL(weth->ip)) { in BCMFASTPATH()
662 weth->ip, IPV4_ADDR_LEN); in BCMFASTPATH()
663 bcopy(weth->ip, dhcp + DHCP_GIADDR_OFFSET, IPV4_ADDR_LEN); in BCMFASTPATH()
685 bcopy(WETHWADDR(weth), eh + ETHER_SRC_OFFSET, ETHER_ADDR_LEN); in BCMFASTPATH()
688 else if (!IPV4_ADDR_NULL(weth->ip) && in BCMFASTPATH()
689 !bcmp(dhcp + DHCP_GIADDR_OFFSET, weth->ip, IPV4_ADDR_LEN)) { in BCMFASTPATH()
691 if (wet_sta_find_mac(weth, in BCMFASTPATH()
756 BCMFASTPATH(wet_dhcps_proc)(dhd_wet_info_t *weth, in BCMFASTPATH()
773 if (wet_sta_find_mac(weth, (struct ether_addr*)(dhcp + DHCP_CHADDR_OFFSET), &sta) < 0) { in BCMFASTPATH()
779 if (!ETHER_ISNULLADDR(weth->mac.octet) && in BCMFASTPATH()
780 !bcmp(dhcp + DHCP_CHADDR_OFFSET, WETHWADDR(weth), ETHER_ADDR_LEN)) { in BCMFASTPATH()
783 weth->mac.octet, ETHER_ADDR_LEN); in BCMFASTPATH()
784 bcopy(&weth->mac, dhcp + DHCP_CHADDR_OFFSET, ETHER_ADDR_LEN); in BCMFASTPATH()
807 wet_sta_alloc(dhd_wet_info_t *weth, wet_sta_t **saddr) in wet_sta_alloc() argument
812 if (!weth->stafree) { in wet_sta_alloc()
816 sta = weth->stafree; in wet_sta_alloc()
817 weth->stafree = sta->next; in wet_sta_alloc()
832 BCMFASTPATH(wet_sta_update_all)(dhd_wet_info_t *weth, uint8 *iaddr, struct ether_addr *eaddr, in BCMFASTPATH()
841 if (!wet_sta_find_mac(weth, eaddr, &sta)) { in BCMFASTPATH()
845 for (next = &weth->stahash_ip[i], sta2 = *next; in BCMFASTPATH()
859 else if (!wet_sta_alloc(weth, &sta)) { in BCMFASTPATH()
862 sta->next_mac = weth->stahash_mac[i]; in BCMFASTPATH()
863 weth->stahash_mac[i] = sta; in BCMFASTPATH()
878 sta->next_ip = weth->stahash_ip[i]; in BCMFASTPATH()
879 weth->stahash_ip[i] = sta; in BCMFASTPATH()
895 wet_sta_remove_mac_entry(weth, &sta2->mac); in BCMFASTPATH()
900 sta2->next = weth->stafree; in BCMFASTPATH()
901 weth->stafree = sta2; in BCMFASTPATH()
916 BCMFASTPATH(wet_sta_update_mac)(dhd_wet_info_t *weth, struct ether_addr *eaddr, wet_sta_t **saddr) in BCMFASTPATH()
924 if (!wet_sta_find_mac(weth, eaddr, &sta)) in BCMFASTPATH()
927 else if (!wet_sta_alloc(weth, &sta)) { in BCMFASTPATH()
930 sta->next_mac = weth->stahash_mac[i]; in BCMFASTPATH()
931 weth->stahash_mac[i] = sta; in BCMFASTPATH()
951 BCMFASTPATH(wet_sta_remove_mac_entry)(dhd_wet_info_t *weth, struct ether_addr *eaddr) in BCMFASTPATH()
960 for (sta = prev = weth->stahash_mac[i]; sta; sta = sta->next_mac) { in BCMFASTPATH()
977 weth->stahash_mac[i] = sta->next_mac; /* removing first entry in this bucket */ in BCMFASTPATH()
988 BCMFASTPATH(wet_sta_find_ip)(dhd_wet_info_t *weth, uint8 *iaddr, wet_sta_t **saddr) in BCMFASTPATH()
994 for (sta = weth->stahash_ip[i]; sta; sta = sta->next_ip) { in BCMFASTPATH()
1011 BCMFASTPATH(wet_sta_find_mac)(dhd_wet_info_t *weth, struct ether_addr *eaddr, wet_sta_t **saddr) in BCMFASTPATH()
1019 for (sta = weth->stahash_mac[i]; sta; sta = sta->next_mac) { in BCMFASTPATH()
1083 dhd_wet_info_t *weth = (dhd_wet_info_t *)wet; in BCMFASTPATH() local
1084 uint8 *frame = PKTDATA(WETOSH(weth), sdu); in BCMFASTPATH()
1085 int length = PKTLEN(WETOSH(weth), sdu); in BCMFASTPATH()
1102 length = pkttotlen(WETOSH(weth), sdu); in BCMFASTPATH()
1103 if (!(pkt = PKTGET(WETOSH(weth), length, TRUE))) { in BCMFASTPATH()
1107 frame = PKTDATA(WETOSH(weth), pkt); in BCMFASTPATH()
1108 pktcopy(WETOSH(weth), sdu, 0, length, frame); in BCMFASTPATH()
1111 PKTFREE(WETOSH(weth), sdu, TRUE); in BCMFASTPATH()
1112 PKTSETLEN(WETOSH(weth), pkt, length); in BCMFASTPATH()
1117 return wet_eth_proc(weth, sdu, frame, length, 1) < 0 ? -1 : 0; in BCMFASTPATH()
1130 dhd_wet_info_t *weth = (dhd_wet_info_t *)wet; in BCMFASTPATH() local
1132 return wet_eth_proc(weth, sdu, PKTDATA(WETOSH(weth), sdu), in BCMFASTPATH()
1133 PKTLEN(WETOSH(weth), sdu), 0) < 0 ? -1 : 0; in BCMFASTPATH()
1142 dhd_wet_info_t *weth = dhd_pub->wet_info; in dhd_wet_sta_delete_list() local
1145 for (sta = weth->stahash_mac[i]; sta; sta = sta->next_mac) { in dhd_wet_sta_delete_list()
1148 for (next = &weth->stahash_ip[j], sta2 = *next; in dhd_wet_sta_delete_list()
1160 wet_sta_remove_mac_entry(weth, &sta->mac); in dhd_wet_sta_delete_list()
1171 dhd_wet_info_t *weth = dhdp->wet_info; in dhd_wet_dump() local
1173 bcm_bprintf(b, "Host MAC: %s\n", bcm_ether_ntoa(&weth->mac, eabuf)); in dhd_wet_dump()
1175 weth->ip[0], weth->ip[1], weth->ip[2], weth->ip[3]); in dhd_wet_dump()
1179 if (weth->sta[i].next) in dhd_wet_dump()
1182 sta = &weth->sta[i]; in dhd_wet_dump()