Commit eb4898fd authored by Mengyuan Lou's avatar Mengyuan Lou Committed by Jakub Kicinski
Browse files

net: libwx: add wangxun vf common api



Add common wx_configure_vf and wx_set_mac_vf for
ngbevf and txgbevf.

Signed-off-by: default avatarMengyuan Lou <mengyuanlou@net-swift.com>
Link: https://patch.msgid.link/20250704094923.652-4-mengyuanlou@net-swift.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent ba3b8490
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5,4 +5,4 @@
obj-$(CONFIG_LIBWX) += libwx.o

libwx-objs := wx_hw.o wx_lib.o wx_ethtool.o wx_ptp.o wx_mbx.o wx_sriov.o
libwx-objs += wx_vf.o
libwx-objs += wx_vf.o wx_vf_lib.o wx_vf_common.o
+2 −1
Original line number Diff line number Diff line
@@ -1827,7 +1827,7 @@ void wx_disable_rx_queue(struct wx *wx, struct wx_ring *ring)
}
EXPORT_SYMBOL(wx_disable_rx_queue);

static void wx_enable_rx_queue(struct wx *wx, struct wx_ring *ring)
void wx_enable_rx_queue(struct wx *wx, struct wx_ring *ring)
{
	u8 reg_idx = ring->reg_idx;
	u32 rxdctl;
@@ -1843,6 +1843,7 @@ static void wx_enable_rx_queue(struct wx *wx, struct wx_ring *ring)
		       reg_idx);
	}
}
EXPORT_SYMBOL(wx_enable_rx_queue);

static void wx_configure_srrctl(struct wx *wx,
				struct wx_ring *rx_ring)
+1 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ void wx_enable_sec_rx_path(struct wx *wx);
void wx_set_rx_mode(struct net_device *netdev);
int wx_change_mtu(struct net_device *netdev, int new_mtu);
void wx_disable_rx_queue(struct wx *wx, struct wx_ring *ring);
void wx_enable_rx_queue(struct wx *wx, struct wx_ring *ring);
void wx_configure_rx(struct wx *wx);
void wx_configure(struct wx *wx);
void wx_start_hw(struct wx *wx);
+4 −0
Original line number Diff line number Diff line
@@ -828,6 +828,8 @@ struct wx_mbx_info {
	u32 mailbox;
	u32 udelay;
	u32 timeout;
	/* lock mbx access */
	spinlock_t mbx_lock;
};

struct wx_thermal_sensor_data {
@@ -1289,6 +1291,8 @@ struct wx {
	u32 *isb_mem;
	u32 isb_tag[WX_ISB_MAX];
	bool misc_irq_domain;
	u32 eims_other;
	u32 eims_enable_mask;

#define WX_MAX_RETA_ENTRIES 128
#define WX_RSS_INDIR_TBL_MAX 64
+50 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
#define WX_VXMRQC                0x78
#define WX_VXICR                 0x100
#define WX_VXIMS                 0x108
#define WX_VXIMC                 0x10C
#define WX_VF_IRQ_CLEAR_MASK     7
#define WX_VF_MAX_TX_QUEUES      4
#define WX_VF_MAX_RX_QUEUES      4
@@ -22,6 +23,12 @@
#define WX_VXRXDCTL_ENABLE       BIT(0)
#define WX_VXTXDCTL_FLUSH        BIT(26)

#define WX_VXITR(i)              (0x200 + (4 * (i))) /* i=[0,1] */
#define WX_VXITR_MASK            GENMASK(8, 0)
#define WX_VXITR_CNT_WDIS        BIT(31)
#define WX_VXIVAR_MISC           0x260
#define WX_VXIVAR(i)             (0x240 + (4 * (i))) /* i=[0,3] */

#define WX_VXRXDCTL_RSCMAX(f)    FIELD_PREP(GENMASK(24, 23), f)
#define WX_VXRXDCTL_BUFLEN(f)    FIELD_PREP(GENMASK(6, 1), f)
#define WX_VXRXDCTL_BUFSZ(f)     FIELD_PREP(GENMASK(11, 8), f)
@@ -44,6 +51,49 @@
#define WX_RX_HDR_SIZE           256
#define WX_RX_BUF_SIZE           2048

#define WX_RXBUFFER_2048         (2048)
#define WX_RXBUFFER_3072         3072

/* Receive Path */
#define WX_VXRDBAL(r)            (0x1000 + (0x40 * (r)))
#define WX_VXRDBAH(r)            (0x1004 + (0x40 * (r)))
#define WX_VXRDT(r)              (0x1008 + (0x40 * (r)))
#define WX_VXRDH(r)              (0x100C + (0x40 * (r)))

#define WX_VXRXDCTL_RSCEN        BIT(29)
#define WX_VXRXDCTL_DROP         BIT(30)
#define WX_VXRXDCTL_VLAN         BIT(31)

#define WX_VXTDBAL(r)            (0x3000 + (0x40 * (r)))
#define WX_VXTDBAH(r)            (0x3004 + (0x40 * (r)))
#define WX_VXTDT(r)              (0x3008 + (0x40 * (r)))
#define WX_VXTDH(r)              (0x300C + (0x40 * (r)))

#define WX_VXTXDCTL_ENABLE       BIT(0)
#define WX_VXTXDCTL_BUFLEN(f)    FIELD_PREP(GENMASK(6, 1), f)
#define WX_VXTXDCTL_PTHRESH(f)   FIELD_PREP(GENMASK(11, 8), f)
#define WX_VXTXDCTL_WTHRESH(f)   FIELD_PREP(GENMASK(22, 16), f)

#define WX_VXMRQC_PSR(f)         FIELD_PREP(GENMASK(5, 1), f)
#define WX_VXMRQC_PSR_MASK       GENMASK(5, 1)
#define WX_VXMRQC_PSR_L4HDR      BIT(0)
#define WX_VXMRQC_PSR_L3HDR      BIT(1)
#define WX_VXMRQC_PSR_L2HDR      BIT(2)
#define WX_VXMRQC_PSR_TUNHDR     BIT(3)
#define WX_VXMRQC_PSR_TUNMAC     BIT(4)

#define WX_VXRSSRK(i)            (0x80 + ((i) * 4)) /* i=[0,9] */
#define WX_VXRETA(i)             (0xC0 + ((i) * 4)) /* i=[0,15] */

#define WX_VXMRQC_RSS(f)         FIELD_PREP(GENMASK(31, 16), f)
#define WX_VXMRQC_RSS_MASK       GENMASK(31, 16)
#define WX_VXMRQC_RSS_ALG_IPV4_TCP   BIT(0)
#define WX_VXMRQC_RSS_ALG_IPV4       BIT(1)
#define WX_VXMRQC_RSS_ALG_IPV6       BIT(4)
#define WX_VXMRQC_RSS_ALG_IPV6_TCP   BIT(5)
#define WX_VXMRQC_RSS_EN             BIT(8)
#define WX_VXMRQC_RSS_HASH(f)    FIELD_PREP(GENMASK(15, 13), f)

void wx_init_hw_vf(struct wx *wx);
int wx_reset_hw_vf(struct wx *wx);
void wx_get_mac_addr_vf(struct wx *wx, u8 *mac_addr);
Loading