@@ -1807,6 +1807,26 @@ static void smp_reset(struct bt_smp *smp)
1807
1807
}
1808
1808
}
1809
1809
1810
+ static uint8_t hci_err_get (enum bt_security_err err )
1811
+ {
1812
+ switch (err ) {
1813
+ case BT_SECURITY_ERR_SUCCESS :
1814
+ return BT_HCI_ERR_SUCCESS ;
1815
+ case BT_SECURITY_ERR_AUTH_FAIL :
1816
+ return BT_HCI_ERR_AUTH_FAIL ;
1817
+ case BT_SECURITY_ERR_PIN_OR_KEY_MISSING :
1818
+ return BT_HCI_ERR_PIN_OR_KEY_MISSING ;
1819
+ case BT_SECURITY_ERR_PAIR_NOT_SUPPORTED :
1820
+ return BT_HCI_ERR_PAIRING_NOT_SUPPORTED ;
1821
+ case BT_SECURITY_ERR_PAIR_NOT_ALLOWED :
1822
+ return BT_HCI_ERR_PAIRING_NOT_ALLOWED ;
1823
+ case BT_SECURITY_ERR_INVALID_PARAM :
1824
+ return BT_HCI_ERR_INVALID_PARAM ;
1825
+ default :
1826
+ return BT_HCI_ERR_UNSPECIFIED ;
1827
+ }
1828
+ }
1829
+
1810
1830
/* Note: This function not only does set the status but also calls smp_reset
1811
1831
* at the end which clears any flags previously set.
1812
1832
*/
@@ -1852,7 +1872,9 @@ static void smp_pairing_complete(struct bt_smp *smp, uint8_t status)
1852
1872
}
1853
1873
1854
1874
if (!atomic_test_bit (smp -> flags , SMP_FLAG_KEYS_DISTR )) {
1855
- bt_conn_security_changed (conn , status , security_err );
1875
+ bt_conn_security_changed (conn ,
1876
+ hci_err_get (security_err ),
1877
+ security_err );
1856
1878
}
1857
1879
1858
1880
if (bt_auth && bt_auth -> pairing_failed ) {
0 commit comments