Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bee1b848 authored by Arend van Spriel's avatar Arend van Spriel Committed by John W. Linville
Browse files

brcmfmac: increase required skbuff headroom for firmware signalling



In preparation of firmware signalling feature additional headroom is
needed to accommodate signalling protocol data between host and
firmware.

Reviewed-by: default avatarHante Meuleman <meuleman@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent dc7bdbf1
Loading
Loading
Loading
Loading
+15 −2
Original line number Original line Diff line number Diff line
@@ -71,13 +71,26 @@ struct brcmf_proto_cdc_dcmd {
	((hdr)->flags2 = (((hdr)->flags2 & ~BDC_FLAG2_IF_MASK) | \
	((hdr)->flags2 = (((hdr)->flags2 & ~BDC_FLAG2_IF_MASK) | \
	((idx) << BDC_FLAG2_IF_SHIFT)))
	((idx) << BDC_FLAG2_IF_SHIFT)))


/**
 * struct brcmf_proto_bdc_header - BDC header format
 *
 * @flags: flags contain protocol and checksum info.
 * @priority: 802.1d priority and USB flow control info (bit 4:7).
 * @flags2: additional flags containing dongle interface index.
 * @data_offset: start of packet data. header is following by firmware signals.
 */
struct brcmf_proto_bdc_header {
struct brcmf_proto_bdc_header {
	u8 flags;
	u8 flags;
	u8 priority;	/* 802.1d Priority, 4:7 flow control info for usb */
	u8 priority;
	u8 flags2;
	u8 flags2;
	u8 data_offset;
	u8 data_offset;
};
};


/*
 * maximum length of firmware signal data between
 * the BDC header and packet data in the tx path.
 */
#define BRCMF_PROT_FW_SIGNAL_MAX_TXBYTES	12


#define RETRIES 2 /* # of retries to retrieve matching dcmd response */
#define RETRIES 2 /* # of retries to retrieve matching dcmd response */
#define BUS_HEADER_LEN	(16+64)		/* Must be atleast SDPCM_RESERVE
#define BUS_HEADER_LEN	(16+64)		/* Must be atleast SDPCM_RESERVE
@@ -350,7 +363,7 @@ int brcmf_proto_attach(struct brcmf_pub *drvr)
	}
	}


	drvr->prot = cdc;
	drvr->prot = cdc;
	drvr->hdrlen += BDC_HEADER_LEN;
	drvr->hdrlen += BDC_HEADER_LEN + BRCMF_PROT_FW_SIGNAL_MAX_TXBYTES;
	drvr->bus_if->maxctl = BRCMF_DCMD_MAXLEN +
	drvr->bus_if->maxctl = BRCMF_DCMD_MAXLEN +
			sizeof(struct brcmf_proto_cdc_dcmd) + ROUND_UP_MARGIN;
			sizeof(struct brcmf_proto_cdc_dcmd) + ROUND_UP_MARGIN;
	return 0;
	return 0;