> On Nov 20, 2014, at 7:57 AM, Daniele Venturino <daniele.ventur...@m3s.it> 
> wrote:
> 
> We think we could change the NEWS section like this:
> 
>> diff --git a/NEWS b/NEWS
>> index 40a0db0..ea8c6c0 100644
>> --- a/NEWS
>> +++ b/NEWS
>> @@ -41,9 +41,9 @@ Post-v2.3.0
>>    - Support for travis-ci.org based continuous integration builds has been
>>      added. Build failures are reported to bu...@openvswitch.org. See 
>> INSTALL.md
>>      file for additional details.
>> -   - Experimental support for the Rapid Spanning Tree Protocol
>> -     (IEEE 802.1D-2004).  More conformance and interoperability testing is
>> -     still needed, so this should not be enabled on production environments.
>> +   - Support for the Rapid Spanning Tree Protocol (IEEE 802.1D-2004).
>> +     The implementation has been tested successfully against the Ixia 
>> Automated
>> +     Network Validation Library (ANVL).
>>    - Stats are no longer updated on fake bond interface.
>>    - Keep active bond slave selection across OVS restart.
>>    - A simple wrapper script, 'ovs-docker', to integrate OVS with Docker
> 
> and that we could add a comment about the issue discussed for patch 02/17, to 
> make clear that the AUTO procedure is not implemented yet:
> 
>> diff --git a/utilities/ovs-vsctl.8.in b/utilities/ovs-vsctl.8.in
>> index ddb8410..aca0e2a 100644
>> --- a/utilities/ovs-vsctl.8.in
>> +++ b/utilities/ovs-vsctl.8.in
>> @@ -1073,9 +1073,10 @@ Set the auto edge value of port \fBeth0\fR:
>> .IP
>> .B "ovs\-vsctl set Port eth0 other_config:rstp-port-auto-edge=true"
>> .PP
>> -Set the admin point to point mac value of port \fBeth0\fR.  Acceptable
>> -values are 0 (force \fBfalse\fR), 1 (force \fBtrue\fR, the default value) or
>> -2 (\fBauto\fR).
>> +Set the admin point to point MAC value of port \fBeth0\fR.  Acceptable
>> +values are 0 (\fBforce false\fR), 1 (\fBforce true\fR, the default value) or
>> +2 (\fBauto\fR). Auto-detection of a point-to-point LAN is not
>> +supported, so, the value \fBauto\fB has the same effect of \fBforce 
>> false\fB.
>> .IP
>> .B “
> 
> We’ve already prepared these two patches if you want us to send them.
> 

Please do, thanks!

  Jarno

