← Documents Documentation/networking/device_drivers/ethernet/ti/am65_nuss_cpsw_switchdev.rst GitHub 원문 ↗

Linux 6.18.37 · Networking

TI K3 AM65 CPSW NUSS Switchdev Ethernet Driver

AM65 CPSW NUSS를 multi-MAC에서 switchdev 모드로 전환하고 bridge, VLAN, FDB, MDB, multicast, access/trunk 포트를 구성하는 절차입니다.

Source pathDocumentation/networking/device_drivers/ethernet/ti/am65_nuss_cpsw_switchdev.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

am65_nuss_cpsw_switchdev.rst:1-143

AM65 CPSW NUSS는 기본적으로 포트별 독립 netdev를 제공하는 multi-MAC 모드로 시작합니다. `switch_mode=true`로 전환한 뒤 포트를 먼저 UP으로 만들고 bridge에 가입시켜야 첫 포트의 재구성 과정이 bridge 설정을 덮어쓰지 않습니다.

AM65 switchdev 설정 순서
포트 이름 확인`switch_mode=true``br0` 생성포트를 UPbridge 가입CPU 포트 VLAN 가입

모드 전환과 bridge offload에 필요한 순서입니다.

Forwarding 데이터베이스 관리
항목자동 학습수동 명령
FDBMAC 감지 시 port에 추가`bridge fdb add`
MDBmulticast group 감지 시 port에 추가`bridge mdb add`
Multicast floodingCPU 포트는 항상 켜짐`bridge link set ... mcast_flood`

주소 유형별 Linux bridge 명령입니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 ===================================================================
4 Texas Instruments K3 AM65 CPSW NUSS switchdev based ethernet driver
5 ===================================================================
6
7 :Version: 1.0
8
9 Port renaming
10 =============
11
12 In order to rename via udev::
13
14 ip -d link show dev sw0p1 | grep switchid
15
16 SUBSYSTEM=="net", ACTION=="add", ATTR{phys_switch_id}==<switchid>, \
17 ATTR{phys_port_name}!="", NAME="sw0$attr{phys_port_name}"
18
19
20 Multi mac mode
21 ==============
22
23 - The driver is operating in multi-mac mode by default, thus
24 working as N individual network interfaces.
25
26 Devlink configuration parameters
27 ================================
28
29 See Documentation/networking/devlink/am65-nuss-cpsw-switch.rst
30
31 Enabling "switch"
32 =================
33
34 The Switch mode can be enabled by configuring devlink driver parameter
35 "switch_mode" to 1/true::
36
37 devlink dev param set platform/c000000.ethernet \
38 name switch_mode value true cmode runtime
39
40 This can be done regardless of the state of Port's netdev devices - UP/DOWN, but
41 Port's netdev devices have to be in UP before joining to the bridge to avoid
42 overwriting of bridge configuration as CPSW switch driver completely reloads its
43 configuration when first port changes its state to UP.
44
45 When both interfaces have joined the bridge - CPSW switch driver will enable
46 marking packets with offload_fwd_mark flag.
47
48 All configuration is implemented via switchdev API.
49
50 Bridge setup
51 ============
52
53 ::
54
55 devlink dev param set platform/c000000.ethernet \
56 name switch_mode value true cmode runtime
57
58 ip link add name br0 type bridge
59 ip link set dev br0 type bridge ageing_time 1000
60 ip link set dev sw0p1 up
61 ip link set dev sw0p2 up
62 ip link set dev sw0p1 master br0
63 ip link set dev sw0p2 master br0
64
65 [*] bridge vlan add dev br0 vid 1 pvid untagged self
66
67 [*] if vlan_filtering=1. where default_pvid=1
68
69 Note. Steps [*] are mandatory.
70
71
72 On/off STP
73 ==========
74
75 ::
76
77 ip link set dev BRDEV type bridge stp_state 1/0
78
79 VLAN configuration
80 ==================
81
82 ::
83
84 bridge vlan add dev br0 vid 1 pvid untagged self <---- add cpu port to VLAN 1
85
86 Note. This step is mandatory for bridge/default_pvid.
87
88 Add extra VLANs
89 ===============
90
91 1. untagged::
92
93 bridge vlan add dev sw0p1 vid 100 pvid untagged master
94 bridge vlan add dev sw0p2 vid 100 pvid untagged master
95 bridge vlan add dev br0 vid 100 pvid untagged self <---- Add cpu port to VLAN100
96
97 2. tagged::
98
99 bridge vlan add dev sw0p1 vid 100 master
100 bridge vlan add dev sw0p2 vid 100 master
101 bridge vlan add dev br0 vid 100 pvid tagged self <---- Add cpu port to VLAN100
102
103 FDBs
104 ----
105
106 FDBs are automatically added on the appropriate switch port upon detection
107
108 Manually adding FDBs::
109
110 bridge fdb add aa:bb:cc:dd:ee:ff dev sw0p1 master vlan 100
111 bridge fdb add aa:bb:cc:dd:ee:fe dev sw0p2 master <---- Add on all VLANs
112
113 MDBs
114 ----
115
116 MDBs are automatically added on the appropriate switch port upon detection
117
118 Manually adding MDBs::
119
120 bridge mdb add dev br0 port sw0p1 grp 239.1.1.1 permanent vid 100
121 bridge mdb add dev br0 port sw0p1 grp 239.1.1.1 permanent <---- Add on all VLANs
122
123 Multicast flooding
124 ==================
125 CPU port mcast_flooding is always on
126
127 Turning flooding on/off on switch ports:
128 bridge link set dev sw0p1 mcast_flood on/off
129
130 Access and Trunk port
131 =====================
132
133 ::
134
135 bridge vlan add dev sw0p1 vid 100 pvid untagged master
136 bridge vlan add dev sw0p2 vid 100 master
137
138
139 bridge vlan add dev br0 vid 100 self
140 ip link add link br0 name br0.100 type vlan id 100
141
142 Note. Setting PVID on Bridge device itself works only for
143 default VLAN (default_pvid).
144

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

