diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2014-08-16 14:08:04 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2014-08-16 14:08:04 -0600 |
commit | b5984a1d75fd6c01103008c82a8235b0d5a39483 (patch) | |
tree | 141eac09cfd1f45e4b629068ec1e7dbcbc0ebcc7 /nuttx/include/net | |
parent | d0aff5ef2704e0687b0ae387cdd239018607a85c (diff) | |
download | px4-nuttx-b5984a1d75fd6c01103008c82a8235b0d5a39483.tar.gz px4-nuttx-b5984a1d75fd6c01103008c82a8235b0d5a39483.tar.bz2 px4-nuttx-b5984a1d75fd6c01103008c82a8235b0d5a39483.zip |
Finishes the ioctl definition to subscribe to PHY events. Revamp network ioctl signature to support arguments other than struct mii_ioctl_data.
Diffstat (limited to 'nuttx/include/net')
-rw-r--r-- | nuttx/include/net/if.h | 135 |
1 files changed, 74 insertions, 61 deletions
diff --git a/nuttx/include/net/if.h b/nuttx/include/net/if.h index bad4a2124..c9ffc0709 100644 --- a/nuttx/include/net/if.h +++ b/nuttx/include/net/if.h @@ -61,11 +61,22 @@ * Public Type Definitions *******************************************************************************************/ -/* Part of the I/F request used to read from or write to the MII/PHY management - * interface when SIOCxMIIREG ioctl was called. +/* Structure passed with the SIOCMIINOTIFY ioctl command to enable notification of + * of PHY state changes. */ -struct mii_ioctl_data +struct mii_iotcl_notify_s +{ + pid_t pid; /* PID of the task to receive the signal. Zero means "this task" */ + uint8_t signo; /* Signal number to use when signalling */ + FAR void *arg; /* An argument that will accompany the signal callback */ +}; + +/* Structure passed to read from or write to the MII/PHY management interface via the + * SIOCxMIIREG ioctl commands. + */ + +struct mii_ioctl_data_s { uint16_t phy_id; /* PHY device address */ uint16_t reg_num; /* PHY register address */ @@ -79,33 +90,34 @@ struct mii_ioctl_data struct lifreq { - char lifr_name[IFNAMSIZ]; /* Network device name (e.g. "eth0") */ + char lifr_name[IFNAMSIZ]; /* Network device name (e.g. "eth0") */ union { - struct sockaddr_storage lifru_addr; /* IP Address */ - struct sockaddr_storage lifru_dstaddr; /* P-to-P Address */ - struct sockaddr_storage lifru_broadaddr; /* Broadcast address */ - struct sockaddr_storage lifru_netmask; /* Netmask */ - struct sockaddr lifru_hwaddr; /* MAC address */ - int lifru_count; /* Number of devices */ - int lifru_mtu; /* MTU size */ - uint8_t lifru_flags; /* Interface flags */ - struct mii_ioctl_data lifru_mii_data; /* MII request data */ + struct sockaddr_storage lifru_addr; /* IP Address */ + struct sockaddr_storage lifru_dstaddr; /* P-to-P Address */ + struct sockaddr_storage lifru_broadaddr; /* Broadcast address */ + struct sockaddr_storage lifru_netmask; /* Netmask */ + struct sockaddr lifru_hwaddr; /* MAC address */ + int lifru_count; /* Number of devices */ + int lifru_mtu; /* MTU size */ + uint8_t lifru_flags; /* Interface flags */ + struct mii_iotcl_notify_s llfru_mii_notify; /* PHY event notification */ + struct mii_ioctl_data_s lifru_mii_data; /* MII request data */ } lifr_ifru; }; -#define lifr_addr lifr_ifru.lifru_addr /* IP address */ -#define lifr_dstaddr lifr_ifru.lifru_dstaddr /* P-to-P Address */ -#define lifr_broadaddr lifr_ifru.lifru_broadaddr /* Broadcast address */ -#define lifr_netmask lifr_ifru.lifru_netmask /* Interface net mask */ -#define lifr_hwaddr lifr_ifru.lifru_hwaddr /* MAC address */ -#define lifr_mtu lifr_ifru.lifru_mtu /* MTU */ -#define lifr_count lifr_ifru.lifru_count /* Number of devices */ -#define lifr_flags lifr_ifru.lifru_flags /* interface flags */ -#define lifr_mii_phy_id lifr_ifru.lifru_mii_data.phy_id /* PHY device address */ -#define lifr_mii_reg_num lifr_ifru.lifru_mii_data.reg_num /* PHY register address */ -#define lifr_mii_val_in lifr_ifru.lifru_mii_data.val_in /* PHY input data */ -#define lifr_mii_val_out lifr_ifru.lifru_mii_data.val_out /* PHY output data */ +#define lifr_addr lifr_ifru.lifru_addr /* IP address */ +#define lifr_dstaddr lifr_ifru.lifru_dstaddr /* P-to-P Address */ +#define lifr_broadaddr lifr_ifru.lifru_broadaddr /* Broadcast address */ +#define lifr_netmask lifr_ifru.lifru_netmask /* Interface net mask */ +#define lifr_hwaddr lifr_ifru.lifru_hwaddr /* MAC address */ +#define lifr_mtu lifr_ifru.lifru_mtu /* MTU */ +#define lifr_count lifr_ifru.lifru_count /* Number of devices */ +#define lifr_flags lifr_ifru.lifru_flags /* interface flags */ +#define lifr_mii_phy_id lifr_ifru.lifru_mii_data.phy_id /* PHY device address */ +#define lifr_mii_reg_num lifr_ifru.lifru_mii_data.reg_num /* PHY register address */ +#define lifr_mii_val_in lifr_ifru.lifru_mii_data.val_in /* PHY input data */ +#define lifr_mii_val_out lifr_ifru.lifru_mii_data.val_out /* PHY output data */ /* This is the older I/F request that should only be used with IPv4. However, since * NuttX only supports IPv4 or 6 (not both), we can force the older structure to @@ -115,50 +127,51 @@ struct lifreq #ifndef CONFIG_NET_IPv6 struct ifreq { - char ifr_name[IFNAMSIZ]; /* Network device name (e.g. "eth0") */ + char ifr_name[IFNAMSIZ]; /* Network device name (e.g. "eth0") */ union { - struct sockaddr ifru_addr; /* IP Address */ - struct sockaddr ifru_dstaddr; /* P-to-P Address */ - struct sockaddr ifru_broadaddr; /* Broadcast address */ - struct sockaddr ifru_netmask; /* Netmask */ - struct sockaddr ifru_hwaddr; /* MAC address */ - int ifru_count; /* Number of devices */ - int ifru_mtu; /* MTU size */ - uint8_t ifru_flags; /* Interface flags */ - struct mii_ioctl_data ifru_mii_data; /* MII request data */ + struct sockaddr ifru_addr; /* IP Address */ + struct sockaddr ifru_dstaddr; /* P-to-P Address */ + struct sockaddr ifru_broadaddr; /* Broadcast address */ + struct sockaddr ifru_netmask; /* Netmask */ + struct sockaddr ifru_hwaddr; /* MAC address */ + int ifru_count; /* Number of devices */ + int ifru_mtu; /* MTU size */ + uint8_t ifru_flags; /* Interface flags */ + struct mii_iotcl_notify_s llfru_mii_notify; /* PHY event notification */ + struct mii_ioctl_data_s ifru_mii_data; /* MII request data */ } ifr_ifru; }; -#define ifr_addr ifr_ifru.ifru_addr /* IP address */ -#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* P-to-P Address */ -#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* Broadcast address */ -#define ifr_netmask ifr_ifru.ifru_netmask /* Interface net mask */ -#define ifr_hwaddr ifr_ifru.ifru_hwaddr /* MAC address */ -#define ifr_mtu ifr_ifru.ifru_mtu /* MTU */ -#define ifr_count ifr_ifru.ifru_count /* Number of devices */ -#define ifr_flags ifr_ifru.ifru_flags /* interface flags */ -#define ifr_mii_phy_id ifr_ifru.ifru_mii_data.phy_id /* PHY device address */ -#define ifr_mii_reg_num ifr_ifru.ifru_mii_data.reg_num /* PHY register address */ -#define ifr_mii_val_in ifr_ifru.ifru_mii_data.val_in /* PHY input data */ -#define ifr_mii_val_out ifr_ifru.ifru_mii_data.val_out /* PHY output data */ +#define ifr_addr ifr_ifru.ifru_addr /* IP address */ +#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* P-to-P Address */ +#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* Broadcast address */ +#define ifr_netmask ifr_ifru.ifru_netmask /* Interface net mask */ +#define ifr_hwaddr ifr_ifru.ifru_hwaddr /* MAC address */ +#define ifr_mtu ifr_ifru.ifru_mtu /* MTU */ +#define ifr_count ifr_ifru.ifru_count /* Number of devices */ +#define ifr_flags ifr_ifru.ifru_flags /* interface flags */ +#define ifr_mii_phy_id ifr_ifru.ifru_mii_data.phy_id /* PHY device address */ +#define ifr_mii_reg_num ifr_ifru.ifru_mii_data.reg_num /* PHY register address */ +#define ifr_mii_val_in ifr_ifru.ifru_mii_data.val_in /* PHY input data */ +#define ifr_mii_val_out ifr_ifru.ifru_mii_data.val_out /* PHY output data */ #else /* CONFIG_NET_IPv6 */ -#define ifreq lifreq /* Replace ifreq with lifreq */ -#define ifr_name lifr_name /* Network device name */ -#define ifr_addr lifr_ifru.lifru_addr /* IP address */ -#define ifr_dstaddr lifr_ifru.lifru_dstaddr /* P-to-P Address */ -#define ifr_broadaddr lifr_ifru.lifru_broadaddr /* Broadcast address */ -#define ifr_netmask lifr_ifru.lifru_netmask /* Interface net mask */ -#define ifr_hwaddr lifr_ifru.lifru_hwaddr /* MAC address */ -#define ifr_mtu lifr_ifru.lifru_mtu /* MTU */ -#define ifr_count lifr_ifru.lifru_count /* Number of devices */ -#define ifr_flags lifr_ifru.lifru_flags /* interface flags */ -#define ifr_mii_phy_id lifr_ifru.lifru_mii_data.phy_id /* PHY device address */ -#define ifr_mii_reg_num lifr_ifru.lifru_mii_data.reg_num /* PHY register address */ -#define ifr_mii_val_in lifr_ifru.lifru_mii_data.val_in /* PHY input data */ -#define ifr_mii_val_out lifr_ifru.lifru_mii_data.val_out /* PHY output data */ +#define ifreq lifreq /* Replace ifreq with lifreq */ +#define ifr_name lifr_name /* Network device name */ +#define ifr_addr lifr_ifru.lifru_addr /* IP address */ +#define ifr_dstaddr lifr_ifru.lifru_dstaddr /* P-to-P Address */ +#define ifr_broadaddr lifr_ifru.lifru_broadaddr /* Broadcast address */ +#define ifr_netmask lifr_ifru.lifru_netmask /* Interface net mask */ +#define ifr_hwaddr lifr_ifru.lifru_hwaddr /* MAC address */ +#define ifr_mtu lifr_ifru.lifru_mtu /* MTU */ +#define ifr_count lifr_ifru.lifru_count /* Number of devices */ +#define ifr_flags lifr_ifru.lifru_flags /* interface flags */ +#define ifr_mii_phy_id lifr_ifru.lifru_mii_data.phy_id /* PHY device address */ +#define ifr_mii_reg_num lifr_ifru.lifru_mii_data.reg_num /* PHY register address */ +#define ifr_mii_val_in lifr_ifru.lifru_mii_data.val_in /* PHY input data */ +#define ifr_mii_val_out lifr_ifru.lifru_mii_data.val_out /* PHY output data */ #endif /* CONFIG_NET_IPv6 */ |