> Regards,
> Daniele
> 
>> Il giorno 19/nov/2014, alle ore 19:59, Jarno Rajahalme 
>> <jrajaha...@nicira.com> ha scritto:
>> 
>> Daniele,
>> 
>> Series pushed to master, thank you!
>> 
>> It might be good to have a short statement in NEWS about the conformance 
>> testing, what do you think?
>> 
>>  Jarno
>> 
>> 
>>> On Nov 13, 2014, at 4:21 PM, Jarno Rajahalme <jrajaha...@nicira.com> wrote:
>>> 
>>> Acked-by: Jarno Rajahalme <jrajaha...@nicira.com>-
>>> 
>>> Thanks!
>>> 
>>> Jarno
>>> 
>>>> On Nov 6, 2014, at 7:31 AM, Daniele Venturino <daniele.ventur...@m3s.it> 
>>>> wrote:
>>>> 
>>>>    With this patch setters invoke procedures only if values have changed.
>>>>    Also rstp_set_bridge_address__() keeps the existing priority in the
>>>>    bridge_identifier.
>>>> 
>>>> Signed-off-by: Daniele Venturino <daniele.ventur...@m3s.it>
>>>> ---
>>>> lib/rstp.c | 80 
>>>> ++++++++++++++++++++++++++++++++++++--------------------------
>>>> 1 file changed, 46 insertions(+), 34 deletions(-)
>>>> 
>>>> diff --git a/lib/rstp.c b/lib/rstp.c
>>>> index 5256740..144f2ba 100644
>>>> --- a/lib/rstp.c
>>>> +++ b/lib/rstp.c
>>>> @@ -322,10 +322,12 @@ rstp_set_bridge_address__(struct rstp *rstp, 
>>>> rstp_identifier bridge_address)
>>>> {
>>>>   VLOG_DBG("%s: set bridge address to: "RSTP_ID_FMT"", rstp->name,
>>>>            RSTP_ID_ARGS(bridge_address));
>>>> -
>>>> -    rstp->address = bridge_address;
>>>> -    rstp->bridge_identifier = bridge_address;
>>>> -    set_bridge_priority__(rstp);
>>>> +    if (rstp->address != bridge_address) {
>>>> +        rstp->address = bridge_address;
>>>> +        rstp->bridge_identifier &= 0xffff000000000000ULL;
>>>> +        rstp->bridge_identifier |= bridge_address;
>>>> +        set_bridge_priority__(rstp);
>>>> +    }
>>>> }
>>>> 
>>>> /* Sets the bridge address. */
>>>> @@ -370,7 +372,8 @@ rstp_set_bridge_priority__(struct rstp *rstp, int 
>>>> new_priority)
>>>> {
>>>>   new_priority = ROUND_DOWN(new_priority, RSTP_PRIORITY_STEP);
>>>> 
>>>> -    if (new_priority >= RSTP_MIN_PRIORITY
>>>> +    if (rstp->priority != new_priority
>>>> +        && new_priority >= RSTP_MIN_PRIORITY
>>>>       && new_priority <= RSTP_MAX_PRIORITY) {
>>>>       VLOG_DBG("%s: set bridge priority to %d", rstp->name, new_priority);
>>>> 
>>>> @@ -584,7 +587,8 @@ rstp_set_bridge_transmit_hold_count__(struct rstp 
>>>> *rstp,
>>>>                                     int new_transmit_hold_count)
>>>>   OVS_REQUIRES(rstp_mutex)
>>>> {
>>>> -    if (new_transmit_hold_count >= RSTP_MIN_TRANSMIT_HOLD_COUNT
>>>> +    if (rstp->transmit_hold_count != new_transmit_hold_count
>>>> +        && new_transmit_hold_count >= RSTP_MIN_TRANSMIT_HOLD_COUNT
>>>>       && new_transmit_hold_count <= RSTP_MAX_TRANSMIT_HOLD_COUNT) {
>>>>       struct rstp_port *p;
>>>> 
>>>> @@ -664,7 +668,8 @@ static void
>>>> rstp_port_set_priority__(struct rstp_port *port, int priority)
>>>>   OVS_REQUIRES(rstp_mutex)
>>>> {
>>>> -    if (priority >= RSTP_MIN_PORT_PRIORITY
>>>> +    if (port->priority != priority
>>>> +        && priority >= RSTP_MIN_PORT_PRIORITY
>>>>       && priority <= RSTP_MAX_PORT_PRIORITY) {
>>>>       VLOG_DBG("%s, port %u: set RSTP port priority to %d", 
>>>> port->rstp->name,
>>>>                port->port_number, priority);
>>>> @@ -713,19 +718,21 @@ rstp_port_set_port_number__(struct rstp_port *port, 
>>>> uint16_t port_number)
>>>> {
>>>>   /* If new_port_number is available, use it, otherwise use the first free
>>>>    * available port number. */
>>>> -    port->port_number =
>>>> -        is_port_number_available__(port->rstp, port_number, port)
>>>> -        ? port_number
>>>> -        : rstp_first_free_number__(port->rstp, port);
>>>> +    if (port->port_number != port_number || port_number == 0) {
>>>> +        port->port_number =
>>>> +            is_port_number_available__(port->rstp, port_number, port)
>>>> +            ? port_number
>>>> +            : rstp_first_free_number__(port->rstp, port);
>>>> 
>>>> -    set_port_id__(port);
>>>> -    /* [17.13] is not clear. I suppose that a port number change
>>>> -     * should trigger reselection like a port priority change. */
>>>> -    port->selected = false;
>>>> -    port->reselect = true;
>>>> +        set_port_id__(port);
>>>> +        /* [17.13] is not clear. I suppose that a port number change
>>>> +         * should trigger reselection like a port priority change. */
>>>> +        port->selected = false;
>>>> +        port->reselect = true;
>>>> 
>>>> -    VLOG_DBG("%s: set new RSTP port number %d", port->rstp->name,
>>>> -             port->port_number);
>>>> +        VLOG_DBG("%s: set new RSTP port number %d", port->rstp->name,
>>>> +                port->port_number);
>>>> +    }
>>>> }
>>>> 
>>>> /* Converts the link speed to a port path cost [Table 17-3]. */
>>>> @@ -752,7 +759,8 @@ static void
>>>> rstp_port_set_path_cost__(struct rstp_port *port, uint32_t path_cost)
>>>>   OVS_REQUIRES(rstp_mutex)
>>>> {
>>>> -    if (path_cost >= RSTP_MIN_PORT_PATH_COST
>>>> +    if (port->port_path_cost != path_cost
>>>> +        && path_cost >= RSTP_MIN_PORT_PATH_COST
>>>>       && path_cost <= RSTP_MAX_PORT_PATH_COST) {
>>>>       VLOG_DBG("%s, port %u, set RSTP port path cost to %d",
>>>>                port->rstp->name, port->port_number, path_cost);
>>>> @@ -986,8 +994,9 @@ rstp_port_set_administrative_bridge_port__(struct 
>>>> rstp_port *p,
>>>> {
>>>>   VLOG_DBG("%s, port %u: set RSTP port admin-port-state to %d",
>>>>            p->rstp->name, p->port_number, admin_port_state);
>>>> -    if (admin_port_state == RSTP_ADMIN_BRIDGE_PORT_STATE_DISABLED
>>>> -        || admin_port_state == RSTP_ADMIN_BRIDGE_PORT_STATE_ENABLED) {
>>>> +    if (p->is_administrative_bridge_port != admin_port_state
>>>> +        && (admin_port_state == RSTP_ADMIN_BRIDGE_PORT_STATE_DISABLED
>>>> +            || admin_port_state == RSTP_ADMIN_BRIDGE_PORT_STATE_ENABLED)) 
>>>> {
>>>> 
>>>>       p->is_administrative_bridge_port = admin_port_state;
>>>>       update_port_enabled__(p);
>>>> @@ -1005,8 +1014,9 @@ rstp_port_set_oper_point_to_point_mac__(struct 
>>>> rstp_port *p,
>>>>                                       uint8_t new_oper_p2p_mac)
>>>>   OVS_REQUIRES(rstp_mutex)
>>>> {
>>>> -    if (new_oper_p2p_mac == RSTP_OPER_P2P_MAC_STATE_DISABLED
>>>> -        || new_oper_p2p_mac == RSTP_OPER_P2P_MAC_STATE_ENABLED) {
>>>> +    if (p->oper_point_to_point_mac != new_oper_p2p_mac
>>>> +        && (new_oper_p2p_mac == RSTP_OPER_P2P_MAC_STATE_DISABLED
>>>> +            || new_oper_p2p_mac == RSTP_OPER_P2P_MAC_STATE_ENABLED)) {
>>>> 
>>>>       p->oper_point_to_point_mac = new_oper_p2p_mac;
>>>>       update_port_enabled__(p);
>>>> @@ -1197,17 +1207,19 @@ static void 
>>>> rstp_port_set_admin_point_to_point_mac__(struct rstp_port *port,
>>>> {
>>>>   VLOG_DBG("%s, port %u: set RSTP port admin-point-to-point-mac to %d",
>>>>           port->rstp->name, port->port_number, admin_p2p_mac_state);
>>>> -    if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_FORCE_TRUE) {
>>>> -        port->admin_point_to_point_mac =  admin_p2p_mac_state;
>>>> -        rstp_port_set_oper_point_to_point_mac__(port,
>>>> -                RSTP_OPER_P2P_MAC_STATE_ENABLED);
>>>> -    } else if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_FORCE_FALSE) {
>>>> -        port->admin_point_to_point_mac =  admin_p2p_mac_state;
>>>> -        rstp_port_set_oper_point_to_point_mac__(port,
>>>> -                RSTP_OPER_P2P_MAC_STATE_DISABLED);
>>>> -    } else if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_AUTO) {
>>>> -        port->admin_point_to_point_mac = admin_p2p_mac_state;
>>>> -        /* FIXME fix auto behaviour */
>>>> +    if (port->admin_point_to_point_mac != admin_p2p_mac_state) {
>>>> +        if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_FORCE_TRUE) {
>>>> +            port->admin_point_to_point_mac =  admin_p2p_mac_state;
>>>> +            rstp_port_set_oper_point_to_point_mac__(port,
>>>> +                    RSTP_OPER_P2P_MAC_STATE_ENABLED);
>>>> +        } else if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_FORCE_FALSE) 
>>>> {
>>>> +            port->admin_point_to_point_mac =  admin_p2p_mac_state;
>>>> +            rstp_port_set_oper_point_to_point_mac__(port,
>>>> +                    RSTP_OPER_P2P_MAC_STATE_DISABLED);
>>>> +        } else if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_AUTO) {
>>>> +            port->admin_point_to_point_mac = admin_p2p_mac_state;
>>>> +            /* FIXME fix auto behaviour */
>>>> +        }
>>>>   }
>>>> }
>>>> 
>>>> -- 
>>>> 1.8.1.2
> 
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to