The USB core will currently fail to detect disconnections if a new device has attached by the time the port is examined in usb_hotplug(). Fix by recording the fact that a disconnection has taken place whenever the "connection status changed" (CSC) bit is observed to be set. (Whether the change represents a disconnection or a reconnection, it indicates that the port has experienced some time of being disconnected.) Note that the time at which a disconnection can be detected varies by hub type. In particular: root hubs can observe the CSC bit when polling, and so will record the disconnection before calling usb_port_changed(), but USB hubs read the port status (and hence the CSC bit) only during the call to hub_speed(), long after the call to usb_port_changed(). Signed-off-by: Michael Brown <mcb30@ipxe.org>tags/v1.20.1
|
|
||
1589 |
|
1589 |
|
1590 |
|
1590 |
|
1591 |
|
1591 |
|
1592 |
|
|
|
1593 |
|
|
|
1594 |
|
|
|
1595 |
|
|
|
1596 |
|
|
|
1597 |
|
|
|
|
1592 |
|
|
|
1593 |
|
|
1598 |
|
1594 |
|
1599 |
|
|
|
1600 |
|
|
|
1601 |
|
|
|
1602 |
|
|
|
|
1595 |
|
|
|
1596 |
|
|
|
1597 |
|
|
|
1598 |
|
|
|
1599 |
|
|
1603 |
|
1600 |
|
|
1601 |
|
|
|
1602 |
|
|
|
1603 |
|
|
|
1604 |
|
|
|
1605 |
|
|
1604 |
|
1606 |
|
1605 |
|
1607 |
|
1606 |
|
1608 |
|
|
|
||
1498 |
|
1498 |
|
1499 |
|
1499 |
|
1500 |
|
1500 |
|
|
1501 |
|
|
1501 |
|
1502 |
|
1502 |
|
1503 |
|
1503 |
|
1504 |
|
|
|
||
1505 |
|
1506 |
|
1506 |
|
1507 |
|
1507 |
|
1508 |
|
|
1509 |
|
|
1508 |
|
1510 |
|
1509 |
|
1511 |
|
1510 |
|
1512 |
|
|
1513 |
|
|
|
1514 |
|
|
|
1515 |
|
|
|
1516 |
|
|
1511 |
|
1517 |
|
1512 |
|
1518 |
|
1513 |
|
1519 |
|
|
|
||
1564 |
|
1570 |
|
1565 |
|
1571 |
|
1566 |
|
1572 |
|
1567 |
|
|
|
|
1573 |
|
|
|
1574 |
|
|
1568 |
|
1575 |
|
1569 |
|
1576 |
|
1570 |
|
1577 |
|
|
|
||
331 |
|
331 |
|
332 |
|
332 |
|
333 |
|
333 |
|
|
334 |
|
|
|
335 |
|
|
|
336 |
|
|
334 |
|
337 |
|
335 |
|
338 |
|
336 |
|
339 |
|
|
|
||
1532 |
|
1532 |
|
1533 |
|
1533 |
|
1534 |
|
1534 |
|
1535 |
|
|
|
|
1535 |
|
|
1536 |
|
1536 |
|
1537 |
|
1537 |
|
1538 |
|
|
|
|
1538 |
|
|
1539 |
|
1539 |
|
1540 |
|
1540 |
|
1541 |
|
1541 |
|
|
|
||
1545 |
|
1545 |
|
1546 |
|
1546 |
|
1547 |
|
1547 |
|
1548 |
|
|
|
1549 |
|
|
|
|
1548 |
|
|
|
1549 |
|
|
1550 |
|
1550 |
|
1551 |
|
|
|
1552 |
|
|
|
|
1551 |
|
|
|
1552 |
|
|
1553 |
|
1553 |
|
1554 |
|
1554 |
|
1555 |
|
1555 |
|
1556 |
|
1556 |
|
1557 |
|
|
|
1558 |
|
|
|
|
1557 |
|
|
|
1558 |
|
|
1559 |
|
1559 |
|
1560 |
|
|
|
1561 |
|
|
|
|
1560 |
|
|
|
1561 |
|
|
1562 |
|
1562 |
|
1563 |
|
1563 |
|
1564 |
|
1564 |
|
|
|
||
1567 |
|
1567 |
|
1568 |
|
1568 |
|
1569 |
|
1569 |
|
1570 |
|
|
|
1571 |
|
|
|
|
1570 |
|
|
|
1571 |
|
|
1572 |
|
1572 |
|
1573 |
|
1573 |
|
1574 |
|
|
|
|
1574 |
|
|
1575 |
|
1575 |
|
1576 |
|
|
|
|
1576 |
|
|
1577 |
|
1577 |
|
1578 |
|
|
|
|
1578 |
|
|
1579 |
|
1579 |
|
1580 |
|
1580 |
|
1581 |
|
1581 |
|
|
|
||
1587 |
|
1587 |
|
1588 |
|
1588 |
|
1589 |
|
1589 |
|
1590 |
|
|
|
|
1590 |
|
|
1591 |
|
1591 |
|
1592 |
|
1592 |
|
1593 |
|
1593 |
|
1594 |
|
|
|
|
1594 |
|
|
1595 |
|
1595 |
|
1596 |
|
1596 |
|
1597 |
|
1597 |
|
|
|
||
1602 |
|
1602 |
|
1603 |
|
1603 |
|
1604 |
|
1604 |
|
1605 |
|
|
|
|
1605 |
|
|
1606 |
|
1606 |
|
1607 |
|
1607 |
|
1608 |
|
|
|
|
1608 |
|
|
1609 |
|
1609 |
|
1610 |
|
1610 |
|
1611 |
|
1611 |
|
1612 |
|
|
|
|
1612 |
|
|
1613 |
|
1613 |
|
1614 |
|
1614 |
|
1615 |
|
1615 |
|
1616 |
|
1616 |
|
1617 |
|
1617 |
|
1618 |
|
1618 |
|
1619 |
|
|
|
|
1619 |
|
|
1620 |
|
1620 |
|
1621 |
|
|
|
1622 |
|
|
|
|
1621 |
|
|
|
1622 |
|
|
1623 |
|
1623 |
|
1624 |
|
1624 |
|
1625 |
|
1625 |
|
|
|
||
1628 |
|
1628 |
|
1629 |
|
1629 |
|
1630 |
|
1630 |
|
1631 |
|
|
|
|
1631 |
|
|
1632 |
|
1632 |
|
1633 |
|
1633 |
|
1634 |
|
|
|
|
1634 |
|
|
1635 |
|
1635 |
|
1636 |
|
1636 |
|
1637 |
|
1637 |
|
|
|
||
1639 |
|
1639 |
|
1640 |
|
1640 |
|
1641 |
|
1641 |
|
1642 |
|
|
|
|
1642 |
|
|
1643 |
|
1643 |
|
1644 |
|
1644 |
|
1645 |
|
|
|
|
1645 |
|
|
|
1646 |
|
|
1646 |
|
1647 |
|
1647 |
|
1648 |
|
1648 |
|
1649 |
|
1649 |
|
|
|
|
1650 |
|
|
1650 |
|
1651 |
|
1651 |
|
|
|
1652 |
|
|
|
|
1652 |
|
|
|
1653 |
|
|
|
1654 |
|
|
1653 |
|
1655 |
|
1654 |
|
|
|
|
1656 |
|
|
1655 |
|
1657 |
|
1656 |
|
1658 |
|
1657 |
|
|
|
|
1659 |
|
|
1658 |
|
1660 |
|
1659 |
|
1661 |
|
1660 |
|
1662 |
|
1661 |
|
1663 |
|
1662 |
|
1664 |
|
1663 |
|
1665 |
|
1664 |
|
|
|
|
1666 |
|
|
1665 |
|
1667 |
|
1666 |
|
1668 |
|
1667 |
|
|
|
|
1669 |
|
|
1668 |
|
1670 |
|
1669 |
|
1671 |
|
1670 |
|
1672 |
|
1671 |
|
|
|
|
1673 |
|
|
1672 |
|
1674 |
|
1673 |
|
|
|
|
1675 |
|
|
1674 |
|
1676 |
|
1675 |
|
1677 |
|
1676 |
|
1678 |
|
|
|
||
3014 |
|
3016 |
|
3015 |
|
3017 |
|
3016 |
|
3018 |
|
|
3019 |
|
|
3017 |
|
3020 |
|
3018 |
|
3021 |
|
3019 |
|
3022 |
|
|
|
||
3021 |
|
3024 |
|
3022 |
|
3025 |
|
3023 |
|
3026 |
|
3024 |
|
|
|
3025 |
|
|
|
3026 |
|
3027 |
|
|
3028 |
|
|
|
3029 |
|
|
|
3030 |
|
|
|
3031 |
|
|
|
3032 |
|
|
|
3033 |
|
|
|
3034 |
|
|
|
3035 |
|
|
|
3036 |
|
|
|
3037 |
|
|
3027 |
|
3038 |
|
3028 |
|
3039 |
|
3029 |
|
3040 |
|
|
|
||
3032 |
|
3043 |
|
3033 |
|
3044 |
|
3034 |
|
3045 |
|
3035 |
|
|
|
3036 |
|
3046 |
|
3037 |
|
3047 |
|
3038 |
|
3048 |
|
3039 |
|
3049 |
|
3040 |
|
3050 |
|
3041 |
|
3051 |
|
3042 |
|
|
|
3043 |
|
3052 |
|
3044 |
|
3053 |
|
3045 |
|
3054 |
|
|
|
||
747 |
|
747 |
|
748 |
|
748 |
|
749 |
|
749 |
|
|
750 |
|
|
|
751 |
|
|
|
752 |
|
|
|
753 |
|
|
|
754 |
|
|
|
755 |
|
|
750 |
|
756 |
|
751 |
|
757 |
|
752 |
|
758 |
|