Lines Matching defs:ec

647 	struct ethercom *ec = (struct ethercom *) ifp;
665 m_claimm(m, &ec->ec_rx_mowner);
791 if (ec->ec_nvlans > 0) {
1041 struct ethercom *ec = (struct ethercom *)ifp;
1054 if (ec->ec_capabilities & ETHERCAP_VLAN_HWTAGGING)
1062 LIST_INIT(&ec->ec_multiaddrs);
1063 SIMPLEQ_INIT(&ec->ec_vids);
1064 ec->ec_lock = mutex_obj_alloc(MUTEX_DEFAULT, IPL_NET);
1065 ec->ec_flags = 0;
1070 ec->ec_ifdetach_hooks = simplehook_create(IPL_NET, xnamebuf);
1072 mowner_init_owner(&ec->ec_tx_mowner, ifp->if_xname, "tx");
1073 mowner_init_owner(&ec->ec_rx_mowner, ifp->if_xname, "rx");
1074 MOWNER_ATTACH(&ec->ec_tx_mowner);
1075 MOWNER_ATTACH(&ec->ec_rx_mowner);
1076 ifp->if_mowner = &ec->ec_tx_mowner;
1083 struct ethercom *ec = (void *) ifp;
1097 simplehook_dohooks(ec->ec_ifdetach_hooks);
1098 KASSERT(!simplehook_has_hooks(ec->ec_ifdetach_hooks));
1099 simplehook_destroy(ec->ec_ifdetach_hooks);
1103 ETHER_LOCK(ec);
1104 KASSERT(ec->ec_nvlans == 0);
1105 while ((enm = LIST_FIRST(&ec->ec_multiaddrs)) != NULL) {
1108 ec->ec_multicnt--;
1110 ETHER_UNLOCK(ec);
1112 mutex_obj_free(ec->ec_lock);
1113 ec->ec_lock = NULL;
1116 MOWNER_DETACH(&ec->ec_rx_mowner);
1117 MOWNER_DETACH(&ec->ec_tx_mowner);
1124 struct ethercom *ec;
1130 ec = (struct ethercom *)ifp;
1131 hk = simplehook_establish(ec->ec_ifdetach_hooks,
1141 struct ethercom *ec;
1146 ec = (struct ethercom *)ifp;
1147 simplehook_disestablish(ec->ec_ifdetach_hooks, vhook, lock);
1349 ether_addmulti(const struct sockaddr *sa, struct ethercom *ec)
1359 ETHER_LOCK(ec);
1375 _enm = ether_lookup_multi(addrlo, addrhi, ec);
1391 LIST_INSERT_HEAD(&ec->ec_multiaddrs, enm, enm_list);
1392 ec->ec_multicnt++;
1402 ETHER_UNLOCK(ec);
1412 ether_delmulti(const struct sockaddr *sa, struct ethercom *ec)
1419 ETHER_LOCK(ec);
1427 enm = ether_lookup_multi(addrlo, addrhi, ec);
1444 ec->ec_multicnt--;
1445 ETHER_UNLOCK(ec);
1455 ETHER_UNLOCK(ec);
1460 ether_set_ifflags_cb(struct ethercom *ec, ether_cb_t cb)
1462 ec->ec_ifflags_cb = cb;
1466 ether_set_vlan_cb(struct ethercom *ec, ether_vlancb_t cb)
1469 ec->ec_vlan_cb = cb;
1473 ether_ioctl_reinit(struct ethercom *ec)
1475 struct ifnet *ifp = &ec->ec_if;
1496 if (ec->ec_ifflags_cb != NULL) {
1497 error = (*ec->ec_ifflags_cb)(ec);
1523 struct ethercom *ec = (void *)ifp;
1553 if (ec->ec_capabilities & ETHERCAP_JUMBO_MTU)
1572 return ether_ioctl_reinit(ec);
1577 ifr->ifr_flags |= (ec->ec_flags & ETHER_F_ALLMULTI) ?
1583 eccr->eccr_capabilities = ec->ec_capabilities;
1584 eccr->eccr_capenable = ec->ec_capenable;
1588 if ((eccr->eccr_capenable & ~ec->ec_capabilities) != 0)
1590 if (eccr->eccr_capenable == ec->ec_capenable)
1593 ec->ec_capenable = (ec->ec_capenable & ETHERCAP_CANTCHANGE)
1596 ec->ec_capenable = eccr->eccr_capenable;
1598 return ether_ioctl_reinit(ec);
1600 return ether_addmulti(ifreq_getaddr(cmd, ifr), ec);
1602 return ether_delmulti(ifreq_getaddr(cmd, ifr), ec);
1605 if (ec->ec_mii != NULL)
1606 return ifmedia_ioctl(ifp, ifr, &ec->ec_mii->mii_media,
1608 else if (ec->ec_ifmedia != NULL)
1609 return ifmedia_ioctl(ifp, ifr, ec->ec_ifmedia, cmd);
1639 struct ethercom *ec = (void *)ifp;
1642 if ((ec->ec_capabilities & ETHERCAP_VLAN_MTU) == 0)
1650 ec->ec_capenable |= ETHERCAP_VLAN_MTU;
1659 ec->ec_capenable &= ~ETHERCAP_VLAN_MTU;
1667 struct ethercom *ec = (void *)ifp;
1670 if (ec->ec_nvlans != 0)
1674 if ((ec->ec_capenable & ETHERCAP_VLAN_MTU) == 0)
1680 ec->ec_capenable &= ~ETHERCAP_VLAN_MTU;
1689 ec->ec_capenable |= ETHERCAP_VLAN_MTU;
1699 struct ethercom *ec = (void *)ifp;
1711 ETHER_LOCK(ec);
1712 ec->ec_nvlans++;
1713 SIMPLEQ_INSERT_TAIL(&ec->ec_vids, vidp, vid_list);
1714 ETHER_UNLOCK(ec);
1716 if (ec->ec_nvlans == 1) {
1728 if (ec->ec_vlan_cb != NULL) {
1729 error = (*ec->ec_vlan_cb)(ec, vid, true);
1739 ETHER_LOCK(ec);
1740 ec->ec_nvlans--;
1741 SIMPLEQ_REMOVE(&ec->ec_vids, vidp, vlanid_list, vid_list);
1742 ETHER_UNLOCK(ec);
1758 struct ethercom *ec = (void *)ifp;
1762 ETHER_LOCK(ec);
1763 SIMPLEQ_FOREACH(vidp, &ec->ec_vids, vid_list) {
1765 SIMPLEQ_REMOVE(&ec->ec_vids, vidp,
1767 ec->ec_nvlans--;
1771 ETHER_UNLOCK(ec);
1776 if (ec->ec_vlan_cb != NULL) {
1777 (void)(*ec->ec_vlan_cb)(ec, vidp->vid, false);
1780 if (ec->ec_nvlans == 0) {
1898 struct ethercom *ec;
1921 ec = (struct ethercom *)ifp;
1925 *oldlenp = ec->ec_multicnt * sizeof(*addrs);
1930 * ec->ec_lock is a spin mutex so we cannot call sysctl_copyout, which
1935 multicnt = ec->ec_multicnt;
1945 ETHER_LOCK(ec);
1946 if (multicnt != ec->ec_multicnt) {
1948 ETHER_UNLOCK(ec);
1954 LIST_FOREACH(enm, &ec->ec_multiaddrs, enm_list) {
1961 ETHER_UNLOCK(ec);