On 03/01/16 17:56, Bill Fischofer wrote:
If it's not defined it's better to return -1. However the question is shouldn't a loop interface have its own definition for this function? I know link_status was added after the original restructure so perhaps this was just an omission?

Really, sorry I already forgot what this function does:

/**
 * Determine pktio link is up or down for a packet IO interface.
 *
 * @param pktio Packet IO handle.
 *
 * @retval  1 link is up
 * @retval  0 link is down
 * @retval <0 on failure
*/
int odp_pktio_link_status(odp_pktio_t pktio);


In linux-generic loop is definitely always up. But on other platforms I have no idea.

Maxim.


On Tue, Mar 1, 2016 at 8:53 AM, Maxim Uvarov <[email protected] <mailto:[email protected]>> wrote:

    Bill,

    Idea if ops is not defined that some common value has to be used.
    Instead of fixing loop it's needed to fix common code to return 1
    if link_status is not implemented.

    int odp_pktio_link_status(odp_pktio_t id)
    {
        pktio_entry_t *entry;
        int ret = -1; <--- has to be 1
    .....
        if (entry->s.ops->link_status)
            ret = entry->s.ops->link_status(entry);
        unlock_entry(entry);

        return ret;
    }

    Maxim.



    On 02/29/16 23:53, Bill Fischofer wrote:

        ODP loopback interfaces should always be considered up, so add a
        handler for odp_pktio_link_status() for this device type that
        always
        returns 1 to indicate the link is up.

        Signed-off-by: Bill Fischofer <[email protected]
        <mailto:[email protected]>>
        ---
          platform/linux-generic/pktio/loop.c | 7 +++++++
          1 file changed, 7 insertions(+)

        diff --git a/platform/linux-generic/pktio/loop.c
        b/platform/linux-generic/pktio/loop.c
        index dbb0e7b..0ea6d0e 100644
        --- a/platform/linux-generic/pktio/loop.c
        +++ b/platform/linux-generic/pktio/loop.c
        @@ -134,6 +134,12 @@ static int
        loopback_mac_addr_get(pktio_entry_t *pktio_entry ODP_UNUSED,
                return ETH_ALEN;
          }
          +static int loopback_link_status(pktio_entry_t *pktio_entry
        ODP_UNUSED)
        +{
        +       /* loopback interfaces are always up */
        +       return 1;
        +}
        +
          static int loopback_promisc_mode_set(pktio_entry_t *pktio_entry,
                                             odp_bool_t enable)
          {
        @@ -176,6 +182,7 @@ const pktio_if_ops_t loopback_pktio_ops = {
                .promisc_mode_set = loopback_promisc_mode_set,
                .promisc_mode_get = loopback_promisc_mode_get,
                .mac_get = loopback_mac_addr_get,
        +       .link_status = loopback_link_status,
                .capability = NULL,
                .input_queues_config = NULL,
                .output_queues_config = NULL,


    _______________________________________________
    lng-odp mailing list
    [email protected] <mailto:[email protected]>
    https://lists.linaro.org/mailman/listinfo/lng-odp



_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to