[yang]: Add Yang model support for adding Channel to PORT table (#14228)

Why I did it
Add 'channel' to the CONFIG_DB PORT table. This will be needed to support PORT breakout to multiple channel ports so that Xcvrd can understand which datapath or channel to initialize on the CMIS compliant optics

How I did it
Add 'channel' to the CONFIG_DB PORT table.

How to verify it
Added unit test for valid and invalid channel number
Channel 0 -> No breakout
Channel 1 to 8 -> Breakout channel 1,2, ..8

Signed-off-by: Prince George <prgeor@microsoft.com>
This commit is contained in:
Prince George 2023-03-14 09:34:16 -07:00 committed by mssonicbld
parent 2eb06b1a40
commit 8c049af65e
5 changed files with 114 additions and 11 deletions

View File

@ -1235,6 +1235,33 @@ optional attributes.
}
}
2x100G port breakout
{
"PORT": {
"Ethernet0": {
"admin_status": "up",
"index": "1",
"lanes": "101,102,103,104",
"description": "etp1a",
"mtu": "9100",
"alias": "etp1a",
"speed": "100000",
"channel": 1
},
"Ethernet4": {
"admin_status": "up",
"index": "1",
"lanes": "105,106,107,108",
"description": "etp1b",
"mtu": "9100",
"alias": "etp1b",
"speed": "100000",
"channel": 2
},
}
}
```
### Port Channel

View File

@ -462,7 +462,8 @@
"admin_status": "up",
"autoneg": "on",
"adv_speeds": "all",
"adv_interface_types": "all"
"adv_interface_types": "all",
"channel" : "0"
},
"Ethernet3": {
"alias": "Eth1/4",
@ -470,7 +471,8 @@
"description": "",
"speed": "11100",
"tpid": "0x88A8",
"admin_status": "up"
"admin_status": "up",
"channel": "1"
},
"Ethernet4": {
"alias": "Eth2/1",
@ -478,7 +480,8 @@
"description": "",
"speed": "11100",
"tpid": "0x9100",
"admin_status": "up"
"admin_status": "up",
"channel": "2"
},
"Ethernet5": {
"alias": "Eth2/2",
@ -486,7 +489,8 @@
"description": "",
"speed": "11100",
"tpid": "0x9200",
"admin_status": "up"
"admin_status": "up",
"channel": "3"
},
"Ethernet6": {
"alias": "Eth2/3",
@ -494,7 +498,8 @@
"description": "",
"speed": "11100",
"tpid": "0x8100",
"admin_status": "up"
"admin_status": "up",
"channel": "4"
},
"Ethernet7": {
"alias": "Eth2/4",
@ -502,7 +507,8 @@
"description": "",
"speed": "11100",
"tpid": "0x8100",
"admin_status": "up"
"admin_status": "up",
"channel": "5"
},
"Ethernet8": {
"alias": "Eth3/1",
@ -510,7 +516,8 @@
"description": "",
"speed": "11100",
"tpid": "0x8100",
"admin_status": "up"
"admin_status": "up",
"channel": "6"
},
"Ethernet9": {
"alias": "Eth3/2",
@ -518,7 +525,8 @@
"description": "",
"speed": "11100",
"tpid": "0x8100",
"admin_status": "up"
"admin_status": "up",
"channel": "7"
},
"Ethernet10": {
"alias": "Eth3/3",
@ -526,7 +534,8 @@
"description": "",
"speed": "11100",
"tpid": "0x8100",
"admin_status": "up"
"admin_status": "up",
"channel": "8"
},
"Ethernet11": {
"alias": "Eth3/4",

View File

@ -114,6 +114,13 @@
"PORT_INVALID_MULTIASIC_TEST": {
"desc": "PORT_INVALID_MULTIASIC_TEST invalid role pattern, expect fail",
"eStrKey": "Pattern"
},
"PORT_VALID_CHANNEL_NUMBER": {
"desc": "PORT_VALID_CHANNEL_NUMBER no failure."
},
"PORT_INVALID_CHANNEL_NUMBER": {
"desc": "Out of range channel number",
"eStrKey": "Range",
"eStr": "0..8"
}
}

View File

@ -485,7 +485,60 @@
}
}
},
"PORT_INVALID_CHANNEL_NUMBER": {
"sonic-port:sonic-port": {
"sonic-port:PORT": {
"PORT_LIST": [
{
"name": "Ethernet0",
"alias": "etp1a",
"lanes": "60, 61",
"speed": 100000,
"channel": 9
}
]
}
}
},
"PORT_VALID_CHANNEL_NUMBER": {
"sonic-port:sonic-port": {
"sonic-port:PORT": {
"PORT_LIST": [
{
"name": "Ethernet0",
"alias": "etp1a",
"lanes": "60, 61",
"speed": 100000,
"channel": 1
},
{
"name": "Ethernet2",
"alias": "etp1b",
"lanes": "62, 63",
"speed": 100000,
"channel": 2
},
{
"name": "Ethernet4",
"alias": "etp1c",
"lanes": "64, 65",
"speed": 100000,
"channel": 3
},
{
"name": "Ethernet6",
"alias": "etp1d",
"lanes": "66, 67",
"speed": 100000,
"channel": 4
}
]
}
}
},
"PORT_VALID_MULTIASIC_TEST": {
"sonic-port:sonic-port": {
"sonic-port:PORT": {

View File

@ -121,6 +121,13 @@ module sonic-port{
}
}
leaf channel {
description "Logical channel(s) for physical port breakout";
type uint8 {
range 0..8;
}
}
leaf index {
type uint16;
}