From e6b9c74ee0d0f5cac512826f828ca6d972de1c64 Mon Sep 17 00:00:00 2001 From: judyjoseph <53951155+judyjoseph@users.noreply.github.com> Date: Thu, 31 Dec 2020 08:32:12 -0800 Subject: [PATCH] Update SAI 3.7 brcm package (#6324) Release new SAI bcm package with the new patches merged into SUG INT_3.7 release branch and fix provided for CS00011619081 --- platform/broadcom/sai-modules.mk | 2 +- platform/broadcom/sai.mk | 8 ++++---- .../broadcom/saibcm-modules/debian/changelog | 7 +++++++ .../bde/linux/user/kernel/linux-user-bde.c | 20 +++++++++++++++++++ 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/platform/broadcom/sai-modules.mk b/platform/broadcom/sai-modules.mk index 55ced99e65..dfb8bde271 100644 --- a/platform/broadcom/sai-modules.mk +++ b/platform/broadcom/sai-modules.mk @@ -1,7 +1,7 @@ # Broadcom SAI modules KVERSION = 4.9.0-11-2-amd64 -BRCM_OPENNSL_KERNEL_VERSION = 3.7.5.2 +BRCM_OPENNSL_KERNEL_VERSION = 3.7.5.2-1 BRCM_OPENNSL_KERNEL = opennsl-modules_$(BRCM_OPENNSL_KERNEL_VERSION)_amd64.deb $(BRCM_OPENNSL_KERNEL)_SRC_PATH = $(PLATFORM_PATH)/saibcm-modules diff --git a/platform/broadcom/sai.mk b/platform/broadcom/sai.mk index 423a5ea19d..1cb0f02187 100644 --- a/platform/broadcom/sai.mk +++ b/platform/broadcom/sai.mk @@ -1,8 +1,8 @@ -BRCM_SAI = libsaibcm_3.7.5.2_amd64.deb -$(BRCM_SAI)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/3.7/libsaibcm_3.7.5.2_amd64.deb?sv=2015-04-05&sr=b&sig=wVtVNSk6%2BiWoUefcr%2FeyyI0Z8w1CrRGRryL%2BLLMdBKo%3D&se=2034-05-27T22%3A06%3A37Z&sp=r" -BRCM_SAI_DEV = libsaibcm-dev_3.7.5.2_amd64.deb +BRCM_SAI = libsaibcm_3.7.5.2-1_amd64.deb +$(BRCM_SAI)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/3.7/libsaibcm_3.7.5.2-1_amd64.deb?sv=2015-04-05&sr=b&sig=%2FHUrjpYZ0MPspo4jBc08d4pn4AWVS6%2Be3BID5qPNvs0%3D&se=2034-09-08T18%3A09%3A54Z&sp=r" +BRCM_SAI_DEV = libsaibcm-dev_3.7.5.2-1_amd64.deb $(eval $(call add_derived_package,$(BRCM_SAI),$(BRCM_SAI_DEV))) -$(BRCM_SAI_DEV)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/3.7/libsaibcm-dev_3.7.5.2_amd64.deb?sv=2015-04-05&sr=b&sig=Qd0aKbLKiAi3pOZDwL6SfgfKW2eaP6RVfrZSS5YV49s%3D&se=2034-05-27T22%3A07%3A12Z&sp=r" +$(BRCM_SAI_DEV)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/3.7/libsaibcm-dev_3.7.5.2-1_amd64.deb?sv=2015-04-05&sr=b&sig=qbyqn%2F9ueIH1ffWMjbhbUn15RRgt%2BFpvpFUOlspXkqs%3D&se=2034-09-08T18%3A10%3A31Z&sp=r" SONIC_ONLINE_DEBS += $(BRCM_SAI) $(BRCM_SAI_DEV)_DEPENDS += $(BRCM_SAI) diff --git a/platform/broadcom/saibcm-modules/debian/changelog b/platform/broadcom/saibcm-modules/debian/changelog index 4bcab76e60..e1147fb4e6 100644 --- a/platform/broadcom/saibcm-modules/debian/changelog +++ b/platform/broadcom/saibcm-modules/debian/changelog @@ -1,3 +1,10 @@ +opennsl (3.7.5.2-1) unstable; urgency=medium + + * Port Broadcom SAI 3.7.5.2, with latest commits. + * GPL module fix from CSP (CS00011619081) + + -- Judy Joseph Fri, 30 Dec 2020 15:32:47 +0000 + opennsl (3.7.5.2) unstable; urgency=medium * Port Broadcom SAI 3.7.5.2 diff --git a/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/linux-user-bde.c b/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/linux-user-bde.c index 370f89e022..b8891487aa 100644 --- a/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/linux-user-bde.c +++ b/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/linux-user-bde.c @@ -178,6 +178,11 @@ typedef struct { } bde_inst_resource_t; static bde_inst_resource_t _bde_inst_resource[LINUX_BDE_MAX_DEVICES]; +/* + * Lock used to protect changes to _bde_inst_resource + */ +static spinlock_t bde_resource_lock; + typedef struct { phys_addr_t cpu_pbase; /* CPU physical base address of the DMA pool */ @@ -906,6 +911,7 @@ _init(void) if ((linux_bde_create(NULL, &user_bde) < 0) || user_bde == NULL) { return -ENODEV; } + spin_lock_init(&bde_resource_lock); init_waitqueue_head(&_ether_interrupt_wq); @@ -1121,17 +1127,29 @@ _instance_attach(unsigned int inst_id, unsigned int dma_size) /* Reprobe the system for hot-plugged device */ _device_reprobe(); + gprintk("INFO: Request to attach to instance_id %d with dma size %d!\n", inst_id, dma_size); + + spin_lock(&bde_resource_lock); + /* Validate the resource with inst_id */ exist = _instance_validate(inst_id, dma_size); + if (exist < 0) { + gprintk("ERROR: The instance_id %d is not valid!\n", inst_id); + spin_unlock(&bde_resource_lock); return LUBDE_FAIL; } if (exist > 0) { + gprintk("INFO: Already attached to instance_id %d with dma size %d!\n", inst_id, dma_size); + spin_unlock(&bde_resource_lock); return LUBDE_SUCCESS; } if (_dma_resource_alloc(dma_size, &dma_offset) < 0) { + gprintk("ERROR: Dma resource alloc FAIL for instance_id %d with dma size %d!\n", inst_id, dma_size); + spin_unlock(&bde_resource_lock); return LUBDE_FAIL; } + for (i = 0; i < user_bde->num_devices(BDE_ALL_DEVICES); i++) { res = &_bde_inst_resource[i]; if ((_bde_multi_inst == 0) || (res->inst_id == 0)) { @@ -1157,6 +1175,8 @@ _instance_attach(unsigned int inst_id, unsigned int dma_size) } } } + spin_unlock(&bde_resource_lock); + gprintk("INFO: Attached to instance_id %d with dma size %d! SUCCESS\n", inst_id, dma_size); return LUBDE_SUCCESS; }