Re: [PATCH net-next v5 08/10] bridge: cfm: Netlink GET configuration Interface.

2020-10-15 Thread henrik.bjoernl...@microchip.com
Thanks for your review.
Regards
Henrik

The 10/14/2020 10:54, Nikolay Aleksandrov wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the 
> content is safe
> 
> On Mon, 2020-10-12 at 14:04 +, Henrik Bjoernlund wrote:
> > This is the implementation of CFM netlink configuration
> > get information interface.
> >
> > Add new nested netlink attributes. These attributes are used by the
> > user space to get configuration information.
> >
> > GETLINK:
> > Request filter RTEXT_FILTER_CFM_CONFIG:
> > Indicating that CFM configuration information must be delivered.
> >
> > IFLA_BRIDGE_CFM:
> > Points to the CFM information.
> >
> > IFLA_BRIDGE_CFM_MEP_CREATE_INFO:
> > This indicate that MEP instance create parameters are following.
> > IFLA_BRIDGE_CFM_MEP_CONFIG_INFO:
> > This indicate that MEP instance config parameters are following.
> > IFLA_BRIDGE_CFM_CC_CONFIG_INFO:
> > This indicate that MEP instance CC functionality
> > parameters are following.
> > IFLA_BRIDGE_CFM_CC_RDI_INFO:
> > This indicate that CC transmitted CCM PDU RDI
> > parameters are following.
> > IFLA_BRIDGE_CFM_CC_CCM_TX_INFO:
> > This indicate that CC transmitted CCM PDU parameters are
> > following.
> > IFLA_BRIDGE_CFM_CC_PEER_MEP_INFO:
> > This indicate that the added peer MEP IDs are following.
> >
> > CFM nested attribute has the following attributes in next level.
> >
> > GETLINK RTEXT_FILTER_CFM_CONFIG:
> > IFLA_BRIDGE_CFM_MEP_CREATE_INSTANCE:
> > The created MEP instance number.
> > The type is u32.
> > IFLA_BRIDGE_CFM_MEP_CREATE_DOMAIN:
> > The created MEP domain.
> > The type is u32 (br_cfm_domain).
> > It must be BR_CFM_PORT.
> > This means that CFM frames are transmitted and received
> > directly on the port - untagged. Not in a VLAN.
> > IFLA_BRIDGE_CFM_MEP_CREATE_DIRECTION:
> > The created MEP direction.
> > The type is u32 (br_cfm_mep_direction).
> > It must be BR_CFM_MEP_DIRECTION_DOWN.
> > This means that CFM frames are transmitted and received on
> > the port. Not in the bridge.
> > IFLA_BRIDGE_CFM_MEP_CREATE_IFINDEX:
> > The created MEP residence port ifindex.
> > The type is u32 (ifindex).
> >
> > IFLA_BRIDGE_CFM_MEP_DELETE_INSTANCE:
> > The deleted MEP instance number.
> > The type is u32.
> >
> > IFLA_BRIDGE_CFM_MEP_CONFIG_INSTANCE:
> > The configured MEP instance number.
> > The type is u32.
> > IFLA_BRIDGE_CFM_MEP_CONFIG_UNICAST_MAC:
> > The configured MEP unicast MAC address.
> > The type is 6*u8 (array).
> > This is used as SMAC in all transmitted CFM frames.
> > IFLA_BRIDGE_CFM_MEP_CONFIG_MDLEVEL:
> > The configured MEP unicast MD level.
> > The type is u32.
> > It must be in the range 1-7.
> > No CFM frames are passing through this MEP on lower levels.
> > IFLA_BRIDGE_CFM_MEP_CONFIG_MEPID:
> > The configured MEP ID.
> > The type is u32.
> > It must be in the range 0-0x1FFF.
> > This MEP ID is inserted in any transmitted CCM frame.
> >
> > IFLA_BRIDGE_CFM_CC_CONFIG_INSTANCE:
> > The configured MEP instance number.
> > The type is u32.
> > IFLA_BRIDGE_CFM_CC_CONFIG_ENABLE:
> > The Continuity Check (CC) functionality is enabled or disabled.
> > The type is u32 (bool).
> > IFLA_BRIDGE_CFM_CC_CONFIG_EXP_INTERVAL:
> > The CC expected receive interval of CCM frames.
> > The type is u32 (br_cfm_ccm_interval).
> > This is also the transmission interval of CCM frames when enabled.
> > IFLA_BRIDGE_CFM_CC_CONFIG_EXP_MAID:
> > The CC expected receive MAID in CCM frames.
> > The type is CFM_MAID_LENGTH*u8.
> > This is MAID is also inserted in transmitted CCM frames.
> >
> > IFLA_BRIDGE_CFM_CC_PEER_MEP_INSTANCE:
> > The configured MEP instance number.
> > The type is u32.
> > IFLA_BRIDGE_CFM_CC_PEER_MEPID:
> > The CC Peer MEP ID added.
> > The type is u32.
> > When a Peer MEP ID is added and CC is enabled it is expected to
> > receive CCM frames from that Peer MEP.
> >
> > IFLA_BRIDGE_CFM_CC_RDI_INSTANCE:
> > The configured MEP instance number.
> > The type is u32.
> > IFLA_BRIDGE_CFM_CC_RDI_RDI:
> > The RDI that is inserted in transmitted CCM PDU.
> > The type is u32 (bool).
> >
> > IFLA_BRIDGE_CFM_CC_CCM_TX_INSTANCE:
> > The configured MEP instance number.
> > The type is u32.
> > IFLA_BRIDGE_CFM_CC_CCM_TX_DMAC:
> > The transmitted CCM frame destination MAC address.
> > The type is 6*u8 (array).
> > This is used as DMAC in all transmitted CFM frames.
> > 

