From 7e2c08add0b45b0156791a9509cc7dac6e3d2ad1 Mon Sep 17 00:00:00 2001 From: Mahesh Patil Date: Mon, 4 Dec 2023 16:14:51 -0800 Subject: [PATCH] nvethernet: Allow more than 31 l2 filter index Ported from - https://git-master.nvidia.com/r/c/nvethernet-docs/+/3027949 Bug 4297989 Change-Id: Ic978dc44dd2d16b03effc5322d2470a238c7ccc9 Signed-off-by: Mahesh Patil --- drivers/net/ethernet/nvidia/nvethernet/ioctl.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/nvidia/nvethernet/ioctl.c b/drivers/net/ethernet/nvidia/nvethernet/ioctl.c index 2756f57b..4ba3fab5 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ioctl.c +++ b/drivers/net/ethernet/nvidia/nvethernet/ioctl.c @@ -591,8 +591,13 @@ static int ether_config_l2_filters(struct net_device *dev, u_l2_filter.mac_addr, ETH_ALEN); ioctl_data.l2_filter.dma_routing = OSI_ENABLE; ioctl_data.l2_filter.addr_mask = OSI_DISABLE; - ioctl_data.l2_filter.dma_chan = osi_dma->dma_chans[0]; - ioctl_data.l2_filter.dma_chansel = OSI_BIT(osi_dma->dma_chans[0]); + ioctl_data.l2_filter.pkt_dup = u_l2_filter.pkt_dup; + if (ioctl_data.l2_filter.pkt_dup) { + ioctl_data.l2_filter.dma_chan = u_l2_filter.dma_chan; + } else { + ioctl_data.l2_filter.dma_chan = osi_dma->dma_chans[0]; + } + ioctl_data.l2_filter.dma_chansel = OSI_BIT_64(ioctl_data.l2_filter.dma_chan); ioctl_data.cmd = OSI_CMD_L2_FILTER; return osi_handle_ioctl(osi_core, &ioctl_data); }