Texas Instruments K3 AM65 CPSW NUSS switchdev 乙太網驅動

版本:

1.0

埠重新命名

透過 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}"

多 MAC 模式

  • 該驅動預設在多 MAC 模式下執行,因此作為 N 個獨立的網路介面工作。

啟用“交換機”

透過將 devlink 驅動引數“switch_mode”配置為 1/true,可以啟用交換機模式

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

無論埠的 netdev 裝置處於 UP/DOWN 狀態,都可以執行此操作,但埠的 netdev 裝置在加入網橋之前必須處於 UP 狀態,以避免覆蓋網橋配置,因為當第一個埠將其狀態更改為 UP 時,CPSW 交換機驅動會完全重新載入其配置。

當兩個介面都加入網橋時,CPSW 交換機驅動將啟用用 offload_fwd_mark 標誌標記資料包。

所有配置都透過 switchdev API 實現。

網橋設定

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.

啟用/停用 STP

ip link set dev BRDEV type bridge stp_state 1/0

VLAN 配置

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

注意:此步驟對於網橋/default_pvid 是強制性的。

新增額外的 VLAN

  1. 未標記

    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. 已標記

    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

FDB 會在檢測到時自動新增到相應的交換機埠上

手動新增 FDB

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

MDB

MDB 會在檢測到時自動新增到相應的交換機埠上

手動新增 MDB

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

多播泛洪

CPU 埠多播泛洪始終開啟

開啟/關閉交換機埠泛洪:bridge link set dev sw0p1 mcast_flood on/off

接入和匯聚埠

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

注意:在網橋裝置本身上設定 PVID 僅適用於預設 VLAN (default_pvid)。