NFC: Build LLCP general bytes upon request
authorSamuel Ortiz <sameo@linux.intel.com>
Fri, 22 Jun 2012 00:04:53 +0000 (02:04 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 9 Jul 2012 20:42:16 +0000 (16:42 -0400)
Drivers will need them before starting a poll or when being activated
as targets. Mostly WKS can have changed between device registration and
then so we need to re-build the whole array.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
net/nfc/llcp/llcp.c

index eee4b9286f8dbfab9335e4a41f48fd6582596c7c..6812b1e4f02520987fcd1f4266b1e5b48ee5201a 100644 (file)
@@ -310,21 +310,6 @@ void nfc_llcp_put_ssap(struct nfc_llcp_local *local, u8 ssap)
        mutex_unlock(&local->sdp_lock);
 }
 
-u8 *nfc_llcp_general_bytes(struct nfc_dev *dev, size_t *general_bytes_len)
-{
-       struct nfc_llcp_local *local;
-
-       local = nfc_llcp_find_local(dev);
-       if (local == NULL) {
-               *general_bytes_len = 0;
-               return NULL;
-       }
-
-       *general_bytes_len = local->gb_len;
-
-       return local->gb;
-}
-
 static int nfc_llcp_build_gb(struct nfc_llcp_local *local)
 {
        u8 *gb_cur, *version_tlv, version, version_length;
@@ -386,6 +371,23 @@ static int nfc_llcp_build_gb(struct nfc_llcp_local *local)
        return 0;
 }
 
+u8 *nfc_llcp_general_bytes(struct nfc_dev *dev, size_t *general_bytes_len)
+{
+       struct nfc_llcp_local *local;
+
+       local = nfc_llcp_find_local(dev);
+       if (local == NULL) {
+               *general_bytes_len = 0;
+               return NULL;
+       }
+
+       nfc_llcp_build_gb(local);
+
+       *general_bytes_len = local->gb_len;
+
+       return local->gb;
+}
+
 int nfc_llcp_set_remote_gb(struct nfc_dev *dev, u8 *gb, u8 gb_len)
 {
        struct nfc_llcp_local *local = nfc_llcp_find_local(dev);