提交 8f0c3b6d 编写于 作者: A Arend van Spriel 提交者: John W. Linville

brcmfmac: add parameter to brcmf_proto_hdrpush() for data offset

The function brcmf_proto_hdrpush() increases the header space and
fills in the protocol header fields. One field is the data offset
which is currently fixed to zero meaning the data follows right
after the header. The parameter is added to determine the actual
start of data. This will be used for firmware signalling.
Reviewed-by: NPieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: NHante Meuleman <meuleman@broadcom.com>
Reviewed-by: NPiotr Haber <phaber@broadcom.com>
Signed-off-by: NArend van Spriel <arend@broadcom.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 17f14d7c
...@@ -272,7 +272,7 @@ static void pkt_set_sum_good(struct sk_buff *skb, bool x) ...@@ -272,7 +272,7 @@ static void pkt_set_sum_good(struct sk_buff *skb, bool x)
skb->ip_summed = (x ? CHECKSUM_UNNECESSARY : CHECKSUM_NONE); skb->ip_summed = (x ? CHECKSUM_UNNECESSARY : CHECKSUM_NONE);
} }
void brcmf_proto_hdrpush(struct brcmf_pub *drvr, int ifidx, void brcmf_proto_hdrpush(struct brcmf_pub *drvr, int ifidx, u8 offset,
struct sk_buff *pktbuf) struct sk_buff *pktbuf)
{ {
struct brcmf_proto_bdc_header *h; struct brcmf_proto_bdc_header *h;
...@@ -280,7 +280,6 @@ void brcmf_proto_hdrpush(struct brcmf_pub *drvr, int ifidx, ...@@ -280,7 +280,6 @@ void brcmf_proto_hdrpush(struct brcmf_pub *drvr, int ifidx,
brcmf_dbg(CDC, "Enter\n"); brcmf_dbg(CDC, "Enter\n");
/* Push BDC header used to convey priority for buses that don't */ /* Push BDC header used to convey priority for buses that don't */
skb_push(pktbuf, BDC_HEADER_LEN); skb_push(pktbuf, BDC_HEADER_LEN);
h = (struct brcmf_proto_bdc_header *)(pktbuf->data); h = (struct brcmf_proto_bdc_header *)(pktbuf->data);
...@@ -291,7 +290,7 @@ void brcmf_proto_hdrpush(struct brcmf_pub *drvr, int ifidx, ...@@ -291,7 +290,7 @@ void brcmf_proto_hdrpush(struct brcmf_pub *drvr, int ifidx,
h->priority = (pktbuf->priority & BDC_PRIORITY_MASK); h->priority = (pktbuf->priority & BDC_PRIORITY_MASK);
h->flags2 = 0; h->flags2 = 0;
h->data_offset = 0; h->data_offset = offset;
BDC_SET_IF_IDX(h, ifidx); BDC_SET_IF_IDX(h, ifidx);
} }
......
...@@ -231,7 +231,7 @@ static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb, ...@@ -231,7 +231,7 @@ static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb,
atomic_inc(&ifp->pend_8021x_cnt); atomic_inc(&ifp->pend_8021x_cnt);
/* If the protocol uses a data header, apply it */ /* If the protocol uses a data header, apply it */
brcmf_proto_hdrpush(drvr, ifp->ifidx, skb); brcmf_proto_hdrpush(drvr, ifp->ifidx, 0, skb);
/* Use bus module to send data frame */ /* Use bus module to send data frame */
ret = brcmf_bus_txdata(drvr->bus_if, skb); ret = brcmf_bus_txdata(drvr->bus_if, skb);
......
...@@ -33,7 +33,7 @@ extern void brcmf_proto_stop(struct brcmf_pub *drvr); ...@@ -33,7 +33,7 @@ extern void brcmf_proto_stop(struct brcmf_pub *drvr);
/* Add any protocol-specific data header. /* Add any protocol-specific data header.
* Caller must reserve prot_hdrlen prepend space. * Caller must reserve prot_hdrlen prepend space.
*/ */
extern void brcmf_proto_hdrpush(struct brcmf_pub *, int ifidx, extern void brcmf_proto_hdrpush(struct brcmf_pub *, int ifidx, u8 offset,
struct sk_buff *txp); struct sk_buff *txp);
/* Sets dongle media info (drv_version, mac address). */ /* Sets dongle media info (drv_version, mac address). */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册