포트 이름, multi-MAC 모드와 switch 모드

1-49

이 문서는 `GPL-2.0` 라이선스를 따릅니다.

Texas Instruments K3 AM65 CPSW NUSS switchdev 기반 Ethernet 드라이버

버전 1.0

포트 이름 변경

udev로 포트 이름을 바꾸려면 먼저 `switchid`를 확인합니다.

ip -d link show dev sw0p1 | grep switchid

그다음 다음 udev 규칙을 사용합니다.

SUBSYSTEM=="net", ACTION=="add", ATTR{phys_switch_id}==<switchid>, \
    ATTR{phys_port_name}!="", NAME="sw0$attr{phys_port_name}"

Multi-MAC 모드

드라이버는 기본적으로 multi-MAC 모드로 동작하므로 N개의 독립적인 네트워크 인터페이스로 작동합니다.

Devlink 구성 매개변수

`Documentation/networking/devlink/am65-nuss-cpsw-switch.rst`를 참조하십시오.

switch 활성화

devlink 드라이버 매개변수 `switch_mode`를 1 또는 true로 설정하면 switch 모드를 활성화할 수 있습니다.

devlink dev param set platform/c000000.ethernet \
name switch_mode value true cmode runtime

이 설정은 포트 netdev가 UP인지 DOWN인지와 관계없이 적용할 수 있습니다. 다만 포트를 bridge에 가입시키기 전에는 netdev를 UP으로 만들어야 합니다. 첫 포트가 UP으로 바뀔 때 CPSW switch 드라이버가 구성을 완전히 다시 로드하므로, 순서가 다르면 bridge 구성을 덮어쓸 수 있습니다.

두 인터페이스가 모두 bridge에 가입하면 CPSW switch 드라이버는 패킷에 `offload_fwd_mark` 플래그를 표시합니다.

모든 구성은 switchdev API로 구현됩니다.

AM65 CPSW 모드 전환
기본 multi-MAC netdevdevlink `switch_mode=true`각 포트를 UPbridge에 가입`offload_fwd_mark` 활성화

독립 netdev에서 hardware-offloaded bridge로 전환하는 순서입니다.

