Lines Matching refs:skb

61 #define I2C_DUMP_SKB(info, skb)					\  argument
65 16, 1, (skb)->data, (skb)->len, 0); \
68 static void microread_i2c_add_len_crc(struct sk_buff *skb) in microread_i2c_add_len_crc() argument
74 len = skb->len; in microread_i2c_add_len_crc()
75 *skb_push(skb, 1) = len; in microread_i2c_add_len_crc()
77 for (i = 0; i < skb->len; i++) in microread_i2c_add_len_crc()
78 crc = crc ^ skb->data[i]; in microread_i2c_add_len_crc()
80 *skb_put(skb, 1) = crc; in microread_i2c_add_len_crc()
83 static void microread_i2c_remove_len_crc(struct sk_buff *skb) in microread_i2c_remove_len_crc() argument
85 skb_pull(skb, MICROREAD_I2C_FRAME_HEADROOM); in microread_i2c_remove_len_crc()
86 skb_trim(skb, MICROREAD_I2C_FRAME_TAILROOM); in microread_i2c_remove_len_crc()
89 static int check_crc(struct sk_buff *skb) in check_crc() argument
94 for (i = 0; i < skb->len - 1; i++) in check_crc()
95 crc = crc ^ skb->data[i]; in check_crc()
97 if (crc != skb->data[skb->len-1]) { in check_crc()
98 pr_err("CRC error 0x%x != 0x%x\n", crc, skb->data[skb->len-1]); in check_crc()
116 static int microread_i2c_write(void *phy_id, struct sk_buff *skb) in microread_i2c_write() argument
127 microread_i2c_add_len_crc(skb); in microread_i2c_write()
129 I2C_DUMP_SKB("i2c frame written", skb); in microread_i2c_write()
131 r = i2c_master_send(client, skb->data, skb->len); in microread_i2c_write()
135 r = i2c_master_send(client, skb->data, skb->len); in microread_i2c_write()
139 if (r != skb->len) in microread_i2c_write()
145 microread_i2c_remove_len_crc(skb); in microread_i2c_write()
152 struct sk_buff **skb) in microread_i2c_read() argument
172 *skb = alloc_skb(1 + len, GFP_KERNEL); in microread_i2c_read()
173 if (*skb == NULL) { in microread_i2c_read()
178 *skb_put(*skb, 1) = len; in microread_i2c_read()
180 r = i2c_master_recv(client, skb_put(*skb, len), len); in microread_i2c_read()
182 kfree_skb(*skb); in microread_i2c_read()
186 I2C_DUMP_SKB("cc frame read", *skb); in microread_i2c_read()
188 r = check_crc(*skb); in microread_i2c_read()
190 kfree_skb(*skb); in microread_i2c_read()
195 skb_pull(*skb, 1); in microread_i2c_read()
196 skb_trim(*skb, (*skb)->len - MICROREAD_I2C_FRAME_TAILROOM); in microread_i2c_read()
215 struct sk_buff *skb = NULL; in microread_i2c_irq_thread_fn() local
228 r = microread_i2c_read(phy, &skb); in microread_i2c_irq_thread_fn()
239 nfc_hci_recv_frame(phy->hdev, skb); in microread_i2c_irq_thread_fn()