#define LE_SET_ADV_DATA_NO_FRAG                0x01
 
+#define HCI_OP_LE_REMOVE_ADV_SET       0x203c
+
 #define HCI_OP_LE_CLEAR_ADV_SETS       0x203d
 
 #define HCI_OP_LE_SET_ADV_SET_RAND_ADDR        0x2035
 
                cp.peer_addr_type = conn->dst_type;
                bacpy(&cp.peer_addr, &conn->dst);
 
+               /* As per Core Spec 5.2 Vol 2, PART E, Sec 7.8.53, for
+                * advertising_event_property LE_LEGACY_ADV_DIRECT_IND
+                * does not supports advertising data when the advertising set already
+                * contains some, the controller shall return erroc code 'Invalid
+                * HCI Command Parameters(0x12).
+                * So it is required to remove adv set for handle 0x00. since we use
+                * instance 0 for directed adv.
+                */
+               hci_req_add(req, HCI_OP_LE_REMOVE_ADV_SET, sizeof(cp.handle), &cp.handle);
+
                hci_req_add(req, HCI_OP_LE_SET_EXT_ADV_PARAMS, sizeof(cp), &cp);
 
                if (own_addr_type == ADDR_LE_DEV_RANDOM &&