RFC 3635 helps also here to define properties of an Ethernet-like interface. It's not so as crucial to follow RFC terms and definitions here as it's with counters, but we can use it as a guide line. Addresses and promisc mode are classification issues. Name and pktio status (stopped / started) ( == ifAdminStatus) are pktio level data.
typedef struct odp_pktio_link_state_t { uint8_t type; // 0: Ethernet (or enum ODP_PKTIO_ETHERNET), ... uint8_t status; // 1: link up, 0: down, -1 not_present (== ifOperStatus ) uint8_t autoneg; // 1: autoneg on, 0: off, -1: not supported uint8_t duplex; // 1: full duplex, 0: half duplex uint32_t speed_mbps; // Speed in Mbps. This leaves room for // speed_bps which would support odd (Mbps) link speeds uint32_t mtu; // MTU in bytes } odp_pktio_link_state_t; Better to use int (uint8_t) than bool to enable extendable status definitions. E.g. ifOperStatus == not_present means that some HW component is missing, rather than user have configured link down. -Petri > -----Original Message----- > From: lng-odp [mailto:lng-odp-boun...@lists.linaro.org] On Behalf Of EXT > Maxim Uvarov > Sent: Tuesday, October 13, 2015 3:39 PM > To: lng-odp@lists.linaro.org > Subject: [lng-odp] [API-NEXT PATCHv2] api: pktio link > > Define API to get pktio link state: seed, autoneg, link up/down, > duplex, started/stopped state. > > Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> > --- > v2: - use simple struct to return pktio link state; > - odp will not modify link, only ready it's state; > > > include/odp/api/packet_io.h | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/include/odp/api/packet_io.h b/include/odp/api/packet_io.h > index d8e69ed..6c77e8d 100644 > --- a/include/odp/api/packet_io.h > +++ b/include/odp/api/packet_io.h > @@ -96,6 +96,28 @@ typedef struct odp_pktio_param_t { > } odp_pktio_param_t; > > /** > + * Packet IO link state information > + */ > +typedef struct odp_pktio_link_state_t { > + uint32_t speed; /**< Speed in Mbps: 10, 100, 1000 etc */ > + odp_bool_t up; /**< 1 - link up, 0 - link down */ > + odp_bool_t autoneg; /**< 1 - autoneg on, 0 - off */ > + odp_bool_t fd; /**< 1 - full duplex, 0 - half duplex */ > + odp_bool_t stopped; /**< 1 - pktio stopped, 0 - started */ > +} odp_pktio_link_state_t; > + > +/** > + * Get packet IO link state > + * > + * @param[in] pktio Packet IO handle > + * @param[out] state Buffer to save link state > + * > + * @retval 0 on success (state info updated) > + * @retval <0 on failure (state info not updated) > + */ > +int odp_pktio_link_state(odp_pktio_t pktio, odp_pktio_link_state_t > *state); > + > +/** > * Open a packet IO interface > * > * An ODP program can open a single packet IO interface per device, > attempts > -- > 1.9.1 > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org > https://lists.linaro.org/mailman/listinfo/lng-odp _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp