Skip to content

Commit

Permalink
NFC: Set and get DEP general bytes
Browse files Browse the repository at this point in the history
Without an API for setting and getting the local and remote general bytes,
drivers won't be able to properly establish a DEP link.
This API also allows them to propagate the remote general bytes they get
from the DEP link establishment up to the LLCP layer.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Samuel Ortiz authored and John W. Linville committed Dec 14, 2011
1 parent 1ed28f6 commit 541d920
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
7 changes: 6 additions & 1 deletion drivers/nfc/pn533.c
Original file line number Diff line number Diff line change
Expand Up @@ -1121,6 +1121,7 @@ static int pn533_activate_target_nfcdep(struct pn533 *dev)
{
struct pn533_cmd_activate_param param;
struct pn533_cmd_activate_response *resp;
u16 gt_len;
int rc;

nfc_dev_dbg(&dev->interface->dev, "%s", __func__);
Expand All @@ -1146,7 +1147,11 @@ static int pn533_activate_target_nfcdep(struct pn533 *dev)
if (rc != PN533_CMD_RET_SUCCESS)
return -EIO;

return 0;
/* ATR_RES general bytes are located at offset 16 */
gt_len = PN533_FRAME_CMD_PARAMS_LEN(dev->in_frame) - 16;
rc = nfc_set_remote_general_bytes(dev->nfc_dev, resp->gt, gt_len);

return rc;
}

static int pn533_activate_target(struct nfc_dev *nfc_dev, u32 target_idx,
Expand Down
5 changes: 5 additions & 0 deletions include/net/nfc/nfc.h
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,11 @@ struct sk_buff *nfc_alloc_send_skb(struct nfc_dev *dev, struct sock *sk,
unsigned int *err);
struct sk_buff *nfc_alloc_recv_skb(unsigned int size, gfp_t gfp);

int nfc_set_remote_general_bytes(struct nfc_dev *dev,
u8 *gt, u8 gt_len);

u8 *nfc_get_local_general_bytes(struct nfc_dev *dev, u8 *gt_len);

int nfc_targets_found(struct nfc_dev *dev, struct nfc_target *targets,
int ntargets);

Expand Down
18 changes: 18 additions & 0 deletions net/nfc/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,24 @@ int nfc_data_exchange(struct nfc_dev *dev, u32 target_idx,
return rc;
}

int nfc_set_remote_general_bytes(struct nfc_dev *dev, u8 *gb, u8 gb_len)
{
pr_debug("dev_name=%s gb_len=%d\n",
dev_name(&dev->dev), gb_len);

if (gb_len > NFC_MAX_GT_LEN)
return -EINVAL;

return 0;
}
EXPORT_SYMBOL(nfc_set_remote_general_bytes);

u8 *nfc_get_local_general_bytes(struct nfc_dev *dev, u8 *gt_len)
{
return NULL;
}
EXPORT_SYMBOL(nfc_get_local_general_bytes);

/**
* nfc_alloc_send_skb - allocate a skb for data exchange responses
*
Expand Down

0 comments on commit 541d920

Please sign in to comment.