Re: [PATCH net-next v5 08/10] bridge: cfm: Netlink GET configuration Interface.

2020-10-15 Thread Henrik Bjoernlund
Thanks for your review. Comment below.
Regards
Henrik

The 10/14/2020 16:33, Jakub Kicinski wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the 
> content is safe
> 
> On Mon, 12 Oct 2020 14:04:26 + Henrik Bjoernlund wrote:
> > + if (nla_put_u32(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE,
> > + mep->cc_ccm_tx_info.seq_no_update))
> > + goto nla_put_failure;
> > +
> > + if (nla_put_u32(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD,
> > + mep->cc_ccm_tx_info.period))
> > + goto nla_put_failure;
> > +
> > + if (nla_put_u32(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV,
> > + mep->cc_ccm_tx_info.if_tlv))
> > + goto nla_put_failure;
> > +
> > + if (nla_put_u8(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV_VALUE,
> > +mep->cc_ccm_tx_info.if_tlv_value))
> > + goto nla_put_failure;
> > +
> > + if (nla_put_u32(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV,
> > + mep->cc_ccm_tx_info.port_tlv))
> > + goto nla_put_failure;
> > +
> > + if (nla_put_u8(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV_VALUE,
> > +mep->cc_ccm_tx_info.port_tlv_value))
> > + goto nla_put_failure;
> 
> Consider collapsing writing related attrs in a nest into a single
> if statement:
> 
> if (nla_put_u32(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE,
> mep->cc_ccm_tx_info.seq_no_update) ||
> nla_put_u32(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD,
> mep->cc_ccm_tx_info.period) ||
> ...
I will prefer to keep it as is for my personal taste :-)

-- 
/Henrik


Re: [PATCH net-next v5 08/10] bridge: cfm: Netlink GET configuration Interface.

