this adds a couple of lines to the lacp output so you can see what params are used on the wire. this can help if you've put switchports in different port-channels or such. an example of that is:
aggr0: flags=8847<UP,BROADCAST,DEBUG,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr fe:e1:ba:d0:35:21 index 10 priority 0 llprio 7 trunk: trunkproto lacp trunk id: [(8000,fe:e1:ba:d0:35:21,000A,0000,0000), (8000,00:01:e8:d7:b0:34,0034,0000,0000)] trunkport ixl0 lacp_state actor aggregation,sync,collecting,distributing trunkport ixl0 lacp_state actor system pri 0x8000 mac fe:e1:ba:d0:35:21, key 0xa, port pri 0x8000 number 0x4 trunkport ixl0 lacp_state partner activity,timeout,aggregation,sync,collecting,distributing trunkport ixl0 lacp_state partner system pri 0x8000 mac 00:01:e8:d7:b0:34, key 0x34, port pri 0x8000 number 0xb6 trunkport ixl0 active,collecting,distributing trunkport ixl1 lacp_state actor aggregation trunkport ixl1 lacp_state actor system pri 0x8000 mac fe:e1:ba:d0:35:21, key 0xa, port pri 0x8000 number 0x5 trunkport ixl1 lacp_state partner activity,timeout,aggregation,sync trunkport ixl1 lacp_state partner system pri 0x8000 mac 00:01:e8:d7:b0:34, key 0x30, port pri 0x8000 number 0xb2 trunkport ixl1 groups: aggr media: Ethernet autoselect status: active the keys (and system mac) must match before ports will be considered part of the same aggregation. after fixing one of the switch ports: aggr0: flags=8847<UP,BROADCAST,DEBUG,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr fe:e1:ba:d0:35:21 index 10 priority 0 llprio 7 trunk: trunkproto lacp trunk id: [(8000,fe:e1:ba:d0:35:21,000A,0000,0000), (8000,00:01:e8:d7:b0:34,0034,0000,0000)] trunkport ixl0 lacp_state actor aggregation,sync,collecting,distributing trunkport ixl0 lacp_state actor system pri 0x8000 mac fe:e1:ba:d0:35:21, key 0xa, port pri 0x8000 number 0x4 trunkport ixl0 lacp_state partner activity,timeout,aggregation,sync,collecting,distributing trunkport ixl0 lacp_state partner system pri 0x8000 mac 00:01:e8:d7:b0:34, key 0x34, port pri 0x8000 number 0xb6 trunkport ixl0 active,collecting,distributing trunkport ixl1 lacp_state actor aggregation,sync,collecting,distributing trunkport ixl1 lacp_state actor system pri 0x8000 mac fe:e1:ba:d0:35:21, key 0xa, port pri 0x8000 number 0x5 trunkport ixl1 lacp_state partner activity,timeout,aggregation,sync,collecting,distributing trunkport ixl1 lacp_state partner system pri 0x8000 mac 00:01:e8:d7:b0:34, key 0x34, port pri 0x8000 number 0xb2 trunkport ixl1 active,collecting,distributing groups: aggr media: Ethernet autoselect status: active i do think this output could be trimmed (a lot), but that's mostly about the flags and should be done in the future. ok? Index: ifconfig.c =================================================================== RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v retrieving revision 1.401 diff -u -p -r1.401 ifconfig.c --- ifconfig.c 19 Apr 2019 04:24:25 -0000 1.401 +++ ifconfig.c 20 Jul 2019 04:54:59 -0000 @@ -4515,11 +4515,29 @@ trunk_status(void) printb_status(lp->actor_state, LACP_STATE_BITS); putchar('\n'); + printf("\t\ttrunkport %s lacp_state actor " + "system pri 0x%x mac %s, key 0x%x, " + "port pri 0x%x number 0x%x\n", + rpbuf[i].rp_portname, + lp->actor_prio, + ether_ntoa((struct ether_addr*) + lp->actor_mac), + lp->actor_key, + lp->actor_portprio, lp->actor_portno); printf("\t\ttrunkport %s lacp_state partner ", rpbuf[i].rp_portname); printb_status(lp->partner_state, LACP_STATE_BITS); putchar('\n'); + printf("\t\ttrunkport %s lacp_state partner " + "system pri 0x%x mac %s, key 0x%x, " + "port pri 0x%x number 0x%x\n", + rpbuf[i].rp_portname, + lp->partner_prio, + ether_ntoa((struct ether_addr*) + lp->partner_mac), + lp->partner_key, + lp->partner_portprio, lp->partner_portno); } printf("\t\ttrunkport %s ", rpbuf[i].rp_portname);