Skip to content

Commit

Permalink
staging: brcm80211: Removed unnecessary pktsetprio() function.
Browse files Browse the repository at this point in the history
This function is completely unnecessary, as packet classification is done
higher up in the stack.  As used, the function actually mis-classifies frames
in some cases since it overwrites the classification done by the stack.

Signed-off-by: Henry Ptasinski <henryp@broadcom.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Henry Ptasinski authored and Greg Kroah-Hartman committed Oct 21, 2010
1 parent a1c16ed commit ab3275a
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 77 deletions.
4 changes: 0 additions & 4 deletions drivers/staging/brcm80211/brcmfmac/dhd_linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -1039,10 +1039,6 @@ int dhd_sendpkt(dhd_pub_t *dhdp, int ifidx, void *pktbuf)
atomic_inc(&dhd->pend_8021x_cnt);
}

/* Look into the packet and update the packet priority */
if ((PKTPRIO(pktbuf) == 0))
pktsetprio(pktbuf, false);

/* If the protocol uses a data header, apply it */
dhd_prot_hdrpush(dhdp, ifidx, pktbuf);

Expand Down
7 changes: 0 additions & 7 deletions drivers/staging/brcm80211/include/bcmutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -155,13 +155,6 @@
extern uint pktsegcnt(osl_t *osh, void *p);
extern uint pkttotlen(osl_t *osh, void *p);

/* Get priority from a packet and pass it back in scb (or equiv) */
extern uint pktsetprio(void *pkt, bool update_vtag);
#define PKTPRIO_VDSCP 0x100 /* DSCP prio found after VLAN tag */
#define PKTPRIO_VLAN 0x200 /* VLAN prio found */
#define PKTPRIO_UPD 0x400 /* DSCP used to update VLAN prio */
#define PKTPRIO_DSCP 0x800 /* DSCP prio found */

/* ethernet address */
extern int bcm_ether_atoe(char *p, struct ether_addr *ea);

Expand Down
66 changes: 0 additions & 66 deletions drivers/staging/brcm80211/util/bcmutils.c
Original file line number Diff line number Diff line change
Expand Up @@ -418,72 +418,6 @@ void prpkt(const char *msg, osl_t *osh, void *p0)
}
#endif /* defined(BCMDBG) */

/* Takes an Ethernet frame and sets out-of-bound PKTPRIO.
* Also updates the inplace vlan tag if requested.
* For debugging, it returns an indication of what it did.
*/
uint pktsetprio(void *pkt, bool update_vtag)
{
struct ether_header *eh;
struct ethervlan_header *evh;
u8 *pktdata;
int priority = 0;
int rc = 0;

pktdata = (u8 *) PKTDATA(pkt);
ASSERT(IS_ALIGNED((unsigned long)pktdata, sizeof(u16)));

eh = (struct ether_header *)pktdata;

if (ntoh16(eh->ether_type) == ETHER_TYPE_8021Q) {
u16 vlan_tag;
int vlan_prio, dscp_prio = 0;

evh = (struct ethervlan_header *)eh;

vlan_tag = ntoh16(evh->vlan_tag);
vlan_prio = (int)(vlan_tag >> VLAN_PRI_SHIFT) & VLAN_PRI_MASK;

if (ntoh16(evh->ether_type) == ETHER_TYPE_IP) {
u8 *ip_body =
pktdata + sizeof(struct ethervlan_header);
u8 tos_tc = IP_TOS(ip_body);
dscp_prio = (int)(tos_tc >> IPV4_TOS_PREC_SHIFT);
}

/* DSCP priority gets precedence over 802.1P (vlan tag) */
if (dscp_prio != 0) {
priority = dscp_prio;
rc |= PKTPRIO_VDSCP;
} else {
priority = vlan_prio;
rc |= PKTPRIO_VLAN;
}
/*
* If the DSCP priority is not the same as the VLAN priority,
* then overwrite the priority field in the vlan tag, with the
* DSCP priority value. This is required for Linux APs because
* the VLAN driver on Linux, overwrites the skb->priority field
* with the priority value in the vlan tag
*/
if (update_vtag && (priority != vlan_prio)) {
vlan_tag &= ~(VLAN_PRI_MASK << VLAN_PRI_SHIFT);
vlan_tag |= (u16) priority << VLAN_PRI_SHIFT;
evh->vlan_tag = hton16(vlan_tag);
rc |= PKTPRIO_UPD;
}
} else if (ntoh16(eh->ether_type) == ETHER_TYPE_IP) {
u8 *ip_body = pktdata + sizeof(struct ether_header);
u8 tos_tc = IP_TOS(ip_body);
priority = (int)(tos_tc >> IPV4_TOS_PREC_SHIFT);
rc |= PKTPRIO_DSCP;
}

ASSERT(priority >= 0 && priority <= MAXPRIO);
PKTSETPRIO(pkt, priority);
return rc | priority;
}

static char bcm_undeferrstr[BCME_STRLEN];

static const char *bcmerrorstrtable[] = BCMERRSTRINGTABLE;
Expand Down

0 comments on commit ab3275a

Please sign in to comment.