.. SPDX-License-Identifier: GPL-2.0

===================================================================
Texas Instruments K3 AM65 CPSW NUSS switchdev based ethernet driver
===================================================================

:Version: 1.0

Port renaming
=============

In order to rename via udev::

    ip -d link show dev sw0p1 | grep switchid

    SUBSYSTEM=="net", ACTION=="add", ATTR{phys_switch_id}==<switchid>, \
            ATTR{phys_port_name}!="", NAME="sw0$attr{phys_port_name}"


Multi mac mode
==============

- The driver is operating in multi-mac mode by default, thus
  working as N individual network interfaces.

Devlink configuration parameters
================================

See Documentation/networking/devlink/am65-nuss-cpsw-switch.rst

Enabling "switch"
=================

The Switch mode can be enabled by configuring devlink driver parameter
"switch_mode" to 1/true::

        devlink dev param set platform/c000000.ethernet \
        name switch_mode value true cmode runtime

This can be done regardless of the state of Port's netdev devices - UP/DOWN, but
Port's netdev devices have to be in UP before joining to the bridge to avoid
overwriting of bridge configuration as CPSW switch driver completely reloads its
configuration when first port changes its state to UP.

When both interfaces have joined the bridge - CPSW switch driver will enable
marking packets with offload_fwd_mark flag.

All configuration is implemented via switchdev API.

Bridge, STP와 VLAN 구성

50-102

Bridge 설정

switch 모드를 활성화하고 `br0`를 만든 뒤 ageing time을 1000으로 설정합니다. `sw0p1`과 `sw0p2`를 UP으로 만든 다음 bridge master에 가입시킵니다.

devlink dev param set platform/c000000.ethernet \
name switch_mode value true cmode runtime

	ip link add name br0 type bridge
	ip link set dev br0 type bridge ageing_time 1000
	ip link set dev sw0p1 up
	ip link set dev sw0p2 up
	ip link set dev sw0p1 master br0
	ip link set dev sw0p2 master br0

`vlan_filtering=1`이고 `default_pvid=1`이면 CPU 포트에 VLAN 1을 PVID이자 untagged VLAN으로 추가하는 다음 단계가 필수입니다.

bridge vlan add dev br0 vid 1 pvid untagged self

STP 켜기와 끄기

ip link set dev BRDEV type bridge stp_state 1/0

VLAN 구성

bridge의 CPU 포트를 VLAN 1에 추가하는 단계는 bridge/default_pvid 구성을 위해 필수입니다.

bridge vlan add dev br0 vid 1 pvid untagged self

추가 VLAN을 untagged로 구성하는 예

	bridge vlan add dev sw0p1 vid 100 pvid untagged master
	bridge vlan add dev sw0p2 vid 100 pvid untagged master
	bridge vlan add dev br0 vid 100 pvid untagged self <---- Add cpu port to VLAN100

두 switch 포트와 CPU 포트 모두 VLAN 100을 PVID이자 untagged VLAN으로 사용합니다.

추가 VLAN을 tagged로 구성하는 예

	bridge vlan add dev sw0p1 vid 100 master
	bridge vlan add dev sw0p2 vid 100 master
	bridge vlan add dev br0 vid 100 pvid tagged self <---- Add cpu port to VLAN100

switch 포트에서는 VLAN 100의 tag를 유지하고 CPU 포트도 VLAN 100을 tagged로 가입시킵니다.

AM65 VLAN 포트 역할
구성`sw0p1`/`sw0p2``br0` CPU 포트
기본 VLAN 1bridge 가입`vid 1 pvid untagged self`
VLAN 100 access`vid 100 pvid untagged master``vid 100 pvid untagged self`
VLAN 100 tagged`vid 100 master``vid 100 pvid tagged self`

`master`는 switch 포트, `self`는 bridge의 CPU 포트에 적용됩니다.

Bridge setup
============

::

        devlink dev param set platform/c000000.ethernet \
        name switch_mode value true cmode runtime

        ip link add name br0 type bridge
        ip link set dev br0 type bridge ageing_time 1000
        ip link set dev sw0p1 up
        ip link set dev sw0p2 up
        ip link set dev sw0p1 master br0
        ip link set dev sw0p2 master br0

        [*] bridge vlan add dev br0 vid 1 pvid untagged self

        [*] if vlan_filtering=1. where default_pvid=1

        Note. Steps [*] are mandatory.


