From owner-freebsd-bugs@FreeBSD.ORG Mon Apr 15 15:10:00 2013 Return-Path: Delivered-To: freebsd-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id C12BB7CA for ; Mon, 15 Apr 2013 15:10:00 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id A38E97C6 for ; Mon, 15 Apr 2013 15:10:00 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.6/8.14.6) with ESMTP id r3FFA0ih063558 for ; Mon, 15 Apr 2013 15:10:00 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.6/8.14.6/Submit) id r3FFA0jV063557; Mon, 15 Apr 2013 15:10:00 GMT (envelope-from gnats) Resent-Date: Mon, 15 Apr 2013 15:10:00 GMT Resent-Message-Id: <201304151510.r3FFA0jV063557@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Luiz Otavio O Souza Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 69E556C3 for ; Mon, 15 Apr 2013 15:00:51 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 5A7B876A for ; Mon, 15 Apr 2013 15:00:51 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.5/8.14.5) with ESMTP id r3FF0pwK084579 for ; Mon, 15 Apr 2013 15:00:51 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.5/8.14.5/Submit) id r3FF0pHW084578; Mon, 15 Apr 2013 15:00:51 GMT (envelope-from nobody) Message-Id: <201304151500.r3FF0pHW084578@red.freebsd.org> Date: Mon, 15 Apr 2013 15:00:51 GMT From: Luiz Otavio O Souza To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Subject: kern/177873: [etherswitchcfg] [patch] Change the per port vlangroup option to pvid X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Apr 2013 15:10:00 -0000 >Number: 177873 >Category: kern >Synopsis: [etherswitchcfg] [patch] Change the per port vlangroup option to pvid >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Apr 15 15:10:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Luiz Otavio O Souza >Release: -HEAD r248943 >Organization: >Environment: FreeBSD rb433 10.0-CURRENT FreeBSD 10.0-CURRENT #88 r248943M: Sat Apr 13 10:04:43 BRT 2013 root@devel:/data/rb/rb433/obj/mips.mips/data/rb/rb433/src/sys/RB433U mips >Description: etherswitchcfg(8) uses vlangroup to set the per port default VID. Change it to pvid which is widely adopted among many vendors. Discussed with adrian@ and ray@. This breaks the rtl8366 switch driver which will be fixed in a subsequent PR. Today etherswitchcfg(8) usage goes like: root@rb433:~ # etherswitchcfg vlangroup2 vlan 10 members 1,2 vlangroup2: vlan: 10 members 1,2 root@rb433:~ # ./etherswitchcfg port2 vlangroup 2 port2: vlangroup: 2 media: Ethernet autoselect (100baseTX ) status: active The attached patch change it to: root@rb433:~ # etherswitchcfg vlangroup2 vlan 10 members 1,2 vlangroup2: vlan: 10 members 1,2 root@rb433:~ # etherswitchcfg port2 pvid 10 port2: pvid: 10 media: Ethernet autoselect (100baseTX ) status: active >How-To-Repeat: >Fix: Apply the attached patch. Patch attached with submission follows: Index: sbin/etherswitchcfg/etherswitchcfg.8 =================================================================== --- sbin/etherswitchcfg/etherswitchcfg.8 (revision 248943) +++ sbin/etherswitchcfg/etherswitchcfg.8 (working copy) @@ -62,9 +62,9 @@ .Ss port The port command selects one of the ports of the switch. It supports the following commands: -.Bl -tag -width ".Ar vlangroup number" -compact -.It Ar vlangroup number -Sets the VLAN group number that is used to process incoming frames that are not tagged. +.Bl -tag -width ".Ar pvid number" -compact +.It Ar pvid number +Sets the default port VID that is used to process incoming frames that are not tagged. .It Ar media mediaspec Specifies the physical media configuration to be configured for a port. .It Ar mediaopt mediaoption @@ -104,7 +104,7 @@ while excluding all other ports. Port 5 will send and receive tagged frames, while port 0 will be untagged. Incoming untagged frames on port 0 are assigned to vlangroup1. -.Dl # etherswitchcfg vlangroup1 vlan 2 members 0,5t port0 vlangroup 1 +.Dl # etherswitchcfg vlangroup1 vlan 2 members 0,5t port0 pvid 2 .Sh SEE ALSO .Xr etherswitch 4 .Sh HISTORY Index: sbin/etherswitchcfg/etherswitchcfg.c =================================================================== --- sbin/etherswitchcfg/etherswitchcfg.c (revision 248943) +++ sbin/etherswitchcfg/etherswitchcfg.c (working copy) @@ -131,18 +131,19 @@ } static void -set_port_vlangroup(struct cfg *cfg, char *argv[]) +set_port_vid(struct cfg *cfg, char *argv[]) { int v; etherswitch_port_t p; v = strtol(argv[1], NULL, 0); - if (v < 0 || v >= cfg->info.es_nvlangroups) - errx(EX_USAGE, "vlangroup must be between 0 and %d", cfg->info.es_nvlangroups-1); + if (v < 0 || v > IEEE802DOT1Q_VID_MAX) + errx(EX_USAGE, "pvid must be between 0 and %d", + IEEE802DOT1Q_VID_MAX); p.es_port = cfg->unit; if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0) err(EX_OSERR, "ioctl(IOETHERSWITCHGETPORT)"); - p.es_vlangroup = v; + p.es_pvid = v; if (ioctl(cfg->fd, IOETHERSWITCHSETPORT, &p) != 0) err(EX_OSERR, "ioctl(IOETHERSWITCHSETPORT)"); } @@ -301,7 +302,7 @@ if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0) err(EX_OSERR, "ioctl(IOETHERSWITCHGETPORT)"); printf("port%d:\n", port); - printf("\tvlangroup: %d\n", p.es_vlangroup); + printf("\tpvid: %d\n", p.es_pvid); printf("\tmedia: "); print_media_word(p.es_ifmr.ifm_current, 1); if (p.es_ifmr.ifm_active != p.es_ifmr.ifm_current) { @@ -502,7 +503,7 @@ } static struct cmds cmds[] = { - { MODE_PORT, "vlangroup", 1, set_port_vlangroup }, + { MODE_PORT, "pvid", 1, set_port_vid }, { MODE_PORT, "media", 1, set_port_media }, { MODE_PORT, "mediaopt", 1, set_port_mediaopt }, { MODE_VLANGROUP, "vlan", 1, set_vlangroup_vid }, Index: sys/dev/etherswitch/etherswitch.h =================================================================== --- sys/dev/etherswitch/etherswitch.h (revision 248943) +++ sys/dev/etherswitch/etherswitch.h (working copy) @@ -36,7 +36,7 @@ struct etherswitch_port { int es_port; - int es_vlangroup; + int es_pvid; union { struct ifreq es_uifr; struct ifmediareq es_uifmr; >Release-Note: >Audit-Trail: >Unformatted: