[MAC80211]: use switch statement in tx code
authorJohannes Berg <johannes@sipsolutions.net>
Tue, 28 Aug 2007 21:01:54 +0000 (17:01 -0400)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 10 Oct 2007 23:48:48 +0000 (16:48 -0700)
The transmit code needs to set the addresses depending on the
interface type, a likely() for AP/VLAN is quite wrong since
most people will be using STA; convert to a switch statement
to make it look nicer.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mac80211/tx.c

index c9b909d9498be4a5668bb91aaa4f3972596827e6..53efcf6f769cb516ac7b00ec3f99b6cc76e1b0ab 100644 (file)
@@ -1363,15 +1363,17 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb,
        /* TODO: handling for 802.1x authorized/unauthorized port */
        fc = IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA;
 
-       if (likely(sdata->type == IEEE80211_IF_TYPE_AP ||
-                  sdata->type == IEEE80211_IF_TYPE_VLAN)) {
+       switch (sdata->type) {
+       case IEEE80211_IF_TYPE_AP:
+       case IEEE80211_IF_TYPE_VLAN:
                fc |= IEEE80211_FCTL_FROMDS;
                /* DA BSSID SA */
                memcpy(hdr.addr1, skb->data, ETH_ALEN);
                memcpy(hdr.addr2, dev->dev_addr, ETH_ALEN);
                memcpy(hdr.addr3, skb->data + ETH_ALEN, ETH_ALEN);
                hdrlen = 24;
-       } else if (sdata->type == IEEE80211_IF_TYPE_WDS) {
+               break;
+       case IEEE80211_IF_TYPE_WDS:
                fc |= IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS;
                /* RA TA DA SA */
                memcpy(hdr.addr1, sdata->u.wds.remote_addr, ETH_ALEN);
@@ -1379,20 +1381,23 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb,
                memcpy(hdr.addr3, skb->data, ETH_ALEN);
                memcpy(hdr.addr4, skb->data + ETH_ALEN, ETH_ALEN);
                hdrlen = 30;
-       } else if (sdata->type == IEEE80211_IF_TYPE_STA) {
+               break;
+       case IEEE80211_IF_TYPE_STA:
                fc |= IEEE80211_FCTL_TODS;
                /* BSSID SA DA */
                memcpy(hdr.addr1, sdata->u.sta.bssid, ETH_ALEN);
                memcpy(hdr.addr2, skb->data + ETH_ALEN, ETH_ALEN);
                memcpy(hdr.addr3, skb->data, ETH_ALEN);
                hdrlen = 24;
-       } else if (sdata->type == IEEE80211_IF_TYPE_IBSS) {
+               break;
+       case IEEE80211_IF_TYPE_IBSS:
                /* DA SA BSSID */
                memcpy(hdr.addr1, skb->data, ETH_ALEN);
                memcpy(hdr.addr2, skb->data + ETH_ALEN, ETH_ALEN);
                memcpy(hdr.addr3, sdata->u.sta.bssid, ETH_ALEN);
                hdrlen = 24;
-       } else {
+               break;
+       default:
                ret = 0;
                goto fail;
        }