From d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 11 Dec 2023 02:45:28 +0000 Subject: [PATCH] add boot partition size --- kernel/drivers/net/wireless/rockchip_wlan/cywdhd/bcmdhd/include/wlfc_proto.h | 172 +++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 118 insertions(+), 54 deletions(-) diff --git a/kernel/drivers/net/wireless/rockchip_wlan/cywdhd/bcmdhd/include/wlfc_proto.h b/kernel/drivers/net/wireless/rockchip_wlan/cywdhd/bcmdhd/include/wlfc_proto.h index e604d53..c1fc5ea 100644 --- a/kernel/drivers/net/wireless/rockchip_wlan/cywdhd/bcmdhd/include/wlfc_proto.h +++ b/kernel/drivers/net/wireless/rockchip_wlan/cywdhd/bcmdhd/include/wlfc_proto.h @@ -1,13 +1,14 @@ -/* SPDX-License-Identifier: GPL-2.0 */ /* - * Copyright (C) 1999-2019, Broadcom Corporation - * + * Portions of this code are copyright (c) 2022 Cypress Semiconductor Corporation + * + * Copyright (C) 1999-2017, Broadcom Corporation + * * Unless you and Broadcom execute a separate written software license * agreement governing use of this software, this software is licensed to you * under the terms of the GNU General Public License version 2 (the "GPL"), * available at http://www.broadcom.com/licenses/GPLv2.php, with the * following added to such license: - * + * * As a special exception, the copyright holders of this software give you * permission to link this software with independent modules, and to copy and * distribute the resulting executable under terms of your choice, provided that @@ -15,7 +16,7 @@ * the license of that module. An independent module is a module which is not * derived from this software. The special exception does not apply to any * modifications of the software. - * + * * Notwithstanding the above, under no circumstances may you combine this * software in any way with any other Broadcom software provided under a license * other than the GPL, without Broadcom's express prior written consent. @@ -23,12 +24,11 @@ * * <<Broadcom-WL-IPTag/Open:>> * - * $Id: wlfc_proto.h 542895 2015-03-22 14:13:12Z $ + * $Id: wlfc_proto.h 692466 2017-03-28 07:48:19Z $ * */ /** WL flow control for PROP_TXSTATUS. Related to host AMPDU reordering. */ - #ifndef __wlfc_proto_definitions_h__ #define __wlfc_proto_definitions_h__ @@ -82,37 +82,47 @@ --------------------------------------------------------------------------- */ -#define WLFC_CTL_TYPE_MAC_OPEN 1 -#define WLFC_CTL_TYPE_MAC_CLOSE 2 -#define WLFC_CTL_TYPE_MAC_REQUEST_CREDIT 3 -#define WLFC_CTL_TYPE_TXSTATUS 4 -#define WLFC_CTL_TYPE_PKTTAG 5 /** host<->dongle */ +typedef enum { + WLFC_CTL_TYPE_MAC_OPEN = 1, + WLFC_CTL_TYPE_MAC_CLOSE = 2, + WLFC_CTL_TYPE_MAC_REQUEST_CREDIT = 3, + WLFC_CTL_TYPE_TXSTATUS = 4, + WLFC_CTL_TYPE_PKTTAG = 5, /** host<->dongle */ -#define WLFC_CTL_TYPE_MACDESC_ADD 6 -#define WLFC_CTL_TYPE_MACDESC_DEL 7 -#define WLFC_CTL_TYPE_RSSI 8 + WLFC_CTL_TYPE_MACDESC_ADD = 6, + WLFC_CTL_TYPE_MACDESC_DEL = 7, + WLFC_CTL_TYPE_RSSI = 8, -#define WLFC_CTL_TYPE_INTERFACE_OPEN 9 -#define WLFC_CTL_TYPE_INTERFACE_CLOSE 10 + WLFC_CTL_TYPE_INTERFACE_OPEN = 9, + WLFC_CTL_TYPE_INTERFACE_CLOSE = 10, -#define WLFC_CTL_TYPE_FIFO_CREDITBACK 11 + WLFC_CTL_TYPE_FIFO_CREDITBACK = 11, -#define WLFC_CTL_TYPE_PENDING_TRAFFIC_BMP 12 /** host->dongle */ -#define WLFC_CTL_TYPE_MAC_REQUEST_PACKET 13 -#define WLFC_CTL_TYPE_HOST_REORDER_RXPKTS 14 + WLFC_CTL_TYPE_PENDING_TRAFFIC_BMP = 12, /** host->dongle */ + WLFC_CTL_TYPE_MAC_REQUEST_PACKET = 13, + WLFC_CTL_TYPE_HOST_REORDER_RXPKTS = 14, -#define WLFC_CTL_TYPE_TX_ENTRY_STAMP 15 -#define WLFC_CTL_TYPE_RX_STAMP 16 -#define WLFC_CTL_TYPE_TX_STATUS_STAMP 17 /** obsolete */ + WLFC_CTL_TYPE_TX_ENTRY_STAMP = 15, + WLFC_CTL_TYPE_RX_STAMP = 16, + WLFC_CTL_TYPE_TX_STATUS_STAMP = 17, /** obsolete */ -#define WLFC_CTL_TYPE_TRANS_ID 18 -#define WLFC_CTL_TYPE_COMP_TXSTATUS 19 + WLFC_CTL_TYPE_TRANS_ID = 18, + WLFC_CTL_TYPE_COMP_TXSTATUS = 19, -#define WLFC_CTL_TYPE_TID_OPEN 20 -#define WLFC_CTL_TYPE_TID_CLOSE 21 + WLFC_CTL_TYPE_TID_OPEN = 20, + WLFC_CTL_TYPE_TID_CLOSE = 21, + WLFC_CTL_TYPE_UPD_FLR_WEIGHT = 22, + WLFC_CTL_TYPE_ENAB_FFSCH = 23, + WLFC_CTL_TYPE_UPDATE_FLAGS = 24, /* clear the flags set in flowring */ + WLFC_CTL_TYPE_CLEAR_SUPPR = 25, /* free the supression info in the flowring */ + WLFC_CTL_TYPE_FLOWID_OPEN = 26, + WLFC_CTL_TYPE_FLOWID_CLOSE = 27, -#define WLFC_CTL_TYPE_FILLER 255 + WLFC_CTL_TYPE_FILLER = 255 +} wlfc_ctl_type_t; + +#define WLFC_CTL_VALUE_LEN_FLOWID 2 #define WLFC_CTL_VALUE_LEN_MACDESC 8 /** handle, interface, MAC */ @@ -128,6 +138,14 @@ #define WLFC_CTL_VALUE_LEN_SEQ 2 +/* Reset the flags set for the corresponding flowring of the SCB which is de-inited */ +/* FLOW_RING_FLAG_LAST_TIM | FLOW_RING_FLAG_INFORM_PKTPEND | FLOW_RING_FLAG_PKT_REQ */ +#define WLFC_RESET_ALL_FLAGS 0 +#define WLFC_CTL_VALUE_LEN_FLAGS 7 /** flags, MAC */ + +/* free the data stored to be used for suppressed packets in future */ +#define WLFC_CTL_VALUE_LEN_SUPR 7 /** tid, MAC */ + /* The high bits of ratespec report in timestamp are used for various status */ #define WLFC_TSFLAGS_RX_RETRY (1 << 31) #define WLFC_TSFLAGS_PM_ENABLED (1 << 30) @@ -139,9 +157,9 @@ #define WLFC_CTL_VALUE_LEN_REQUEST_CREDIT 3 /* credit, MAC-handle, prec_bitmap */ #define WLFC_CTL_VALUE_LEN_REQUEST_PACKET 3 /* credit, MAC-handle, prec_bitmap */ - #define WLFC_PKTFLAG_PKTFROMHOST 0x01 #define WLFC_PKTFLAG_PKT_REQUESTED 0x02 +#define WLFC_PKTFLAG_PKT_SENDTOHOST 0x04 #define WL_TXSTATUS_STATUS_MASK 0xff /* allow 8 bits */ #define WL_TXSTATUS_STATUS_SHIFT 24 @@ -206,44 +224,68 @@ ((ctr) & WL_TXSTATUS_FREERUNCTR_MASK)) #define WL_TXSTATUS_GET_FREERUNCTR(x) ((x)& WL_TXSTATUS_FREERUNCTR_MASK) -/* Seq number part of AMSDU */ +/* AMSDU part of d11 seq number */ #define WL_SEQ_AMSDU_MASK 0x1 /* allow 1 bit */ #define WL_SEQ_AMSDU_SHIFT 14 #define WL_SEQ_SET_AMSDU(x, val) ((x) = \ ((x) & ~(WL_SEQ_AMSDU_MASK << WL_SEQ_AMSDU_SHIFT)) | \ - (((val) & WL_SEQ_AMSDU_MASK) << WL_SEQ_AMSDU_SHIFT)) -#define WL_SEQ_GET_AMSDU(x) (((x) >> WL_SEQ_AMSDU_SHIFT) & \ - WL_SEQ_AMSDU_MASK) + (((val) & WL_SEQ_AMSDU_MASK) << WL_SEQ_AMSDU_SHIFT)) /**< sets a single AMSDU bit */ +/** returns TRUE if ring item is AMSDU (seq = d11 seq nr) */ +#define WL_SEQ_IS_AMSDU(x) (((x) >> WL_SEQ_AMSDU_SHIFT) & \ + WL_SEQ_AMSDU_MASK) -/* Seq number is valid coming from FW */ +/* indicates last_suppr_seq is valid */ +#define WL_SEQ_VALIDSUPPR_MASK 0x1 /* allow 1 bit */ +#define WL_SEQ_VALIDSUPPR_SHIFT 12 +#define WL_SEQ_SET_VALIDSUPPR(x, val) ((x) = \ + ((x) & ~(WL_SEQ_VALIDSUPPR_MASK << WL_SEQ_VALIDSUPPR_SHIFT)) | \ + (((val) & WL_SEQ_VALIDSUPPR_MASK) << WL_SEQ_VALIDSUPPR_SHIFT)) +#define WL_SEQ_GET_VALIDSUPPR(x) (((x) >> WL_SEQ_VALIDSUPPR_SHIFT) & \ + WL_SEQ_VALIDSUPPR_MASK) + #define WL_SEQ_FROMFW_MASK 0x1 /* allow 1 bit */ #define WL_SEQ_FROMFW_SHIFT 13 #define WL_SEQ_SET_FROMFW(x, val) ((x) = \ ((x) & ~(WL_SEQ_FROMFW_MASK << WL_SEQ_FROMFW_SHIFT)) | \ (((val) & WL_SEQ_FROMFW_MASK) << WL_SEQ_FROMFW_SHIFT)) -#define WL_SEQ_GET_FROMFW(x) (((x) >> WL_SEQ_FROMFW_SHIFT) & \ - WL_SEQ_FROMFW_MASK) +/** Set when firmware assigns D11 sequence number to packet */ +#define SET_WL_HAS_ASSIGNED_SEQ(x) WL_SEQ_SET_FROMFW((x), 1) + +/** returns TRUE if packet has been assigned a d11 seq number by the WL firmware layer */ +#define GET_WL_HAS_ASSIGNED_SEQ(x) (((x) >> WL_SEQ_FROMFW_SHIFT) & WL_SEQ_FROMFW_MASK) /** * Proptxstatus related. * - * Pkt from bus layer (DHD for SDIO and pciedev for PCIE) - * is re-using seq number previously suppressed - * so FW should not assign new one + * When a packet is suppressed by WL or the D11 core, the packet has to be retried. Assigning + * a new d11 sequence number for the packet when retrying would cause the peer to be unable to + * reorder the packets within an AMPDU. So, suppressed packet from bus layer (DHD for SDIO and + * pciedev for PCIE) is re-using d11 seq number, so FW should not assign a new one. */ #define WL_SEQ_FROMDRV_MASK 0x1 /* allow 1 bit */ #define WL_SEQ_FROMDRV_SHIFT 12 -#define WL_SEQ_SET_FROMDRV(x, val) ((x) = \ + +/** + * Proptxstatus, host or fw PCIe layer requests WL layer to reuse d11 seq no. Bit is reset by WL + * subsystem when it reuses the seq number. + */ +#define WL_SEQ_SET_REUSE(x, val) ((x) = \ ((x) & ~(WL_SEQ_FROMDRV_MASK << WL_SEQ_FROMDRV_SHIFT)) | \ (((val) & WL_SEQ_FROMDRV_MASK) << WL_SEQ_FROMDRV_SHIFT)) -#define WL_SEQ_GET_FROMDRV(x) (((x) >> WL_SEQ_FROMDRV_SHIFT) & \ +#define SET_WL_TO_REUSE_SEQ(x) WL_SEQ_SET_REUSE((x), 1) +#define RESET_WL_TO_REUSE_SEQ(x) WL_SEQ_SET_REUSE((x), 0) + +/** Proptxstatus, related to reuse of d11 seq numbers when retransmitting */ +#define IS_WL_TO_REUSE_SEQ(x) (((x) >> WL_SEQ_FROMDRV_SHIFT) & \ WL_SEQ_FROMDRV_MASK) #define WL_SEQ_NUM_MASK 0xfff /* allow 12 bit */ #define WL_SEQ_NUM_SHIFT 0 +/** Proptxstatus, sets d11seq no in pkt tag, related to reuse of d11seq no when retransmitting */ #define WL_SEQ_SET_NUM(x, val) ((x) = \ ((x) & ~(WL_SEQ_NUM_MASK << WL_SEQ_NUM_SHIFT)) | \ (((val) & WL_SEQ_NUM_MASK) << WL_SEQ_NUM_SHIFT)) +/** Proptxstatus, gets d11seq no from pkt tag, related to reuse of d11seq no when retransmitting */ #define WL_SEQ_GET_NUM(x) (((x) >> WL_SEQ_NUM_SHIFT) & \ WL_SEQ_NUM_MASK) @@ -265,7 +307,6 @@ #define WLFC_PKTFLAG_CLR_PKTREQUESTED(x) (x) &= \ ~(WLFC_PKTFLAG_PKT_REQUESTED << WL_TXSTATUS_FLAGS_SHIFT) - #define WLFC_MAX_PENDING_DATALEN 120 /* host is free to discard the packet */ @@ -282,28 +323,26 @@ #define WLFC_CTL_PKTFLAG_DISCARD_NOACK 4 /* Firmware wrongly reported suppressed previously,now fixing to acked */ #define WLFC_CTL_PKTFLAG_SUPPRESS_ACKED 5 - -#define WLFC_D11_STATUS_INTERPRET(txs) \ - ((txs)->status.was_acked ? WLFC_CTL_PKTFLAG_DISCARD : \ - (TXS_SUPR_MAGG_DONE((txs)->status.suppr_ind) ? \ - WLFC_CTL_PKTFLAG_DISCARD_NOACK : WLFC_CTL_PKTFLAG_D11SUPPRESS)) - +/* Firmware send this packet expired, lifetime expiration */ +#define WLFC_CTL_PKTFLAG_EXPIRED 6 +/* Firmware drop this packet for any other reason */ +#define WLFC_CTL_PKTFLAG_DROPPED 7 +/* Firmware free this packet */ +#define WLFC_CTL_PKTFLAG_MKTFREE 8 +#define WLFC_CTL_PKTFLAG_MASK (0x0f) /* For 4-bit mask with one extra bit */ #ifdef PROP_TXSTATUS_DEBUG #define WLFC_DBGMESG(x) printf x /* wlfc-breadcrumb */ #define WLFC_BREADCRUMB(x) do {if ((x) == NULL) \ {printf("WLFC: %s():%d:caller:%p\n", \ - __FUNCTION__, __LINE__, __builtin_return_address(0));}} while (0) -#define WLFC_PRINTMAC(banner, ea) do {printf("%s MAC: [%02x:%02x:%02x:%02x:%02x:%02x]\n", \ - banner, ea[0], ea[1], ea[2], ea[3], ea[4], ea[5]); } while (0) + __FUNCTION__, __LINE__, CALL_SITE);}} while (0) #define WLFC_WHEREIS(s) printf("WLFC: at %s():%d, %s\n", __FUNCTION__, __LINE__, (s)) #else #define WLFC_DBGMESG(x) #define WLFC_BREADCRUMB(x) -#define WLFC_PRINTMAC(banner, ea) #define WLFC_WHEREIS(s) -#endif +#endif /* PROP_TXSTATUS_DEBUG */ /* AMPDU host reorder packet flags */ #define WLHOST_REORDERDATA_MAXFLOWS 256 @@ -334,18 +373,43 @@ #define WLFC_SET_AFQ(x, val) ((x) = \ ((x) & ~(1 << WLFC_MODE_AFQ_SHIFT)) | \ (((val) & 1) << WLFC_MODE_AFQ_SHIFT)) +/** returns TRUE if firmware supports 'at firmware queue' feature */ #define WLFC_GET_AFQ(x) (((x) >> WLFC_MODE_AFQ_SHIFT) & 1) #define WLFC_MODE_REUSESEQ_SHIFT 3 /* seq reuse bit */ #define WLFC_SET_REUSESEQ(x, val) ((x) = \ ((x) & ~(1 << WLFC_MODE_REUSESEQ_SHIFT)) | \ (((val) & 1) << WLFC_MODE_REUSESEQ_SHIFT)) + +/** returns TRUE if 'd11 sequence reuse' has been agreed upon between host and dongle */ +#if defined(BCMPCIEDEV_ENABLED) && !defined(ROM_ENAB_RUNTIME_CHECK) +/* GET_REUSESEQ is always TRUE in pciedev */ +#define WLFC_GET_REUSESEQ(x) (TRUE) +#else #define WLFC_GET_REUSESEQ(x) (((x) >> WLFC_MODE_REUSESEQ_SHIFT) & 1) +#endif /* defined(BCMPCIEDEV_ENABLED) && !defined(ROM_ENAB_RUNTIME_CHECK) */ #define WLFC_MODE_REORDERSUPP_SHIFT 4 /* host reorder suppress pkt bit */ #define WLFC_SET_REORDERSUPP(x, val) ((x) = \ ((x) & ~(1 << WLFC_MODE_REORDERSUPP_SHIFT)) | \ (((val) & 1) << WLFC_MODE_REORDERSUPP_SHIFT)) +/** returns TRUE if 'reorder suppress' has been agreed upon between host and dongle */ #define WLFC_GET_REORDERSUPP(x) (((x) >> WLFC_MODE_REORDERSUPP_SHIFT) & 1) +#define FLOW_RING_CREATE 1 +#define FLOW_RING_DELETE 2 +#define FLOW_RING_FLUSH 3 +#define FLOW_RING_OPEN 4 +#define FLOW_RING_CLOSED 5 +#define FLOW_RING_FLUSHED 6 +#define FLOW_RING_TIM_SET 7 +#define FLOW_RING_TIM_RESET 8 +#define FLOW_RING_FLUSH_TXFIFO 9 +#define FLOW_RING_GET_PKT_MAX 10 +#define FLOW_RING_RESET_WEIGHT 11 +#define FLOW_RING_UPD_PRIOMAP 12 + +/* bit 7, indicating if is TID(1) or AC(0) mapped info in tid field) */ +#define PCIEDEV_IS_AC_TID_MAP_MASK 0x80 + #endif /* __wlfc_proto_definitions_h__ */ -- Gitblit v1.6.2