BNX2X: spatch ETH_*LEN
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 3 Feb 2015 23:56:27 +0000 (18:56 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 2 Mar 2015 16:59:07 +0000 (11:59 -0500)
ETH_ALEN -> Eaddrlen.

ETH_HLEN -> ETHERHDRSIZE.

I'm actually fine with the Linux names, but we should keep them consistent with
the Plan 9 stuff.  We can always spatch the plan 9 ones to something more
consistent.

12 files changed:
kern/drivers/net/bnx2x/bnx2x.h
kern/drivers/net/bnx2x/bnx2x_cmn.c
kern/drivers/net/bnx2x/bnx2x_ethtool.c
kern/drivers/net/bnx2x/bnx2x_link.c
kern/drivers/net/bnx2x/bnx2x_main.c
kern/drivers/net/bnx2x/bnx2x_sp.c
kern/drivers/net/bnx2x/bnx2x_sp.h
kern/drivers/net/bnx2x/bnx2x_sriov.c
kern/drivers/net/bnx2x/bnx2x_sriov.h
kern/drivers/net/bnx2x/bnx2x_vfpf.c
kern/drivers/net/bnx2x/bnx2x_vfpf.h
scripts/spatch/linux/scalar.cocci

index b55c879..14d6b32 100644 (file)
@@ -1504,7 +1504,7 @@ struct bnx2x {
        int                     tx_ring_size;
 
 /* L2 header size + 2*VLANs (8 bytes) + LLC SNAP (8 bytes) */
-#define ETH_OVREHEAD           (ETH_HLEN + 8 + 8)
+#define ETH_OVREHEAD           (ETHERHDRSIZE + 8 + 8)
 #define ETH_MIN_PACKET_SIZE            60
 #define ETH_MAX_PACKET_SIZE            1500
 #define ETH_MAX_JUMBO_PACKET_SIZE      9600
index 136f80c..5020e60 100644 (file)
@@ -504,7 +504,7 @@ static void bnx2x_set_gro_params(struct sk_buff *skb, uint16_t parsing_flags,
        /* TPA aggregation won't have either IP options or TCP options
         * other than timestamp or IPv6 extension headers.
         */
-       uint16_t hdrs_len = ETH_HLEN + sizeof(struct tcphdr);
+       uint16_t hdrs_len = ETHERHDRSIZE + sizeof(struct tcphdr);
 
        if (GET_FLAG(parsing_flags, PARSING_FLAGS_OVER_ETHERNET_PROTOCOL) ==
            PRS_FLAG_OVERETH_IPV6) {
@@ -4783,7 +4783,7 @@ int bnx2x_change_mtu(struct net_device *dev, int new_mtu)
        }
 
        if ((new_mtu > ETH_MAX_JUMBO_PACKET_SIZE) ||
-           ((new_mtu + ETH_HLEN) < ETH_MIN_PACKET_SIZE)) {
+           ((new_mtu + ETHERHDRSIZE) < ETH_MIN_PACKET_SIZE)) {
                BNX2X_ERR("Can't support requested MTU size\n");
                return -EINVAL;
        }
index 58752f8..63e26f9 100644 (file)
@@ -2441,7 +2441,7 @@ static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode)
 
        /* prepare the loopback packet */
        pkt_size = (((bp->dev->mtu < ETH_MAX_PACKET_SIZE) ?
-                    bp->dev->mtu : ETH_MAX_PACKET_SIZE) + ETH_HLEN);
+                    bp->dev->mtu : ETH_MAX_PACKET_SIZE) + ETHERHDRSIZE);
        skb = netdev_alloc_skb(bp->dev, fp_rx->rx_buf_size);
        if (!skb) {
                DP(BNX2X_MSG_ETHTOOL, "Can't allocate skb\n");
@@ -2449,10 +2449,10 @@ static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode)
                goto test_loopback_exit;
        }
        packet = skb_put(skb, pkt_size);
