Lastly, once the controller is ready to handle network traffic, you call
phy_start(phydev). This tells the PAL that you are ready, and configures the
- PHY to connect to the network. If you want to handle your own interrupts,
- just set phydev->irq to PHY_IGNORE_INTERRUPT before you call phy_start.
- Similarly, if you don't want to use interrupts, set phydev->irq to PHY_POLL.
+ PHY to connect to the network. If the MAC interrupt of your network driver
+ also handles PHY status changes, just set phydev->irq to PHY_IGNORE_INTERRUPT
+ before you call phy_start and use phy_mac_interrupt() from the network
+ driver. If you don't want to use interrupts, set phydev->irq to PHY_POLL.
+ phy_start() enables the PHY interrupts (if applicable) and starts the
+ phylib state machine.
When you want to disconnect from the network (even if just briefly), you call
- phy_stop(phydev).
+ phy_stop(phydev). This function also stops the phylib state machine and
+ disables PHY interrupts.
Pause frames / flow control
A convenience function to print out the PHY status neatly.
- int phy_start_interrupts(struct phy_device *phydev);
- int phy_stop_interrupts(struct phy_device *phydev);
+ void phy_request_interrupt(struct phy_device *phydev);
- Requests the IRQ for the PHY interrupts, then enables them for
- start, or disables then frees them for stop.
+ Requests the IRQ for the PHY interrupts.
struct phy_device * phy_attach(struct net_device *dev, const char *phy_id,
phy_interface_t interface);