]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: airoha: Rely on airoha_gdm_dev pointer in airoha_is_lan_gdm_port()
authorLorenzo Bianconi <lorenzo@kernel.org>
Wed, 27 May 2026 10:21:17 +0000 (12:21 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 2 Jun 2026 20:24:25 +0000 (13:24 -0700)
Rename airoha_is_lan_gdm_port in airoha_is_lan_gdm_dev. Moreover, rely
on airoha_gdm_dev pointer in airoha_is_lan_gdm_dev() instead of
airoha_gdm_port one.
This is a preliminary patch to support multiple net_devices connected to
the same GDM{3,4} port via an external hw arbiter.

Tested-by: Xuegang Lu <xuegang.lu@airoha.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20260527-airoha-eth-multi-serdes-preliminary-v1-3-ec6ed73ef7fc@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/airoha/airoha_eth.c
drivers/net/ethernet/airoha/airoha_eth.h
drivers/net/ethernet/airoha/airoha_ppe.c

index 0f37d26e4d52e8fdb6a627cac9c74a1ace43362c..c5d25f7640acb1abb564b9a2a10ae29ade900c0c 100644 (file)
@@ -73,12 +73,10 @@ static void airoha_qdma_irq_disable(struct airoha_irq_bank *irq_bank,
 
 static void airoha_set_macaddr(struct airoha_gdm_dev *dev, const u8 *addr)
 {
-       struct airoha_gdm_port *port = dev->port;
        struct airoha_eth *eth = dev->eth;
        u32 val, reg;
 
-       reg = airoha_is_lan_gdm_port(port) ? REG_FE_LAN_MAC_H
-                                          : REG_FE_WAN_MAC_H;
+       reg = airoha_is_lan_gdm_dev(dev) ? REG_FE_LAN_MAC_H : REG_FE_WAN_MAC_H;
        val = (addr[0] << 16) | (addr[1] << 8) | addr[2];
        airoha_fe_wr(eth, reg, val);
 
@@ -1868,7 +1866,7 @@ static int airoha_dev_init(struct net_device *netdev)
        int i;
 
        /* QDMA0 is used for lan ports while QDMA1 is used for WAN ports */
-       dev->qdma = &eth->qdma[!airoha_is_lan_gdm_port(port)];
+       dev->qdma = &eth->qdma[!airoha_is_lan_gdm_dev(dev)];
        dev->dev->irq = dev->qdma->irq_banks[0].irq;
        airoha_set_macaddr(dev, netdev->dev_addr);
 
index f1eea492217c03345bab4d59b3441bde29ec80c9..f6f59d25abd932682a03fe39ad0248c1121cdc0e 100644 (file)
@@ -647,8 +647,10 @@ static inline u16 airoha_qdma_get_txq(struct airoha_qdma *qdma, u16 qid)
        return qid % ARRAY_SIZE(qdma->q_tx);
 }
 
-static inline bool airoha_is_lan_gdm_port(struct airoha_gdm_port *port)
+static inline bool airoha_is_lan_gdm_dev(struct airoha_gdm_dev *dev)
 {
+       struct airoha_gdm_port *port = dev->port;
+
        /* GDM1 port on EN7581 SoC is connected to the lan dsa switch.
         * GDM{2,3,4} can be used as wan port connected to an external
         * phy module.
index 22f5f1bae730976554771f186508f6176a88f52f..047141b2d6d8a6ca1bea176025297ded85c9c03d 100644 (file)
@@ -362,7 +362,7 @@ static int airoha_ppe_foe_entry_prepare(struct airoha_eth *eth,
                        /* For downlink traffic consume SRAM memory for hw
                         * forwarding descriptors queue.
                         */
-                       if (airoha_is_lan_gdm_port(port))
+                       if (airoha_is_lan_gdm_dev(dev))
                                val |= AIROHA_FOE_IB2_FAST_PATH;
                        if (dsa_port >= 0)
                                val |= FIELD_PREP(AIROHA_FOE_IB2_NBQ,