-       memcpy(packet, bp->dev->dev_addr, ETH_ALEN);
-       memset(packet + ETH_ALEN, 0, ETH_ALEN);
-       memset(packet + 2*ETH_ALEN, 0x77, (ETH_HLEN - 2*ETH_ALEN));
-       for (i = ETH_HLEN; i < pkt_size; i++)
+       memcpy(packet, bp->dev->dev_addr, Eaddrlen);
+       memset(packet + Eaddrlen, 0, Eaddrlen);
+       memset(packet + 2*Eaddrlen, 0x77, (ETHERHDRSIZE - 2*Eaddrlen));
+       for (i = ETHERHDRSIZE; i < pkt_size; i++)
                packet[i] = (unsigned char) (i & 0xff);
        mapping = dma_map_single(&bp->pdev->dev, skb->data,
                                 skb_headlen(skb), DMA_TO_DEVICE);
@@ -2562,7 +2562,7 @@ static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode)
                                   dma_unmap_addr(rx_buf, mapping),
                                   fp_rx->rx_buf_size, DMA_FROM_DEVICE);
        data = rx_buf->data + NET_SKB_PAD + cqe->fast_path_cqe.placement_offset;
-       for (i = ETH_HLEN; i < pkt_size; i++)
+       for (i = ETHERHDRSIZE; i < pkt_size; i++)
                if (*(data + i) != (unsigned char) (i & 0xff))
                        goto test_loopback_rx_exit;
 
index fa1d853..47b5ae5 100644 (file)
@@ -27,7 +27,7 @@ typedef int (*read_sfp_module_eeprom_func_p)(struct bnx2x_phy *phy,
 /********************************************************/
 #define ETH_HLEN                       14
 /* L2 header size + 2*VLANs (8 bytes) + LLC SNAP (8 bytes) */
-#define ETH_OVREHEAD                   (ETH_HLEN + 8 + 8)
+#define ETH_OVREHEAD                   (ETHERHDRSIZE + 8 + 8)
 #define ETH_MIN_PACKET_SIZE            60
 #define ETH_MAX_PACKET_SIZE            1500
 #define ETH_MAX_JUMBO_PACKET_SIZE      9600
index a96cf83..11da66b 100644 (file)
@@ -3355,7 +3355,7 @@ static void bnx2x_drv_info_ether_stat(struct bnx2x *bp)
        mac_obj->get_n_elements(bp, &bp->sp_objs[0].mac_obj,
                                DRV_INFO_ETH_STAT_NUM_MACS_REQUIRED,
                                ether_stat->mac_local + MAC_PAD, MAC_PAD,
-                               ETH_ALEN);
+                               Eaddrlen);
        ether_stat->mtu_size = bp->dev->mtu;
        if (bp->dev->features & NETIF_F_RXCSUM)
                ether_stat->feature_flags |= FEATURE_ETH_CHKSUM_OFFLOAD_MASK;
@@ -3382,7 +3382,7 @@ static void bnx2x_drv_info_fcoe_stat(struct bnx2x *bp)
        if (!CNIC_LOADED(bp))
                return;
 
-       memcpy(fcoe_stat->mac_local + MAC_PAD, bp->fip_mac, ETH_ALEN);
+       memcpy(fcoe_stat->mac_local + MAC_PAD, bp->fip_mac, Eaddrlen);
 
        fcoe_stat->qos_priority =
                app->traffic_type_priority[LLFC_TRAFFIC_TYPE_FCOE];
@@ -3485,7 +3485,7 @@ static void bnx2x_drv_info_iscsi_stat(struct bnx2x *bp)
                return;
 
        memcpy(iscsi_stat->mac_local + MAC_PAD, bp->cnic_eth_dev.iscsi_mac,
-              ETH_ALEN);
+              Eaddrlen);
 
        iscsi_stat->qos_priority =
                app->traffic_type_priority[LLFC_TRAFFIC_TYPE_ISCSI];
