Merge branch 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6.git] / include / net / llc_pdu.h
index c7a9594..f57e7d4 100644 (file)
@@ -199,11 +199,11 @@ struct llc_pdu_sn {
        u8 ssap;
        u8 ctrl_1;
        u8 ctrl_2;
-};
+} __packed;
 
 static inline struct llc_pdu_sn *llc_pdu_sn_hdr(struct sk_buff *skb)
 {
-       return (struct llc_pdu_sn *)skb->nh.raw;
+       return (struct llc_pdu_sn *)skb_network_header(skb);
 }
 
 /* Un-numbered PDU format (3 bytes in length) */
@@ -211,16 +211,11 @@ struct llc_pdu_un {
        u8 dsap;
        u8 ssap;
        u8 ctrl_1;
-};
+} __packed;
 
 static inline struct llc_pdu_un *llc_pdu_un_hdr(struct sk_buff *skb)
 {
-       return (struct llc_pdu_un *)skb->nh.raw;
-}
-
-static inline void *llc_set_pdu_hdr(struct sk_buff *skb, void *ptr)
-{
-       return skb->nh.raw = ptr;
+       return (struct llc_pdu_un *)skb_network_header(skb);
 }
 
 /**
@@ -237,7 +232,11 @@ static inline void llc_pdu_header_init(struct sk_buff *skb, u8 type,
                                       u8 ssap, u8 dsap, u8 cr)
 {
        const int hlen = type == LLC_PDU_TYPE_U ? 3 : 4;
-       struct llc_pdu_un *pdu = llc_set_pdu_hdr(skb, skb_push(skb, hlen));
+       struct llc_pdu_un *pdu;
+
+       skb_push(skb, hlen);
+       skb_reset_network_header(skb);
+       pdu = llc_pdu_un_hdr(skb);
        pdu->dsap = dsap;
        pdu->ssap = ssap;
        pdu->ssap |= cr;
@@ -252,9 +251,9 @@ static inline void llc_pdu_header_init(struct sk_buff *skb, u8 type,
  */
 static inline void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa)
 {
-       if (skb->protocol == ntohs(ETH_P_802_2))
+       if (skb->protocol == htons(ETH_P_802_2))
                memcpy(sa, eth_hdr(skb)->h_source, ETH_ALEN);
-       else if (skb->protocol == ntohs(ETH_P_TR_802_2)) {
+       else if (skb->protocol == htons(ETH_P_TR_802_2)) {
                memcpy(sa, tr_hdr(skb)->saddr, ETH_ALEN);
                *sa &= 0x7F;
        }
@@ -269,9 +268,9 @@ static inline void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa)
  */
 static inline void llc_pdu_decode_da(struct sk_buff *skb, u8 *da)
 {
-       if (skb->protocol == ntohs(ETH_P_802_2))
+       if (skb->protocol == htons(ETH_P_802_2))
                memcpy(da, eth_hdr(skb)->h_dest, ETH_ALEN);
-       else if (skb->protocol == ntohs(ETH_P_TR_802_2))
+       else if (skb->protocol == htons(ETH_P_TR_802_2))
                memcpy(da, tr_hdr(skb)->daddr, ETH_ALEN);
 }
 
@@ -345,7 +344,7 @@ static inline void llc_pdu_init_as_test_rsp(struct sk_buff *skb,
        pdu->ctrl_1  = LLC_PDU_TYPE_U;
        pdu->ctrl_1 |= LLC_1_PDU_CMD_TEST;
        pdu->ctrl_1 |= LLC_U_PF_BIT_MASK;
-       if (ev_skb->protocol == ntohs(ETH_P_802_2)) {
+       if (ev_skb->protocol == htons(ETH_P_802_2)) {
                struct llc_pdu_un *ev_pdu = llc_pdu_un_hdr(ev_skb);
                int dsize;
 
@@ -357,10 +356,10 @@ static inline void llc_pdu_init_as_test_rsp(struct sk_buff *skb,
 
 /* LLC Type 1 XID command/response information fields format */
 struct llc_xid_info {
-       u8 fmt_id;      /* always 0x18 for LLC */
+       u8 fmt_id;      /* always 0x81 for LLC */
        u8 type;        /* different if NULL/non-NULL LSAP */
        u8 rw;          /* sender receive window */
-};
+} __packed;
 
 /**
  *     llc_pdu_init_as_xid_cmd - sets bytes 3, 4 & 5 of LLC header as XID
@@ -382,7 +381,7 @@ static inline void llc_pdu_init_as_xid_cmd(struct sk_buff *skb,
        xid_info->fmt_id = LLC_XID_FMT_ID;      /* 0x81 */
        xid_info->type   = svcs_supported;
        xid_info->rw     = rx_window << 1;      /* size of receive window */
-       skb_put(skb, 3);
+       skb_put(skb, sizeof(struct llc_xid_info));
 }
 
 /**
@@ -407,7 +406,7 @@ static inline void llc_pdu_init_as_xid_rsp(struct sk_buff *skb,
        xid_info->fmt_id = LLC_XID_FMT_ID;
        xid_info->type   = svcs_supported;
        xid_info->rw     = rx_window << 1;
-       skb_put(skb, 3);
+       skb_put(skb, sizeof(struct llc_xid_info));
 }
 
 /* LLC Type 2 FRMR response information field format */
@@ -416,7 +415,7 @@ struct llc_frmr_info {
        u8  curr_ssv;           /* current send state variable val */
        u8  curr_rsv;           /* current receive state variable */
        u8  ind_bits;           /* indicator bits set with macro */
-};
+} __packed;
 
 extern void llc_pdu_set_cmd_rsp(struct sk_buff *skb, u8 type);
 extern void llc_pdu_set_pf_bit(struct sk_buff *skb, u8 bit_value);