* not try to remove padding from short control frames that do
                 * not have payload. */
                hdrlen = ieee80211_get_hdrlen_from_skb(skb);
-               padsize = hdrlen & 3;
-               if (padsize && hdrlen >= 24) {
+               padsize = ath5k_pad_size(hdrlen);
+               if (padsize) {
                        memmove(skb->data + padsize, skb->data, hdrlen);
                        skb_pull(skb, padsize);
                }
         * if this is not the case we add the padding after the header
         */
        hdrlen = ieee80211_get_hdrlen_from_skb(skb);
-       padsize = hdrlen & 3;
-       if (padsize && hdrlen >= 24) {
+       padsize = ath5k_pad_size(hdrlen);
+       if (padsize) {
 
                if (skb_headroom(skb) < padsize) {
                        ATH5K_ERR(sc, "tx hdrlen not %%4: %d not enough"
 
        /* Verify and set frame length */
 
        /* remove padding we might have added before */
-       frame_len = pkt_len - (hdr_len & 3) + FCS_LEN;
+       frame_len = pkt_len - ath5k_pad_size(hdr_len) + FCS_LEN;
 
        if (frame_len & ~AR5K_2W_TX_DESC_CTL0_FRAME_LEN)
                return -EINVAL;
        /* Verify and set frame length */
 
        /* remove padding we might have added before */
-       frame_len = pkt_len - (hdr_len & 3) + FCS_LEN;
+       frame_len = pkt_len - ath5k_pad_size(hdr_len) + FCS_LEN;
 
        if (frame_len & ~AR5K_4W_TX_DESC_CTL0_FRAME_LEN)
                return -EINVAL;