@@ -8330,7 +8330,7 @@ int bnx2x_set_mac_one(struct bnx2x *bp, uint8_t *mac,
 
        /* Fill a user request section if needed */
        if (!test_bit(RAMROD_CONT, ramrod_flags)) {
-               memcpy(ramrod_param.user_req.u.mac.mac, mac, ETH_ALEN);
+               memcpy(ramrod_param.user_req.u.mac.mac, mac, Eaddrlen);
 
                __set_bit(mac_type, &ramrod_param.user_req.vlan_mac_flags);
 
@@ -11479,14 +11479,14 @@ static void bnx2x_get_cnic_mac_hwinfo(struct bnx2x *bp)
                } else { /* SD MODE */
                        if (BNX2X_IS_MF_SD_PROTOCOL_ISCSI(bp)) {
                                /* use primary mac as iscsi mac */
-                               memcpy(iscsi_mac, bp->dev->dev_addr, ETH_ALEN);
+                               memcpy(iscsi_mac, bp->dev->dev_addr, Eaddrlen);
 
                                BNX2X_DEV_INFO("SD ISCSI MODE\n");
                                BNX2X_DEV_INFO
                                        ("Read iSCSI MAC: %pM\n", iscsi_mac);
                        } else if (BNX2X_IS_MF_SD_PROTOCOL_FCOE(bp)) {
                                /* use primary mac as fip mac */
-                               memcpy(fip_mac, bp->dev->dev_addr, ETH_ALEN);
+                               memcpy(fip_mac, bp->dev->dev_addr, Eaddrlen);
                                BNX2X_DEV_INFO("SD FCoE MODE\n");
                                BNX2X_DEV_INFO
                                        ("Read FIP MAC: %pM\n", fip_mac);
@@ -11498,7 +11498,7 @@ static void bnx2x_get_cnic_mac_hwinfo(struct bnx2x *bp)
                 * as the SAN mac was copied from the primary MAC.
                 */
                if (IS_MF_FCOE_AFEX(bp))
-                       memcpy(bp->dev->dev_addr, fip_mac, ETH_ALEN);
+                       memcpy(bp->dev->dev_addr, fip_mac, Eaddrlen);
        } else {
                val2 = SHMEM_RD(bp, dev_info.port_hw_config[port].
                                iscsi_mac_upper);
@@ -11516,13 +11516,13 @@ static void bnx2x_get_cnic_mac_hwinfo(struct bnx2x *bp)
        /* Disable iSCSI OOO if MAC configuration is invalid. */
        if (!is_valid_ether_addr(iscsi_mac)) {
                bp->flags |= NO_ISCSI_OOO_FLAG | NO_ISCSI_FLAG;
-               memset(iscsi_mac, 0, ETH_ALEN);
+               memset(iscsi_mac, 0, Eaddrlen);
        }
 
        /* Disable FCoE if MAC configuration is invalid. */
        if (!is_valid_ether_addr(fip_mac)) {
                bp->flags |= NO_FCOE_FLAG;
-               memset(bp->fip_mac, 0, ETH_ALEN);
+               memset(bp->fip_mac, 0, Eaddrlen);
        }
 }
 
@@ -11533,7 +11533,7 @@ static void bnx2x_get_mac_hwinfo(struct bnx2x *bp)
        int port = BP_PORT(bp);
 
        /* Zero primary MAC configuration */
-       memset(bp->dev->dev_addr, 0, ETH_ALEN);
+       memset(bp->dev->dev_addr, 0, Eaddrlen);
 
        if (BP_NOMCP(bp)) {
                BNX2X_ERROR("warning: random MAC workaround active\n");
@@ -11565,7 +11565,7 @@ static void bnx2x_get_mac_hwinfo(struct bnx2x *bp)
                bp->flags |= HAS_PHYS_PORT_ID;
        }
 
-       memcpy(bp->link_params.mac_addr, bp->dev->dev_addr, ETH_ALEN);
+       memcpy(bp->link_params.mac_addr, bp->dev->dev_addr, Eaddrlen);
 
        if (!is_valid_ether_addr(bp->dev->dev_addr))
                dev_err(&bp->pdev->dev,
index 1289c78..9c18b6d 100644 (file)
@@ -593,7 +593,7 @@ static int bnx2x_get_n_elements(struct bnx2x *bp, struct bnx2x_vlan_mac_obj *o,
                bnx2x_vlan_mac_h_read_unlock(bp, o);
        }
 
-       return counter * ETH_ALEN;
+       return counter * Eaddrlen;
 }
 
 /* check_add() callbacks */
@@ -2347,12 +2347,12 @@ void bnx2x_init_rx_mode_obj(struct bnx2x *bp,
 /********************* Multicast verbs: SET, CLEAR ****************************/
 static inline uint8_t bnx2x_mcast_bin_from_mac(uint8_t *mac)
 {
-       return (crc32c_le(0, mac, ETH_ALEN) >> 24) & 0xff;
+       return (crc32c_le(0, mac, Eaddrlen) >> 24) & 0xff;
 }
 
 struct bnx2x_mcast_mac_elem {
        struct list_head link;
-       uint8_t mac[ETH_ALEN];
+       uint8_t mac[Eaddrlen];
        uint8_t pad[2]; /* For a natural alignment of the following buffer */
 };
 
@@ -2425,7 +2425,7 @@ static int bnx2x_mcast_enqueue_cmd(struct bnx2x *bp,
                 * MACs list: FIFO
                 */
                list_for_each_entry(pos, &p->mcast_list, link) {
-                       memcpy(cur_mac->mac, pos->mac, ETH_ALEN);
+                       memcpy(cur_mac->mac, pos->mac, Eaddrlen);
                        list_add_tail(&cur_mac->link, &new_cmd->data.macs_head);
                        cur_mac++;
                }
index a5413ec..788f62f 100644 (file)
@@ -98,7 +98,7 @@ struct bnx2x_raw_obj {
 
 /************************* VLAN-MAC commands related parameters ***************/
 struct bnx2x_mac_ramrod_data {
-       uint8_t mac[ETH_ALEN];
+       uint8_t mac[Eaddrlen];
        uint8_t is_inner_mac;
 };
 
@@ -107,7 +107,7 @@ struct bnx2x_vlan_ramrod_data {
 };
 
 struct bnx2x_vlan_mac_ramrod_data {
-       uint8_t mac[ETH_ALEN];
+       uint8_t mac[Eaddrlen];
        uint8_t is_inner_mac;
        uint16_t vlan;
 };
@@ -855,7 +855,7 @@ enum bnx2x_q_type {
 #define BNX2X_MULTI_TX_COS_E3B0                        3
 #define BNX2X_MULTI_TX_COS                     3 /* Maximum possible */
 
-#define MAC_PAD (ALIGN(ETH_ALEN, sizeof(uint32_t)) - ETH_ALEN)
+#define MAC_PAD (ALIGN(Eaddrlen, sizeof(uint32_t)) - Eaddrlen)
 /* DMAE channel to be used by FW for timesync workaroun. A driver that sends
  * timesync-related ramrods must not use this DMAE command ID.
  */
index a2cf975..2243473 100644 (file)
@@ -425,7 +425,7 @@ static int bnx2x_vf_mac_vlan_config(struct bnx2x *bp,
        } else {
                set_bit(BNX2X_ETH_MAC, &ramrod.user_req.vlan_mac_flags);
                ramrod.vlan_mac_obj = &bnx2x_vfq(vf, qid, mac_obj);
-               memcpy(&ramrod.user_req.u.mac.mac, filter->mac, ETH_ALEN);
+               memcpy(&ramrod.user_req.u.mac.mac, filter->mac, Eaddrlen);
        }
        ramrod.user_req.cmd = filter->add ? BNX2X_VLAN_MAC_ADD :
                                            BNX2X_VLAN_MAC_DEL;
@@ -2684,7 +2684,7 @@ int bnx2x_get_vf_config(struct net_device *dev, int vfidx,
                if (bnx2x_validate_vf_sp_objs(bp, vf, false)) {
                        mac_obj->get_n_elements(bp, mac_obj, 1,
                                                (uint8_t *)&ivi->mac,
-                                               0, ETH_ALEN);
+                                               0, Eaddrlen);
                        vlan_obj->get_n_elements(bp, vlan_obj, 1,
                                                 (uint8_t *)&ivi->vlan, 0,
                                                 VLAN_HLEN);
@@ -2694,10 +2694,10 @@ int bnx2x_get_vf_config(struct net_device *dev, int vfidx,
                /* mac */
                if (bulletin->valid_bitmap & (1 << MAC_ADDR_VALID))
                        /* mac configured by ndo so its in bulletin board */
-                       memcpy(&ivi->mac, bulletin->mac, ETH_ALEN);
+                       memcpy(&ivi->mac, bulletin->mac, Eaddrlen);
                else
                        /* function has not been loaded yet. Show mac as 0s */
-                       memset(&ivi->mac, 0, ETH_ALEN);
+                       memset(&ivi->mac, 0, Eaddrlen);
 
                /* vlan */
                if (bulletin->valid_bitmap & (1 << VLAN_VALID))
@@ -2753,7 +2753,7 @@ int bnx2x_set_vf_mac(struct net_device *dev, int vfidx, uint8_t *mac)
         * configuration requests from vf unless match this mac
         */
        bulletin->valid_bitmap |= 1 << MAC_ADDR_VALID;
-       memcpy(bulletin->mac, mac, ETH_ALEN);
+       memcpy(bulletin->mac, mac, Eaddrlen);
 
        /* Post update on VF's bulletin board */
        rc = bnx2x_post_vf_bulletin(bp, vfidx);
@@ -3014,7 +3014,7 @@ enum sample_bulletin_result bnx2x_sample_bulletin(struct bnx2x *bp)
        if (bulletin->valid_bitmap & 1 << MAC_ADDR_VALID &&
            !ether_addr_equal(bulletin->mac, bp->old_bulletin.mac)) {
                /* update new mac to net device */
-               memcpy(bp->dev->dev_addr, bulletin->mac, ETH_ALEN);
+               memcpy(bp->dev->dev_addr, bulletin->mac, Eaddrlen);
        }
 
        if (bulletin->valid_bitmap & (1 << LINK_VALID)) {
index f4e1fc8..b372410 100644 (file)
@@ -406,7 +406,7 @@ void bnx2x_vf_mbx_schedule(struct bnx2x *bp,
 void bnx2x_vf_enable_mbx(struct bnx2x *bp, uint8_t abs_vfid);
 
 /* CORE VF API */
-typedef uint8_t bnx2x_mac_addr_t[ETH_ALEN];
+typedef uint8_t bnx2x_mac_addr_t[Eaddrlen];
 
 /* acquire */
 int bnx2x_vf_acquire(struct bnx2x *bp, struct bnx2x_virtf *vf,
index 5f334ad..879a850 100644 (file)
@@ -338,7 +338,7 @@ int bnx2x_vfpf_acquire(struct bnx2x *bp, uint8_t tx_count, uint8_t rx_count)
                         bnx2x_search_tlv_list(bp, resp,
                                               CHANNEL_TLV_PHYS_PORT_ID);
        if (phys_port_resp) {
-               memcpy(bp->phys_port_id, phys_port_resp->id, ETH_ALEN);
+               memcpy(bp->phys_port_id, phys_port_resp->id, Eaddrlen);
                bp->flags |= HAS_PHYS_PORT_ID;
        }
 
@@ -381,7 +381,7 @@ int bnx2x_vfpf_acquire(struct bnx2x *bp, uint8_t tx_count, uint8_t rx_count)
        if (is_valid_ether_addr(bp->acquire_resp.resc.current_mac_addr))
                memcpy(bp->dev->dev_addr,
                       bp->acquire_resp.resc.current_mac_addr,
-                      ETH_ALEN);
+                      Eaddrlen);
 
 out:
        bnx2x_vfpf_finalize(bp, &req->first_tlv);
@@ -732,7 +732,7 @@ int bnx2x_vfpf_config_mac(struct bnx2x *bp, uint8_t *addr, uint8_t vf_qid,
        bnx2x_sample_bulletin(bp);
 
        /* copy mac from device to request */
-       memcpy(req->filters[0].mac, addr, ETH_ALEN);
+       memcpy(req->filters[0].mac, addr, Eaddrlen);
 
        /* add list termination tlv */
        bnx2x_add_tlv(bp, req, req->first_tlv.tl.length, CHANNEL_TLV_LIST_END,
@@ -754,13 +754,13 @@ int bnx2x_vfpf_config_mac(struct bnx2x *bp, uint8_t *addr, uint8_t vf_qid,
                   "vfpf SET MAC failed. Check bulletin board for new posts\n");
 
                /* copy mac from bulletin to device */
-               memcpy(bp->dev->dev_addr, bulletin.mac, ETH_ALEN);
+               memcpy(bp->dev->dev_addr, bulletin.mac, Eaddrlen);
 
                /* check if bulletin board was updated */
                if (bnx2x_sample_bulletin(bp) == PFVF_BULLETIN_UPDATED) {
                        /* copy mac from device to request */
                        memcpy(req->filters[0].mac, bp->dev->dev_addr,
-                              ETH_ALEN);
+                              Eaddrlen);
 
                        /* send message to pf */
                        rc = bnx2x_send_msg2pf(bp, &resp->hdr.status,
@@ -873,7 +873,7 @@ int bnx2x_vfpf_set_mcast(struct net_device *dev)
        netdev_for_each_mc_addr(ha, dev) {
                DP(NETIF_MSG_IFUP, "Adding mcast MAC: %pM\n",
                   bnx2x_mc_addr(ha));
-               memcpy(req->multicast[i], bnx2x_mc_addr(ha), ETH_ALEN);
+               memcpy(req->multicast[i], bnx2x_mc_addr(ha), Eaddrlen);
                i++;
        }
 
@@ -1147,7 +1147,7 @@ static void bnx2x_vf_mbx_resp_phys_port(struct bnx2x *bp,
 
        port_id = (struct vfpf_port_phys_id_resp_tlv *)
                  (((uint8_t *)buffer) + *offset);
-       memcpy(port_id->id, bp->phys_port_id, ETH_ALEN);
+       memcpy(port_id->id, bp->phys_port_id, Eaddrlen);
 
        /* Offset should continue representing the offset to the tail
         * of TLV data (outside this function scope)
@@ -1227,7 +1227,7 @@ static void bnx2x_vf_mbx_acquire_resp(struct bnx2x *bp, struct bnx2x_virtf *vf,
                        /* if a mac has been set for this vf, supply it */
                        if (bulletin->valid_bitmap & 1 << MAC_ADDR_VALID) {
                                memcpy(resc->current_mac_addr, bulletin->mac,
-                                      ETH_ALEN);
+                                      Eaddrlen);
                        }
                }
        }
index 84d3539..a24fadb 100644 (file)
@@ -192,15 +192,15 @@ struct pfvf_acquire_resp_tlv {
                uint8_t num_mac_filters;
                uint8_t num_vlan_filters;
                uint8_t num_mc_filters;
-               uint8_t permanent_mac_addr[ETH_ALEN];
-               uint8_t current_mac_addr[ETH_ALEN];
+               uint8_t permanent_mac_addr[Eaddrlen];
+               uint8_t current_mac_addr[Eaddrlen];
                uint8_t padding[2];
        } resc;
 };
 
 struct vfpf_port_phys_id_resp_tlv {
        struct channel_tlv tl;
-       uint8_t id[ETH_ALEN];
+       uint8_t id[Eaddrlen];
        uint8_t padding[2];
 };
 
@@ -289,7 +289,7 @@ struct vfpf_q_mac_vlan_filter {
 #define VFPF_Q_FILTER_DEST_MAC_VALID   0x01
 #define VFPF_Q_FILTER_VLAN_TAG_VALID   0x02
 #define VFPF_Q_FILTER_SET_MAC          0x100   /* set/clear */
-       uint8_t  mac[ETH_ALEN];
+       uint8_t  mac[Eaddrlen];
        uint16_t vlan_tag;
 };
 
@@ -314,7 +314,7 @@ struct vfpf_set_q_filters_tlv {
        struct vfpf_q_mac_vlan_filter filters[PFVF_MAX_FILTERS];
 
 #define PFVF_MAX_MULTICAST_PER_VF              32
-       uint8_t  multicast[PFVF_MAX_MULTICAST_PER_VF][ETH_ALEN];
+       uint8_t  multicast[PFVF_MAX_MULTICAST_PER_VF][Eaddrlen];
 
        uint32_t rx_mask;       /* see mask constants at the top of the file */
 };
@@ -411,7 +411,7 @@ struct pf_vf_bulletin_content {
 #define LINK_VALID             3       /* alert the VF thet a new link status
                                         * update is available for it
                                         */
-       uint8_t mac[ETH_ALEN];
+       uint8_t mac[Eaddrlen];
        uint8_t mac_padding[2];
 
        uint16_t vlan;
index b2b7ac0..a3ae1bb 100644 (file)
@@ -25,3 +25,13 @@ typedef uint64_t;
 @@
 -u64
 +uint64_t
+
+@@
+@@
+-ETH_ALEN
++Eaddrlen
+
+@@
+@@
+-ETH_HLEN
++ETHERHDRSIZE