On/off STP
==========

::

        ip link set dev BRDEV type bridge stp_state 1/0

VLAN configuration
==================

::

  bridge vlan add dev br0 vid 1 pvid untagged self <---- add cpu port to VLAN 1

Note. This step is mandatory for bridge/default_pvid.

Add extra VLANs
===============

 1. untagged::

        bridge vlan add dev sw0p1 vid 100 pvid untagged master
        bridge vlan add dev sw0p2 vid 100 pvid untagged master
        bridge vlan add dev br0 vid 100 pvid untagged self <---- Add cpu port to VLAN100

 2. tagged::

        bridge vlan add dev sw0p1 vid 100 master
        bridge vlan add dev sw0p2 vid 100 master
        bridge vlan add dev br0 vid 100 pvid tagged self <---- Add cpu port to VLAN100

FDB, MDB, multicast와 access/trunk 포트

103-143

FDB

FDB 항목은 주소를 감지하면 적절한 switch 포트에 자동으로 추가됩니다. 수동으로 추가할 수도 있습니다.

bridge fdb add aa:bb:cc:dd:ee:ff dev sw0p1 master vlan 100
bridge fdb add aa:bb:cc:dd:ee:fe dev sw0p2 master

첫 명령은 VLAN 100에만 항목을 추가하고, 두 번째 명령은 모든 VLAN에 추가합니다.

MDB

MDB 항목도 multicast group을 감지하면 적절한 switch 포트에 자동으로 추가됩니다. 수동 추가 예는 다음과 같습니다.

bridge mdb add dev br0 port sw0p1 grp 239.1.1.1 permanent vid 100
bridge mdb add dev br0 port sw0p1 grp 239.1.1.1 permanent

첫 명령은 VLAN 100에만 group을 추가하고, 두 번째 명령은 모든 VLAN에 추가합니다.

Multicast flooding

CPU 포트의 `mcast_flooding`은 항상 켜져 있습니다. switch 포트에서는 다음 명령으로 flooding을 켜거나 끕니다.

bridge link set dev sw0p1 mcast_flood on/off

Access 및 trunk 포트

bridge vlan add dev sw0p1 vid 100 pvid untagged master
bridge vlan add dev sw0p2 vid 100 master


bridge vlan add dev br0 vid 100 self
ip link add link br0 name br0.100 type vlan id 100

`sw0p1`은 VLAN 100의 untagged access 포트이고 `sw0p2`는 tagged trunk 포트입니다. CPU 포트를 VLAN 100에 가입시키고 `br0.100` VLAN 인터페이스를 만듭니다. Bridge 장치 자체에 PVID를 설정하는 것은 기본 VLAN인 `default_pvid`에만 적용됩니다.

FDBs
----

FDBs are automatically added on the appropriate switch port upon detection

Manually adding FDBs::

    bridge fdb add aa:bb:cc:dd:ee:ff dev sw0p1 master vlan 100
    bridge fdb add aa:bb:cc:dd:ee:fe dev sw0p2 master <---- Add on all VLANs

MDBs
----

MDBs are automatically added on the appropriate switch port upon detection

Manually adding MDBs::

  bridge mdb add dev br0 port sw0p1 grp 239.1.1.1 permanent vid 100
  bridge mdb add dev br0 port sw0p1 grp 239.1.1.1 permanent <---- Add on all VLANs

Multicast flooding
==================
CPU port mcast_flooding is always on

Turning flooding on/off on switch ports:
bridge link set dev sw0p1 mcast_flood on/off

Access and Trunk port
=====================

::

 bridge vlan add dev sw0p1 vid 100 pvid untagged master
 bridge vlan add dev sw0p2 vid 100 master


 bridge vlan add dev br0 vid 100 self
 ip link add link br0 name br0.100 type vlan id 100

Note. Setting PVID on Bridge device itself works only for
default VLAN (default_pvid).