2020-10-14 Thread Jakub Kicinski
On Mon, 12 Oct 2020 14:04:26 + Henrik Bjoernlund wrote:
> + if (nla_put_u32(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE,
> + mep->cc_ccm_tx_info.seq_no_update))
> + goto nla_put_failure;
> +
> + if (nla_put_u32(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD,
> + mep->cc_ccm_tx_info.period))
> + goto nla_put_failure;
> +
> + if (nla_put_u32(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV,
> + mep->cc_ccm_tx_info.if_tlv))
> + goto nla_put_failure;
> +
> + if (nla_put_u8(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV_VALUE,
> +mep->cc_ccm_tx_info.if_tlv_value))
> + goto nla_put_failure;
> +
> + if (nla_put_u32(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV,
> + mep->cc_ccm_tx_info.port_tlv))
> + goto nla_put_failure;
> +
> + if (nla_put_u8(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV_VALUE,
> +mep->cc_ccm_tx_info.port_tlv_value))
> + goto nla_put_failure;

Consider collapsing writing related attrs in a nest into a single
if statement:

if (nla_put_u32(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE,
mep->cc_ccm_tx_info.seq_no_update) ||
nla_put_u32(skb, IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD,
mep->cc_ccm_tx_info.period) ||
...


Re: [PATCH net-next v5 08/10] bridge: cfm: Netlink GET configuration Interface.

2020-10-14 Thread Nikolay Aleksandrov
On Mon, 2020-10-12 at 14:04 +, Henrik Bjoernlund wrote:
> This is the implementation of CFM netlink configuration
> get information interface.
> 
> Add new nested netlink attributes. These attributes are used by the
> user space to get configuration information.
> 
> GETLINK:
> Request filter RTEXT_FILTER_CFM_CONFIG:
> Indicating that CFM configuration information must be delivered.
> 
> IFLA_BRIDGE_CFM:
> Points to the CFM information.
> 
> IFLA_BRIDGE_CFM_MEP_CREATE_INFO:
> This indicate that MEP instance create parameters are following.
> IFLA_BRIDGE_CFM_MEP_CONFIG_INFO:
> This indicate that MEP instance config parameters are following.
> IFLA_BRIDGE_CFM_CC_CONFIG_INFO:
> This indicate that MEP instance CC functionality
> parameters are following.
> IFLA_BRIDGE_CFM_CC_RDI_INFO:
> This indicate that CC transmitted CCM PDU RDI
> parameters are following.
> IFLA_BRIDGE_CFM_CC_CCM_TX_INFO:
> This indicate that CC transmitted CCM PDU parameters are
> following.
> IFLA_BRIDGE_CFM_CC_PEER_MEP_INFO:
> This indicate that the added peer MEP IDs are following.
> 
> CFM nested attribute has the following attributes in next level.
> 
> GETLINK RTEXT_FILTER_CFM_CONFIG:
> IFLA_BRIDGE_CFM_MEP_CREATE_INSTANCE:
> The created MEP instance number.
> The type is u32.
> IFLA_BRIDGE_CFM_MEP_CREATE_DOMAIN:
> The created MEP domain.
> The type is u32 (br_cfm_domain).
> It must be BR_CFM_PORT.
> This means that CFM frames are transmitted and received
> directly on the port - untagged. Not in a VLAN.
> IFLA_BRIDGE_CFM_MEP_CREATE_DIRECTION:
> The created MEP direction.
> The type is u32 (br_cfm_mep_direction).
> It must be BR_CFM_MEP_DIRECTION_DOWN.
> This means that CFM frames are transmitted and received on
> the port. Not in the bridge.
> IFLA_BRIDGE_CFM_MEP_CREATE_IFINDEX:
> The created MEP residence port ifindex.
> The type is u32 (ifindex).
> 
> IFLA_BRIDGE_CFM_MEP_DELETE_INSTANCE:
> The deleted MEP instance number.
> The type is u32.
> 
> IFLA_BRIDGE_CFM_MEP_CONFIG_INSTANCE:
> The configured MEP instance number.
> The type is u32.
> IFLA_BRIDGE_CFM_MEP_CONFIG_UNICAST_MAC:
> The configured MEP unicast MAC address.
> The type is 6*u8 (array).
> This is used as SMAC in all transmitted CFM frames.
> IFLA_BRIDGE_CFM_MEP_CONFIG_MDLEVEL:
> The configured MEP unicast MD level.
> The type is u32.
> It must be in the range 1-7.
> No CFM frames are passing through this MEP on lower levels.
> IFLA_BRIDGE_CFM_MEP_CONFIG_MEPID:
> The configured MEP ID.
> The type is u32.
> It must be in the range 0-0x1FFF.
> This MEP ID is inserted in any transmitted CCM frame.
> 
> IFLA_BRIDGE_CFM_CC_CONFIG_INSTANCE:
> The configured MEP instance number.
> The type is u32.
> IFLA_BRIDGE_CFM_CC_CONFIG_ENABLE:
> The Continuity Check (CC) functionality is enabled or disabled.
> The type is u32 (bool).
> IFLA_BRIDGE_CFM_CC_CONFIG_EXP_INTERVAL:
> The CC expected receive interval of CCM frames.
> The type is u32 (br_cfm_ccm_interval).
> This is also the transmission interval of CCM frames when enabled.
> IFLA_BRIDGE_CFM_CC_CONFIG_EXP_MAID:
> The CC expected receive MAID in CCM frames.
> The type is CFM_MAID_LENGTH*u8.
> This is MAID is also inserted in transmitted CCM frames.
> 
> IFLA_BRIDGE_CFM_CC_PEER_MEP_INSTANCE:
> The configured MEP instance number.
> The type is u32.
> IFLA_BRIDGE_CFM_CC_PEER_MEPID:
> The CC Peer MEP ID added.
> The type is u32.
> When a Peer MEP ID is added and CC is enabled it is expected to
> receive CCM frames from that Peer MEP.
> 
> IFLA_BRIDGE_CFM_CC_RDI_INSTANCE:
> The configured MEP instance number.
> The type is u32.
> IFLA_BRIDGE_CFM_CC_RDI_RDI:
> The RDI that is inserted in transmitted CCM PDU.
> The type is u32 (bool).
> 
> IFLA_BRIDGE_CFM_CC_CCM_TX_INSTANCE:
> The configured MEP instance number.
> The type is u32.
> IFLA_BRIDGE_CFM_CC_CCM_TX_DMAC:
> The transmitted CCM frame destination MAC address.
> The type is 6*u8 (array).
> This is used as DMAC in all transmitted CFM frames.
> IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE:
> The transmitted CCM frame update (increment) of sequence
> number is enabled or disabled.
> The type is u32 (bool).
> IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD:
> The period of time where CCM frame are transmitted.
> The type is u32.
> The time is given in seconds. SETLINK IFLA_BRIDGE_CFM_CC_CCM_TX
> must be done before timeout to 

[PATCH net-next v5 08/10] bridge: cfm: Netlink GET configuration Interface.

2020-10-12 Thread Henrik Bjoernlund
This is the implementation of CFM netlink configuration
get information interface.

Add new nested netlink attributes. These attributes are used by the
user space to get configuration information.

GETLINK:
Request filter RTEXT_FILTER_CFM_CONFIG:
Indicating that CFM configuration information must be delivered.

IFLA_BRIDGE_CFM:
Points to the CFM information.

IFLA_BRIDGE_CFM_MEP_CREATE_INFO:
This indicate that MEP instance create parameters are following.
IFLA_BRIDGE_CFM_MEP_CONFIG_INFO:
This indicate that MEP instance config parameters are following.
IFLA_BRIDGE_CFM_CC_CONFIG_INFO:
This indicate that MEP instance CC functionality
parameters are following.
IFLA_BRIDGE_CFM_CC_RDI_INFO:
This indicate that CC transmitted CCM PDU RDI
parameters are following.
IFLA_BRIDGE_CFM_CC_CCM_TX_INFO:
This indicate that CC transmitted CCM PDU parameters are
following.
IFLA_BRIDGE_CFM_CC_PEER_MEP_INFO:
This indicate that the added peer MEP IDs are following.

CFM nested attribute has the following attributes in next level.

GETLINK RTEXT_FILTER_CFM_CONFIG:
IFLA_BRIDGE_CFM_MEP_CREATE_INSTANCE:
The created MEP instance number.
The type is u32.
IFLA_BRIDGE_CFM_MEP_CREATE_DOMAIN:
The created MEP domain.
The type is u32 (br_cfm_domain).
It must be BR_CFM_PORT.
This means that CFM frames are transmitted and received
directly on the port - untagged. Not in a VLAN.
IFLA_BRIDGE_CFM_MEP_CREATE_DIRECTION:
The created MEP direction.
The type is u32 (br_cfm_mep_direction).
It must be BR_CFM_MEP_DIRECTION_DOWN.
This means that CFM frames are transmitted and received on
the port. Not in the bridge.
IFLA_BRIDGE_CFM_MEP_CREATE_IFINDEX:
The created MEP residence port ifindex.
The type is u32 (ifindex).

IFLA_BRIDGE_CFM_MEP_DELETE_INSTANCE:
The deleted MEP instance number.
The type is u32.

IFLA_BRIDGE_CFM_MEP_CONFIG_INSTANCE:
The configured MEP instance number.
The type is u32.
IFLA_BRIDGE_CFM_MEP_CONFIG_UNICAST_MAC:
The configured MEP unicast MAC address.
The type is 6*u8 (array).
This is used as SMAC in all transmitted CFM frames.
IFLA_BRIDGE_CFM_MEP_CONFIG_MDLEVEL:
The configured MEP unicast MD level.
The type is u32.
It must be in the range 1-7.
No CFM frames are passing through this MEP on lower levels.
IFLA_BRIDGE_CFM_MEP_CONFIG_MEPID:
The configured MEP ID.
The type is u32.
It must be in the range 0-0x1FFF.
This MEP ID is inserted in any transmitted CCM frame.

IFLA_BRIDGE_CFM_CC_CONFIG_INSTANCE:
The configured MEP instance number.
The type is u32.
IFLA_BRIDGE_CFM_CC_CONFIG_ENABLE:
The Continuity Check (CC) functionality is enabled or disabled.
The type is u32 (bool).
IFLA_BRIDGE_CFM_CC_CONFIG_EXP_INTERVAL:
The CC expected receive interval of CCM frames.
The type is u32 (br_cfm_ccm_interval).
This is also the transmission interval of CCM frames when enabled.
IFLA_BRIDGE_CFM_CC_CONFIG_EXP_MAID:
The CC expected receive MAID in CCM frames.
The type is CFM_MAID_LENGTH*u8.
This is MAID is also inserted in transmitted CCM frames.

IFLA_BRIDGE_CFM_CC_PEER_MEP_INSTANCE:
The configured MEP instance number.
The type is u32.
IFLA_BRIDGE_CFM_CC_PEER_MEPID:
The CC Peer MEP ID added.
The type is u32.
When a Peer MEP ID is added and CC is enabled it is expected to
receive CCM frames from that Peer MEP.

IFLA_BRIDGE_CFM_CC_RDI_INSTANCE:
The configured MEP instance number.
The type is u32.
IFLA_BRIDGE_CFM_CC_RDI_RDI:
The RDI that is inserted in transmitted CCM PDU.
The type is u32 (bool).

IFLA_BRIDGE_CFM_CC_CCM_TX_INSTANCE:
The configured MEP instance number.
The type is u32.
IFLA_BRIDGE_CFM_CC_CCM_TX_DMAC:
The transmitted CCM frame destination MAC address.
The type is 6*u8 (array).
This is used as DMAC in all transmitted CFM frames.
IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE:
The transmitted CCM frame update (increment) of sequence
number is enabled or disabled.
The type is u32 (bool).
IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD:
The period of time where CCM frame are transmitted.
The type is u32.
The time is given in seconds. SETLINK IFLA_BRIDGE_CFM_CC_CCM_TX
must be done before timeout to keep transmission alive.
When period is zero any ongoing CCM frame transmission
will be stopped.
IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV:
The transmitted CCM frame update with Interface Status TLV
is enabled or disabled.
The type is u32 (bool).