mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-22 13:37:49 +07:00
brcmfmac: Move handling 802.1x frames to dhd_linux.
Tracking and handling of 802.1x frames is done in two modules, it is more logical and clear to move this to dhd_linux module. Reviewed-by: Arend Van Spriel <arend@broadcom.com> Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com> Signed-off-by: Hante Meuleman <meuleman@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
53e30ea420
commit
55929443c8
@ -190,7 +190,7 @@ static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb,
|
||||
int ret;
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
struct brcmf_pub *drvr = ifp->drvr;
|
||||
struct ethhdr *eh;
|
||||
struct ethhdr *eh = (struct ethhdr *)(skb->data);
|
||||
|
||||
brcmf_dbg(DATA, "Enter, idx=%d\n", ifp->bssidx);
|
||||
|
||||
@ -236,6 +236,9 @@ static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb,
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (eh->h_proto == htons(ETH_P_PAE))
|
||||
atomic_inc(&ifp->pend_8021x_cnt);
|
||||
|
||||
ret = brcmf_fws_process_skb(ifp, skb);
|
||||
|
||||
done:
|
||||
|
@ -1863,7 +1863,7 @@ int brcmf_fws_process_skb(struct brcmf_if *ifp, struct sk_buff *skb)
|
||||
struct ethhdr *eh = (struct ethhdr *)(skb->data);
|
||||
int fifo = BRCMF_FWS_FIFO_BCMC;
|
||||
bool multicast = is_multicast_ether_addr(eh->h_dest);
|
||||
bool pae = eh->h_proto == htons(ETH_P_PAE);
|
||||
int rc = 0;
|
||||
|
||||
brcmf_dbg(DATA, "tx proto=0x%X\n", ntohs(eh->h_proto));
|
||||
/* determine the priority */
|
||||
@ -1871,8 +1871,6 @@ int brcmf_fws_process_skb(struct brcmf_if *ifp, struct sk_buff *skb)
|
||||
skb->priority = cfg80211_classify8021d(skb, NULL);
|
||||
|
||||
drvr->tx_multicast += !!multicast;
|
||||
if (pae)
|
||||
atomic_inc(&ifp->pend_8021x_cnt);
|
||||
|
||||
/* set control buffer information */
|
||||
skcb->if_flags = 0;
|
||||
@ -1894,15 +1892,12 @@ int brcmf_fws_process_skb(struct brcmf_if *ifp, struct sk_buff *skb)
|
||||
brcmf_fws_schedule_deq(fws);
|
||||
} else {
|
||||
brcmf_err("drop skb: no hanger slot\n");
|
||||
if (pae) {
|
||||
atomic_dec(&ifp->pend_8021x_cnt);
|
||||
if (waitqueue_active(&ifp->pend_8021x_wait))
|
||||
wake_up(&ifp->pend_8021x_wait);
|
||||
}
|
||||
brcmu_pkt_buf_free_skb(skb);
|
||||
brcmf_txfinalize(drvr, skb, ifp->ifidx, false);
|
||||
rc = -ENOMEM;
|
||||
}
|
||||
brcmf_fws_unlock(fws);
|
||||
return 0;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
void brcmf_fws_reset_interface(struct brcmf_if *ifp)
|
||||
|
Loading…
Reference in New Issue
Block a user